@dereekb/dbx-firebase 11.0.21 → 11.1.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/esm2022/lib/analytics/analytics.user.source.mjs +1 -1
- package/esm2022/lib/auth/auth.mjs +1 -1
- package/esm2022/lib/auth/login/login.component.mjs +1 -1
- package/esm2022/lib/auth/login/login.email.content.component.mjs +1 -1
- package/esm2022/lib/auth/login/login.email.form.component.mjs +1 -1
- package/esm2022/lib/auth/login/login.service.mjs +4 -4
- package/esm2022/lib/auth/login/register.component.mjs +1 -1
- package/esm2022/lib/auth/service/firebase.auth.service.delegate.mjs +3 -3
- package/esm2022/lib/auth/service/firebase.auth.service.mjs +1 -1
- package/esm2022/lib/development/development.popup.content.component.mjs +1 -1
- package/esm2022/lib/development/development.popup.content.form.component.mjs +1 -1
- package/esm2022/lib/development/development.widget.mjs +1 -1
- package/esm2022/lib/development/development.widget.service.mjs +1 -1
- package/esm2022/lib/firebase/firebase.emulator.module.mjs +1 -1
- package/esm2022/lib/firebase/firebase.emulator.service.mjs +1 -1
- package/esm2022/lib/firestore/firebase.firestore.module.mjs +16 -3
- package/esm2022/lib/index.mjs +2 -1
- package/esm2022/lib/model/loader/document.loader.instance.mjs +1 -1
- package/esm2022/lib/model/modules/model/model.history.component.mjs +1 -1
- package/esm2022/lib/model/modules/model/model.history.popover.component.mjs +3 -3
- package/esm2022/lib/model/modules/model/model.tracker.service.mjs +4 -4
- package/esm2022/lib/model/modules/model/model.types.list.component.mjs +1 -1
- package/esm2022/lib/model/modules/model/model.types.service.mjs +7 -4
- package/esm2022/lib/model/modules/store/index.mjs +4 -1
- package/esm2022/lib/model/modules/store/model.store.module.mjs +5 -3
- package/esm2022/lib/model/modules/store/store.collection.change.directive.mjs +1 -1
- package/esm2022/lib/model/modules/store/store.collection.change.if.directive.mjs +1 -1
- package/esm2022/lib/model/modules/store/store.document.directive.mjs +20 -5
- package/esm2022/lib/model/modules/store/store.document.mjs +17 -4
- package/esm2022/lib/model/modules/store/store.document.router.directive.mjs +15 -28
- package/esm2022/lib/model/modules/store/store.document.router.key.directive.mjs +15 -23
- package/esm2022/lib/model/modules/store/store.document.twoway.key.directive.mjs +24 -0
- package/esm2022/lib/model/modules/store/store.document.twoway.key.source.directive.mjs +21 -0
- package/esm2022/lib/model/modules/store/store.document.twoway.key.source.mjs +16 -0
- package/esm2022/lib/model/modules/store/store.subcollection.directive.mjs +1 -1
- package/esm2022/lib/model/modules/store/store.subcollection.document.mjs +1 -1
- package/esm2022/lib/model/modules/store/store.subcollection.mjs +1 -1
- package/esm2022/lib/model/modules/store/store.subcollection.rxjs.mjs +1 -1
- package/esm2022/lib/model/service/model.context.mjs +1 -1
- package/esm2022/lib/modules/index.mjs +2 -0
- package/esm2022/lib/modules/notification/component/index.mjs +5 -0
- package/esm2022/lib/modules/notification/component/notificationitem.content.component.mjs +21 -0
- package/esm2022/lib/modules/notification/component/notificationitem.list.component.mjs +81 -0
- package/esm2022/lib/modules/notification/component/notificationitem.view.component.mjs +44 -0
- package/esm2022/lib/modules/notification/component/notificationitem.view.default.component.mjs +25 -0
- package/esm2022/lib/modules/notification/component/notificationitem.view.directive.mjs +14 -0
- package/esm2022/lib/modules/notification/container/index.mjs +3 -0
- package/esm2022/lib/modules/notification/container/notification.item.store.popover.button.component.mjs +52 -0
- package/esm2022/lib/modules/notification/container/notification.item.store.popover.component.mjs +47 -0
- package/esm2022/lib/modules/notification/index.mjs +5 -0
- package/esm2022/lib/modules/notification/notification.module.mjs +102 -0
- package/esm2022/lib/modules/notification/service/index.mjs +4 -0
- package/esm2022/lib/modules/notification/service/notification.template.service.mjs +28 -0
- package/esm2022/lib/modules/notification/service/notificationitem.widget.mjs +11 -0
- package/esm2022/lib/modules/notification/service/notificationitem.widget.service.mjs +58 -0
- package/esm2022/lib/modules/notification/store/index.mjs +10 -0
- package/esm2022/lib/modules/notification/store/notification.item.store.mjs +30 -0
- package/esm2022/lib/modules/notification/store/notificationbox.collection.store.directive.mjs +20 -0
- package/esm2022/lib/modules/notification/store/notificationbox.collection.store.mjs +16 -0
- package/esm2022/lib/modules/notification/store/notificationbox.document.store.directive.mjs +20 -0
- package/esm2022/lib/modules/notification/store/notificationbox.document.store.mjs +22 -0
- package/esm2022/lib/modules/notification/store/notificationsummary.collection.store.directive.mjs +20 -0
- package/esm2022/lib/modules/notification/store/notificationsummary.collection.store.mjs +16 -0
- package/esm2022/lib/modules/notification/store/notificationsummary.document.store.directive.mjs +20 -0
- package/esm2022/lib/modules/notification/store/notificationsummary.document.store.mjs +34 -0
- package/esm2022/lib/modules/notification/store/notificationuser.collection.store.directive.mjs +20 -0
- package/esm2022/lib/modules/notification/store/notificationuser.collection.store.mjs +16 -0
- package/esm2022/lib/modules/notification/store/notificationuser.document.store.directive.mjs +20 -0
- package/esm2022/lib/modules/notification/store/notificationuser.document.store.mjs +18 -0
- package/esm2022/lib/pipe/key.pipe.mjs +1 -1
- package/fesm2022/dereekb-dbx-firebase.mjs +839 -135
- package/fesm2022/dereekb-dbx-firebase.mjs.map +1 -1
- package/lib/analytics/analytics.user.source.d.ts +1 -1
- package/lib/auth/auth.d.ts +1 -1
- package/lib/auth/login/login.component.d.ts +1 -1
- package/lib/auth/login/login.email.content.component.d.ts +1 -1
- package/lib/auth/login/login.email.form.component.d.ts +1 -1
- package/lib/auth/login/register.component.d.ts +1 -1
- package/lib/auth/service/firebase.auth.service.d.ts +1 -1
- package/lib/development/development.popup.content.component.d.ts +2 -2
- package/lib/development/development.popup.content.form.component.d.ts +1 -1
- package/lib/development/development.widget.d.ts +2 -2
- package/lib/development/development.widget.service.d.ts +1 -1
- package/lib/firebase/firebase.emulator.service.d.ts +1 -1
- package/lib/firestore/firebase.firestore.module.d.ts +11 -4
- package/lib/index.d.ts +1 -0
- package/lib/model/loader/document.loader.instance.d.ts +1 -1
- package/lib/model/modules/model/model.history.component.d.ts +2 -2
- package/lib/model/modules/model/model.history.popover.component.d.ts +2 -2
- package/lib/model/modules/model/model.types.list.component.d.ts +2 -2
- package/lib/model/modules/model/model.types.service.d.ts +2 -1
- package/lib/model/modules/store/index.d.ts +3 -0
- package/lib/model/modules/store/model.store.module.d.ts +3 -1
- package/lib/model/modules/store/store.collection.change.directive.d.ts +1 -1
- package/lib/model/modules/store/store.collection.change.if.directive.d.ts +1 -1
- package/lib/model/modules/store/store.document.directive.d.ts +23 -16
- package/lib/model/modules/store/store.document.router.directive.d.ts +7 -15
- package/lib/model/modules/store/store.document.router.key.directive.d.ts +8 -14
- package/lib/model/modules/store/store.document.twoway.key.directive.d.ts +15 -0
- package/lib/model/modules/store/store.document.twoway.key.source.d.ts +10 -0
- package/lib/model/modules/store/store.document.twoway.key.source.directive.d.ts +13 -0
- package/lib/model/modules/store/store.subcollection.d.ts +1 -1
- package/lib/model/modules/store/store.subcollection.directive.d.ts +1 -1
- package/lib/model/modules/store/store.subcollection.document.d.ts +1 -1
- package/lib/model/modules/store/store.subcollection.rxjs.d.ts +1 -1
- package/lib/model/service/model.context.d.ts +3 -3
- package/lib/modules/index.d.ts +1 -0
- package/lib/modules/notification/component/index.d.ts +4 -0
- package/lib/modules/notification/component/notificationitem.content.component.d.ts +9 -0
- package/lib/modules/notification/component/notificationitem.content.scss +5 -0
- package/lib/modules/notification/component/notificationitem.list.component.d.ts +24 -0
- package/lib/modules/notification/component/notificationitem.view.component.d.ts +15 -0
- package/lib/modules/notification/component/notificationitem.view.default.component.d.ts +9 -0
- package/lib/modules/notification/component/notificationitem.view.directive.d.ts +8 -0
- package/lib/modules/notification/container/index.d.ts +2 -0
- package/lib/modules/notification/container/notification.item.store.popover.button.component.d.ts +17 -0
- package/lib/modules/notification/container/notification.item.store.popover.component.d.ts +50 -0
- package/lib/modules/notification/index.d.ts +4 -0
- package/lib/modules/notification/notification.module.d.ts +30 -0
- package/lib/modules/notification/service/index.d.ts +3 -0
- package/lib/modules/notification/service/notification.template.service.d.ts +11 -0
- package/lib/modules/notification/service/notificationitem.widget.d.ts +26 -0
- package/lib/modules/notification/service/notificationitem.widget.service.d.ts +22 -0
- package/lib/modules/notification/store/index.d.ts +9 -0
- package/lib/modules/notification/store/notification.item.store.d.ts +28 -0
- package/lib/modules/notification/store/notificationbox.collection.store.d.ts +8 -0
- package/lib/modules/notification/store/notificationbox.collection.store.directive.d.ts +9 -0
- package/lib/modules/notification/store/notificationbox.document.store.d.ts +13 -0
- package/lib/modules/notification/store/notificationbox.document.store.directive.d.ts +9 -0
- package/lib/modules/notification/store/notificationsummary.collection.store.d.ts +8 -0
- package/lib/modules/notification/store/notificationsummary.collection.store.directive.d.ts +9 -0
- package/lib/modules/notification/store/notificationsummary.document.store.d.ts +21 -0
- package/lib/modules/notification/store/notificationsummary.document.store.directive.d.ts +9 -0
- package/lib/modules/notification/store/notificationuser.collection.store.d.ts +8 -0
- package/lib/modules/notification/store/notificationuser.collection.store.directive.d.ts +9 -0
- package/lib/modules/notification/store/notificationuser.document.store.d.ts +11 -0
- package/lib/modules/notification/store/notificationuser.document.store.directive.d.ts +9 -0
- package/lib/pipe/key.pipe.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dereekb-dbx-firebase.mjs","sources":["../../../../packages/dbx-firebase/src/lib/auth/auth.ts","../../../../packages/dbx-firebase/src/lib/auth/service/firebase.auth.rxjs.ts","../../../../packages/dbx-firebase/src/lib/auth/service/firebase.auth.service.ts","../../../../packages/dbx-firebase/src/lib/analytics/analytics.user.source.ts","../../../../packages/dbx-firebase/src/lib/analytics/analytics.user.events.ts","../../../../packages/dbx-firebase/src/lib/auth/appcheck/appcheck.ts","../../../../packages/dbx-firebase/src/lib/firebase/options.ts","../../../../packages/dbx-firebase/src/lib/auth/appcheck/appcheck.interceptor.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.terms.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.terms.simple.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.password.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.service.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.context.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.button.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.apple.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.anonymous.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.context.directive.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.list.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.email.form.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.email.recovery.form.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.email.content.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.email.content.component.html","../../../../packages/dbx-firebase/src/lib/auth/login/login.email.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.facebook.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.google.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/register.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.github.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.twitter.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.microsoft.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/register.email.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/register.email.component.html","../../../../packages/dbx-firebase/src/lib/auth/login/login.terms.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.context.back.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/firebase.login.module.ts","../../../../packages/dbx-firebase/src/lib/auth/service/firebase.auth.service.delegate.ts","../../../../packages/dbx-firebase/src/lib/auth/firebase.auth.module.ts","../../../../packages/dbx-firebase/src/lib/development/development.widget.service.ts","../../../../packages/dbx-firebase/src/lib/development/development.scheduler.service.ts","../../../../packages/dbx-firebase/src/lib/development/development.scheduler.list.component.ts","../../../../packages/dbx-firebase/src/lib/development/development.scheduler.widget.component.ts","../../../../packages/dbx-firebase/src/lib/firebase/emulators.ts","../../../../packages/dbx-firebase/src/lib/firebase/firebase.module.ts","../../../../packages/dbx-firebase/src/lib/firebase/firebase.emulator.module.ts","../../../../packages/dbx-firebase/src/lib/firebase/firebase.emulator.service.ts","../../../../packages/dbx-firebase/src/lib/development/development.popup.content.form.component.ts","../../../../packages/dbx-firebase/src/lib/development/development.popup.content.component.ts","../../../../packages/dbx-firebase/src/lib/development/development.popup.content.component.html","../../../../packages/dbx-firebase/src/lib/development/development.popup.component.ts","../../../../packages/dbx-firebase/src/lib/development/development.service.ts","../../../../packages/dbx-firebase/src/lib/development/development.popup.directive.ts","../../../../packages/dbx-firebase/src/lib/development/development.module.ts","../../../../packages/dbx-firebase/src/lib/firestore/firebase.firestore.ts","../../../../packages/dbx-firebase/src/lib/firestore/firebase.firestore.module.ts","../../../../packages/dbx-firebase/src/lib/firestore/firebase.firestore.context.service.ts","../../../../packages/dbx-firebase/src/lib/function/firebase.function.module.ts","../../../../packages/dbx-firebase/src/lib/model/loader/collection.change.watcher.ts","../../../../packages/dbx-firebase/src/lib/model/loader/collection.change.trigger.ts","../../../../packages/dbx-firebase/src/lib/model/loader/collection.loader.instance.ts","../../../../packages/dbx-firebase/src/lib/model/loader/document.loader.instance.ts","../../../../packages/dbx-firebase/src/lib/model/service/model.context.instance.ts","../../../../packages/dbx-firebase/src/lib/model/service/model.context.service.ts","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.types.service.ts","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.tracker.service.ts","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.types.list.component.ts","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.history.component.ts","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.history.popover.component.ts","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.history.popover.component.html","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.history.popover.button.component.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.document.directive.ts","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.types.view.directive.ts","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.types.module.ts","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.history.module.ts","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.sourceselect.history.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.collection.directive.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.collection.change.directive.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.collection.change.if.directive.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.collection.list.directive.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.document.auth.directive.ts","../../../../packages/dbx-firebase/src/lib/router/id.param.redirect.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.document.router.directive.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.document.router.key.directive.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/model.store.module.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.collection.ts","../../../../packages/dbx-firebase/src/lib/model/error.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.document.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.document.crud.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.subcollection.rxjs.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.subcollection.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.subcollection.document.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.subcollection.directive.ts","../../../../packages/dbx-firebase/src/lib/model/system/systemstate.collection.store.ts","../../../../packages/dbx-firebase/src/lib/model/system/systemstate.collection.store.directive.ts","../../../../packages/dbx-firebase/src/lib/model/system/systemstate.document.store.ts","../../../../packages/dbx-firebase/src/lib/model/system/systemstate.document.store.accessor.ts","../../../../packages/dbx-firebase/src/lib/model/system/systemstate.document.store.directive.ts","../../../../packages/dbx-firebase/src/lib/model/model.module.ts","../../../../packages/dbx-firebase/src/lib/pipe/key.pipe.ts","../../../../packages/dbx-firebase/src/lib/pipe/pipe.module.ts","../../../../packages/dbx-firebase/src/lib/storage/firebase.storage.ts","../../../../packages/dbx-firebase/src/lib/storage/firebase.storage.service.ts","../../../../packages/dbx-firebase/src/lib/storage/firebase.storage.module.ts","../../../../packages/dbx-firebase/src/lib/module.ts","../../../../packages/dbx-firebase/src/dereekb-dbx-firebase.ts"],"sourcesContent":["import { safeFormatToISO8601DateString } from '@dereekb/date';\nimport { FirebaseAuthToken } from '@dereekb/firebase';\nimport { ISO8601DateString, Maybe } from '@dereekb/util';\nimport { User, UserInfo } from 'firebase/auth';\n\nexport type AuthUserInfo = Omit<UserInfo, 'providerId'> & {\n /**\n * The creation time of the user's account.\n */\n readonly creationTime?: Maybe<ISO8601DateString>;\n /**\n * The last time the user signed in and recieved a refresh token.\n */\n readonly lastSignInTime?: Maybe<ISO8601DateString>;\n};\n\nexport function authUserInfoFromAuthUser(user: User): AuthUserInfo {\n return {\n displayName: user?.displayName,\n email: user.email,\n phoneNumber: user.phoneNumber,\n photoURL: user.photoURL,\n uid: user.uid,\n creationTime: safeFormatToISO8601DateString(user.metadata.creationTime),\n lastSignInTime: safeFormatToISO8601DateString(user.metadata.lastSignInTime)\n };\n}\n\nexport function firebaseAuthTokenFromUser(user: User): FirebaseAuthToken {\n return {\n email: user.email,\n emailVerified: user.emailVerified,\n phoneNumber: user.phoneNumber,\n creationTime: safeFormatToISO8601DateString(user.metadata.creationTime),\n lastSignInTime: safeFormatToISO8601DateString(user.metadata.lastSignInTime)\n };\n}\n","import { AuthUserState } from '@dereekb/dbx-core';\nimport { asObservable, ObservableOrValue } from '@dereekb/rxjs';\nimport { IdTokenResult } from 'firebase/auth';\nimport { Observable, of, shareReplay, switchMap } from 'rxjs';\nimport { AuthUserStateObsFunction, DbxFirebaseAuthService } from './firebase.auth.service';\n\n/**\n * Creates a AuthUserStateObsFunction that derives a user state from the input firebase auth service, and the optional stateForLoggedInUser input\n *\n * @param stateForLoggedInUser Optional function that returns an observable for the user's state if they are logged in and not an anonymous user.\n * @returns\n */\nexport function authUserStateFromFirebaseAuthServiceFunction(stateForLoggedInUser: AuthUserStateObsFunction = () => of('user')): AuthUserStateObsFunction {\n return (dbxFirebaseAuthService: DbxFirebaseAuthService) => {\n return dbxFirebaseAuthService.hasAuthUser$.pipe(\n switchMap((hasUser) => {\n let obs: Observable<AuthUserState>;\n\n if (hasUser) {\n obs = dbxFirebaseAuthService.isAnonymousUser$.pipe(switchMap((isAnon) => (isAnon ? of('anon' as AuthUserState) : stateForLoggedInUser(dbxFirebaseAuthService))));\n } else {\n obs = of('none');\n }\n\n return obs;\n }),\n shareReplay(1)\n );\n };\n}\n\nexport type StateFromTokenFunction = (token: IdTokenResult) => ObservableOrValue<AuthUserState>;\n\nexport function stateFromTokenForLoggedInUserFunction(stateFromToken: StateFromTokenFunction, defaultState: AuthUserState = 'user'): AuthUserStateObsFunction {\n return (dbxFirebaseAuthService: DbxFirebaseAuthService) => {\n return readValueFromIdToken<AuthUserState>(dbxFirebaseAuthService, stateFromToken, defaultState);\n };\n}\n\n/**\n * Convenience function to read a value from an IdTokenResult off of the current user.\n *\n * @param dbxFirebaseAuthService\n * @param readValueFromIdToken\n * @param defaultValue\n * @returns\n */\nexport function readValueFromIdToken<T>(dbxFirebaseAuthService: DbxFirebaseAuthService, readValueFromIdToken: (idToken: IdTokenResult) => ObservableOrValue<T>, defaultValue: T): Observable<T> {\n return dbxFirebaseAuthService.currentAuthUserInfo$.pipe(\n switchMap((x) => {\n if (x) {\n return dbxFirebaseAuthService.idTokenResult$.pipe(switchMap((x) => asObservable(readValueFromIdToken(x))));\n } else {\n return of(defaultValue);\n }\n })\n );\n}\n","import { filterMaybe, isNot, timeoutStartWith } from '@dereekb/rxjs';\nimport { Injectable, inject } from '@angular/core';\nimport { AuthUserState, DbxAuthService, loggedOutObsFromIsLoggedIn, loggedInObsFromIsLoggedIn, AuthUserIdentifier, authUserIdentifier, NoAuthUserIdentifier } from '@dereekb/dbx-core';\nimport { reauthenticateWithPopup, Auth, authState, idToken, User, IdTokenResult, ParsedToken, GoogleAuthProvider, signInWithPopup, AuthProvider, PopupRedirectResolver, signInAnonymously, signInWithEmailAndPassword, UserCredential, FacebookAuthProvider, GithubAuthProvider, TwitterAuthProvider, createUserWithEmailAndPassword } from '@angular/fire/auth';\nimport { of, Observable, distinctUntilChanged, shareReplay, map, switchMap, firstValueFrom, catchError, EMPTY } from 'rxjs';\nimport { AuthClaims, AuthClaimsObject, AuthRoleClaimsService, AuthRoleSet, AUTH_ADMIN_ROLE, cachedGetter, Maybe } from '@dereekb/util';\nimport { AuthUserInfo, authUserInfoFromAuthUser, firebaseAuthTokenFromUser } from '../auth';\nimport { sendPasswordResetEmail } from 'firebase/auth';\nimport { authUserStateFromFirebaseAuthServiceFunction } from './firebase.auth.rxjs';\nimport { FirebaseAuthContextInfo } from '@dereekb/firebase';\n\n/**\n * Returns an observable that returns the state of the\n */\nexport type AuthUserStateObsFunction = (dbxFirebaseAuthService: DbxFirebaseAuthService) => Observable<AuthUserState>;\n\n// MARK: Delegate\nexport abstract class DbxFirebaseAuthServiceDelegate {\n readonly fullControlOfAuthUserState?: boolean = false;\n abstract authUserStateObs: AuthUserStateObsFunction;\n abstract authRolesObs(dbxFirebaseAuthService: DbxFirebaseAuthService): Observable<AuthRoleSet>;\n abstract isOnboarded(dbxFirebaseAuthService: DbxFirebaseAuthService): Observable<boolean>;\n /**\n * Whether or not the input roles imply the admin priviledges.\n */\n abstract isAdminInAuthRoleSet(authRoleSet: AuthRoleSet): boolean;\n abstract authRoleClaimsService?: Maybe<AuthRoleClaimsService<AuthClaimsObject>>;\n}\n\nexport const DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE: DbxFirebaseAuthServiceDelegate = {\n authUserStateObs: authUserStateFromFirebaseAuthServiceFunction(),\n authRolesObs(dbxFirebaseAuthService: DbxFirebaseAuthService): Observable<AuthRoleSet> {\n return dbxFirebaseAuthService.authUserState$.pipe(map((x) => (x === 'user' ? new Set(['user']) : new Set())));\n },\n isOnboarded(dbxFirebaseAuthService: DbxFirebaseAuthService): Observable<boolean> {\n return dbxFirebaseAuthService.authUserState$.pipe(map((x) => x === 'user'));\n },\n isAdminInAuthRoleSet(authRoleSet: AuthRoleSet): boolean {\n return authRoleSet.has(AUTH_ADMIN_ROLE);\n }\n};\n\n// MARK: Service\n@Injectable()\nexport class DbxFirebaseAuthService implements DbxAuthService {\n readonly firebaseAuth = inject(Auth);\n readonly delegate = inject(DbxFirebaseAuthServiceDelegate, { optional: true }) ?? DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE;\n\n readonly _authState$: Observable<Maybe<User>> = authState(this.firebaseAuth);\n\n readonly currentAuthUser$: Observable<Maybe<User>> = this._authState$.pipe(timeoutStartWith(null as Maybe<User>, 1000), distinctUntilChanged(), shareReplay(1));\n readonly currentAuthUserInfo$: Observable<Maybe<AuthUserInfo>> = this.currentAuthUser$.pipe(map((x) => (x ? authUserInfoFromAuthUser(x) : undefined)));\n\n readonly authUser$: Observable<User> = this.currentAuthUser$.pipe(filterMaybe());\n readonly authUserInfo$: Observable<AuthUserInfo> = this.authUser$.pipe(map(authUserInfoFromAuthUser));\n\n readonly hasAuthUser$: Observable<boolean> = this.currentAuthUser$.pipe(\n map((x) => Boolean(x)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly isAnonymousUser$: Observable<boolean> = this.authUser$.pipe(\n map((x) => x.isAnonymous),\n distinctUntilChanged(),\n shareReplay(1)\n );\n readonly isNotAnonymousUser$: Observable<boolean> = this.isAnonymousUser$.pipe(isNot(), distinctUntilChanged(), shareReplay(1));\n\n readonly isLoggedIn$: Observable<boolean> = this.hasAuthUser$;\n readonly isNotLoggedIn$: Observable<boolean> = this.isLoggedIn$.pipe(isNot());\n readonly onLogIn$: Observable<void> = loggedInObsFromIsLoggedIn(this.isLoggedIn$);\n readonly onLogOut$: Observable<void> = loggedOutObsFromIsLoggedIn(this.isLoggedIn$);\n\n readonly currentUid$: Observable<Maybe<AuthUserIdentifier>> = this.currentAuthUser$.pipe(\n map((x) => x?.uid),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly uid$: Observable<AuthUserIdentifier | NoAuthUserIdentifier> = this.currentUid$.pipe(map(authUserIdentifier), distinctUntilChanged(), shareReplay(1));\n /**\n * Alias for uid$\n */\n readonly userIdentifier$: Observable<AuthUserIdentifier | NoAuthUserIdentifier> = this.uid$;\n\n readonly currentIdTokenString$: Observable<Maybe<string>> = idToken(this.firebaseAuth).pipe(distinctUntilChanged(), shareReplay(1));\n readonly idTokenString$: Observable<string> = this.currentUid$.pipe(switchMap((x) => (x ? this.currentIdTokenString$.pipe(filterMaybe()) : EMPTY)));\n\n readonly currentIdTokenResult$: Observable<Maybe<IdTokenResult>> = this.currentAuthUser$.pipe(\n switchMap((x) => (x ? this.currentIdTokenString$.pipe(switchMap((y) => (y ? x.getIdTokenResult() : of(null)))) : of(null))),\n distinctUntilChanged(),\n shareReplay(1)\n );\n readonly idTokenResult$: Observable<IdTokenResult> = this.currentIdTokenResult$.pipe(filterMaybe());\n\n readonly currentClaims$: Observable<Maybe<ParsedToken>> = this.currentIdTokenResult$.pipe(\n map((x) => (x ? x.claims : null)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n readonly claims$: Observable<ParsedToken> = this.currentClaims$.pipe(filterMaybe());\n\n readonly currentAuthContextInfo$: Observable<Maybe<DbxFirebaseAuthContextInfo>> = this.currentAuthUser$.pipe(\n switchMap((x) => this.loadAuthContextInfoForUser(x)),\n shareReplay(1)\n );\n readonly authContextInfo$: Observable<Maybe<DbxFirebaseAuthContextInfo>> = this.currentAuthContextInfo$.pipe(filterMaybe());\n\n readonly authUserState$: Observable<AuthUserState> = (() => {\n const delegateAuthUserStateObs: Observable<AuthUserState> = this.delegate.authUserStateObs(this).pipe(\n catchError(() => of('error' as AuthUserState)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n let obs: Observable<AuthUserState>;\n\n if (this.delegate.fullControlOfAuthUserState) {\n obs = delegateAuthUserStateObs;\n } else {\n obs = this._authState$.pipe(\n distinctUntilChanged(),\n switchMap((x) => {\n if (x != null) {\n return delegateAuthUserStateObs;\n } else {\n return of('none' as AuthUserState);\n }\n })\n );\n }\n\n return obs;\n })();\n\n readonly authRoles$: Observable<AuthRoleSet> = this.delegate.authRolesObs(this);\n readonly isOnboarded$: Observable<boolean> = this.delegate.isOnboarded(this);\n\n private _authRoleClaimsService?: Maybe<AuthRoleClaimsService<AuthClaimsObject>> = this.delegate.authRoleClaimsService;\n readonly isAdminInAuthRoleSet: (authRoleSet: AuthRoleSet) => boolean = this.delegate.isAdminInAuthRoleSet;\n\n async refreshToken(): Promise<IdTokenResult> {\n const user = this.firebaseAuth.currentUser;\n\n if (!user) {\n throw new Error('no user to refresh the token for.');\n }\n\n return user.getIdTokenResult(true);\n }\n\n rolesForClaims<T extends AuthClaimsObject = AuthClaimsObject>(claims: AuthClaims<T>): AuthRoleSet {\n let result: AuthRoleSet;\n\n if (this._authRoleClaimsService) {\n return this._authRoleClaimsService.toRoles(claims);\n } else {\n console.warn('DbxFirebaseAuthService: rolesForClaims called with no authRoleClaimsService provided. An empty set is returned.');\n result = new Set();\n }\n\n return result;\n }\n\n getAuthContextInfo(): Promise<Maybe<DbxFirebaseAuthContextInfo>> {\n return firstValueFrom(this.authUser$).then((user) => this.loadAuthContextInfoForUser(user));\n }\n\n async loadAuthContextInfoForUser(user: Maybe<User>): Promise<Maybe<DbxFirebaseAuthContextInfo>> {\n let result: Maybe<DbxFirebaseAuthContextInfo>;\n\n if (user) {\n const jwtToken: IdTokenResult = await user.getIdTokenResult();\n result = dbxFirebaseAuthContextInfo(this, user, jwtToken);\n }\n\n return result;\n }\n\n logInWithGoogle(): Promise<UserCredential> {\n return this.logInWithPopup(new GoogleAuthProvider());\n }\n\n logInWithFacebook(): Promise<UserCredential> {\n return this.logInWithPopup(new FacebookAuthProvider());\n }\n\n logInWithTwitter(): Promise<UserCredential> {\n return this.logInWithPopup(new TwitterAuthProvider());\n }\n\n logInWithGithub(): Promise<UserCredential> {\n return this.logInWithPopup(new GithubAuthProvider());\n }\n\n logInWithApple(): Promise<UserCredential> {\n throw new Error('todo');\n }\n\n logInWithMicrosoft(): Promise<UserCredential> {\n // return this.logInWithPopup(new MicrosoftAuthProvider());\n throw new Error('todo');\n }\n\n logInWithPhone(): Promise<UserCredential> {\n throw new Error('todo');\n // return signInWithPhoneNumber(this.firebaseAuth, )\n }\n\n logInWithPopup(provider: AuthProvider, resolver?: PopupRedirectResolver): Promise<UserCredential> {\n return signInWithPopup(this.firebaseAuth, provider, resolver);\n }\n\n registerWithEmailAndPassword(email: string, password: string): Promise<UserCredential> {\n return createUserWithEmailAndPassword(this.firebaseAuth, email, password);\n }\n\n sendPasswordResetEmail(email: string): Promise<void> {\n return sendPasswordResetEmail(this.firebaseAuth, email);\n }\n\n logInWithEmailAndPassword(email: string, password: string): Promise<UserCredential> {\n return signInWithEmailAndPassword(this.firebaseAuth, email, password);\n }\n\n logInAsAnonymous(): Promise<UserCredential> {\n return signInAnonymously(this.firebaseAuth);\n }\n\n logOut(): Promise<void> {\n return this.firebaseAuth.signOut();\n }\n\n reauthenticateWithPopup(provider: AuthProvider, resolver?: PopupRedirectResolver): Promise<UserCredential> {\n return firstValueFrom(\n this.currentAuthUser$.pipe(\n switchMap((x: Maybe<User>) => {\n if (x) {\n return reauthenticateWithPopup(x, provider, resolver);\n } else {\n throw new Error('User is not logged in currently.');\n }\n })\n )\n );\n }\n}\n\n/**\n * FirebaseAuthContextInfo implementation from DbxFirebaseAuthService.\n */\nexport interface DbxFirebaseAuthContextInfo extends FirebaseAuthContextInfo {\n readonly service: DbxFirebaseAuthService;\n readonly user: User;\n readonly jwtToken: IdTokenResult;\n}\n\n/**\n * Creates a new DbxFirebaseAuthContextInfo instance.\n *\n * @param service\n * @param user\n * @param jwtToken\n * @returns\n */\nexport function dbxFirebaseAuthContextInfo(service: DbxFirebaseAuthService, user: User, jwtToken: IdTokenResult): DbxFirebaseAuthContextInfo {\n function getClaims<T extends AuthClaimsObject = AuthClaimsObject>(): AuthClaims<T> {\n return jwtToken.claims as AuthClaims<T>;\n }\n\n const { uid } = user;\n const token = firebaseAuthTokenFromUser(user);\n const getAuthRoles = cachedGetter(() => service.rolesForClaims(getClaims()));\n const isAdmin = cachedGetter(() => service.isAdminInAuthRoleSet(getAuthRoles()));\n\n const result: DbxFirebaseAuthContextInfo = {\n service,\n user,\n jwtToken,\n\n uid,\n\n isAdmin,\n getClaims,\n getAuthRoles,\n\n token\n };\n\n return result;\n}\n","import { Injectable, inject } from '@angular/core';\nimport { DbxAnalyticsUser, DbxAnalyticsUserProperties, DbxAnalyticsUserSource } from '@dereekb/dbx-analytics';\nimport { FactoryWithRequiredInput, Maybe } from '@dereekb/util';\nimport { BehaviorSubject, map, Observable, of, switchMap, shareReplay, combineLatest } from 'rxjs';\nimport { AuthUserInfo } from '../auth/auth';\nimport { DbxFirebaseAuthService } from '../auth/service/firebase.auth.service';\n\nexport type DbxFirebaseAnalyticsUserPropertiesFactory = FactoryWithRequiredInput<Observable<DbxAnalyticsUserProperties>, AuthUserInfo>;\n\nexport function readDbxAnalyticsUserPropertiesFromAuthUserInfo(user: AuthUserInfo): DbxAnalyticsUserProperties {\n const properties: DbxAnalyticsUserProperties = {\n name: user.displayName ?? '',\n email: user.email ?? '',\n createdAt: user.creationTime ?? ''\n };\n\n return properties;\n}\n\nexport const DEFAULT_DBX_FIREBASE_ANALYTICS_USER_PROPERTIES_FACTORY: DbxFirebaseAnalyticsUserPropertiesFactory = (authUserInfo: AuthUserInfo) => of(readDbxAnalyticsUserPropertiesFromAuthUserInfo(authUserInfo));\n\n/**\n * DbxAnalyticsUserSource implementation that uses the DbxFirebaseAuthService.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseAnalyticsUserSource implements DbxAnalyticsUserSource {\n readonly dbxFirebaseAuthService = inject(DbxFirebaseAuthService);\n\n private _userPropertiesFactory = new BehaviorSubject<DbxFirebaseAnalyticsUserPropertiesFactory>(DEFAULT_DBX_FIREBASE_ANALYTICS_USER_PROPERTIES_FACTORY);\n\n readonly analyticsUser$: Observable<Maybe<DbxAnalyticsUser>> = combineLatest([this._userPropertiesFactory, this.dbxFirebaseAuthService.currentAuthUserInfo$]).pipe(\n switchMap(([userPropertiesFactory, x]) => {\n let analyticsUser: Observable<Maybe<DbxAnalyticsUser>>;\n\n if (x != null) {\n analyticsUser = userPropertiesFactory(x).pipe(\n map((properties) => ({\n user: x.uid,\n properties\n }))\n );\n } else {\n analyticsUser = of(null);\n }\n\n return analyticsUser;\n }),\n shareReplay(1)\n );\n\n get userPropertiesFactory() {\n return this._userPropertiesFactory.value;\n }\n\n set userPropertiesFactory(userPropertiesFactory: DbxFirebaseAnalyticsUserPropertiesFactory) {\n this._userPropertiesFactory.next(userPropertiesFactory);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { DbxAnalyticsService } from '@dereekb/dbx-analytics';\nimport { filterMaybe, SubscriptionObject } from '@dereekb/rxjs';\nimport { Destroyable, Initialized } from '@dereekb/util';\nimport { first } from 'rxjs';\nimport { DbxFirebaseAuthService } from '../auth/service/firebase.auth.service';\nimport { DbxFirebaseAnalyticsUserSource } from './analytics.user.source';\n\n/**\n * Service that listens for DbxFirebaseAuthService changes and emits them a user events.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseAnalyticsUserEventsListener implements Initialized, Destroyable {\n readonly dbxFirebaseAuthService = inject(DbxFirebaseAuthService);\n readonly dbxFirebaseAnalyticsUserSource = inject(DbxFirebaseAnalyticsUserSource);\n readonly dbxAnalyticsService = inject(DbxAnalyticsService);\n\n private _loginSub = new SubscriptionObject();\n private _logoutSub = new SubscriptionObject();\n\n init(): void {\n this._loginSub.subscription = this.dbxFirebaseAuthService.onLogIn$.subscribe(() => {\n this.dbxFirebaseAnalyticsUserSource.analyticsUser$.pipe(filterMaybe(), first()).subscribe((analyticsUser) => {\n this.dbxAnalyticsService.sendUserLoginEvent(analyticsUser);\n });\n });\n\n this._logoutSub.subscription = this.dbxFirebaseAuthService.onLogOut$.subscribe(() => {\n this.dbxAnalyticsService.sendUserLogoutEvent(undefined, false); // do not clear user. Will be cleared by the analytics service\n });\n }\n\n destroy(): void {\n this._loginSub.destroy();\n this._logoutSub.destroy();\n }\n}\n","/**\n * Enables debug token generation for AppCheck by setting FIREBASE_APPCHECK_DEBUG_TOKEN in the browser's self/window.\n *\n * https://firebase.google.com/docs/app-check/web/debug-provider\n *\n * @param enable\n */\nexport function enableAppCheckDebugTokenGeneration(enable = true) {\n (self as unknown as { FIREBASE_APPCHECK_DEBUG_TOKEN: boolean }).FIREBASE_APPCHECK_DEBUG_TOKEN = enable;\n}\n","import { InjectionToken } from '@angular/core';\nimport { PersistentCacheSettings } from 'firebase/firestore';\nimport { FirebaseOptions } from 'firebase/app';\nimport { DbxFirebaseLoginModuleRootConfig } from '../auth/login/firebase.login.module';\nimport { DbxFirebaseAppCheckConfig } from './appcheck';\nimport { DbxFirebaseEmulatorsConfig } from './emulators';\n\nexport const DBX_FIREBASE_OPTIONS_TOKEN = new InjectionToken('DbxFirebaseOptions');\n\nexport interface DbxFirebaseOptions extends FirebaseOptions, Pick<DbxFirebaseLoginModuleRootConfig, 'enabledLoginMethods'> {\n emulators: DbxFirebaseEmulatorsConfig;\n /**\n * Firebase AppCheck handling\n */\n appCheck?: DbxFirebaseAppCheckConfig;\n /**\n * Passed to the Functions initialization to set the domain to use when sending requests.\n */\n functionsRegionOrCustomDomain?: string | undefined;\n /**\n * Whether or not to call enableMultiTabIndexedDbPersistence() for firestore at setup time.\n *\n * True by default.\n */\n enableMultiTabIndexedDbPersistence?: boolean;\n /**\n * Whether or not to call enableIndexedDbPersistence() for firestore at setup time.\n *\n * True by default if enableMultiTabIndexedDbPersistence is false.\n */\n enableIndexedDbPersistence?: boolean;\n /**\n * Optional persistent cache setting to pass to the Firestore cache.\n */\n persistentCacheSettings?: Omit<PersistentCacheSettings, 'tabManager'>;\n}\n","import { urlWithoutParameters } from '@dereekb/util';\nimport { DBX_FIREBASE_OPTIONS_TOKEN, DbxFirebaseOptions } from '../../firebase/options';\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';\nimport { getToken } from 'firebase/app-check';\nimport { Observable, switchMap, first, map, from } from 'rxjs';\nimport { Injectable, inject } from '@angular/core';\nimport { AppCheck } from '@angular/fire/app-check';\n\ninterface EnabledAppCheckRoute {\n isWildcard: boolean;\n match: string;\n}\n\n/**\n * HTTP Interceptor that sets the X-Firebase-AppCheck for any requests to the routes configured in DbxFirebaseOptions.\n */\n@Injectable()\nexport class DbxFirebaseAppCheckHttpInterceptor implements HttpInterceptor {\n private appCheck = inject(AppCheck);\n\n private _appCheckRoutes: EnabledAppCheckRoute[] = ((dbxFirebaseOptions: DbxFirebaseOptions) => {\n const { appCheck } = dbxFirebaseOptions;\n\n let routes: EnabledAppCheckRoute[] = [];\n\n if (appCheck?.disabled !== false) {\n routes = (appCheck?.appCheckRoutes ?? ['/api/*']).map((route) => {\n const wildcardIndex = route.indexOf('*');\n const isWildcard = wildcardIndex === route.length - 1;\n const match = isWildcard ? route.substring(0, wildcardIndex) : route;\n\n return {\n isWildcard,\n match\n };\n });\n }\n\n return routes;\n })(inject<DbxFirebaseOptions>(DBX_FIREBASE_OPTIONS_TOKEN));\n\n private _isEnabled: boolean = this._appCheckRoutes.length > 0;\n\n intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n let obs: Observable<HttpEvent<unknown>>;\n\n if (this._isEnabled) {\n obs = this.matchesAnyRoute(req.url).pipe(\n switchMap((isMatch) => {\n let nextEvent: Observable<HttpEvent<unknown>>;\n\n if (isMatch) {\n nextEvent = from(\n getToken(this.appCheck).then((appCheckTokenResponse) => {\n const token = appCheckTokenResponse.token;\n let nextRequest: HttpRequest<unknown> = req;\n\n if (token) {\n nextRequest = req.clone({\n headers: req.headers.set('X-Firebase-AppCheck', token)\n });\n }\n\n return nextRequest;\n })\n ).pipe(switchMap((nextRequest) => next.handle(nextRequest)));\n } else {\n nextEvent = next.handle(req);\n }\n\n return nextEvent;\n })\n );\n } else {\n obs = next.handle(req);\n }\n\n return obs;\n }\n\n private matchesAnyRoute(inputUrl: string): Observable<boolean> {\n const url = urlWithoutParameters(inputUrl);\n\n function isEnabledRouteMatch(enabledRoute: EnabledAppCheckRoute): boolean {\n if (enabledRoute.isWildcard) {\n return url.startsWith(enabledRoute.match);\n } else {\n return url === enabledRoute.match;\n }\n }\n\n return from(this._appCheckRoutes).pipe(\n first((route) => isEnabledRouteMatch(route), false),\n map((x) => Boolean(x))\n );\n }\n}\n","export abstract class DbxFirebaseLoginTermsConfig {\n abstract readonly tosUrl: string;\n abstract readonly privacyUrl: string;\n}\n","import { ClickableAnchor } from '@dereekb/dbx-core';\nimport { Component, inject } from '@angular/core';\nimport { DbxFirebaseLoginTermsConfig } from './login.terms';\n\n@Component({\n template: `\n <div class=\"dbx-firebase-login-terms-view\">\n <dbx-link [anchor]=\"tosAnchor\">Terms</dbx-link>\n <span class=\"dbx-link-spacer\"></span>\n <dbx-link [anchor]=\"privacyAnchor\">Privacy</dbx-link>\n </div>\n `\n})\nexport class DbxFirebaseLoginTermsSimpleComponent {\n readonly dbxFirebaseLoginTermsConfig = inject(DbxFirebaseLoginTermsConfig);\n\n readonly tosAnchor: ClickableAnchor = {\n url: this.dbxFirebaseLoginTermsConfig.tosUrl,\n target: '_blank'\n };\n\n readonly privacyAnchor: ClickableAnchor = {\n url: this.dbxFirebaseLoginTermsConfig.privacyUrl,\n target: '_blank'\n };\n}\n","import { TextPasswordFieldPasswordParameters } from '@dereekb/dbx-form';\n\nexport type DbxFirebaseAuthLoginPasswordConfig = TextPasswordFieldPasswordParameters;\n\nexport const DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG: DbxFirebaseAuthLoginPasswordConfig = {\n minLength: 6\n};\n","import { mapIterable, addToSet, removeFromSet, Maybe, ArrayOrValue, filterMaybeValues } from '@dereekb/util';\nimport { Inject, Injectable, InjectionToken, Optional, Type, inject } from '@angular/core';\nimport { FirebaseLoginMethodCategory, FirebaseLoginMethodType, KnownFirebaseLoginMethodType } from './login';\nimport { DbxFirebaseLoginTermsSimpleComponent } from './login.terms.simple.component';\nimport { DbxFirebaseAuthLoginPasswordConfig, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG } from './login.password';\n\n/**\n * Default providers to inject.\n */\nexport const DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN = new InjectionToken('DefaultDbxFirebaseAuthLoginProviders');\nexport const DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN = new InjectionToken('DefaultDbxFirebaseAuthLoginTermsComponentClass');\nexport const DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN = new InjectionToken('DefaultDbxFirebaseAuthLoginPasswordConfig');\n\nexport interface DbxFirebaseAuthLoginProvider<D = unknown> {\n /**\n * Category for this login method.\n */\n readonly category?: FirebaseLoginMethodCategory;\n /**\n * Login method key for this type.\n */\n readonly loginMethodType: KnownFirebaseLoginMethodType | FirebaseLoginMethodType;\n /**\n * Login/Registration class to use.\n */\n readonly componentClass: Type<unknown>;\n /**\n * Custom registration type to use instead. If false, registration is not allowd for this type.\n */\n readonly registrationComponentClass?: Type<unknown> | false;\n /**\n * Custom data available to the components.\n *\n * Components are responsible for knowing the typing information of this data.\n */\n readonly componentData?: D;\n /**\n * Asset configuration for this type.\n */\n readonly assets: DbxFirebaseAuthLoginProviderAssets;\n}\n\n/**\n * Asset configurations for a provider.\n */\nexport interface DbxFirebaseAuthLoginProviderAssets {\n /**\n * URL of the logo to use.\n */\n readonly logoUrl?: string;\n /**\n * Icon to use in place of the logo.\n */\n readonly loginIcon?: string;\n /**\n * Log in text to display next to the logo.\n */\n readonly loginText?: string;\n /**\n * Optional background color to apply.\n */\n readonly backgroundColor?: string;\n /**\n * Optional background color to apply.\n */\n readonly textColor?: string;\n}\n\n/**\n * Service used for registering components used for logging in.\n *\n * Default providers can be configured by the DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN injectable value.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseAuthLoginService {\n readonly termsComponentClass = inject<Type<unknown>>(DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN) ?? DbxFirebaseLoginTermsSimpleComponent;\n\n private _enableAll = false;\n private _passwordConfig: DbxFirebaseAuthLoginPasswordConfig;\n private _providers = new Map<FirebaseLoginMethodType, DbxFirebaseAuthLoginProvider>();\n private _assets = new Map<FirebaseLoginMethodType, DbxFirebaseAuthLoginProviderAssets>();\n private _enabled = new Set<FirebaseLoginMethodType>();\n\n constructor(@Optional() @Inject(DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN) defaultProviders: DbxFirebaseAuthLoginProvider[], @Optional() @Inject(DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN) passwordConfig: DbxFirebaseAuthLoginPasswordConfig) {\n if (defaultProviders) {\n defaultProviders.forEach((x) => this.register(x, false));\n }\n\n this._passwordConfig = passwordConfig ?? DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG;\n }\n\n /**\n * Used to register a provider. If a provider is already registered, this will override it by default.\n *\n * @param provider\n * @param override\n */\n register(provider: DbxFirebaseAuthLoginProvider, override: boolean = true): boolean {\n if (override || !this._providers.has(provider.loginMethodType)) {\n this._providers.set(provider.loginMethodType, provider);\n\n if (provider.assets) {\n this.updateAssetsForProvider(provider.loginMethodType, provider.assets);\n }\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Updates the assets for a provider type.\n *\n * @param type\n * @param assets\n */\n updateAssetsForProvider(type: FirebaseLoginMethodType, assets: Partial<DbxFirebaseAuthLoginProviderAssets>): void {\n const current = this._assets.get(type);\n const update = {\n ...current,\n ...assets\n };\n\n this._assets.set(type, update);\n }\n\n // MARK: Enable/Disable\n /**\n * Enables all providers and any providers that will be registered.\n */\n setEnableAll(enableAll = true) {\n this._enableAll = enableAll;\n }\n\n clearEnabled(): void {\n this._enabled = new Set();\n }\n\n /**\n * Enables all of the specified types.\n *\n * @param types\n */\n enable(types: ArrayOrValue<FirebaseLoginMethodType>): void {\n addToSet(this._enabled, types);\n }\n\n disable(types: ArrayOrValue<FirebaseLoginMethodType>): void {\n removeFromSet(this._enabled, types);\n }\n\n // MARK: Get\n getRegisteredTypes(): FirebaseLoginMethodType[] {\n return Array.from(this._providers.keys());\n }\n\n getEnabledTypes(): FirebaseLoginMethodType[] {\n return this._enableAll ? this.getRegisteredTypes() : Array.from(this._enabled);\n }\n\n getLoginProvider(type: FirebaseLoginMethodType): Maybe<DbxFirebaseAuthLoginProvider> {\n return this._providers.get(type);\n }\n\n getLoginProviders(types: Iterable<FirebaseLoginMethodType>): DbxFirebaseAuthLoginProvider[] {\n return filterMaybeValues(mapIterable(types ?? [], (x) => this._providers.get(x)));\n }\n\n getRegisterProvider(type: FirebaseLoginMethodType): Maybe<DbxFirebaseAuthLoginProvider> {\n return this._providers.get(type);\n }\n\n getRegisterProviders(types: Iterable<FirebaseLoginMethodType>): DbxFirebaseAuthLoginProvider[] {\n return filterMaybeValues(mapIterable(types ?? [], (x) => this._providers.get(x))).filter((x) => x.registrationComponentClass !== false);\n }\n\n getProviderAssets(type: FirebaseLoginMethodType): Maybe<DbxFirebaseAuthLoginProviderAssets> {\n return this._assets.get(type);\n }\n\n getPasswordConfig() {\n return this._passwordConfig;\n }\n\n setPasswordConfig(passwordConfig: DbxFirebaseAuthLoginPasswordConfig) {\n this._passwordConfig = passwordConfig;\n }\n}\n","import { DbxInjectionContext } from '@dereekb/dbx-core';\n\n/**\n * Injection token for a DbxInjectionContext for DbxFirebaseLoginContext.\n */\nexport abstract class DbxFirebaseLoginContext extends DbxInjectionContext {}\n","import { Component, Directive, Input, OnInit, inject } from '@angular/core';\nimport { WorkUsingObservable } from '@dereekb/rxjs';\nimport { from } from 'rxjs';\nimport { DbxFirebaseAuthService } from '../service/firebase.auth.service';\nimport { FirebaseLoginMethodType } from './login';\nimport { DbxFirebaseAuthLoginService } from './login.service';\nimport { DbxFirebaseLoginContext } from './login.context';\n\nexport interface DbxFirebaseLoginButtonConfig {\n text: string;\n iconUrl?: string;\n icon?: string;\n buttonColor?: string;\n buttonTextColor?: string;\n handleLogin: () => Promise<unknown>;\n}\n\n/**\n * Login button and action.\n */\n@Component({\n selector: 'dbx-firebase-login-button',\n template: `\n <ng-container dbxAction [dbxActionHandler]=\"handleAction\" dbxActionValue [dbxActionSuccessHandler]=\"onActionSuccess\">\n <dbx-button dbxActionButton [customTextColor]=\"buttonTextColor\" [customButtonColor]=\"buttonColor\" [raised]=\"true\">\n <div class=\"dbx-firebase-login-button-content\">\n <span class=\"dbx-firebase-login-button-icon dbx-icon-spacer\">\n <img *ngIf=\"iconUrl\" [src]=\"iconUrl\" />\n <mat-icon *ngIf=\"icon\">{{ icon }}</mat-icon>\n </span>\n <span class=\"dbx-firebase-login-button-text\">{{ text }}</span>\n </div>\n </dbx-button>\n </ng-container>\n `,\n host: {\n class: 'dbx-firebase-login-button'\n }\n})\nexport class DbxFirebaseLoginButtonComponent {\n @Input()\n config!: DbxFirebaseLoginButtonConfig;\n\n get iconUrl() {\n return this.config?.iconUrl;\n }\n\n get icon() {\n return this.config?.icon;\n }\n\n get text() {\n return this.config?.text;\n }\n\n get buttonColor() {\n return this.config?.buttonColor ?? 'transparent';\n }\n\n get buttonTextColor() {\n return this.config?.buttonTextColor;\n }\n\n readonly handleAction: WorkUsingObservable = () => {\n const loginPromise = this.config.handleLogin();\n return from(loginPromise);\n };\n\n onActionSuccess = () => {\n // todo: show checkmark on success?\n };\n}\n\n@Component({\n selector: 'dbx-firebase-login-button-container',\n template: `\n <div class=\"dbx-firebase-login-button-container\">\n <ng-content></ng-content>\n </div>\n `\n})\nexport class DbxFirebaseLoginButtonContainerComponent {}\n\nexport const DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE = `\n <dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"config\"></dbx-firebase-login-button>\n </dbx-firebase-login-button-container>\n`;\n\n@Directive()\nexport abstract class AbstractConfiguredDbxFirebaseLoginButtonDirective implements OnInit {\n readonly dbxFirebaseAuthService = inject(DbxFirebaseAuthService);\n readonly dbxFirebaseAuthLoginService = inject(DbxFirebaseAuthLoginService);\n readonly dbxFirebaseLoginContext = inject(DbxFirebaseLoginContext);\n\n private _config!: DbxFirebaseLoginButtonConfig;\n\n abstract readonly loginProvider: FirebaseLoginMethodType;\n\n ngOnInit(): void {\n const assets = this.assetConfig;\n\n this._config = {\n text: assets.loginText ?? `<loginText not configured>`,\n icon: assets.loginIcon,\n iconUrl: assets.logoUrl,\n buttonColor: assets.backgroundColor,\n buttonTextColor: assets.textColor,\n handleLogin: () => this.handleLogin()\n };\n }\n\n abstract handleLogin(): Promise<unknown>;\n\n get providerConfig() {\n return this.dbxFirebaseAuthLoginService.getLoginProvider(this.loginProvider);\n }\n\n get assetConfig() {\n return this.dbxFirebaseAuthLoginService.getProviderAssets(this.loginProvider) ?? {};\n }\n\n get config() {\n return this._config;\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractConfiguredDbxFirebaseLoginButtonDirective, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE } from './login.button.component';\n\n@Component({\n selector: 'dbx-firebase-login-apple',\n template: DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE\n})\nexport class DbxFirebaseLoginAppleComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {\n readonly loginProvider = 'apple';\n\n handleLogin() {\n return this.dbxFirebaseAuthService.logInWithApple();\n }\n}\n","export type FirebaseLoginMethodType = string;\nexport type FirebaseLoginMethodCategory = string;\n\nexport type KnownFirebaseLoginMethodType = 'email' | 'phone' | 'google' | 'facebook' | 'github' | 'twitter' | 'apple' | 'microsoft' | 'anonymous'; // TODO: Add more\n\nexport const DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY = 'default';\nexport const OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY = 'oauth';\n\nexport type KnownFirebaseLoginMethodCategory = typeof DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY | typeof OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY;\n\nexport type DbxFirebaseLoginMode = 'login' | 'register';\n","import { Component } from '@angular/core';\nimport { AbstractConfiguredDbxFirebaseLoginButtonDirective, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE } from './login.button.component';\n\n@Component({\n selector: 'dbx-firebase-login-anonymous',\n template: DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE\n})\nexport class DbxFirebaseLoginAnonymousComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {\n readonly loginProvider = 'anonymous';\n\n handleLogin() {\n return this.dbxFirebaseAuthService.logInAsAnonymous();\n }\n}\n","import { Directive } from '@angular/core';\nimport { AbstractForwardDbxInjectionContextDirective } from '@dereekb/dbx-core';\nimport { DbxFirebaseLoginContext } from './login.context';\n\n/**\n * DbxFirebaseLoginContext implementation.\n */\n@Directive({\n selector: '[dbxFirebaseLoginContext]',\n providers: [\n {\n provide: DbxFirebaseLoginContext,\n useExisting: DbxFirebaseLoginContextDirective\n }\n ]\n})\nexport class DbxFirebaseLoginContextDirective extends AbstractForwardDbxInjectionContextDirective implements DbxFirebaseLoginContext {}\n","import { Observable, BehaviorSubject, map, shareReplay, combineLatest } from 'rxjs';\nimport { DbxFirebaseAuthLoginProvider, DbxFirebaseAuthLoginService } from './login.service';\nimport { DbxFirebaseLoginMode, FirebaseLoginMethodType, FirebaseLoginMethodCategory } from './login';\nimport { Component, Input, OnDestroy, inject } from '@angular/core';\nimport { containsStringAnyCase, Maybe, ArrayOrValue, excludeValuesFromArray, asArray } from '@dereekb/util';\nimport { DbxInjectionComponentConfig } from '@dereekb/dbx-core';\n\n/**\n * Pre-configured login component that displays all configured login types.\n */\n@Component({\n selector: 'dbx-firebase-login-list',\n template: `\n <div class=\"dbx-firebase-login-item\" *ngFor=\"let config of providerInjectionConfigs$ | async\">\n <dbx-injection [config]=\"config\"></dbx-injection>\n </div>\n `,\n host: {\n class: 'dbx-firebase-login-list'\n }\n})\nexport class DbxFirebaseLoginListComponent implements OnDestroy {\n readonly dbxFirebaseAuthLoginService = inject(DbxFirebaseAuthLoginService);\n\n private _loginMode = new BehaviorSubject<DbxFirebaseLoginMode>('login');\n private _inputProviderCategories = new BehaviorSubject<Maybe<ArrayOrValue<FirebaseLoginMethodCategory>>>(undefined);\n private _omitProviderTypes = new BehaviorSubject<Maybe<ArrayOrValue<FirebaseLoginMethodType>>>(undefined);\n private _inputProviderTypes = new BehaviorSubject<Maybe<ArrayOrValue<FirebaseLoginMethodType>>>(undefined);\n\n readonly providerTypes$: Observable<string[]> = combineLatest([this._inputProviderTypes, this._omitProviderTypes]).pipe(\n map(([providerTypes, omitProviderTypes]) => {\n const baseTypes = providerTypes ? asArray(providerTypes) : this.dbxFirebaseAuthLoginService.getEnabledTypes();\n const types = omitProviderTypes ? excludeValuesFromArray(baseTypes, asArray(omitProviderTypes)) : baseTypes;\n return types;\n }),\n shareReplay(1)\n );\n\n readonly providers$ = combineLatest([this.providerTypes$, this._inputProviderCategories]).pipe(\n map(([x, inputProviderCategories]) => {\n const providerCategories = asArray(inputProviderCategories);\n let providers = this.dbxFirebaseAuthLoginService.getLoginProviders(x);\n\n if (providerCategories.length) {\n const categories = new Set(providerCategories);\n providers = providers.filter((x) => containsStringAnyCase(categories, x.category ?? ''));\n }\n\n return providers;\n })\n );\n\n readonly providerInjectionConfigs$: Observable<DbxInjectionComponentConfig[]> = combineLatest([this._loginMode, this.providers$]).pipe(\n map(([mode, providers]: [DbxFirebaseLoginMode, DbxFirebaseAuthLoginProvider[]]) => {\n const mapFn = mode === 'register' ? (x: DbxFirebaseAuthLoginProvider) => ({ componentClass: x.registrationComponentClass ?? x.componentClass } as DbxInjectionComponentConfig) : (x: DbxFirebaseAuthLoginProvider) => ({ componentClass: x.componentClass } as DbxInjectionComponentConfig);\n return providers.map(mapFn);\n })\n );\n\n ngOnDestroy(): void {\n this._loginMode.complete();\n this._inputProviderCategories.complete();\n this._omitProviderTypes.complete();\n this._inputProviderTypes.complete();\n }\n\n @Input()\n set loginMode(loginMode: DbxFirebaseLoginMode) {\n this._loginMode.next(loginMode);\n }\n\n @Input()\n set providerTypes(providerTypes: Maybe<ArrayOrValue<FirebaseLoginMethodType>>) {\n this._inputProviderTypes.next(providerTypes);\n }\n\n @Input()\n set omitProviderTypes(providerTypes: Maybe<ArrayOrValue<FirebaseLoginMethodType>>) {\n this._omitProviderTypes.next(providerTypes);\n }\n\n @Input()\n set providerCategories(providerCategories: Maybe<ArrayOrValue<FirebaseLoginMethodCategory>>) {\n this._inputProviderCategories.next(providerCategories);\n }\n}\n","import { DbxFirebaseLoginMode, FirebaseLoginMethodCategory, FirebaseLoginMethodType } from './login';\nimport { Component, Input } from '@angular/core';\nimport { ArrayOrValue, Maybe } from '@dereekb/util';\n\n/**\n * Pre-configured login component that displays all configured login types.\n */\n@Component({\n selector: 'dbx-firebase-login',\n template: `\n <ng-container *dbxInjectionContext dbxFirebaseLoginContext>\n <dbx-firebase-login-list [providerTypes]=\"providerTypes\" [omitProviderTypes]=\"omitProviderTypes\" [providerCategories]=\"providerCategories\" [loginMode]=\"loginMode\"></dbx-firebase-login-list>\n </ng-container>\n `,\n host: {\n class: 'd-block dbx-firebase-login',\n '[class]': '{ \"dbx-firebase-register\": loginMode === \"register\" }'\n }\n})\nexport class DbxFirebaseLoginComponent {\n @Input()\n loginMode: DbxFirebaseLoginMode = 'login';\n\n @Input()\n providerTypes: Maybe<ArrayOrValue<FirebaseLoginMethodType>>;\n\n @Input()\n omitProviderTypes: Maybe<ArrayOrValue<FirebaseLoginMethodType>>;\n\n @Input()\n providerCategories: Maybe<ArrayOrValue<FirebaseLoginMethodCategory>>;\n}\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { TextPasswordFieldConfig, provideFormlyContext, AbstractAsyncFormlyFormDirective, usernamePasswordLoginFields, DefaultUsernameLoginFieldsValue } from '@dereekb/dbx-form';\nimport { Maybe } from '@dereekb/util';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { BehaviorSubject, map, Observable } from 'rxjs';\nimport { DbxFirebaseLoginMode } from './login';\n\nexport type DbxFirebaseEmailFormValue = DefaultUsernameLoginFieldsValue;\n\nexport interface DbxFirebaseEmailFormConfig {\n loginMode: DbxFirebaseLoginMode;\n passwordConfig?: TextPasswordFieldConfig;\n}\n\n@Component({\n template: `\n <dbx-formly></dbx-formly>\n `,\n selector: 'dbx-firebase-email-form',\n providers: [provideFormlyContext()]\n})\nexport class DbxFirebaseEmailFormComponent extends AbstractAsyncFormlyFormDirective<DbxFirebaseEmailFormValue> implements OnDestroy {\n private _config = new BehaviorSubject<DbxFirebaseEmailFormConfig>({ loginMode: 'login' });\n\n readonly fields$: Observable<Maybe<FormlyFieldConfig[]>> = this._config.pipe(\n map(({ loginMode = 'login', passwordConfig }) => {\n const fields: FormlyFieldConfig[] = usernamePasswordLoginFields({ username: 'email', password: passwordConfig, verifyPassword: loginMode === 'register' });\n return fields;\n })\n );\n\n @Input()\n set config(config: DbxFirebaseEmailFormConfig) {\n this._config.next(config);\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this._config.complete();\n }\n}\n","import { Component } from '@angular/core';\nimport { provideFormlyContext, AbstractSyncFormlyFormDirective, emailField } from '@dereekb/dbx-form';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\n\nexport interface DbxFirebaseEmailRecoveryFormValue {\n email: string;\n}\n\n@Component({\n template: `\n <dbx-formly></dbx-formly>\n `,\n selector: 'dbx-firebase-email-recovery-form',\n providers: [provideFormlyContext()]\n})\nexport class DbxFirebaseEmailRecoveryFormComponent extends AbstractSyncFormlyFormDirective<DbxFirebaseEmailRecoveryFormValue> {\n readonly fields: FormlyFieldConfig[] = [emailField({ required: true })];\n}\n","import { DbxFirebaseEmailRecoveryFormValue } from './login.email.recovery.form.component';\nimport { DBX_INJECTION_COMPONENT_DATA, ClickableAnchor, DbxActionSuccessHandlerFunction } from '@dereekb/dbx-core';\nimport { WorkUsingObservable, WorkUsingContext } from '@dereekb/rxjs';\nimport { DbxFirebaseAuthService } from './../service/firebase.auth.service';\nimport { firstValueFrom, from, tap, BehaviorSubject } from 'rxjs';\nimport { Component, EventEmitter, OnDestroy, inject } from '@angular/core';\nimport { DbxFirebaseLoginContext } from './login.context';\nimport { DbxFirebaseEmailFormValue, DbxFirebaseEmailFormConfig } from './login.email.form.component';\nimport { DbxFirebaseLoginMode } from './login';\nimport { firebaseAuthErrorToReadableError } from '@dereekb/firebase';\nimport { Maybe } from '@dereekb/util';\n\nexport interface DbxFirebaseLoginEmailContentComponentConfig extends DbxFirebaseEmailFormConfig {\n loginMode: DbxFirebaseLoginMode;\n}\n\nexport type DbxFirebaseLoginEmailContentMode = 'login' | 'recover' | 'recoversent';\n\n@Component({\n templateUrl: './login.email.content.component.html'\n})\nexport class DbxFirebaseLoginEmailContentComponent implements OnDestroy {\n readonly dbxFirebaseAuthService = inject(DbxFirebaseAuthService);\n readonly config = inject<DbxFirebaseLoginEmailContentComponentConfig>(DBX_INJECTION_COMPONENT_DATA);\n\n readonly formConfig: DbxFirebaseEmailFormConfig = {\n loginMode: this.config.loginMode,\n passwordConfig: this.config.passwordConfig\n };\n\n emailFormValue: Maybe<DbxFirebaseEmailFormValue>;\n recoveryFormValue: Maybe<DbxFirebaseEmailRecoveryFormValue>;\n\n private _emailMode = new BehaviorSubject<DbxFirebaseLoginEmailContentMode>('login');\n readonly emailMode$ = this._emailMode.asObservable();\n\n readonly forgotAnchor: ClickableAnchor = {\n onClick: () => {\n this.openRecovery();\n }\n };\n\n readonly doneOrCancelled = new EventEmitter<boolean>();\n\n static openEmailLoginContext(dbxFirebaseLoginContext: DbxFirebaseLoginContext, config: DbxFirebaseLoginEmailContentComponentConfig): Promise<boolean> {\n return dbxFirebaseLoginContext.showContext({\n config: {\n componentClass: DbxFirebaseLoginEmailContentComponent,\n data: config\n },\n use: (instance) => firstValueFrom(instance.doneOrCancelled)\n });\n }\n\n ngOnDestroy(): void {\n this._emailMode.complete();\n }\n\n get loginMode() {\n return this.config.loginMode;\n }\n\n get isLoginMode() {\n return this.loginMode === 'login';\n }\n\n get isRegisterMode() {\n return this.loginMode === 'register';\n }\n\n get buttonText() {\n return this.config.loginMode === 'register' ? 'Register' : 'Log In';\n }\n\n readonly handleLoginAction: WorkUsingObservable<DbxFirebaseEmailFormValue> = (value: DbxFirebaseEmailFormValue) => {\n this.emailFormValue = value;\n this.recoveryFormValue = { email: value.username }; // cache value for recovery\n\n let result;\n\n if (this.loginMode === 'register') {\n result = this.dbxFirebaseAuthService.registerWithEmailAndPassword(value.username, value.password);\n } else {\n result = this.dbxFirebaseAuthService.logInWithEmailAndPassword(value.username, value.password).catch((error) => {\n throw firebaseAuthErrorToReadableError(error);\n });\n }\n\n return from(result).pipe(\n tap(() => {\n this.doneOrCancelled.next(true);\n })\n );\n };\n\n // MARK: Recovery\n openRecovery() {\n this._emailMode.next('recover');\n }\n\n readonly handleRecoveryAction: WorkUsingContext<DbxFirebaseEmailRecoveryFormValue> = (value: DbxFirebaseEmailRecoveryFormValue, context) => {\n this.recoveryFormValue = value;\n this.emailFormValue = { username: value.email, password: '' };\n context.startWorkingWithPromise(this.dbxFirebaseAuthService.sendPasswordResetEmail(value.email));\n };\n\n // MARK: Recovering\n readonly handleRecoverySuccess: DbxActionSuccessHandlerFunction = (x) => {\n this._emailMode.next('recoversent');\n };\n\n clickedRecoveryAcknowledged() {\n this._emailMode.next('login');\n }\n\n // MARK: Cancel\n onCancel() {\n this.doneOrCancelled.next(false);\n }\n\n onCancelReset() {\n this.doneOrCancelled.next(false);\n }\n}\n","<div class=\"dbx-firebase-login-email-content\">\n <ng-container [ngSwitch]=\"emailMode$ | async\">\n <ng-container *ngSwitchCase=\"'login'\">\n <ng-container *ngTemplateOutlet=\"loginView\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'recover'\">\n <ng-container *ngTemplateOutlet=\"resetPassword\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'recoversent'\">\n <ng-container *ngTemplateOutlet=\"resetPasswordSent\"></ng-container>\n </ng-container>\n </ng-container>\n</div>\n\n<!-- Login View -->\n<ng-template #loginView>\n <ng-container dbxAction [dbxActionHandler]=\"handleLoginAction\">\n <dbx-firebase-email-form [config]=\"formConfig\" dbxActionForm [dbxFormSource]=\"emailFormValue\"></dbx-firebase-email-form>\n <div class=\"dbx-firebase-login-email-forgot-prompt\" *ngIf=\"isLoginMode\">\n <dbx-link [anchor]=\"forgotAnchor\">Forgot Password?</dbx-link>\n </div>\n <div class=\"dbx-flex\">\n <dbx-button class=\"dbx-button-wide\" [text]=\"buttonText\" [raised]=\"true\" color=\"primary\" dbxActionButton></dbx-button>\n <dbx-button-spacer></dbx-button-spacer>\n <span class=\"dbx-spacer\"></span>\n <button mat-flat-button (click)=\"onCancel()\">Cancel</button>\n </div>\n <dbx-error dbxActionError></dbx-error>\n </ng-container>\n</ng-template>\n\n<!-- Reset Password View -->\n<ng-template #resetPassword>\n <div class=\"dbx-firebase-login-email-content-recovery\" dbxAction [dbxActionHandler]=\"handleRecoveryAction\" [dbxActionSuccessHandler]=\"handleRecoverySuccess\">\n <dbx-firebase-email-recovery-form dbxActionForm [dbxFormSource]=\"recoveryFormValue\"></dbx-firebase-email-recovery-form>\n <p class=\"dbx-hint\">An email will be sent to the above address to help you reset your password.</p>\n <div class=\"dbx-flex\">\n <dbx-button class=\"dbx-button-wide\" text=\"Send Recovery Email\" [raised]=\"true\" color=\"primary\" dbxActionButton></dbx-button>\n <span class=\"dbx-spacer\"></span>\n <button mat-flat-button (click)=\"onCancelReset()\">Cancel Recovery</button>\n </div>\n <dbx-error dbxActionError></dbx-error>\n </div>\n</ng-template>\n\n<!-- Reset Password Sent -->\n<ng-template #resetPasswordSent>\n <div class=\"dbx-firebase-login-email-content-recovery-sent\">\n <p class=\"dbx-hint\">A recovery email was sent to the specified address. Please check your email for next steps.</p>\n <button mat-raised-button (click)=\"clickedRecoveryAcknowledged()\">Ok</button>\n </div>\n</ng-template>\n","import { Component } from '@angular/core';\nimport { AbstractConfiguredDbxFirebaseLoginButtonDirective, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE } from './login.button.component';\nimport { DbxFirebaseLoginEmailContentComponent } from './login.email.content.component';\n\n@Component({\n selector: 'dbx-firebase-login-email',\n template: DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE\n})\nexport class DbxFirebaseLoginEmailComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {\n readonly loginProvider = 'email';\n\n handleLogin() {\n return DbxFirebaseLoginEmailContentComponent.openEmailLoginContext(this.dbxFirebaseLoginContext, { loginMode: 'login', passwordConfig: this.dbxFirebaseAuthLoginService.getPasswordConfig() });\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractConfiguredDbxFirebaseLoginButtonDirective, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE } from './login.button.component';\n\n@Component({\n selector: 'dbx-firebase-login-facebook',\n template: DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE\n})\nexport class DbxFirebaseLoginFacebookComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {\n readonly loginProvider = 'facebook';\n\n handleLogin() {\n return this.dbxFirebaseAuthService.logInWithFacebook();\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractConfiguredDbxFirebaseLoginButtonDirective, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE } from './login.button.component';\n\n@Component({\n selector: 'dbx-firebase-login-google',\n template: DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE\n})\nexport class DbxFirebaseLoginGoogleComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {\n readonly loginProvider = 'google';\n\n handleLogin() {\n return this.dbxFirebaseAuthService.logInWithGoogle();\n }\n}\n","import { FirebaseLoginMethodCategory, FirebaseLoginMethodType } from './login';\nimport { Component, Input } from '@angular/core';\nimport { ArrayOrValue, Maybe } from '@dereekb/util';\n\n/**\n * Pre-configured register component that displays all configured login types and their registration components.\n */\n@Component({\n selector: 'dbx-firebase-register',\n template: `\n <dbx-firebase-login loginMode=\"register\" [providerTypes]=\"providerTypes\" [omitProviderTypes]=\"omitProviderTypes\" [providerCategories]=\"providerCategories\"></dbx-firebase-login>\n `\n})\nexport class DbxFirebaseRegisterComponent {\n @Input()\n providerTypes: Maybe<ArrayOrValue<FirebaseLoginMethodType>>;\n\n @Input()\n omitProviderTypes: Maybe<ArrayOrValue<FirebaseLoginMethodType>>;\n\n @Input()\n providerCategories: Maybe<ArrayOrValue<FirebaseLoginMethodCategory>>;\n}\n","import { Component } from '@angular/core';\nimport { AbstractConfiguredDbxFirebaseLoginButtonDirective, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE } from './login.button.component';\n\n@Component({\n selector: 'dbx-firebase-login-github',\n template: DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE\n})\nexport class DbxFirebaseLoginGitHubComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {\n readonly loginProvider = 'github';\n\n handleLogin() {\n return this.dbxFirebaseAuthService.logInWithGithub();\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractConfiguredDbxFirebaseLoginButtonDirective, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE } from './login.button.component';\n\n@Component({\n selector: 'dbx-firebase-login-twitter',\n template: DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE\n})\nexport class DbxFirebaseLoginTwitterComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {\n readonly loginProvider = 'twitter';\n\n handleLogin() {\n return this.dbxFirebaseAuthService.logInWithTwitter();\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractConfiguredDbxFirebaseLoginButtonDirective, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE } from './login.button.component';\n\n@Component({\n selector: 'dbx-firebase-login-microsoft',\n template: DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE\n})\nexport class DbxFirebaseLoginMicrosoftComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {\n readonly loginProvider = 'microsoft';\n\n handleLogin() {\n return this.dbxFirebaseAuthService.logInWithMicrosoft();\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractConfiguredDbxFirebaseLoginButtonDirective } from './login.button.component';\nimport { DbxFirebaseLoginEmailContentComponent } from './login.email.content.component';\n\n@Component({\n templateUrl: './register.email.component.html'\n})\nexport class DbxFirebaseRegisterEmailComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {\n readonly loginProvider = 'email';\n\n handleLogin() {\n return DbxFirebaseLoginEmailContentComponent.openEmailLoginContext(this.dbxFirebaseLoginContext, { loginMode: 'register', passwordConfig: this.dbxFirebaseAuthLoginService.getPasswordConfig() });\n }\n}\n","<dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"config\"></dbx-firebase-login-button>\n</dbx-firebase-login-button-container>\n","import { DbxInjectionComponentConfig } from '@dereekb/dbx-core';\n\nimport { Component, inject } from '@angular/core';\nimport { DbxFirebaseAuthLoginService } from './login.service';\n\n@Component({\n selector: 'dbx-firebase-login-terms',\n template: `\n <dbx-injection [config]=\"config\"></dbx-injection>\n `,\n host: {\n class: 'dbx-firebase-login-terms d-block'\n }\n})\nexport class DbxFirebaseLoginTermsComponent {\n readonly dbxFirebaseAuthLoginService = inject(DbxFirebaseAuthLoginService);\n\n readonly config: DbxInjectionComponentConfig = {\n componentClass: this.dbxFirebaseAuthLoginService.termsComponentClass\n };\n}\n","import { ClickableAnchor } from '@dereekb/dbx-core';\nimport { Component, EventEmitter, Output } from '@angular/core';\n\n@Component({\n selector: 'dbx-firebase-login-context-back-button',\n template: `\n <dbx-link [anchor]=\"anchor\">Choose other login method.</dbx-link>\n `\n})\nexport class DbxFirebaseLoginContextBackButtonComponent {\n @Output()\n readonly cancelLogin = new EventEmitter<void>();\n\n readonly anchor: ClickableAnchor = {\n onClick: () => this.cancelLogin.emit()\n };\n}\n","import { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { DbxFirebaseLoginAppleComponent } from './login.apple.component';\nimport { DbxFirebaseLoginButtonComponent, DbxFirebaseLoginButtonContainerComponent } from './login.button.component';\nimport { Inject, ModuleWithProviders, NgModule, Type, inject } from '@angular/core';\nimport { DbxInjectionComponentModule } from '@dereekb/dbx-core';\nimport { DbxActionModule, DbxRouterAnchorModule, DbxButtonModule, DbxReadableErrorModule } from '@dereekb/dbx-web';\nimport { FirebaseLoginMethodType, KnownFirebaseLoginMethodType, OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY, DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY } from './login';\nimport { DbxFirebaseLoginAnonymousComponent } from './login.anonymous.component';\nimport { DbxFirebaseLoginComponent } from './login.component';\nimport { DbxFirebaseLoginEmailComponent } from './login.email.component';\nimport { DbxFirebaseLoginFacebookComponent } from './login.facebook.component';\nimport { DbxFirebaseLoginGoogleComponent } from './login.google.component';\nimport { DbxFirebaseAuthLoginProvider, DbxFirebaseAuthLoginService, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN } from './login.service';\nimport { DbxFirebaseRegisterComponent } from './register.component';\nimport { DbxFirebaseLoginGitHubComponent } from './login.github.component';\nimport { DbxFirebaseLoginTwitterComponent } from './login.twitter.component';\nimport { DbxFirebaseLoginMicrosoftComponent } from './login.microsoft.component';\nimport { DbxFirebaseLoginListComponent } from './login.list.component';\nimport { DbxFirebaseRegisterEmailComponent } from './register.email.component';\nimport { DbxFirebaseLoginContextDirective } from './login.context.directive';\nimport { DbxFirebaseLoginEmailContentComponent } from './login.email.content.component';\nimport { DbxFormActionModule, DbxFormFormlyTextFieldModule, DbxFormIoModule, DbxFormlyModule, DbxFormModule } from '@dereekb/dbx-form';\nimport { DbxFirebaseEmailFormComponent } from './login.email.form.component';\nimport { DbxFirebaseLoginTermsComponent } from './login.terms.component';\nimport { DbxFirebaseLoginTermsSimpleComponent } from './login.terms.simple.component';\nimport { DbxFirebaseLoginContextBackButtonComponent } from './login.context.back.component';\nimport { DbxFirebaseEmailRecoveryFormComponent } from './login.email.recovery.form.component';\nimport { DbxFirebaseAuthLoginPasswordConfig } from './login.password';\nimport { DbxFirebaseLoginTermsConfig } from './login.terms';\n\nexport abstract class DbxFirebaseLoginModuleRootConfig extends DbxFirebaseLoginTermsConfig {\n abstract readonly enabledLoginMethods: FirebaseLoginMethodType[] | true;\n abstract readonly termsComponentClass?: Type<unknown>;\n abstract readonly passwordConfig?: DbxFirebaseAuthLoginPasswordConfig;\n}\n\nexport function defaultFirebaseAuthLoginProvidersFactory(): DbxFirebaseAuthLoginProvider[] {\n // NOTE: Asset URLS are from Firebase.\n // https://firebase.google.com/docs/auth/web/firebaseui\n const baseFirebaseJSUrl = `https://www.gstatic.com/firebasejs/ui/2.0.0/images/auth`;\n\n // NOTE: Colors are from https://brandcolors.net/\n\n return [\n {\n category: DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY,\n loginMethodType: 'email' as KnownFirebaseLoginMethodType,\n componentClass: DbxFirebaseLoginEmailComponent,\n registrationComponentClass: DbxFirebaseRegisterEmailComponent,\n assets: {\n logoUrl: `${baseFirebaseJSUrl}/mail.svg`,\n loginText: 'Continue with Email',\n backgroundColor: '#ea4335', // gmail red color\n textColor: '#FFF'\n }\n },\n {\n category: OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY,\n loginMethodType: 'google' as KnownFirebaseLoginMethodType,\n componentClass: DbxFirebaseLoginGoogleComponent,\n assets: {\n logoUrl: `${baseFirebaseJSUrl}/google.svg`,\n loginText: 'Continue with Google',\n backgroundColor: '#FFF',\n textColor: '#757575'\n }\n },\n {\n category: OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY,\n loginMethodType: 'facebook' as KnownFirebaseLoginMethodType,\n componentClass: DbxFirebaseLoginFacebookComponent,\n assets: {\n logoUrl: `${baseFirebaseJSUrl}/facebook.svg`,\n loginText: 'Continue with Facebook',\n backgroundColor: '#4267B2',\n textColor: '#FFF'\n }\n },\n {\n category: OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY,\n loginMethodType: 'twitter' as KnownFirebaseLoginMethodType,\n componentClass: DbxFirebaseLoginTwitterComponent,\n assets: {\n logoUrl: `${baseFirebaseJSUrl}/twitter.svg`,\n loginText: 'Continue with Twitter',\n backgroundColor: '#1da1f2',\n textColor: '#FFF'\n }\n },\n {\n category: OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY,\n loginMethodType: 'github' as KnownFirebaseLoginMethodType,\n componentClass: DbxFirebaseLoginGitHubComponent,\n assets: {\n logoUrl: `${baseFirebaseJSUrl}/github.svg`,\n loginText: 'Continue with Github',\n backgroundColor: '#333',\n textColor: '#FFF'\n }\n },\n /*{\n category: OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY,\n loginMethodType: 'apple' as KnownFirebaseLoginMethodType,\n componentClass: DbxFirebaseLoginGitHubComponent,\n assets: {\n logoUrl: `${baseFirebaseJSUrl}/apple.svg`,\n loginText: 'Continue with Apple',\n backgroundColor: '#333',\n textColor: '#FFF'\n }\n }, {\n category: OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY,\n loginMethodType: 'microsoft' as KnownFirebaseLoginMethodType,\n componentClass: DbxFirebaseLoginGitHubComponent,\n assets: {\n logoUrl: `${baseFirebaseJSUrl}/microsoft.svg`,\n loginText: 'Continue with Microsoft',\n backgroundColor: '#ea3e23',\n textColor: '#FFF'\n }\n },*/ {\n category: DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY,\n loginMethodType: 'anonymous' as KnownFirebaseLoginMethodType,\n componentClass: DbxFirebaseLoginAnonymousComponent,\n assets: {\n loginIcon: 'account_circle',\n loginText: 'Continue as Guest',\n backgroundColor: '#000',\n textColor: '#FFF'\n }\n }\n ];\n}\n\n/**\n * Contains components related to logging in.\n */\n@NgModule({\n imports: [CommonModule, MatIconModule, MatButtonModule, DbxRouterAnchorModule, DbxFormIoModule, DbxFormModule, DbxFormlyModule, DbxFormActionModule, DbxFormFormlyTextFieldModule, DbxReadableErrorModule, DbxActionModule, DbxButtonModule, DbxInjectionComponentModule],\n declarations: [\n DbxFirebaseLoginComponent,\n DbxFirebaseLoginContextDirective,\n DbxFirebaseLoginContextBackButtonComponent,\n DbxFirebaseRegisterComponent,\n DbxFirebaseLoginListComponent,\n DbxFirebaseLoginButtonComponent,\n DbxFirebaseLoginButtonContainerComponent,\n DbxFirebaseLoginEmailComponent,\n DbxFirebaseLoginEmailContentComponent,\n DbxFirebaseEmailFormComponent,\n DbxFirebaseEmailRecoveryFormComponent,\n DbxFirebaseRegisterEmailComponent,\n DbxFirebaseLoginGoogleComponent,\n DbxFirebaseLoginGitHubComponent,\n DbxFirebaseLoginTwitterComponent,\n DbxFirebaseLoginAppleComponent,\n DbxFirebaseLoginMicrosoftComponent,\n DbxFirebaseLoginFacebookComponent,\n DbxFirebaseLoginAnonymousComponent,\n DbxFirebaseLoginTermsComponent,\n DbxFirebaseLoginTermsSimpleComponent\n ],\n exports: [\n DbxFirebaseLoginComponent,\n DbxFirebaseLoginContextDirective,\n DbxFirebaseLoginContextBackButtonComponent,\n DbxFirebaseRegisterComponent,\n DbxFirebaseLoginListComponent,\n DbxFirebaseLoginButtonComponent,\n DbxFirebaseLoginButtonContainerComponent,\n DbxFirebaseLoginEmailComponent,\n DbxFirebaseLoginEmailContentComponent,\n DbxFirebaseEmailFormComponent,\n DbxFirebaseEmailRecoveryFormComponent,\n DbxFirebaseRegisterEmailComponent,\n DbxFirebaseLoginGoogleComponent,\n DbxFirebaseLoginGitHubComponent,\n DbxFirebaseLoginTwitterComponent,\n DbxFirebaseLoginAppleComponent,\n DbxFirebaseLoginMicrosoftComponent,\n DbxFirebaseLoginFacebookComponent,\n DbxFirebaseLoginAnonymousComponent,\n DbxFirebaseLoginTermsComponent,\n DbxFirebaseLoginTermsSimpleComponent\n ],\n providers: []\n})\nexport class DbxFirebaseLoginModule {\n readonly dbxFirebaseAuthLoginService = inject(DbxFirebaseAuthLoginService);\n\n constructor(@Inject(DbxFirebaseLoginModuleRootConfig) config: DbxFirebaseLoginModuleRootConfig) {\n if (config.enabledLoginMethods === true) {\n this.dbxFirebaseAuthLoginService.setEnableAll();\n } else {\n this.dbxFirebaseAuthLoginService.enable(config.enabledLoginMethods); // enable the types in the service.\n }\n }\n\n static forRoot(config: DbxFirebaseLoginModuleRootConfig): ModuleWithProviders<DbxFirebaseLoginModule> {\n return {\n ngModule: DbxFirebaseLoginModule,\n providers: [\n {\n provide: DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN,\n useFactory: defaultFirebaseAuthLoginProvidersFactory\n },\n {\n provide: DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN,\n useValue: config.termsComponentClass\n },\n {\n provide: DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN,\n useValue: config.passwordConfig\n },\n {\n provide: DbxFirebaseLoginModuleRootConfig,\n useValue: config\n },\n {\n provide: DbxFirebaseLoginTermsConfig,\n useValue: config\n }\n ]\n };\n }\n}\n","import { addToSetCopy, AuthClaims, AuthClaimsObject, AuthRoleClaimsService, AuthRoleSet, filterMaybeValues } from '@dereekb/util';\nimport { map, Observable, switchMap } from 'rxjs';\nimport { authUserStateFromFirebaseAuthServiceFunction, stateFromTokenForLoggedInUserFunction, StateFromTokenFunction } from './firebase.auth.rxjs';\nimport { AuthUserStateObsFunction, DbxFirebaseAuthService, DbxFirebaseAuthServiceDelegate, DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE } from './firebase.auth.service';\n\nexport interface AuthRolesObsWithClaimsServiceConfig<T extends AuthClaimsObject> extends Partial<Pick<DbxFirebaseAuthServiceDelegate, 'isAdminInAuthRoleSet' | 'authUserStateObs'>> {\n /**\n * (Optional) alternative to supplying authUserStateObs. Is passed to authUserStateFromFirebaseAuthService.\n */\n readonly stateForLoggedInUser?: AuthUserStateObsFunction;\n /**\n * (Optional) alternative to supplying authUserStateObs.\n */\n readonly stateForLoggedInUserToken?: StateFromTokenFunction;\n /**\n * Claims service to use for decoding.\n */\n readonly claimsService: AuthRoleClaimsService<T>;\n /**\n * Whether or not to also add the current AuthUserState value to decoded roles.\n */\n readonly addAuthUserStateToRoles?: boolean;\n}\n\nexport function authRolesObsWithClaimsService<T extends AuthClaimsObject>(config: AuthRolesObsWithClaimsServiceConfig<T>): (dbxFirebaseAuthService: DbxFirebaseAuthService) => Observable<AuthRoleSet> {\n const { addAuthUserStateToRoles: addAuthUserState, claimsService } = config;\n\n return (dbxFirebaseAuthService: DbxFirebaseAuthService): Observable<AuthRoleSet> => {\n let obs = dbxFirebaseAuthService.idTokenResult$.pipe(map((x) => claimsService.toRoles(x.claims as AuthClaims<T>)));\n\n if (addAuthUserState) {\n obs = obs.pipe(switchMap((authRoleSet: AuthRoleSet) => dbxFirebaseAuthService.authUserState$.pipe(map((userState) => addToSetCopy(authRoleSet, [userState])))));\n }\n\n return obs;\n };\n}\n\nexport type DefaultDbxFirebaseAuthServiceDelegateWithClaimsServiceConfig<T extends AuthClaimsObject> = AuthRolesObsWithClaimsServiceConfig<T>;\n\nexport function defaultDbxFirebaseAuthServiceDelegateWithClaimsService<T extends AuthClaimsObject>(config: DefaultDbxFirebaseAuthServiceDelegateWithClaimsServiceConfig<T>): DbxFirebaseAuthServiceDelegate {\n if (filterMaybeValues([config.stateForLoggedInUser, config.stateForLoggedInUserToken, config.authUserStateObs]).length > 1) {\n throw new Error('Cannot specify a combination of \"stateForLoggedInUserToken\", \"stateForLoggedInUser\" and \"authUserStateObs\". Must specify one at max.');\n }\n\n const authUserStateObs = config.authUserStateObs ?? authUserStateFromFirebaseAuthServiceFunction(config.stateForLoggedInUserToken ? stateFromTokenForLoggedInUserFunction(config.stateForLoggedInUserToken) : config.stateForLoggedInUser);\n\n return {\n authUserStateObs,\n isAdminInAuthRoleSet: config.isAdminInAuthRoleSet ?? DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE.isAdminInAuthRoleSet,\n authRolesObs: authRolesObsWithClaimsService(config),\n isOnboarded: DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE.isOnboarded,\n authRoleClaimsService: config.claimsService as unknown as AuthRoleClaimsService<AuthClaimsObject>\n };\n}\n","import { Injector, ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { DbxAuthService } from '@dereekb/dbx-core';\nimport { DbxFirebaseAuthService, DbxFirebaseAuthServiceDelegate } from './service/firebase.auth.service';\n\nexport interface DbxFirebaseAuthModuleConfig {\n delegateFactory?: (injector: Injector) => DbxFirebaseAuthServiceDelegate;\n}\n\n@NgModule({})\nexport class DbxFirebaseAuthModule {\n static forRoot(config: DbxFirebaseAuthModuleConfig): ModuleWithProviders<DbxFirebaseAuthModule> {\n const providers: Provider[] = [\n DbxFirebaseAuthService,\n {\n provide: DbxAuthService,\n useExisting: DbxFirebaseAuthService\n }\n ];\n\n if (config.delegateFactory) {\n providers.push({\n provide: DbxFirebaseAuthServiceDelegate,\n useFactory: config.delegateFactory,\n deps: [Injector]\n });\n }\n\n return {\n ngModule: DbxFirebaseAuthModule,\n providers\n };\n }\n}\n","import { iterableToArray } from '@dereekb/util';\nimport { Inject, Injectable, InjectionToken, Optional, inject } from '@angular/core';\nimport { DbxWidgetService, DbxWidgetType } from '@dereekb/dbx-web';\nimport { DbxFirebaseDevelopmentWidgetEntry } from './development.widget';\n\n/**\n * Default providers to inject.\n */\nexport const DEFAULT_FIREBASE_DEVELOPMENT_WIDGET_PROVIDERS_TOKEN = new InjectionToken('DefaultDbxFirebaseDevelopmentWidgetEntries');\n\n/**\n * Service used for registering widgets used for development.\n *\n * Default providers can be configured by the DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN injectable value.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseDevelopmentWidgetService {\n readonly dbxWidgetService = inject(DbxWidgetService);\n\n private _entries = new Map<DbxWidgetType, DbxFirebaseDevelopmentWidgetEntry>();\n\n constructor(@Optional() @Inject(DEFAULT_FIREBASE_DEVELOPMENT_WIDGET_PROVIDERS_TOKEN) defaultEntries: DbxFirebaseDevelopmentWidgetEntry[]) {\n if (defaultEntries) {\n defaultEntries.forEach((x) => this.register(x, false));\n }\n }\n\n /**\n * Used to register a provider. If a provider is already registered, this will override it by default.\n *\n * @param provider\n * @param override\n */\n register(provider: DbxFirebaseDevelopmentWidgetEntry, override: boolean = true): boolean {\n const type = provider.widget.type;\n\n if (override || !this._entries.has(type)) {\n this._entries.set(type, provider);\n this.dbxWidgetService.register(provider.widget, override);\n return true;\n } else {\n return false;\n }\n }\n\n getEntryWidgetIdentifiers(): DbxWidgetType[] {\n return Array.from(this._entries.keys());\n }\n\n getEntries(): DbxFirebaseDevelopmentWidgetEntry[] {\n return iterableToArray(this._entries.values());\n }\n}\n","import { DbxAuthService } from '@dereekb/dbx-core';\nimport { tap, switchMap, BehaviorSubject, Observable, interval, combineLatest, map, exhaustMap, distinctUntilChanged, shareReplay } from 'rxjs';\nimport { Initialized, Milliseconds, runAsyncTasksForValues } from '@dereekb/util';\nimport { Injectable, InjectionToken, inject } from '@angular/core';\nimport { lazyFrom, SubscriptionObject, switchMapWhileTrue } from '@dereekb/rxjs';\nimport { FirebaseDevelopmentFunctions, ScheduledFunctionDevelopmentFirebaseFunctionListEntry, ScheduledFunctionDevelopmentFirebaseFunctionListResult, ScheduledFunctionDevelopmentFunctionTypeEnum } from '@dereekb/firebase';\n\n/**\n * Whether or not the scheduler should be enabled.\n */\nexport const DEFAULT_FIREBASE_DEVELOPMENT_SCHEDULER_ENABLED_TOKEN = new InjectionToken('DefaultDbxFirebaseDevelopmentSchedulerEnabled');\n\n/**\n * Service used for hitting the scheduler in the development environment using the\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseDevelopmentSchedulerService implements Initialized {\n readonly dbxAuthService = inject(DbxAuthService);\n readonly firebaseDevelopmentFunctions = inject(FirebaseDevelopmentFunctions);\n\n private _sub = new SubscriptionObject();\n private _enabled = new BehaviorSubject<boolean>(inject<boolean>(DEFAULT_FIREBASE_DEVELOPMENT_SCHEDULER_ENABLED_TOKEN, { optional: true }) !== false);\n\n private _timerInterval = new BehaviorSubject<Milliseconds>(60 * 1000);\n private _error = new BehaviorSubject<boolean>(false);\n\n readonly enabled$ = this._enabled.asObservable();\n readonly running$ = combineLatest([this._enabled, this.dbxAuthService.authUserState$.pipe(map((x) => x === 'user'))]).pipe(\n map(([enabled, userReady]) => enabled && userReady),\n distinctUntilChanged(),\n shareReplay(1)\n );\n readonly timerInterval$ = this._timerInterval.asObservable();\n readonly error$ = this._error.pipe(distinctUntilChanged());\n\n readonly schedulerList$: Observable<ScheduledFunctionDevelopmentFirebaseFunctionListEntry[]> = lazyFrom(() => {\n return this.firebaseDevelopmentFunctions\n .scheduledFunction({ type: ScheduledFunctionDevelopmentFunctionTypeEnum.LIST })\n .then((result) => {\n const list = result as ScheduledFunctionDevelopmentFirebaseFunctionListResult;\n return list.list;\n })\n .catch((e) => {\n console.error('Failed to retrieve development schedule list from server.', e);\n throw e;\n });\n });\n\n init(): void {\n this._sub.subscription = this.running$\n .pipe(\n switchMapWhileTrue(() => {\n console.log('DbxFirebaseDevelopmentSchedulerService enabled.');\n return combineLatest([this._timerInterval, this.schedulerList$]).pipe(\n switchMap(([timerInterval, schedulerList]) => {\n const executionOrder: string[] = schedulerList.map((x) => x.name);\n\n return interval(timerInterval).pipe(\n exhaustMap(() => {\n console.log('Running scheduled tasks in order... ', executionOrder);\n\n return runAsyncTasksForValues(executionOrder, (taskName) => this.runScheduledFunction(taskName), { sequential: true, retriesAllowed: false })\n .then(() => true)\n .catch((e) => {\n console.log('Failed running scheduled task: ', e);\n this._error.next(true);\n return false;\n });\n }),\n tap((success) => {\n if (success) {\n console.log('Successfully finished running all scheduled tasks.');\n this._error.next(false);\n }\n })\n );\n })\n );\n })\n )\n .subscribe();\n }\n\n runScheduledFunction(taskName: string) {\n return this.firebaseDevelopmentFunctions.scheduledFunction({\n run: taskName,\n type: ScheduledFunctionDevelopmentFunctionTypeEnum.RUN\n });\n }\n\n setTimer(timerInterval: number) {\n this._timerInterval.next(timerInterval);\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { AbstractDbxSelectionListWrapperDirective, AbstractDbxValueListViewItemComponent, AbstractDbxSelectionListViewDirective, DEFAULT_LIST_WRAPPER_DIRECTIVE_TEMPLATE, DbxSelectionValueListViewConfig, provideDbxListView, DEFAULT_DBX_SELECTION_VALUE_LIST_DIRECTIVE_TEMPLATE, DbxValueAsListItem, provideDbxListViewWrapper } from '@dereekb/dbx-web';\nimport { from, of } from 'rxjs';\nimport { ScheduledFunctionDevelopmentFirebaseFunctionListEntry } from '@dereekb/firebase';\nimport { DbxFirebaseDevelopmentSchedulerService } from './development.scheduler.service';\nimport { WorkUsingContext } from '@dereekb/rxjs';\n\nexport type ScheduledFunctionDevelopmentFirebaseFunctionListEntryWithSelection = DbxValueAsListItem<ScheduledFunctionDevelopmentFirebaseFunctionListEntry>;\n\n@Component({\n selector: 'dbx-firebase-development-scheduler-list',\n template: DEFAULT_LIST_WRAPPER_DIRECTIVE_TEMPLATE,\n providers: provideDbxListViewWrapper(DbxFirebaseDevelopmentSchedulerListComponent)\n})\nexport class DbxFirebaseDevelopmentSchedulerListComponent extends AbstractDbxSelectionListWrapperDirective<ScheduledFunctionDevelopmentFirebaseFunctionListEntry> {\n constructor() {\n super({\n componentClass: DbxFirebaseDevelopmentSchedulerListViewComponent,\n defaultSelectionMode: 'view'\n });\n }\n}\n\n@Component({\n selector: 'dbx-firebase-development-scheduler-list-view',\n template: DEFAULT_DBX_SELECTION_VALUE_LIST_DIRECTIVE_TEMPLATE,\n providers: provideDbxListView(DbxFirebaseDevelopmentSchedulerListViewComponent)\n})\nexport class DbxFirebaseDevelopmentSchedulerListViewComponent extends AbstractDbxSelectionListViewDirective<ScheduledFunctionDevelopmentFirebaseFunctionListEntry> {\n readonly config: DbxSelectionValueListViewConfig<ScheduledFunctionDevelopmentFirebaseFunctionListEntryWithSelection> = {\n componentClass: DbxFirebaseDevelopmentSchedulerListViewItemComponent,\n mapValuesToItemValues: (x) => of(x.map((y) => ({ ...y, icon: y.icon, itemValue: y })))\n };\n}\n\n@Component({\n template: `\n <div dbxAction dbxActionValue fastTrigger [dbxActionHandler]=\"handleRun\">\n <dbx-button dbxActionButton [text]=\"'Run ' + name\"></dbx-button>\n <div *dbxActionHasSuccess=\"3000\" class=\"dbx-success\" dbxActionSuccess>Success</div>\n </div>\n `\n})\nexport class DbxFirebaseDevelopmentSchedulerListViewItemComponent extends AbstractDbxValueListViewItemComponent<ScheduledFunctionDevelopmentFirebaseFunctionListEntry> {\n readonly dbxFirebaseDevelopmentSchedulerService = inject(DbxFirebaseDevelopmentSchedulerService);\n\n get name() {\n return this.itemValue.name;\n }\n\n readonly handleRun: WorkUsingContext<unknown, unknown> = (value, context) => {\n context.startWorkingWithObservable(from(this.dbxFirebaseDevelopmentSchedulerService.runScheduledFunction(this.name)));\n };\n}\n","import { Component, inject } from '@angular/core';\nimport { loadingStateFromObs } from '@dereekb/rxjs';\nimport { DbxFirebaseDevelopmentSchedulerService } from './development.scheduler.service';\nimport { DbxFirebaseDevelopmentWidgetEntry } from './development.widget';\n\nexport const DEVELOPMENT_FIREBASE_SERVER_SCHEDULER_WIDGET_KEY = 'DEVELOPMENT_FIREBASE_SERVER_SCHEDULER_WIDGET';\n\nexport function developmentFirebaseServerSchedulerWidgetEntry(): DbxFirebaseDevelopmentWidgetEntry {\n return {\n label: 'Run Scheduled Task',\n widget: {\n type: DEVELOPMENT_FIREBASE_SERVER_SCHEDULER_WIDGET_KEY,\n componentClass: DbxFirebaseDevelopmentSchedulerWidgetComponent\n }\n };\n}\n\n@Component({\n template: `\n <div>\n <dbx-firebase-development-scheduler-list [state$]=\"state$\"></dbx-firebase-development-scheduler-list>\n </div>\n `\n})\nexport class DbxFirebaseDevelopmentSchedulerWidgetComponent {\n readonly dbxFirebaseDevelopmentSchedulerService = inject(DbxFirebaseDevelopmentSchedulerService);\n readonly entries$ = this.dbxFirebaseDevelopmentSchedulerService.schedulerList$;\n readonly state$ = loadingStateFromObs(this.entries$);\n}\n","export interface DbxFirebaseEmulatorConfig {\n /**\n * Port to target.\n */\n port: number;\n /**\n * Defaults to localhost if not provided.\n */\n host?: string;\n}\n\nexport interface DbxFirebaseEmulatorsConfig {\n /**\n * Whether or not to enable the emulators.\n */\n useEmulators?: boolean;\n /**\n * Default host to target. Defaults to localhost if not provided.\n */\n host?: string;\n /**\n * emulator UI configuration\n */\n ui?: DbxFirebaseEmulatorConfig;\n /**\n * Auth emulator configuration\n */\n auth?: DbxFirebaseEmulatorConfig;\n /**\n * Firestore emulator configuration\n */\n firestore?: DbxFirebaseEmulatorConfig;\n /**\n * Firestore emulator configuration\n */\n storage?: DbxFirebaseEmulatorConfig;\n /**\n * Functions emulator configuration\n */\n functions?: DbxFirebaseEmulatorConfig;\n /**\n * Database emulator configuration\n */\n database?: DbxFirebaseEmulatorConfig;\n}\n\nexport abstract class DbxFirebaseParsedEmulatorsConfig implements DbxFirebaseEmulatorsConfig {\n abstract useEmulators: boolean;\n host?: string;\n /**\n * Fix used by some components to allow changing 0.0.0.0 to localhost. Defaults to true.\n */\n allow0000ToLocalhost?: boolean;\n ui?: Required<DbxFirebaseEmulatorConfig>;\n auth?: Required<DbxFirebaseEmulatorConfig>;\n firestore?: Required<DbxFirebaseEmulatorConfig>;\n storage?: Required<DbxFirebaseEmulatorConfig>;\n functions?: Required<DbxFirebaseEmulatorConfig>;\n database?: Required<DbxFirebaseEmulatorConfig>;\n}\n","import { ModuleWithProviders, NgModule, Injector } from '@angular/core';\nimport { FirebaseOptions, initializeApp } from 'firebase/app';\nimport { initializeAppCheck, ReCaptchaV3Provider } from 'firebase/app-check';\nimport { FirebaseApp, provideFirebaseApp } from '@angular/fire/app';\nimport { provideStorage, getStorage, connectStorageEmulator } from '@angular/fire/storage';\nimport { provideFunctions, getFunctions, connectFunctionsEmulator } from '@angular/fire/functions';\nimport { provideFirestore, connectFirestoreEmulator, initializeFirestore, persistentLocalCache, persistentMultipleTabManager, FirestoreSettings, persistentSingleTabManager } from '@angular/fire/firestore';\nimport { provideAuth, getAuth, connectAuthEmulator } from '@angular/fire/auth';\nimport { AppCheck, provideAppCheck } from '@angular/fire/app-check';\nimport { DbxFirebaseParsedEmulatorsConfig } from './emulators';\nimport { DbxFirebaseOptions, DBX_FIREBASE_OPTIONS_TOKEN } from './options';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { enableAppCheckDebugTokenGeneration } from '../auth/appcheck';\nimport { DbxFirebaseAppCheckHttpInterceptor } from '../auth/appcheck/appcheck.interceptor';\n\n/**\n * Default firebase firestore provider module.\n */\n@NgModule({\n imports: [\n provideFirestore((injector: Injector) => {\n const firebaseApp = injector.get(FirebaseApp);\n const firebaseOptions = injector.get<DbxFirebaseOptions>(DBX_FIREBASE_OPTIONS_TOKEN);\n\n const firestoreSettings: FirestoreSettings = {};\n\n const { enableMultiTabIndexedDbPersistence, enableIndexedDbPersistence } = firebaseOptions;\n const { persistentCacheSettings } = firebaseOptions;\n\n if (enableIndexedDbPersistence !== false) {\n let tabManager;\n\n if (enableMultiTabIndexedDbPersistence !== false) {\n tabManager = persistentMultipleTabManager();\n } else {\n tabManager = persistentSingleTabManager(undefined);\n }\n\n firestoreSettings.localCache = persistentLocalCache({\n tabManager,\n ...persistentCacheSettings\n });\n }\n\n const firestore = initializeFirestore(firebaseApp, firestoreSettings);\n const emulators = injector.get<DbxFirebaseParsedEmulatorsConfig>(DbxFirebaseParsedEmulatorsConfig, undefined);\n\n if (emulators?.useEmulators && emulators?.firestore) {\n connectFirestoreEmulator(firestore, emulators.firestore.host, emulators.firestore.port, {});\n }\n\n return firestore;\n })\n ]\n})\nexport class DbxFirebaseDefaultFirestoreProviderModule {}\n\n/**\n * Default firebase app check provider module.\n *\n * Also configures the DbxFirebaseAppCheckHttpInterceptor with HTTP_INTERCEPTORS in order for appCheck to be appended to requests to the api.\n */\n@NgModule({\n imports: [\n provideAppCheck((injector: Injector) => {\n const firebaseApp = injector.get(FirebaseApp);\n const firebaseOptions = injector.get<DbxFirebaseOptions>(DBX_FIREBASE_OPTIONS_TOKEN);\n const appCheckOptions = firebaseOptions.appCheck;\n const appCheckKnowinglyDisabled = appCheckOptions?.disabled === true || firebaseOptions.emulators?.useEmulators === true;\n let appCheck: AppCheck;\n\n if (appCheckOptions && !appCheckKnowinglyDisabled) {\n // enable the debug tokens if not using emulators and allowDebugTokens is set true\n if (firebaseOptions.emulators?.useEmulators !== true && appCheckOptions.allowDebugTokens) {\n enableAppCheckDebugTokenGeneration(true);\n }\n\n // Only enabled outside of app-check environments. The emulators will not use appcheck.\n appCheck = initializeAppCheck(firebaseApp, {\n provider: new ReCaptchaV3Provider(appCheckOptions.reCaptchaV3),\n isTokenAutoRefreshEnabled: appCheckOptions.isTokenAutoRefreshEnabled ?? true\n });\n\n console.log('Enabled AppCheck.');\n } else {\n appCheck = undefined as unknown as AppCheck;\n\n if (!appCheckKnowinglyDisabled) {\n console.error('dbx-firebase: No appcheck configuration for the app, and not specifically disabled in config either.');\n }\n }\n\n return appCheck;\n })\n ],\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: DbxFirebaseAppCheckHttpInterceptor,\n multi: true\n }\n ]\n})\nexport class DbxFirebaseDefaultAppCheckProviderModule {}\n\n/**\n * Default firebase auth provider module.\n */\n@NgModule({\n imports: [\n provideAuth((injector: Injector) => {\n const firebaseApp = injector.get(FirebaseApp);\n const auth = getAuth(firebaseApp);\n const emulators = injector.get<DbxFirebaseParsedEmulatorsConfig>(DbxFirebaseParsedEmulatorsConfig, undefined);\n\n if (emulators?.useEmulators && emulators?.auth) {\n connectAuthEmulator(auth, `http://${emulators.auth.host}:${emulators.auth.port}`);\n }\n\n return auth;\n })\n ]\n})\nexport class DbxFirebaseDefaultAuthProviderModule {}\n\n/**\n * Default firebase storage provider module.\n */\n@NgModule({\n imports: [\n provideStorage((injector: Injector) => {\n const firebaseApp = injector.get(FirebaseApp);\n const storage = getStorage(firebaseApp);\n const emulators = injector.get<DbxFirebaseParsedEmulatorsConfig>(DbxFirebaseParsedEmulatorsConfig, undefined);\n\n if (emulators?.useEmulators && emulators?.storage) {\n connectStorageEmulator(storage, emulators.storage.host, emulators.storage.port, {});\n }\n\n return storage;\n })\n ]\n})\nexport class DbxFirebaseDefaultStorageProviderModule {}\n\n/**\n * Default firebase functions provider module.\n */\n@NgModule({\n imports: [\n provideFunctions((injector: Injector) => {\n const firebaseApp = injector.get(FirebaseApp);\n const firebaseOptions = injector.get<DbxFirebaseOptions>(DBX_FIREBASE_OPTIONS_TOKEN);\n const { functionsRegionOrCustomDomain } = firebaseOptions;\n\n const functions = getFunctions(firebaseApp, functionsRegionOrCustomDomain);\n const emulators = injector.get<DbxFirebaseParsedEmulatorsConfig>(DbxFirebaseParsedEmulatorsConfig, undefined);\n\n if (emulators?.useEmulators && emulators?.functions) {\n connectFunctionsEmulator(functions, emulators.functions.host, emulators.functions.port);\n }\n\n return functions;\n })\n ]\n})\nexport class DbxFirebaseDefaultFunctionsProviderModule {}\n\n/**\n * Default provider module.\n */\n@NgModule({\n imports: [\n provideFirebaseApp((injector: Injector) => {\n const firebaseOptions = injector.get<DbxFirebaseOptions>(DBX_FIREBASE_OPTIONS_TOKEN);\n return initializeApp(firebaseOptions);\n }),\n DbxFirebaseDefaultAppCheckProviderModule,\n DbxFirebaseDefaultFirestoreProviderModule,\n DbxFirebaseDefaultAuthProviderModule,\n DbxFirebaseDefaultStorageProviderModule,\n DbxFirebaseDefaultFunctionsProviderModule\n ]\n})\nexport class DbxFirebaseDefaultFirebaseProvidersModule {\n static forRoot(firebaseOptions: FirebaseOptions): ModuleWithProviders<DbxFirebaseDefaultFirebaseProvidersModule> {\n return {\n ngModule: DbxFirebaseDefaultFirebaseProvidersModule,\n providers: [\n {\n provide: DBX_FIREBASE_OPTIONS_TOKEN,\n useValue: firebaseOptions\n }\n ]\n };\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { DbxFirebaseEmulatorConfig, DbxFirebaseEmulatorsConfig, DbxFirebaseParsedEmulatorsConfig } from './emulators';\nimport { Maybe } from '@dereekb/util';\n\n/**\n * Used to configure the DbxFirebaseEmulatorsConfig provider.\n */\n@NgModule()\nexport class DbxFirebaseEmulatorModule {\n static forRoot(config: DbxFirebaseEmulatorsConfig): ModuleWithProviders<DbxFirebaseEmulatorModule> {\n const defaultHost = config.host ?? 'localhost';\n\n function emulatorConfig(emulator: Maybe<DbxFirebaseEmulatorConfig>): Required<DbxFirebaseEmulatorConfig> | undefined {\n return emulator ? { host: emulator.host ?? defaultHost, port: emulator.port } : undefined;\n }\n\n const finalConfig: DbxFirebaseParsedEmulatorsConfig = {\n useEmulators: config.useEmulators !== false,\n ui: emulatorConfig(config.ui),\n auth: emulatorConfig(config.auth),\n firestore: emulatorConfig(config.firestore),\n storage: emulatorConfig(config.storage),\n functions: emulatorConfig(config.functions),\n database: emulatorConfig(config.database)\n };\n\n return {\n ngModule: DbxFirebaseEmulatorModule,\n providers: [\n {\n provide: DbxFirebaseParsedEmulatorsConfig,\n useValue: finalConfig\n }\n ]\n };\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { ClickableUrl } from '@dereekb/dbx-core';\nimport { Maybe } from '@dereekb/util';\nimport { DbxFirebaseParsedEmulatorsConfig } from './emulators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseEmulatorService {\n readonly emulatorsConfig = inject(DbxFirebaseParsedEmulatorsConfig);\n\n get useEmulators(): boolean {\n return this.emulatorsConfig.useEmulators || false;\n }\n\n get emulatorUIAnchor(): Maybe<ClickableUrl> {\n const ui = this.emulatorsConfig.ui;\n let host = this.emulatorsConfig.host;\n\n // Issue where sometimes 0.0.0.0 is not configured to handle transferring traffic properly, compared to localhost. This sets 0.0.0.0 to localhost unless disallowed.\n if (host === '0.0.0.0' && this.emulatorsConfig.allow0000ToLocalhost !== false) {\n host = 'localhost';\n }\n\n return ui\n ? {\n url: `http://${host ?? 'localhost'}:${ui.port}`,\n target: '_blank'\n }\n : undefined;\n }\n}\n","import { Component } from '@angular/core';\nimport { provideFormlyContext, AbstractConfigAsyncFormlyFormDirective, pickableItemChipField, filterPickableItemFieldValuesByLabel, SearchableValueFieldDisplayFn, SearchableValueFieldDisplayValue, SearchableValueFieldValue } from '@dereekb/dbx-form';\nimport { Maybe } from '@dereekb/util';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { map, Observable, of } from 'rxjs';\nimport { DbxFirebaseDevelopmentWidgetEntry } from './development.widget';\n\nexport interface DbxFirebaseDevelopmentPopupContentFormInput {\n readonly entries: DbxFirebaseDevelopmentWidgetEntry[];\n}\n\nexport interface DbxFirebaseDevelopmentPopupContentFormValue {\n readonly specifier?: Maybe<string>;\n}\n\nconst DISPLAY_FOR_DEVELOPMENT_POPUP_STRING_VALUE: SearchableValueFieldDisplayFn<string, DbxFirebaseDevelopmentWidgetEntry> = (values: SearchableValueFieldValue<string, DbxFirebaseDevelopmentWidgetEntry>[]) => {\n const displayValues: SearchableValueFieldDisplayValue<string, DbxFirebaseDevelopmentWidgetEntry>[] = values.map((x) => ({ ...x, label: x.meta?.label || x.value }));\n const obs: Observable<SearchableValueFieldDisplayValue<string, DbxFirebaseDevelopmentWidgetEntry>[]> = of(displayValues);\n return obs;\n};\n\n@Component({\n template: `\n <dbx-formly></dbx-formly>\n `,\n selector: 'dbx-firebase-development-popup-content-form',\n providers: [provideFormlyContext()]\n})\nexport class DbxFirebaseDevelopmentPopupContentFormComponent extends AbstractConfigAsyncFormlyFormDirective<DbxFirebaseDevelopmentPopupContentFormValue, DbxFirebaseDevelopmentPopupContentFormInput> {\n readonly fields$: Observable<FormlyFieldConfig[]> = this.config$.pipe(\n map((config: DbxFirebaseDevelopmentPopupContentFormInput) => {\n return [\n pickableItemChipField<string, DbxFirebaseDevelopmentWidgetEntry>({\n key: 'specifier',\n filterLabel: 'Tools',\n description: 'Pick a tool to get started.',\n filterValues: filterPickableItemFieldValuesByLabel,\n loadValues: () => of(config.entries.map((y) => ({ value: y.widget.type, meta: y }))),\n displayForValue: DISPLAY_FOR_DEVELOPMENT_POPUP_STRING_VALUE,\n asArrayValue: false\n })\n ];\n })\n );\n}\n","import { ClickableAnchor, DbxAuthService } from '@dereekb/dbx-core';\nimport { Component, OnDestroy, OnInit, inject } from '@angular/core';\nimport { DbxWidgetDataPair, TwoColumnsContextStore } from '@dereekb/dbx-web';\nimport { DevelopmentFirebaseFunctionSpecifier } from '@dereekb/firebase';\nimport { WorkUsingContext, filterMaybe, IsModifiedFunction, SubscriptionObject } from '@dereekb/rxjs';\nimport { Maybe } from '@dereekb/util';\nimport { first, BehaviorSubject, distinctUntilChanged, map, shareReplay, combineLatest, Observable } from 'rxjs';\nimport { DbxFirebaseDevelopmentWidgetService } from './development.widget.service';\nimport { DbxFirebaseDevelopmentSchedulerService } from './development.scheduler.service';\nimport { DbxFirebaseDevelopmentPopupContentFormValue } from './development.popup.content.form.component';\nimport { msToSeconds } from '@dereekb/date';\nimport { DEVELOPMENT_FIREBASE_SERVER_SCHEDULER_WIDGET_KEY } from './development.scheduler.widget.component';\nimport { DbxFirebaseEmulatorService } from '../firebase';\n\n@Component({\n selector: 'dbx-firebase-development-popup-content',\n templateUrl: './development.popup.content.component.html',\n styleUrls: ['./development.popup.component.scss'],\n providers: [TwoColumnsContextStore]\n})\nexport class DbxFirebaseDevelopmentPopupContentComponent implements OnInit, OnDestroy {\n readonly twoColumnsContextStore = inject(TwoColumnsContextStore);\n readonly dbxAuthService = inject(DbxAuthService);\n readonly dbxFirebaseDevelopmentWidgetService = inject(DbxFirebaseDevelopmentWidgetService);\n readonly dbxFirebaseDevelopmentSchedulerService = inject(DbxFirebaseDevelopmentSchedulerService);\n readonly dbxFirebaseEmulatorService = inject(DbxFirebaseEmulatorService);\n\n private readonly _backSub = new SubscriptionObject();\n\n readonly showEmulatorButton = this.dbxFirebaseEmulatorService.useEmulators === true;\n readonly emulatorUIAnchor: ClickableAnchor = this.dbxFirebaseEmulatorService.emulatorUIAnchor ?? {};\n\n readonly entries = this.dbxFirebaseDevelopmentWidgetService.getEntries();\n\n private _activeEntrySelector = new BehaviorSubject<Maybe<DevelopmentFirebaseFunctionSpecifier>>(DEVELOPMENT_FIREBASE_SERVER_SCHEDULER_WIDGET_KEY);\n\n readonly isLoggedIn$ = this.dbxAuthService.isLoggedIn$;\n\n readonly entries$ = this.isLoggedIn$.pipe(\n distinctUntilChanged(),\n map((isLoggedIn) => this.entries),\n shareReplay(1)\n );\n\n readonly formConfig$ = this.entries$.pipe(map((entries) => ({ entries })));\n readonly activeEntrySelector$ = this._activeEntrySelector.pipe(distinctUntilChanged());\n readonly currentActiveEntry$ = combineLatest([this.entries$, this.activeEntrySelector$]).pipe(\n map(([entries, selector]) => (selector ? entries.find((e) => e.widget.type === selector) : undefined)),\n shareReplay(1)\n );\n\n readonly showRight$ = this.currentActiveEntry$.pipe(map((x) => x != null));\n readonly activeEntry$ = this.currentActiveEntry$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));\n\n readonly rightTitle$ = this.activeEntry$.pipe(map((x) => x.label));\n readonly widgetConfig$: Observable<DbxWidgetDataPair> = this.activeEntry$.pipe(\n map((x) => ({ data: undefined, type: x.widget.type })),\n shareReplay(1)\n );\n\n readonly schedulerRunning$ = this.dbxFirebaseDevelopmentSchedulerService.running$;\n readonly schedulerInterval$ = this.dbxFirebaseDevelopmentSchedulerService.timerInterval$.pipe(\n map((x) => msToSeconds(x)),\n shareReplay(1)\n );\n readonly schedulerError$ = this.dbxFirebaseDevelopmentSchedulerService.error$.pipe(\n map((x) => (x ? 'Error Occured' : 'Ok')),\n shareReplay(1)\n );\n\n readonly formData$: Observable<DbxFirebaseDevelopmentPopupContentFormValue> = this._activeEntrySelector.pipe(\n distinctUntilChanged(),\n map((specifier) => ({ specifier }))\n );\n\n ngOnInit(): void {\n this.twoColumnsContextStore.setShowRight(this.showRight$);\n this._backSub.subscription = this.twoColumnsContextStore.back$.subscribe(() => {\n this.clearSelection();\n });\n }\n\n ngOnDestroy(): void {\n this._activeEntrySelector.complete();\n }\n\n readonly handleFormUpdate: WorkUsingContext<DbxFirebaseDevelopmentPopupContentFormValue, void> = (value, context) => {\n this._activeEntrySelector.next(value.specifier);\n context.success();\n };\n\n readonly isFormModified: IsModifiedFunction<DbxFirebaseDevelopmentPopupContentFormValue> = (value) => {\n return this._activeEntrySelector.pipe(\n map((currentSelector) => value.specifier !== currentSelector),\n first()\n );\n };\n\n clearSelection() {\n this._activeEntrySelector.next(undefined);\n }\n}\n","<dbx-two-column class=\"dbx-firebase-development-popup-content\" [dbxTwoColumnFullLeft]=\"true\">\n <dbx-two-block left>\n <div>\n <h4>Info</h4>\n <p>Scheduler (Running): {{ schedulerRunning$ | async }} : {{ schedulerInterval$ | async }}s : {{ schedulerError$ | async }}</p>\n <div>\n <dbx-anchor [anchor]=\"emulatorUIAnchor\" *ngIf=\"showEmulatorButton\">\n <button mat-flat-button color=\"accent\">Emulator Enabled</button>\n </dbx-anchor>\n </div>\n </div>\n <div>\n <h4>Tools</h4>\n <div dbxAction dbxActionEnforceModified dbxActionAutoTrigger instantTrigger [dbxActionHandler]=\"handleFormUpdate\">\n <dbx-firebase-development-popup-content-form dbxActionForm [dbxFormSource]=\"formData$\" dbxFormSourceMode=\"always\" [dbxActionFormModified]=\"isFormModified\" [config]=\"formConfig$ | async\"></dbx-firebase-development-popup-content-form>\n </div>\n </div>\n </dbx-two-block>\n <dbx-two-column-right right [header]=\"(rightTitle$ | async) || ''\">\n <dbx-widget-view [config]=\"widgetConfig$ | async\"></dbx-widget-view>\n </dbx-two-column-right>\n</dbx-two-column>\n","import { Component, ViewChild, inject } from '@angular/core';\nimport { DbxPopupKey, AbstractPopupDirective, DbxPopupService } from '@dereekb/dbx-web';\nimport { NgPopoverRef } from 'ng-overlay-container';\nimport { DbxFirebaseDevelopmentPopupContentComponent } from './development.popup.content.component';\n\nexport const DEFAULT_FIREBASE_DEVELOPMENT_POPUP_KEY = 'devpopup';\n\n@Component({\n template: `\n <dbx-popup-content>\n <dbx-popup-controls [header]=\"header\" controls></dbx-popup-controls>\n <dbx-firebase-development-popup-content (shouldClose)=\"closePopup()\"></dbx-firebase-development-popup-content>\n </dbx-popup-content>\n `\n})\nexport class DbxFirebaseDevelopmentPopupComponent extends AbstractPopupDirective {\n private readonly popupService = inject(DbxPopupService);\n\n @ViewChild(DbxFirebaseDevelopmentPopupContentComponent, { static: true })\n content!: DbxFirebaseDevelopmentPopupContentComponent;\n\n readonly header = 'Development Tools';\n\n static openPopup(popupService: DbxPopupService, popupKey?: DbxPopupKey): NgPopoverRef {\n return popupService.open({\n key: popupKey ?? DEFAULT_FIREBASE_DEVELOPMENT_POPUP_KEY,\n componentClass: DbxFirebaseDevelopmentPopupComponent,\n closeOnTransition: false,\n isDraggable: true,\n position: 'center'\n });\n }\n\n reopen = () => {\n DbxFirebaseDevelopmentPopupComponent.openPopup(this.popupService, this.popup.key);\n };\n}\n","import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\n\n/**\n * Enabled state\n */\nexport const DEFAULT_FIREBASE_DEVELOPMENT_ENABLED_TOKEN = new InjectionToken('DefaultDbxFirebaseDevelopmentEnabled');\n\n/**\n * Service used for registering widgets used for development.\n *\n * Default providers can be configured by the DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN injectable value.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseDevelopmentService {\n constructor(@Optional() @Inject(DEFAULT_FIREBASE_DEVELOPMENT_ENABLED_TOKEN) readonly enabled: boolean) {}\n}\n","import { OnDestroy, HostListener, AfterViewInit, Directive, inject } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { DbxPopupService } from '@dereekb/dbx-web';\nimport { NgPopoverRef } from 'ng-overlay-container';\nimport { DbxFirebaseDevelopmentPopupComponent } from './development.popup.component';\nimport { DbxFirebaseDevelopmentService } from './development.service';\n\n/**\n * Directive for controlling and displaying\n */\n@Directive({\n selector: '[dbxFirebaseDevelopment]'\n})\nexport class DbxFirebaseDevelopmentDirective implements OnDestroy, AfterViewInit {\n readonly popupService = inject(DbxPopupService);\n readonly matSnackBar = inject(MatSnackBar);\n readonly dbxFirebaseDevelopmentService = inject(DbxFirebaseDevelopmentService);\n\n ref?: NgPopoverRef<any, any>;\n\n get enabled() {\n return this.dbxFirebaseDevelopmentService.enabled;\n }\n\n @HostListener('window:keydown', ['$event'])\n handleKeyboardEvent(event: KeyboardEvent) {\n if (this.enabled && event.shiftKey && event.altKey && event.code === 'KeyD') {\n this.togglePopup();\n event.preventDefault();\n }\n }\n\n togglePopup() {\n if (this.ref) {\n this.closePopup();\n } else {\n this.openPopup();\n }\n }\n\n openPopup() {\n if (!this.ref) {\n const ref = DbxFirebaseDevelopmentPopupComponent.openPopup(this.popupService);\n ref.afterClosed$.subscribe(() => {\n if (this.ref === ref) {\n this.ref = undefined;\n }\n });\n\n this.ref = ref;\n }\n }\n\n closePopup() {\n if (this.ref != null) {\n this.ref.close();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.enabled) {\n this.matSnackBar\n .open('Dev Tools: alt/option + shift + D', 'Open', {\n horizontalPosition: 'center',\n verticalPosition: 'bottom',\n duration: 8 * 1000\n })\n .onAction()\n .subscribe(() => {\n this.openPopup();\n });\n }\n }\n\n ngOnDestroy(): void {\n this.closePopup();\n }\n}\n","import { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule, inject } from '@angular/core';\nimport { DbxInjectionComponentModule } from '@dereekb/dbx-core';\nimport { DbxActionModule, DbxRouterAnchorModule, DbxButtonModule, DbxReadableErrorModule, DbxPopupInteractionModule, DbxTwoColumnLayoutModule, DbxBlockLayoutModule, DbxWidgetModule, DbxListLayoutModule, DbxTextModule } from '@dereekb/dbx-web';\nimport { DEFAULT_FIREBASE_DEVELOPMENT_WIDGET_PROVIDERS_TOKEN } from './development.widget.service';\nimport { DbxFormActionModule, DbxFormFormlyTextFieldModule, DbxFormIoModule, DbxFormlyModule, DbxFormModule } from '@dereekb/dbx-form';\nimport { DbxFirebaseDevelopmentPopupComponent } from './development.popup.component';\nimport { DbxFirebaseDevelopmentPopupContentComponent } from './development.popup.content.component';\nimport { DbxFirebaseDevelopmentDirective } from './development.popup.directive';\nimport { DEFAULT_FIREBASE_DEVELOPMENT_ENABLED_TOKEN } from './development.service';\nimport { DbxFirebaseDevelopmentPopupContentFormComponent } from './development.popup.content.form.component';\nimport { DbxFirebaseDevelopmentSchedulerService } from './development.scheduler.service';\nimport { DbxFirebaseDevelopmentWidgetEntry } from './development.widget';\nimport { DbxFirebaseDevelopmentSchedulerListComponent, DbxFirebaseDevelopmentSchedulerListViewComponent, DbxFirebaseDevelopmentSchedulerListViewItemComponent } from './development.scheduler.list.component';\nimport { DbxFirebaseDevelopmentSchedulerWidgetComponent, developmentFirebaseServerSchedulerWidgetEntry } from './development.scheduler.widget.component';\n\nexport abstract class DbxFirebaseDevelopmentModuleRootConfig {\n abstract readonly enabled: boolean;\n abstract readonly entries: DbxFirebaseDevelopmentWidgetEntry[];\n abstract readonly addDevelopmentSchedulerWidget?: boolean;\n}\n\n/**\n * Contains components related to logging in.\n */\n@NgModule({\n imports: [CommonModule, MatIconModule, DbxWidgetModule, DbxTextModule, DbxBlockLayoutModule, DbxTwoColumnLayoutModule, MatButtonModule, DbxRouterAnchorModule, DbxPopupInteractionModule, DbxFormIoModule, DbxFormModule, DbxFormlyModule, DbxFormActionModule, DbxFormFormlyTextFieldModule, DbxReadableErrorModule, DbxActionModule, DbxButtonModule, DbxInjectionComponentModule, DbxListLayoutModule],\n declarations: [\n //\n DbxFirebaseDevelopmentPopupContentFormComponent,\n DbxFirebaseDevelopmentDirective,\n DbxFirebaseDevelopmentPopupComponent,\n DbxFirebaseDevelopmentPopupContentComponent,\n DbxFirebaseDevelopmentSchedulerWidgetComponent,\n DbxFirebaseDevelopmentSchedulerListComponent,\n DbxFirebaseDevelopmentSchedulerListViewComponent,\n DbxFirebaseDevelopmentSchedulerListViewItemComponent\n ],\n exports: [\n //\n DbxFirebaseDevelopmentDirective,\n DbxFirebaseDevelopmentPopupComponent,\n DbxFirebaseDevelopmentPopupContentComponent,\n DbxFirebaseDevelopmentSchedulerWidgetComponent,\n DbxFirebaseDevelopmentSchedulerListComponent,\n DbxFirebaseDevelopmentSchedulerListViewComponent,\n DbxFirebaseDevelopmentSchedulerListViewItemComponent\n ]\n})\nexport class DbxFirebaseDevelopmentModule {\n readonly dbxFirebaseDevelopmentSchedulerService = inject(DbxFirebaseDevelopmentSchedulerService);\n\n constructor() {\n this.dbxFirebaseDevelopmentSchedulerService.init();\n }\n\n static forRoot(config: DbxFirebaseDevelopmentModuleRootConfig): ModuleWithProviders<DbxFirebaseDevelopmentModule> {\n let entries = config.entries;\n\n if (config.addDevelopmentSchedulerWidget !== false) {\n entries = [developmentFirebaseServerSchedulerWidgetEntry(), ...config.entries];\n }\n\n return {\n ngModule: DbxFirebaseDevelopmentModule,\n providers: [\n {\n provide: DEFAULT_FIREBASE_DEVELOPMENT_WIDGET_PROVIDERS_TOKEN,\n useValue: entries\n },\n {\n provide: DEFAULT_FIREBASE_DEVELOPMENT_ENABLED_TOKEN,\n useValue: config.enabled\n },\n {\n provide: DbxFirebaseDevelopmentModuleRootConfig,\n useValue: config\n }\n ]\n };\n }\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * Token to access the FirestoreContext value.\n */\nexport const DBX_FIRESTORE_CONTEXT_TOKEN = new InjectionToken('DBX_FIRESTORE_CONTEXT_TOKEN');\n","import { ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { clientFirebaseFirestoreContextFactory, FirestoreContext, SystemStateFirestoreCollections } from '@dereekb/firebase';\nimport { DBX_FIRESTORE_CONTEXT_TOKEN } from './firebase.firestore';\nimport { Firestore } from '@angular/fire/firestore';\nimport { ClassLikeType } from '@dereekb/util';\n\nexport function provideSystemStateFirestoreCollections(appCollection: SystemStateFirestoreCollections): SystemStateFirestoreCollections {\n if (!appCollection.systemStateCollection) {\n throw new Error(`SystemStateFirestoreCollections could not be provided using the app's app collection. Set provideSystemStateFirestoreCollections to false in DbxFirebaseFirestoreCollectionModuleConfig to prevent auto-initialization, or update your aoo's collection class to implement SystemStateFirestoreCollections.`);\n }\n\n return appCollection;\n}\n\nexport interface DbxFirebaseFirestoreCollectionModuleConfig<T> {\n appCollectionClass: ClassLikeType<T>;\n collectionFactory: (context: FirestoreContext) => T;\n /**\n * Whether or not to provide the SystemStateFirestoreCollections.\n *\n * True by default.\n */\n provideSystemStateFirestoreCollections?: boolean;\n}\n\n/**\n * Used to initialize the FirestoreCollection for a DbxFirebase app.\n */\n@NgModule()\nexport class DbxFirebaseFirestoreCollectionModule {\n static forRoot<T>(config: DbxFirebaseFirestoreCollectionModuleConfig<T>): ModuleWithProviders<DbxFirebaseFirestoreCollectionModule> {\n const providers: Provider[] = [\n {\n provide: DBX_FIRESTORE_CONTEXT_TOKEN,\n useFactory: clientFirebaseFirestoreContextFactory,\n deps: [Firestore]\n },\n {\n provide: config.appCollectionClass,\n useFactory: config.collectionFactory,\n deps: [DBX_FIRESTORE_CONTEXT_TOKEN]\n }\n ];\n\n if (config.provideSystemStateFirestoreCollections !== false) {\n providers.push({\n /**\n * Provide SystemStateFirestoreCollections via the app collections class and using SystemStateFirestoreCollections.\n */\n provide: SystemStateFirestoreCollections,\n useFactory: provideSystemStateFirestoreCollections,\n deps: [config.appCollectionClass]\n });\n }\n\n return {\n ngModule: DbxFirebaseFirestoreCollectionModule,\n providers\n };\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { FirestoreContext } from '@dereekb/firebase';\nimport { DBX_FIRESTORE_CONTEXT_TOKEN } from './firebase.firestore';\n\n/**\n * Service that provides access to the app's FirestoreContext.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirestoreContextService {\n readonly firestoreContext = inject<FirestoreContext>(DBX_FIRESTORE_CONTEXT_TOKEN);\n}\n","import { ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { Functions } from '@angular/fire/functions';\nimport { FirebaseDevelopmentFunctions, FirebaseFunctionsConfigMap, FirebaseFunctionsMap, FIREBASE_DEVELOPMENT_FUNCTIONS_MAP_KEY, LazyFirebaseFunctions } from '@dereekb/firebase';\nimport { ClassLikeType, forEachKeyValue } from '@dereekb/util';\n\nexport interface DbxFirebaseFunctionsModuleConfig<T, M extends FirebaseFunctionsMap = FirebaseFunctionsMap> {\n functionsGetterToken: ClassLikeType<T>;\n functionsGetterFactory: (functions: Functions) => T;\n /**\n * Key of the functions config to use to inject FirebaseDevelopmentFunctions using that same provider.\n *\n * Defaults to \"developmentFunctions\". If false, will not be injected automatically.\n */\n developmentFunctionsKey?: string | false;\n /**\n * Optional functions config map to provide.\n *\n * If provided, will inject all the types with factory functions so they can be injected into the app.\n */\n functionsConfigMap?: FirebaseFunctionsConfigMap<M>;\n}\n\n/**\n * Used to initialize the LazyFirebaseFunctions type for a DbxFirebase app.\n *\n * Handles the key different, automatically injecting FirebaseDevelopmentFunctions with this existing value.\n */\n@NgModule()\nexport class DbxFirebaseFunctionsModule {\n static forRoot<T, M extends FirebaseFunctionsMap = FirebaseFunctionsMap>(config: DbxFirebaseFunctionsModuleConfig<T, M>): ModuleWithProviders<DbxFirebaseFunctionsModule> {\n const providers: Provider[] = [\n {\n provide: config.functionsGetterToken,\n useFactory: config.functionsGetterFactory,\n deps: [Functions]\n }\n ];\n\n if (config.functionsConfigMap) {\n forEachKeyValue(config.functionsConfigMap, {\n forEach: ([key, entry]) => {\n const provide = entry[0];\n\n providers.push({\n provide,\n useFactory: (lazyFunctions: LazyFirebaseFunctions<M>) => {\n const getter = lazyFunctions[key as string];\n\n if (!getter) {\n throw new Error(`Could not create provider for firebase function getter \"${provide}\" as the getter was unavailable.`);\n } else {\n return getter();\n }\n },\n deps: [config.functionsGetterToken]\n });\n }\n });\n\n // Add a provider for FirebaseDevelopmentFunctions if developmentFunctions is provided.\n const developmentFunctionsKey = config.developmentFunctionsKey ?? FIREBASE_DEVELOPMENT_FUNCTIONS_MAP_KEY;\n\n if (developmentFunctionsKey) {\n const developmentFunctionsConfig = config.functionsConfigMap[developmentFunctionsKey];\n\n if (developmentFunctionsConfig != null) {\n providers.push({\n provide: FirebaseDevelopmentFunctions,\n useExisting: developmentFunctionsConfig[0]\n });\n }\n }\n }\n\n return {\n ngModule: DbxFirebaseFunctionsModule,\n providers\n };\n }\n}\n","import { IterationQueryDocChangeWatcherChangeType, IterationQueryDocChangeWatcherEvent } from '@dereekb/firebase';\nimport { SubscriptionObject } from '@dereekb/rxjs';\nimport { Destroyable } from '@dereekb/util';\nimport { filter, take, map, BehaviorSubject, distinctUntilChanged, Observable, switchMap, startWith, shareReplay, combineLatest } from 'rxjs';\nimport { DbxFirebaseCollectionLoaderAccessor } from './collection.loader';\n\n/**\n * DbxFirebaseCollectionChangeWatcher trigger modes\n * - auto: will automatically call trigger\n * - off: will never call trigger\n */\nexport type DbxFirebaseCollectionChangeWatcherTriggerMode = 'auto' | 'off';\nexport type DbxFirebaseCollectionChangeWatcherEvent = Pick<IterationQueryDocChangeWatcherEvent<unknown>, 'time' | 'type'>;\n\n/**\n * Used to watch a DbxFirebaseCollectionLoaderAccessor for when the query changes and\n */\nexport interface DbxFirebaseCollectionChangeWatcher<S extends DbxFirebaseCollectionLoaderAccessor<any>> {\n readonly store: S;\n /**\n * Current mode observable\n */\n readonly mode$: Observable<DbxFirebaseCollectionChangeWatcherTriggerMode>;\n /**\n * Stream of events\n */\n readonly event$: Observable<DbxFirebaseCollectionChangeWatcherEvent>;\n readonly hasChangeAvailable$: Observable<boolean>;\n /**\n * Current trigger state. Based on the hasChangeAvailable$ state and current mode.\n */\n readonly triggered$: Observable<boolean>;\n /**\n * Trigger emitter. Only emits when triggered$ is/becomes true.\n */\n readonly trigger$: Observable<void>;\n}\n\n/**\n * DbxFirebaseCollectionChangeWatcher instance that can be destroyed and the mode changed.\n */\nexport interface DbxFirebaseCollectionChangeWatcherInstance<S extends DbxFirebaseCollectionLoaderAccessor<any>> extends DbxFirebaseCollectionChangeWatcher<S>, Destroyable {\n /**\n * Changes the mode\n */\n setMode(mode: DbxFirebaseCollectionChangeWatcherTriggerMode): void;\n}\n\nexport function dbxFirebaseCollectionChangeWatcher<S extends DbxFirebaseCollectionLoaderAccessor<any>>(store: S, initialMode?: DbxFirebaseCollectionChangeWatcherTriggerMode): DbxFirebaseCollectionChangeWatcherInstance<S> {\n const _mode = new BehaviorSubject<DbxFirebaseCollectionChangeWatcherTriggerMode>(initialMode ?? 'off');\n const _sub = new SubscriptionObject();\n\n const mode$ = _mode.pipe(distinctUntilChanged());\n\n const event$: Observable<DbxFirebaseCollectionChangeWatcherEvent> = store.queryChangeWatcher$.pipe(\n switchMap((x) =>\n x.event$.pipe(\n filter((x) => x.type !== 'none'), // do not share 'none' events.\n take(1), // only need one event to mark as change is available.\n startWith({\n time: new Date(),\n type: 'none' as IterationQueryDocChangeWatcherChangeType\n })\n )\n ),\n shareReplay(1)\n );\n\n const hasChangeAvailable$: Observable<boolean> = event$.pipe(\n map((x) => x.type !== 'none'),\n shareReplay(1)\n );\n\n const triggered$: Observable<boolean> = combineLatest([mode$, hasChangeAvailable$]).pipe(map(([mode, hasChange]) => mode === 'auto' && hasChange));\n\n const trigger$: Observable<void> = triggered$.pipe(\n filter((triggered) => triggered),\n map(() => undefined)\n );\n\n function destroy() {\n _sub.destroy();\n _mode.complete();\n }\n\n function setMode(mode: DbxFirebaseCollectionChangeWatcherTriggerMode) {\n _mode.next(mode);\n }\n\n const instance: DbxFirebaseCollectionChangeWatcherInstance<S> = {\n store,\n mode$,\n event$,\n hasChangeAvailable$,\n triggered$,\n trigger$,\n destroy,\n setMode\n };\n\n return instance;\n}\n","import { SubscriptionObject, ObservableOrValue, asObservable } from '@dereekb/rxjs';\nimport { BehaviorSubject, filter, switchMap, exhaustMap, EMPTY } from 'rxjs';\nimport { Destroyable, Maybe, Initialized } from '@dereekb/util';\nimport { DbxFirebaseCollectionChangeWatcher, dbxFirebaseCollectionChangeWatcher } from './collection.change.watcher';\nimport { DbxFirebaseCollectionLoaderAccessor } from './collection.loader';\n\nexport type DbxFirebaseCollectionChangeTriggerFunction<S extends DbxFirebaseCollectionLoaderAccessor<any>> = (instance: DbxFirebaseCollectionChangeTriggerInstance<S>) => ObservableOrValue<void>;\n\n/**\n * Restarts the store.\n *\n * @param instance\n * @returns\n */\nexport const DEFAULT_FIREBASE_COLLECTION_CHANGE_TRIGGER_FUNCTION: DbxFirebaseCollectionChangeTriggerFunction<any> = (instance) => instance.watcher.store.restart();\n\nexport interface DbxFirebaseCollectionChangeTriggerInstanceConfig<S extends DbxFirebaseCollectionLoaderAccessor<any>> {\n readonly watcher: DbxFirebaseCollectionChangeWatcher<S> & Partial<Destroyable>;\n /**\n * Whether or not to also destroy the watcher when the trigger instance is destroyed.\n *\n * Defaults to false.\n */\n readonly destroyWatcherOnDestroy?: boolean;\n /**\n * Initial trigger function to use.\n *\n * By default restarts the store.\n */\n readonly triggerFunction?: Maybe<DbxFirebaseCollectionChangeTriggerFunction<S>>;\n}\n\nexport interface DbxFirebaseCollectionChangeTrigger<S extends DbxFirebaseCollectionLoaderAccessor<any>> {\n readonly watcher: DbxFirebaseCollectionChangeWatcher<S>;\n setTriggerFunction?: Maybe<DbxFirebaseCollectionChangeTriggerFunction<S>>;\n}\n\nexport class DbxFirebaseCollectionChangeTriggerInstance<S extends DbxFirebaseCollectionLoaderAccessor<any>> implements DbxFirebaseCollectionChangeTrigger<S>, Initialized, Destroyable {\n readonly watcher: DbxFirebaseCollectionChangeWatcher<S>;\n\n private readonly _config: DbxFirebaseCollectionChangeTriggerInstanceConfig<S>;\n private readonly _triggerFunction = new BehaviorSubject<Maybe<DbxFirebaseCollectionChangeTriggerFunction<S>>>(undefined);\n private readonly _sub = new SubscriptionObject();\n\n constructor(config: DbxFirebaseCollectionChangeTriggerInstanceConfig<S>) {\n this._config = config;\n this.watcher = config.watcher;\n this.triggerFunction = config.triggerFunction ?? DEFAULT_FIREBASE_COLLECTION_CHANGE_TRIGGER_FUNCTION;\n }\n\n get config() {\n return this._config;\n }\n\n init(): void {\n this._sub.subscription = this._triggerFunction\n .pipe(\n switchMap((triggerFunction) => {\n if (triggerFunction) {\n return this.watcher.triggered$.pipe(\n filter((triggered) => triggered),\n exhaustMap(() => asObservable(triggerFunction(this)))\n );\n } else {\n return EMPTY;\n }\n })\n )\n .subscribe();\n }\n\n destroy(): void {\n this._triggerFunction.complete();\n\n if (this._config.destroyWatcherOnDestroy === true) {\n (this.watcher as unknown as Destroyable)?.destroy();\n }\n }\n\n get triggerFunction(): Maybe<DbxFirebaseCollectionChangeTriggerFunction<S>> {\n return this._triggerFunction.value;\n }\n\n set triggerFunction(triggerFunction: Maybe<DbxFirebaseCollectionChangeTriggerFunction<S>>) {\n this._triggerFunction.next(triggerFunction);\n }\n}\n\n/**\n * Creates a new DbxFirebaseCollectionChangeWatcher, set the modes to \"auto\", and creates a new DbxFirebaseCollectionChangeTriggerInstance.\n *\n * If no trigger function is provided it will default to resetting the store.\n *\n * NOTE: Don't forget to initialize the DbxFirebaseCollectionChangeTriggerInstance and handle other lifecycle changes.\n *\n * @param store\n * @param triggerFunction\n * @returns\n */\nexport function dbxFirebaseCollectionChangeTriggerForStore<S extends DbxFirebaseCollectionLoaderAccessor<any>>(store: S, triggerFunction?: Maybe<DbxFirebaseCollectionChangeTriggerFunction<S>>): DbxFirebaseCollectionChangeTriggerInstance<S> {\n return dbxFirebaseCollectionChangeTrigger<S>({\n watcher: dbxFirebaseCollectionChangeWatcher<S>(store, 'auto'),\n destroyWatcherOnDestroy: true,\n triggerFunction:\n triggerFunction ??\n (() => {\n store.restart();\n })\n });\n}\n\nexport function dbxFirebaseCollectionChangeTriggerForWatcher<S extends DbxFirebaseCollectionLoaderAccessor<any>>(watcher: DbxFirebaseCollectionChangeWatcher<S>, triggerFunction?: Maybe<DbxFirebaseCollectionChangeTriggerFunction<S>>): DbxFirebaseCollectionChangeTriggerInstance<S> {\n return dbxFirebaseCollectionChangeTrigger<S>({\n watcher,\n destroyWatcherOnDestroy: false,\n triggerFunction\n });\n}\n\nexport function dbxFirebaseCollectionChangeTrigger<S extends DbxFirebaseCollectionLoaderAccessor<any>>(config: DbxFirebaseCollectionChangeTriggerInstanceConfig<S>): DbxFirebaseCollectionChangeTriggerInstance<S> {\n return new DbxFirebaseCollectionChangeTriggerInstance(config);\n}\n","import { PageListLoadingState, cleanupDestroyable, filterMaybe, useFirst, SubscriptionObject, accumulatorFlattenPageListLoadingState, ItemAccumulatorNextPageUntilResultsCountFunction, itemAccumulatorNextPageUntilResultsCount, iteratorNextPageUntilPage, iteratorNextPageUntilMaxPageLoadLimit, pageItemAccumulatorCurrentPage, ItemAccumulatorNextPageUntilResultsCountResult } from '@dereekb/rxjs';\nimport { BehaviorSubject, combineLatest, map, shareReplay, distinctUntilChanged, Subject, throttleTime, switchMap, Observable, tap, startWith, NEVER } from 'rxjs';\nimport { DocumentDataWithIdAndKey, DocumentReference, FirebaseQueryItemAccumulator, firebaseQueryItemAccumulator, FirebaseQueryItemAccumulatorNextPageUntilResultsCountFunction, FirebaseQuerySnapshotAccumulator, firebaseQuerySnapshotAccumulator, FirestoreCollectionLike, FirestoreDocument, FirestoreItemPageIterationInstance, FirestoreItemPageIteratorFilter, FirestoreQueryConstraint, IterationQueryDocChangeWatcher, iterationQueryDocChangeWatcher } from '@dereekb/firebase';\nimport { ArrayOrValue, Destroyable, GetterOrValue, Initialized, Maybe, PageNumber, countAllInNestedArray } from '@dereekb/util';\nimport { DbxFirebaseCollectionLoaderAccessor, DbxFirebaseCollectionLoaderWithAccumulator } from './collection.loader';\n\nexport interface DbxFirebaseCollectionLoaderInstanceInitConfig<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {\n collection?: Maybe<FirestoreCollectionLike<T, D>>;\n maxPages?: Maybe<number>;\n itemsPerPage?: Maybe<number>;\n constraints?: Maybe<ArrayOrValue<FirestoreQueryConstraint>>;\n}\n\nexport type DbxFirebaseCollectionLoaderInstanceData<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> = DbxFirebaseCollectionLoaderAccessor<T>;\n\n/**\n * DbxFirebaseModelLoader implementation within an instance.\n */\nexport class DbxFirebaseCollectionLoaderInstance<T = unknown, D extends FirestoreDocument<T> = FirestoreDocument<T>> implements DbxFirebaseCollectionLoaderWithAccumulator<T>, DbxFirebaseCollectionLoaderInstanceData<T, D>, Initialized, Destroyable {\n private readonly _maxPagesSub = new SubscriptionObject();\n\n protected readonly _collection = new BehaviorSubject<Maybe<FirestoreCollectionLike<T, D>>>(undefined);\n\n protected readonly _maxPages = new BehaviorSubject<Maybe<number>>(undefined);\n protected readonly _itemsPerPage = new BehaviorSubject<Maybe<number>>(undefined);\n protected readonly _constraints = new BehaviorSubject<Maybe<ArrayOrValue<FirestoreQueryConstraint>>>(undefined);\n protected readonly _restart = new Subject<void>();\n\n readonly collection$ = this._collection.pipe(distinctUntilChanged());\n readonly constraints$ = this._constraints.pipe(distinctUntilChanged());\n\n readonly iteratorFilter$: Observable<FirestoreItemPageIteratorFilter> = combineLatest([this._itemsPerPage.pipe(distinctUntilChanged()), this.constraints$]).pipe(\n map(([limit, constraints]) => ({ limit, constraints, maxPageLoadLimit: this.maxPages } as FirestoreItemPageIteratorFilter)),\n shareReplay(1)\n );\n\n readonly firestoreIteration$: Observable<FirestoreItemPageIterationInstance<T>> = this.collection$.pipe(\n switchMap((collection) => {\n if (collection) {\n return combineLatest([this.iteratorFilter$, this._restart.pipe(startWith(undefined))]).pipe(\n throttleTime(100, undefined, { trailing: true }), // prevent rapid changes and executing filters too quickly.\n map(([iteratorFilter]) => collection.firestoreIteration(iteratorFilter)),\n cleanupDestroyable(), // cleanup the iteration\n shareReplay(1)\n );\n } else {\n return NEVER; // don't emit anything until collection is provided.\n }\n }),\n cleanupDestroyable(), // cleanup the iteration\n shareReplay(1)\n );\n\n readonly queryChangeWatcher$: Observable<IterationQueryDocChangeWatcher<T>> = this.firestoreIteration$.pipe(\n map((instance) => iterationQueryDocChangeWatcher({ instance })),\n shareReplay(1)\n );\n\n readonly snapshotAccumulator$: Observable<FirebaseQuerySnapshotAccumulator<T>> = this.firestoreIteration$.pipe(\n map((x) => firebaseQuerySnapshotAccumulator<T>(x)),\n cleanupDestroyable(),\n shareReplay(1)\n );\n\n readonly snapshotAccumulatorDocumentRefs$: Observable<DocumentReference<T>[][]> = this.snapshotAccumulator$.pipe(\n switchMap((x) => x.allItems$.pipe(map((y) => y.map((z) => z.map((zz) => zz.ref))))),\n shareReplay(1)\n );\n\n readonly snapshotAccumulatorDocuments$: Observable<D[][]> = combineLatest([this.collection$.pipe(filterMaybe()), this.snapshotAccumulatorDocumentRefs$]).pipe(\n map(([collection, documentRefs]) => {\n const accessor = collection.documentAccessor();\n return documentRefs.map((y) => y.map((z) => accessor.loadDocument(z)));\n }),\n shareReplay(1)\n );\n\n readonly accumulator$: Observable<FirebaseQueryItemAccumulator<T>> = this.firestoreIteration$.pipe(\n map((x) => firebaseQueryItemAccumulator<T>(x)),\n cleanupDestroyable(),\n shareReplay(1)\n );\n\n readonly accumulatorPage$: Observable<PageNumber> = this.accumulator$.pipe(\n switchMap((x) => pageItemAccumulatorCurrentPage(x)),\n shareReplay(1)\n );\n\n /**\n * Passthrough for currentAllItems$ from the accumulator.\n */\n readonly currentAccumulatorItems$: Observable<DocumentDataWithIdAndKey<T>[][]> = this.accumulator$.pipe(\n switchMap((x) => x.currentAllItems$),\n shareReplay(1)\n );\n\n /**\n * Passthrough for allItems$ from the accumulator.\n */\n readonly accumulatorItems$: Observable<DocumentDataWithIdAndKey<T>[][]> = this.accumulator$.pipe(\n switchMap((x) => x.allItems$),\n shareReplay(1)\n );\n\n readonly hasDocuments$: Observable<boolean> = this.firestoreIteration$.pipe(\n switchMap((x) => x.firstState$.pipe(map((x) => Boolean(x.value?.length)))),\n shareReplay(1)\n );\n\n readonly allDocumentRefs$: Observable<DocumentReference<T>[]> = this.snapshotAccumulatorDocumentRefs$.pipe(\n map((x) => x.flat()),\n shareReplay(1)\n );\n\n readonly allDocuments$: Observable<D[]> = this.snapshotAccumulatorDocuments$.pipe(\n map((x) => x.flat()),\n shareReplay(1)\n );\n\n readonly allDocumentData$: Observable<DocumentDataWithIdAndKey<T>[]> = this.accumulatorItems$.pipe(\n map((x) => x.flat()),\n shareReplay(1)\n );\n\n readonly pageLoadingState$: Observable<PageListLoadingState<DocumentDataWithIdAndKey<T>>> = this.accumulator$.pipe(\n switchMap((x) => accumulatorFlattenPageListLoadingState(x)),\n shareReplay(1)\n );\n\n constructor(initConfig?: DbxFirebaseCollectionLoaderInstanceInitConfig<T, D>) {\n this._collection.next(initConfig?.collection);\n this._maxPages.next(initConfig?.maxPages);\n this._itemsPerPage.next(initConfig?.itemsPerPage);\n this._constraints.next(initConfig?.constraints);\n }\n\n init(): void {\n // When max pages changes, update the iteration's max page limit.\n this._maxPagesSub.subscription = this._maxPages\n .pipe(\n distinctUntilChanged(),\n filterMaybe(), // do not pass null/undefined values\n switchMap((maxPageLoadLimit) =>\n this.firestoreIteration$.pipe(\n tap((iteration) => {\n iteration.setMaxPageLoadLimit(maxPageLoadLimit);\n })\n )\n )\n )\n .subscribe();\n }\n\n destroy(): void {\n this._maxPages.complete();\n this._collection.complete();\n this._constraints.complete();\n this._itemsPerPage.complete();\n this._restart.complete();\n this._maxPagesSub.destroy();\n }\n\n // MARK: Inputs\n get maxPages(): Maybe<number> {\n return this._maxPages.value;\n }\n\n set maxPages(maxPages: Maybe<number>) {\n if (this.maxPages != maxPages) {\n this._maxPages.next(maxPages);\n }\n }\n\n get itemsPerPage(): Maybe<number> {\n return this._itemsPerPage.value;\n }\n\n set itemsPerPage(itemsPerPage: Maybe<number>) {\n if (this.itemsPerPage != itemsPerPage) {\n this._itemsPerPage.next(itemsPerPage);\n }\n }\n\n get constraints(): Maybe<ArrayOrValue<FirestoreQueryConstraint>> {\n return this._constraints.value;\n }\n\n set constraints(constraints: Maybe<ArrayOrValue<FirestoreQueryConstraint>>) {\n this._constraints.next(constraints);\n }\n\n get collection(): Maybe<FirestoreCollectionLike<T, D>> {\n return this._collection.value;\n }\n\n set collection(collection: Maybe<FirestoreCollectionLike<T, D>>) {\n this._collection.next(collection);\n }\n\n // MARK: DbxFirebaseCollectionLoader\n next() {\n useFirst(this.firestoreIteration$, (x) => x.next());\n }\n\n restart() {\n this._restart.next();\n }\n\n setConstraints(constraints: Maybe<ArrayOrValue<FirestoreQueryConstraint>>) {\n this.constraints = constraints;\n }\n\n setCollection(firestoreCollection: Maybe<FirestoreCollectionLike<T, D>>) {\n this.collection = firestoreCollection;\n }\n\n loadPagesUntilResultsCount(maxResultsLimit: GetterOrValue<number>, countResultsFunction?: FirebaseQueryItemAccumulatorNextPageUntilResultsCountFunction<T> | undefined): Observable<ItemAccumulatorNextPageUntilResultsCountResult> {\n const defaultFn: ItemAccumulatorNextPageUntilResultsCountFunction<DocumentDataWithIdAndKey<T>[]> = countAllInNestedArray;\n return this.accumulator$.pipe(\n switchMap((accumulator) =>\n itemAccumulatorNextPageUntilResultsCount({\n accumulator,\n maxResultsLimit,\n countResultsFunction: countResultsFunction ?? defaultFn\n })\n )\n );\n }\n\n loadToPage(page: PageNumber): Observable<PageNumber> {\n return this.accumulator$.pipe(switchMap((accumulator) => iteratorNextPageUntilPage(accumulator.itemIteration, page)));\n }\n\n loadAllResults(): Observable<PageNumber> {\n return this.accumulator$.pipe(switchMap((accumulator) => iteratorNextPageUntilMaxPageLoadLimit(accumulator.itemIteration)));\n }\n}\n\nexport function dbxFirebaseCollectionLoaderInstance<T, D extends FirestoreDocument<T> = FirestoreDocument<T>>(config: DbxFirebaseCollectionLoaderInstanceInitConfig<T, D>): DbxFirebaseCollectionLoaderInstance<T, D> {\n return new DbxFirebaseCollectionLoaderInstance<T, D>(config);\n}\n\nexport function dbxFirebaseCollectionLoaderInstanceWithCollection<T, D extends FirestoreDocument<T> = FirestoreDocument<T>>(collection: Maybe<FirestoreCollectionLike<T, D>>): DbxFirebaseCollectionLoaderInstance<T, D> {\n return new DbxFirebaseCollectionLoaderInstance<T, D>({ collection });\n}\n","import { ObservableOrValue, useAsObservable, PageListLoadingState, filterMaybe, SubscriptionObject, asObservable, pageLoadingStateFromObs } from '@dereekb/rxjs';\nimport { BehaviorSubject, map, shareReplay, distinctUntilChanged, Subject, switchMap, Observable, startWith, exhaustMap } from 'rxjs';\nimport { dataFromDocumentSnapshots, DocumentDataWithIdAndKey, DocumentReference, documentReferencesFromDocuments, DocumentSnapshot, FirestoreDocument, FirestoreDocumentAccessor, firestoreModelIdsFromDocuments, FirestoreModelKey, firestoreModelKeysFromDocuments, getDataFromDocumentSnapshots, getDocumentSnapshots, latestSnapshotsFromDocuments, LimitedFirestoreDocumentAccessor, loadDocumentsForDocumentReferences, loadDocumentsForIds, loadDocumentsForKeys } from '@dereekb/firebase';\nimport { ArrayOrValue, asArray, Destroyable, Maybe } from '@dereekb/util';\nimport { DbxFirebaseDocumentLoader, DbxLimitedFirebaseDocumentLoader } from './document.loader';\n\nexport interface DbxFirebaseDocumentLoaderInstanceInitConfig<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>> {\n readonly accessor: A;\n}\n\n/**\n * DbxLimitedFirebaseDocumentLoader implementation within an instance.\n */\nexport class DbxLimitedFirebaseDocumentLoaderInstance<T = unknown, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>> implements DbxLimitedFirebaseDocumentLoader<T>, Destroyable {\n readonly accessor: A;\n\n protected readonly _documents = new BehaviorSubject<Maybe<D[]>>(undefined);\n protected readonly _restart = new Subject<void>();\n protected readonly _sub = new SubscriptionObject();\n\n readonly documents$ = this._documents.pipe(filterMaybe(), distinctUntilChanged());\n readonly keys$ = this.documents$.pipe(map(firestoreModelKeysFromDocuments));\n readonly ids$ = this.documents$.pipe(map(firestoreModelIdsFromDocuments));\n readonly refs$ = this.documents$.pipe(map(documentReferencesFromDocuments));\n\n readonly snapshots$: Observable<DocumentSnapshot<T>[]> = this.documents$.pipe(\n switchMap((docs) =>\n this._restart.pipe(\n startWith(null),\n exhaustMap(() => getDocumentSnapshots<D>(docs))\n )\n ),\n shareReplay(1)\n );\n\n readonly data$: Observable<DocumentDataWithIdAndKey<T>[]> = this.snapshots$.pipe(\n map((snapshots) => getDataFromDocumentSnapshots(snapshots, true)),\n shareReplay(1)\n );\n\n /**\n * Snapshot stream of the documents\n */\n readonly snapshotsStream$: Observable<DocumentSnapshot<T>[]> = this.documents$.pipe(\n switchMap((docs) => latestSnapshotsFromDocuments(docs)),\n shareReplay(1)\n );\n\n /**\n * Data streamd of the documents.\n */\n readonly dataStream$: Observable<DocumentDataWithIdAndKey<T>[]> = this.snapshotsStream$.pipe(dataFromDocumentSnapshots(), shareReplay(1));\n\n readonly pageLoadingState$: Observable<PageListLoadingState<DocumentDataWithIdAndKey<T>>> = pageLoadingStateFromObs(this.data$, false);\n readonly pageLoadingStateStream$: Observable<PageListLoadingState<DocumentDataWithIdAndKey<T>>> = pageLoadingStateFromObs(this.dataStream$, false);\n\n constructor(initConfig: DbxFirebaseDocumentLoaderInstanceInitConfig<T, D, A>) {\n this.accessor = initConfig.accessor;\n }\n\n destroy(): void {\n this._documents.complete();\n this._restart.complete();\n this._sub.destroy();\n }\n\n restart() {\n this._restart.next();\n }\n\n setKeys(keys: Maybe<ObservableOrValue<ArrayOrValue<FirestoreModelKey>>>): void {\n this.setDocuments(asObservable(keys).pipe(map((x) => loadDocumentsForKeys(this.accessor, asArray(x)))));\n }\n\n setRefs(refs: Maybe<ObservableOrValue<ArrayOrValue<DocumentReference<T>>>>): void {\n this.setDocuments(asObservable(refs).pipe(map((x) => loadDocumentsForDocumentReferences(this.accessor, asArray(x)))));\n }\n\n setDocuments(docs: Maybe<ObservableOrValue<ArrayOrValue<D>>>): void {\n this._sub.subscription = useAsObservable(docs, (x) => this._documents.next(asArray(x)));\n }\n}\n\nexport function dbxLimitedFirebaseDocumentLoaderInstance<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>>(config: DbxFirebaseDocumentLoaderInstanceInitConfig<T, D, A>): DbxLimitedFirebaseDocumentLoaderInstance<T, D, A> {\n return new DbxLimitedFirebaseDocumentLoaderInstance<T, D, A>(config);\n}\n\nexport function dbxLimitedFirebaseDocumentLoaderInstanceWithAccessor<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>>(accessor: A): DbxLimitedFirebaseDocumentLoaderInstance<T, D, A> {\n return new DbxLimitedFirebaseDocumentLoaderInstance<T, D, A>({ accessor });\n}\n\n// MARK: Full DbxFirebaseDocumentLoaderInstance\nexport class DbxFirebaseDocumentLoaderInstance<T = unknown, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends FirestoreDocumentAccessor<T, D> = FirestoreDocumentAccessor<T, D>> extends DbxLimitedFirebaseDocumentLoaderInstance<T, D, A> implements DbxFirebaseDocumentLoader<T>, Destroyable {\n setIds(ids: Maybe<ObservableOrValue<ArrayOrValue<FirestoreModelKey>>>): void {\n this.setDocuments(asObservable(ids).pipe(map((x) => loadDocumentsForIds(this.accessor, asArray(x)))));\n }\n}\n\nexport function dbxFirebaseDocumentLoaderInstance<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends FirestoreDocumentAccessor<T, D> = FirestoreDocumentAccessor<T, D>>(config: DbxFirebaseDocumentLoaderInstanceInitConfig<T, D, A>): DbxFirebaseDocumentLoaderInstance<T, D, A> {\n return new DbxFirebaseDocumentLoaderInstance<T, D, A>(config);\n}\n\nexport function dbxFirebaseDocumentLoaderInstanceWithAccessor<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends FirestoreDocumentAccessor<T, D> = FirestoreDocumentAccessor<T, D>>(accessor: A): DbxFirebaseDocumentLoaderInstance<T, D, A> {\n return new DbxFirebaseDocumentLoaderInstance<T, D, A>({ accessor });\n}\n","import { FirestoreDocument, FirebasePermissionErrorContext, InModelContextFirebaseModelService, FirestoreDocumentData, DocumentSnapshot, FirestoreAccessorStreamMode, SnapshotOptions, InContextFirebaseModelsService, FirebaseModelsService } from '@dereekb/firebase';\nimport { GrantedRole, GrantedRoleTruthMap, GrantedRoleTruthMapObject } from '@dereekb/model';\nimport { asObservable, ObservableOrValue } from '@dereekb/rxjs';\nimport { SetIncludesMode, IterableOrValue, ModelKey } from '@dereekb/util';\nimport { map, Observable, switchMap, shareReplay, distinctUntilChanged } from 'rxjs';\nimport { DbxFirebaseInContextFirebaseModelInfoServiceInstance } from './model.context';\n\nexport type DbxFirebaseInContextFirebaseModelServiceInstanceFactory<S extends InContextFirebaseModelsService<any>, C extends FirebasePermissionErrorContext = FirebasePermissionErrorContext> = <D extends FirestoreDocument<any>, R extends GrantedRole = GrantedRole>(type: S extends InContextFirebaseModelsService<infer Y> ? (Y extends FirebaseModelsService<infer X, infer C> ? keyof X : never) : never, keyObs: ObservableOrValue<ModelKey>) => DbxFirebaseInContextFirebaseModelServiceInstance<D, R, C>;\n\nexport function dbxFirebaseInContextFirebaseModelServiceInstanceFactory<S extends InContextFirebaseModelsService<any>, C extends FirebasePermissionErrorContext = FirebasePermissionErrorContext>(context$: Observable<S>): DbxFirebaseInContextFirebaseModelServiceInstanceFactory<S, C> {\n return <D extends FirestoreDocument<any>, R extends GrantedRole = GrantedRole>(type: S extends InContextFirebaseModelsService<infer Y> ? (Y extends FirebaseModelsService<infer X, infer C> ? keyof X : never) : never, keyObs: ObservableOrValue<ModelKey>) => {\n const key$ = asObservable(keyObs);\n const modelServiceObs = context$.pipe(\n map((x) => x(type)),\n switchMap((service) => key$.pipe(map((key) => service(key))))\n ) as unknown as Observable<InModelContextFirebaseModelService<C, FirestoreDocumentData<D>, D, R>>;\n\n return dbxFirebaseInContextFirebaseModelServiceInstance<D, R, C>(modelServiceObs);\n };\n}\n\nexport interface DbxFirebaseInContextFirebaseModelServiceInstance<D extends FirestoreDocument<any>, R extends GrantedRole = GrantedRole, C extends FirebasePermissionErrorContext = FirebasePermissionErrorContext> extends DbxFirebaseInContextFirebaseModelInfoServiceInstance<D, R> {\n readonly modelService$: Observable<InModelContextFirebaseModelService<C, FirestoreDocumentData<D>, D, R>>;\n}\n\n/**\n * Creates a new DbxFirebaseInContextFirebaseModelServiceInstance.\n *\n * Wraps an InModelContextFirebaseModelService observable and provides different piped observables.\n */\nexport function dbxFirebaseInContextFirebaseModelServiceInstance<D extends FirestoreDocument<any>, R extends GrantedRole = GrantedRole, C extends FirebasePermissionErrorContext = FirebasePermissionErrorContext>(modelService$: Observable<InModelContextFirebaseModelService<C, FirestoreDocumentData<D>, D, R>>) {\n const key$ = modelService$.pipe(map((x) => x.model.key));\n\n // MARK: Model\n const modelType$ = modelService$.pipe(\n map((x) => x.model.modelType),\n distinctUntilChanged()\n );\n\n const model$ = modelService$.pipe(\n map((x) => x.model),\n distinctUntilChanged((a, b) => a.key === b.key),\n shareReplay(1)\n );\n\n const snapshotData$ = model$.pipe(\n switchMap((x) => x.snapshotData()),\n shareReplay(1)\n );\n\n function snapshotStream(mode: FirestoreAccessorStreamMode): Observable<DocumentSnapshot<FirestoreDocumentData<D>>> {\n return model$.pipe(\n switchMap((x) => x.snapshotStream(mode)),\n shareReplay(1)\n );\n }\n\n function snapshotDataStream(mode: FirestoreAccessorStreamMode, options?: SnapshotOptions): Observable<FirestoreDocumentData<D>> {\n return model$.pipe(\n switchMap((x) => x.snapshotDataStream(mode)),\n shareReplay(1)\n );\n }\n\n // MARK: Roles\n const roleReader$ = modelService$.pipe(\n switchMap((x) => x.roleReader()),\n shareReplay(1)\n );\n\n const roleMap$ = roleReader$.pipe(\n map((x) => x.roleMap),\n shareReplay(1)\n );\n\n const hasNoAccess$ = roleReader$.pipe(\n map((x) => x.hasNoAccess()),\n shareReplay(1)\n );\n\n function truthMap<M extends GrantedRoleTruthMapObject<any, R>>(input: M): Observable<GrantedRoleTruthMap<M>> {\n return roleReader$.pipe(\n map((x) => x.truthMap(input)),\n shareReplay(1)\n );\n }\n\n function hasAnyRoles(roles: IterableOrValue<R>): Observable<boolean> {\n return hasRoles('any', roles);\n }\n\n function hasAllRoles(roles: IterableOrValue<R>): Observable<boolean> {\n return hasRoles('all', roles);\n }\n\n function hasRoles(setIncludes: SetIncludesMode, roles: IterableOrValue<R>): Observable<boolean> {\n return roleReader$.pipe(\n map((x) => x.hasRoles(setIncludes, roles)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n }\n\n function containsAnyRoles(roles: IterableOrValue<R>): Observable<boolean> {\n return containsRoles('any', roles);\n }\n\n function containsAllRoles(roles: IterableOrValue<R>): Observable<boolean> {\n return containsRoles('all', roles);\n }\n\n function containsRoles(setIncludes: SetIncludesMode, roles: IterableOrValue<R>): Observable<boolean> {\n return roleReader$.pipe(\n map((x) => x.containsRoles(setIncludes, roles)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n }\n\n const result: DbxFirebaseInContextFirebaseModelServiceInstance<D, R, C> = {\n modelService$,\n key$,\n modelType$,\n model$,\n snapshotData$,\n snapshotStream,\n snapshotDataStream,\n roleReader$,\n roleMap$,\n hasNoAccess$,\n truthMap,\n hasAnyRoles,\n hasAllRoles,\n hasRoles,\n containsAnyRoles,\n containsAllRoles,\n containsRoles\n };\n\n return result;\n}\n","import { FirestoreModelType, buildFirebaseCollectionTypeModelTypeMap, FirebasePermissionErrorContext, FirestoreDocument, FirestoreModelIdentityTypeMap, FirestoreModelKey, InContextFirebaseModelsService, firestoreModelKeyCollectionTypePair } from '@dereekb/firebase';\nimport { asObservable, ObservableOrValue } from '@dereekb/rxjs';\nimport { GrantedRole } from '@dereekb/model';\nimport { shareReplay, map, Observable, OperatorFunction, first, switchMap } from 'rxjs';\nimport { DbxFirebaseInContextFirebaseModelInfoServiceInstance } from './model.context';\nimport { DbxFirebaseInContextFirebaseModelServiceInstanceFactory } from './model.context.instance';\n\n/**\n * Used for retrieving contexts for a specific model type/identity.\n */\nexport abstract class DbxFirebaseModelContextService {\n /**\n * Creates a new DbxFirebaseInContextFirebaseModelInfoServiceInstance for the input model key.\n *\n * @param key$\n */\n abstract modelInfoInstance<D extends FirestoreDocument<any> = any, R extends GrantedRole = GrantedRole>(keyObs: ObservableOrValue<FirestoreModelKey>): Observable<DbxFirebaseInContextFirebaseModelInfoServiceInstance<D, R>>;\n}\n\nexport type DbxFirebaseModelContextServiceInfoInstanceFactory = <D extends FirestoreDocument<any>, R extends GrantedRole = GrantedRole>(keyObs: ObservableOrValue<FirestoreModelKey>) => Observable<DbxFirebaseInContextFirebaseModelInfoServiceInstance<D, R>>;\n\nexport interface DbxFirebaseModelContextServiceInfoInstanceFactoryConfig<S extends InContextFirebaseModelsService<any>, C extends FirebasePermissionErrorContext = FirebasePermissionErrorContext> {\n readonly modelService: DbxFirebaseInContextFirebaseModelServiceInstanceFactory<S, C>;\n readonly entityMap$: Observable<FirestoreModelIdentityTypeMap>;\n}\n\nexport function dbxFirebaseModelContextServiceInfoInstanceFactory<S extends InContextFirebaseModelsService<any>, C extends FirebasePermissionErrorContext = FirebasePermissionErrorContext>(config: DbxFirebaseModelContextServiceInfoInstanceFactoryConfig<S, C>): DbxFirebaseModelContextServiceInfoInstanceFactory {\n const { modelService, entityMap$ } = config;\n return <D extends FirestoreDocument<any>, R extends GrantedRole = GrantedRole>(keyObs: ObservableOrValue<string>) => {\n const key$ = asObservable(keyObs);\n\n return key$.pipe(\n map(firestoreModelKeyCollectionTypePair),\n switchMap((pair) => {\n return entityMap$.pipe(\n map((entityMap) => {\n const modelType = entityMap.get(pair.collectionType) as FirestoreModelType;\n\n if (!modelType) {\n const message = `dbxFirebaseModelContextServiceInfoInstanceFactory Error: Failed to retrieve model type for collection type \"${pair.collectionType}\"`;\n console.error(message);\n throw new Error(message);\n }\n\n return modelService(modelType as any, pair.key) as DbxFirebaseInContextFirebaseModelInfoServiceInstance<D, R>;\n })\n );\n })\n );\n };\n}\n\n/**\n * Operator function that builds a FirestoreModelIdentityTypeMap from the input context and shares the replay.\n *\n * Since the output won't change with different contexts, the map is built once and then shared.\n *\n * @returns\n */\nexport function firebaseContextServiceEntityMap<T extends InContextFirebaseModelsService<any>>(): OperatorFunction<T, FirestoreModelIdentityTypeMap> {\n return (obs: Observable<T>) => {\n return obs.pipe(\n map((x) => buildFirebaseCollectionTypeModelTypeMap(x)),\n first(),\n shareReplay(1)\n );\n };\n}\n","import { distinctUntilChanged, map, Observable, shareReplay, switchMap, combineLatest, of } from 'rxjs';\nimport { FirestoreCollectionType, FirestoreDocument, FirestoreDocumentData, FirestoreModelIdentity, FirestoreModelKey } from '@dereekb/firebase';\nimport { DbxModelTypeInfo, DbxModelTypesMap, DbxModelTypesService } from '@dereekb/dbx-web';\nimport { ArrayOrValue, asArray, FactoryWithRequiredInput, Maybe, ModelTypeString } from '@dereekb/util';\nimport { ClickableAnchorLinkSegueRef, IconAndTitle, SegueRef } from '@dereekb/dbx-core';\nimport { ObservableOrValue } from '@dereekb/rxjs';\nimport { GrantedRole } from '@dereekb/model';\nimport { Optional, Injectable, inject, Inject } from '@angular/core';\nimport { DbxFirebaseModelContextService } from '../../service/model.context.service';\nimport { DbxFirebaseInContextFirebaseModelInfoServiceInstance } from '../../service/model.context';\n\n/**\n * Configuration provided in the root module for configuring entries.\n */\nexport abstract class DbxFirebaseModelTypesServiceConfig {\n abstract entries: DbxFirebaseModelTypesServiceEntry[];\n}\n\nexport interface DbxFirebaseModelTypesServiceEntry<T = unknown> extends Omit<DbxModelTypeInfo, 'canSegueToView' | 'modelType'> {\n /**\n * Identity of the item being registered.\n */\n readonly identity: FirestoreModelIdentity;\n /**\n * Creates the DbxFirebaseModelDisplayInfo for the input data.\n *\n * If no icon is provided, it uses the default icon configured in this entry.\n *\n * @param value\n * @returns\n */\n readonly displayInfoFactory: FactoryWithRequiredInput<DbxFirebaseModelDisplayInfo, T>;\n}\n\nexport type DbxFirebaseModelDisplayInfo = IconAndTitle;\n\nexport interface DbxFirebaseModelTypeInfo<T = unknown> extends DbxModelTypeInfo, Pick<DbxFirebaseModelTypesServiceEntry<T>, 'identity' | 'displayInfoFactory'> {}\n\nexport type DbxFirebaseModelTypesMap = DbxModelTypesMap<DbxFirebaseModelTypeInfo>;\n\n/**\n * Provides model type information about models registered within Firebase.\n *\n * Automatically configures the DbxModelTypesService.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseModelTypesService {\n readonly dbxFirebaseModelContextService = inject(DbxFirebaseModelContextService);\n readonly dbxModelTypesService = inject(DbxModelTypesService<DbxFirebaseModelTypeInfo>);\n\n constructor(@Optional() @Inject(DbxFirebaseModelTypesServiceConfig) initialConfig?: DbxFirebaseModelTypesServiceConfig) {\n if (initialConfig) {\n this.register(initialConfig.entries);\n }\n }\n\n getDisplayInfo<T>(typeInfo: DbxFirebaseModelTypeInfo<T>, data: T) {\n let displayInfo: DbxFirebaseModelDisplayInfo;\n\n if (data != null) {\n displayInfo = typeInfo.displayInfoFactory(data);\n displayInfo.icon = displayInfo.icon || typeInfo.icon; // set default icon\n } else {\n displayInfo = this.getDefaultDisplayInfo(typeInfo);\n }\n\n return displayInfo;\n }\n\n getDefaultDisplayInfo<T = unknown>(typeInfo: DbxFirebaseModelTypeInfo<T>) {\n // TODO: Make configurable\n return {\n title: typeInfo.label ?? '',\n icon: 'warning'\n };\n }\n\n // MARK: Register\n register(entries: ArrayOrValue<DbxFirebaseModelTypesServiceEntry>) {\n const typeConfigs = asArray(entries).map((x) => ({ ...x, modelType: x.identity.modelType }));\n this.dbxModelTypesService.addTypeConfigs(typeConfigs);\n }\n\n // MARK: Retrieval\n currentInfoForType(type: ModelTypeString | FirestoreCollectionType): Observable<Maybe<DbxFirebaseModelTypeInfo>> {\n return this.dbxModelTypesService.typesMap$.pipe(map((x) => x[type]));\n }\n\n infoForType(type: ModelTypeString | FirestoreCollectionType): Observable<DbxFirebaseModelTypeInfo> {\n return this.currentInfoForType(type).pipe(\n map((x) => {\n if (!x) {\n console.error(`DbxFirebaseModelTypesService: contained no info for type \"${type}\". Ensure the correct type was entered, and that the type is registered with the DbxFirebaseModelTypesService.`);\n throw x;\n }\n\n return x as DbxFirebaseModelTypeInfo;\n })\n );\n }\n\n instanceForKey<D extends FirestoreDocument<any> = any, R extends GrantedRole = GrantedRole>(key$: ObservableOrValue<FirestoreModelKey>): DbxFirebaseModelTypesServiceInstance<D, R> {\n return dbxFirebaseModelTypesServiceInstance<D, R>(this.dbxFirebaseModelContextService.modelInfoInstance<D, R>(key$), this);\n }\n\n instancePairsForKeys(keys: ArrayOrValue<ObservableOrValue<FirestoreModelKey>>) {\n return dbxFirebaseModelTypesServiceInstancePairForKeysFactory(this)(keys);\n }\n}\n\n/**\n * Information pair for an instance.\n */\nexport interface DbxFirebaseModelTypesServiceInstancePair<D extends FirestoreDocument<any> = any, R extends GrantedRole = GrantedRole> {\n readonly key: FirestoreModelKey;\n readonly instance: DbxFirebaseModelTypesServiceInstance<D, R>;\n readonly displayInfo: DbxFirebaseModelDisplayInfo;\n readonly segueRef: Maybe<ClickableAnchorLinkSegueRef>;\n}\n\nexport type DbxFirebaseModelTypesServiceInstancePairForKeysFactory = (keys: ArrayOrValue<ObservableOrValue<FirestoreModelKey>>) => Observable<DbxFirebaseModelTypesServiceInstancePair[]>;\n\nexport function dbxFirebaseModelTypesServiceInstancePairForKeysFactory(service: DbxFirebaseModelTypesService): DbxFirebaseModelTypesServiceInstancePairForKeysFactory {\n return (keys: ArrayOrValue<ObservableOrValue<FirestoreModelKey>>) => {\n const instances = asArray(keys).map((x) => service.instanceForKey(x).instancePair$);\n return instances.length ? combineLatest(instances) : of([]);\n };\n}\n\n/**\n * DbxFirebaseModelTypesService instance\n */\nexport interface DbxFirebaseModelTypesServiceInstance<D extends FirestoreDocument<any> = any, R extends GrantedRole = GrantedRole> {\n readonly modelInfoInstance$: Observable<DbxFirebaseInContextFirebaseModelInfoServiceInstance<D, R>>;\n readonly dbxFirebaseModelTypesService: DbxFirebaseModelTypesService;\n\n readonly key$: Observable<string>;\n readonly modelType$: Observable<string>;\n readonly snapshotData$: Observable<FirestoreDocumentData<D>>;\n readonly typeInfo$: Observable<DbxFirebaseModelTypeInfo<unknown>>;\n readonly identity$: Observable<FirestoreModelIdentity>;\n readonly segueRef$: Observable<Maybe<SegueRef>>;\n readonly displayInfo$: Observable<DbxFirebaseModelDisplayInfo>;\n readonly clickableSegueRef$: Observable<Maybe<ClickableAnchorLinkSegueRef>>;\n readonly instancePair$: Observable<DbxFirebaseModelTypesServiceInstancePair>;\n}\n\nexport function dbxFirebaseModelTypesServiceInstance<D extends FirestoreDocument<any> = any, R extends GrantedRole = GrantedRole>(modelInfoInstance$: Observable<DbxFirebaseInContextFirebaseModelInfoServiceInstance<D, R>>, dbxFirebaseModelTypesService: DbxFirebaseModelTypesService) {\n const key$ = modelInfoInstance$.pipe(switchMap((x) => x.key$));\n const modelType$ = modelInfoInstance$.pipe(switchMap((x) => x.modelType$));\n const snapshotData$ = modelInfoInstance$.pipe(switchMap((x) => x.snapshotData$));\n\n const typeInfo$ = modelType$.pipe(\n switchMap((x) => dbxFirebaseModelTypesService.infoForType(x)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n const identity$ = typeInfo$.pipe(\n map((x) => x.identity),\n distinctUntilChanged()\n );\n\n const segueRef$: Observable<Maybe<SegueRef>> = combineLatest([key$, typeInfo$]).pipe(\n map(([key, info]) => (info.sref ? info.sref(key) : undefined)),\n shareReplay(1)\n );\n\n const displayInfo$: Observable<DbxFirebaseModelDisplayInfo> = combineLatest([typeInfo$, snapshotData$]).pipe(\n map(([typeInfo, data]) => dbxFirebaseModelTypesService.getDisplayInfo(typeInfo, data)),\n shareReplay(1)\n );\n\n const clickableSegueRef$: Observable<Maybe<ClickableAnchorLinkSegueRef>> = combineLatest([segueRef$, displayInfo$]).pipe(\n map(([segueRef, displayInfo]) => {\n let ref: Maybe<ClickableAnchorLinkSegueRef> = undefined;\n\n if (segueRef) {\n ref = {\n ...segueRef,\n title: displayInfo.title,\n icon: displayInfo.icon\n };\n }\n\n return ref;\n }),\n shareReplay(1)\n );\n\n const instancePair$: Observable<DbxFirebaseModelTypesServiceInstancePair> = combineLatest([clickableSegueRef$, displayInfo$, key$]).pipe(\n map(([segueRef, displayInfo, key]) => ({ segueRef, displayInfo, key, instance })),\n shareReplay(1)\n );\n\n const instance: DbxFirebaseModelTypesServiceInstance<D, R> = {\n modelInfoInstance$,\n dbxFirebaseModelTypesService,\n key$,\n modelType$,\n snapshotData$,\n typeInfo$,\n identity$,\n segueRef$,\n displayInfo$,\n clickableSegueRef$,\n instancePair$\n };\n\n return instance;\n}\n","import { ArrayOrValue, DecisionFunction, Maybe, asArray, invertDecision } from '@dereekb/util';\nimport { FirestoreModelIdentity } from '@dereekb/firebase';\nimport { map, Observable, switchMap, shareReplay, startWith, of } from 'rxjs';\nimport { Injectable, inject } from '@angular/core';\nimport { allDbxModelViewTrackerEventModelKeys, DbxModelTrackerService } from '@dereekb/dbx-web';\nimport { DbxFirebaseModelTypesService, DbxFirebaseModelTypesServiceInstancePair } from './model.types.service';\nimport { filterItemsWithObservableDecision, invertObservableDecision, mapEachAsync, ObservableDecisionFunction } from '@dereekb/rxjs';\n\nexport interface DbxFirebaseModelTrackerFilterItem {\n instancePair: DbxFirebaseModelTypesServiceInstancePair;\n identity: FirestoreModelIdentity;\n}\n\nexport interface DbxFirebaseModelTrackerHistoryFilter {\n /**\n * Whether or not to exclude the values instead of include them.\n */\n invertFilter?: boolean;\n /**\n * Identity types to filter on.\n */\n identity?: Maybe<ArrayOrValue<FirestoreModelIdentity>>;\n /**\n * Arbitrary filter function to filter individual items.\n */\n filterItem?: ObservableDecisionFunction<DbxFirebaseModelTrackerFilterItem>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseModelTrackerService {\n readonly dbxModelTrackerService = inject(DbxModelTrackerService);\n readonly dbxFirebaseModelTypesService = inject(DbxFirebaseModelTypesService);\n\n readonly historyKeys$ = this.dbxModelTrackerService.newEvent$.pipe(\n startWith(null),\n switchMap(() => this.loadHistoryKeys()),\n shareReplay(1)\n );\n\n readonly historyPairs$ = this.dbxModelTrackerService.newEvent$.pipe(\n startWith(null),\n switchMap(() => this.loadHistoryPairs()), // TODO: Improve efficiency of this to only load/remove items for new keys\n shareReplay(1)\n );\n\n readonly filterItemHistoryPairs$: Observable<DbxFirebaseModelTrackerFilterItem[]> = this.historyPairs$.pipe(\n mapEachAsync((instancePair) => instancePair.instance.identity$.pipe(map((identity) => ({ instancePair, identity }))), { onlyFirst: true }),\n shareReplay(1)\n );\n\n /**\n * Filters from historyPairs$ using the input filter configuration, if it is provided.\n *\n * @param filter\n * @returns\n */\n filterHistoryPairs(filter?: Maybe<DbxFirebaseModelTrackerHistoryFilter>): Observable<DbxFirebaseModelTypesServiceInstancePair[]> {\n if (filter && (filter?.identity || filter?.filterItem)) {\n const { invertFilter = false, identity, filterItem } = filter;\n const allowedIdentities = new Set(asArray(identity));\n const baseIsAllowedIdentityFn: DecisionFunction<FirestoreModelIdentity> = identity ? (x) => allowedIdentities.has(x) : () => true;\n const isAllowedIdentityFn = invertDecision(baseIsAllowedIdentityFn, invertFilter);\n\n const baseFilterItemFn: ObservableDecisionFunction<DbxFirebaseModelTrackerFilterItem> = filterItem ? invertObservableDecision(filterItem, invertFilter) : () => of(true);\n\n const filterItemFn: ObservableDecisionFunction<DbxFirebaseModelTrackerFilterItem> = (x) => {\n if (isAllowedIdentityFn(x.identity)) {\n return baseFilterItemFn(x);\n } else {\n return of(false);\n }\n };\n\n return this.filterItemHistoryPairs$.pipe(\n filterItemsWithObservableDecision(filterItemFn),\n map((x) => x.map((y) => y.instancePair)),\n shareReplay(1)\n );\n } else {\n return this.historyPairs$;\n }\n }\n\n loadHistoryKeys() {\n return this.dbxModelTrackerService.getAllViewEvents().pipe(map(allDbxModelViewTrackerEventModelKeys));\n }\n\n loadHistoryPairs(): Observable<DbxFirebaseModelTypesServiceInstancePair[]> {\n const historyKeys$ = this.loadHistoryKeys();\n return historyKeys$.pipe(switchMap((x) => this.dbxFirebaseModelTypesService.instancePairsForKeys(x)));\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractDbxSelectionListWrapperDirective, AbstractDbxValueListViewItemComponent, AbstractDbxSelectionListViewDirective, DEFAULT_LIST_WRAPPER_DIRECTIVE_TEMPLATE, DbxSelectionValueListViewConfig, provideDbxListView, DEFAULT_DBX_SELECTION_VALUE_LIST_DIRECTIVE_TEMPLATE, DbxValueAsListItem, provideDbxListViewWrapper } from '@dereekb/dbx-web';\nimport { of } from 'rxjs';\nimport { DbxFirebaseModelTypesServiceInstancePair } from './model.types.service';\n\nexport type DbxFirestoreModelTypeInstanceItem = DbxValueAsListItem<DbxFirebaseModelTypesServiceInstancePair>;\n\n/**\n * Renders an item as configured from the DbxFirebaseModelTypesServiceInstancePair.\n */\n@Component({\n selector: 'dbx-firebase-model-type-instance-list',\n template: DEFAULT_LIST_WRAPPER_DIRECTIVE_TEMPLATE,\n providers: provideDbxListViewWrapper(DbxFirebaseModelTypeInstanceComponent)\n})\nexport class DbxFirebaseModelTypeInstanceComponent extends AbstractDbxSelectionListWrapperDirective<DbxFirebaseModelTypesServiceInstancePair> {\n constructor() {\n super({\n componentClass: DbxFirebaseModelTypeInstanceViewComponent,\n defaultSelectionMode: 'view'\n });\n }\n}\n\n@Component({\n selector: 'dbx-firebase-model-type-instance-list-view',\n template: DEFAULT_DBX_SELECTION_VALUE_LIST_DIRECTIVE_TEMPLATE,\n providers: provideDbxListView(DbxFirebaseModelTypeInstanceViewComponent)\n})\nexport class DbxFirebaseModelTypeInstanceViewComponent extends AbstractDbxSelectionListViewDirective<DbxFirebaseModelTypesServiceInstancePair> {\n readonly config: DbxSelectionValueListViewConfig<DbxFirestoreModelTypeInstanceItem> = {\n componentClass: DbxFirebaseModelTypeInstanceViewItemComponent,\n mapValuesToItemValues: (x) => of(x.map((y) => ({ itemValue: y, icon: y.displayInfo.icon ?? y.icon, anchor: y.segueRef })))\n };\n}\n\n@Component({\n template: `\n <span>{{ title }}</span>\n `\n})\nexport class DbxFirebaseModelTypeInstanceViewItemComponent extends AbstractDbxValueListViewItemComponent<DbxFirebaseModelTypesServiceInstancePair> {\n get title() {\n return this.itemValue.displayInfo.title;\n }\n}\n","import { Component, Input, OnDestroy, inject } from '@angular/core';\nimport { AnchorForValueFunction } from '@dereekb/dbx-web';\nimport { loadingStateFromObs } from '@dereekb/rxjs';\nimport { Maybe } from '@dereekb/util';\nimport { BehaviorSubject, switchMap, shareReplay } from 'rxjs';\nimport { DbxFirebaseModelTrackerHistoryFilter, DbxFirebaseModelTrackerService } from './model.tracker.service';\nimport { DbxFirebaseModelTypesServiceInstancePair } from './model.types.service';\n\n@Component({\n selector: 'dbx-firebase-model-history',\n template: `\n <dbx-firebase-model-type-instance-list [state$]=\"state$\" [dbxListItemModifier] [dbxListItemAnchorModifier]=\"anchorForItem\">\n <ng-content empty select=\"[empty]\"></ng-content>\n </dbx-firebase-model-type-instance-list>\n `\n})\nexport class DbxFirebaseModelHistoryComponent implements OnDestroy {\n readonly dbxFirebaseModelTrackerService = inject(DbxFirebaseModelTrackerService);\n\n private _historyFilter = new BehaviorSubject<Maybe<DbxFirebaseModelTrackerHistoryFilter>>(undefined);\n\n @Input()\n anchorForItem?: Maybe<AnchorForValueFunction<DbxFirebaseModelTypesServiceInstancePair>>;\n\n @Input()\n get historyFilter() {\n return this._historyFilter.value;\n }\n\n set historyFilter(historyFilter: Maybe<DbxFirebaseModelTrackerHistoryFilter>) {\n this._historyFilter.next(historyFilter);\n }\n\n readonly historyFilter$ = this._historyFilter.asObservable();\n\n readonly historyPairs$ = this.historyFilter$.pipe(\n switchMap((x) => this.dbxFirebaseModelTrackerService.filterHistoryPairs(x)),\n shareReplay(1)\n );\n\n readonly state$ = loadingStateFromObs(this.historyPairs$);\n\n ngOnDestroy(): void {\n this._historyFilter.complete();\n }\n}\n","import { Component, ElementRef } from '@angular/core';\nimport { NgPopoverRef } from 'ng-overlay-container';\nimport { AbstractPopoverDirective, AnchorForValueFunction, DbxPopoverKey, DbxPopoverService } from '@dereekb/dbx-web';\nimport { Maybe } from '@dereekb/util';\nimport { DbxFirebaseModelTypesServiceInstancePair } from './model.types.service';\nimport { DbxFirebaseModelTrackerHistoryFilter } from './model.tracker.service';\n\nexport interface DbxFirebaseModelHistoryPopoverParams {\n /**\n * Custom icon\n *\n * Defaults to \"history\"\n */\n icon?: string;\n /**\n * Custom header text\n *\n * Defaults to \"History\"\n */\n header?: string;\n /**\n * Custom empty text when no items exist.\n */\n emptyText?: string;\n /**\n * Origin to add the popover to.\n */\n origin: ElementRef;\n /**\n * Optional config to pass to the DbxFirebaseHistoryComponent\n */\n historyFilter?: Maybe<DbxFirebaseModelTrackerHistoryFilter>;\n /**\n * Anchor\n */\n anchorForItem?: Maybe<AnchorForValueFunction<DbxFirebaseModelTypesServiceInstancePair>>;\n}\n\nexport const DEFAULT_FIREBASE_HISTORY_COMPONENT_POPOVER_KEY = 'history';\n\n@Component({\n templateUrl: './model.history.popover.component.html'\n})\nexport class DbxFirebaseModelHistoryPopoverComponent extends AbstractPopoverDirective<unknown, DbxFirebaseModelHistoryPopoverParams> {\n static openPopover(popupService: DbxPopoverService, { origin, header, icon, emptyText, historyFilter, anchorForItem }: DbxFirebaseModelHistoryPopoverParams, popoverKey?: DbxPopoverKey): NgPopoverRef {\n return popupService.open({\n key: popoverKey ?? DEFAULT_FIREBASE_HISTORY_COMPONENT_POPOVER_KEY,\n origin,\n componentClass: DbxFirebaseModelHistoryPopoverComponent,\n data: {\n header,\n icon,\n emptyText,\n historyFilter,\n anchorForItem\n } as DbxFirebaseModelHistoryPopoverParams\n });\n }\n\n get params(): DbxFirebaseModelHistoryPopoverParams {\n return this.popover.data as DbxFirebaseModelHistoryPopoverParams;\n }\n\n get icon() {\n return this.params.icon ?? 'history';\n }\n\n get header() {\n return this.params.header ?? 'History';\n }\n\n get emptyText() {\n return this.params.header ?? 'History is empty.';\n }\n\n get historyFilter() {\n return this.params.historyFilter;\n }\n\n get anchorForItem() {\n return this.params.anchorForItem;\n }\n}\n","<dbx-popover-content>\n <!-- Header -->\n <dbx-popover-header [icon]=\"icon\" [header]=\"header\"></dbx-popover-header>\n <!-- Content -->\n <dbx-popover-scroll-content>\n <dbx-firebase-model-history [historyFilter]=\"historyFilter\" [anchorForItem]=\"anchorForItem\">\n <dbx-list-empty-content empty>\n <p>{{ emptyText }}</p>\n </dbx-list-empty-content>\n </dbx-firebase-model-history>\n </dbx-popover-scroll-content>\n</dbx-popover-content>\n","import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild, inject } from '@angular/core';\nimport { AbstractPopoverRefDirective, DbxPopoverService } from '@dereekb/dbx-web';\nimport { NgPopoverRef } from 'ng-overlay-container';\nimport { DbxFirebaseModelHistoryPopoverComponent, DbxFirebaseModelHistoryPopoverParams } from './model.history.popover.component';\n\nexport type DbxFirebaseModelHistoryPopoverButtonConfig = DbxFirebaseModelHistoryPopoverParams;\n\n@Component({\n selector: 'dbx-firebase-model-history-popover-button',\n template: `\n <dbx-icon-button #button (buttonClick)=\"showHistoryPopover()\" icon=\"history\"></dbx-icon-button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DbxFirebaseModelHistoryPopoverButtonComponent extends AbstractPopoverRefDirective<unknown, unknown> {\n private readonly _dbxPopoverService = inject(DbxPopoverService);\n\n @ViewChild('button', { read: ElementRef, static: false })\n buttonElement!: ElementRef;\n\n @Input()\n config?: DbxFirebaseModelHistoryPopoverButtonConfig;\n\n protected override _makePopoverRef(origin?: ElementRef): NgPopoverRef<unknown, unknown> {\n const config = this.config;\n\n if (!origin) {\n throw new Error('Missing origin.');\n }\n\n return DbxFirebaseModelHistoryPopoverComponent.openPopover(this._dbxPopoverService, {\n origin,\n ...config\n });\n }\n\n showHistoryPopover(): void {\n const origin = this.buttonElement.nativeElement;\n this.showPopover(origin);\n }\n}\n","import { Directive, forwardRef, Input, OnDestroy, Provider, Type } from '@angular/core';\nimport { DocumentReference, FirestoreAccessorStreamMode, FirestoreDocument, FirestoreModelKey, FirestoreModelId } from '@dereekb/firebase';\nimport { Maybe } from '@dereekb/util';\nimport { DbxFirebaseDocumentStore } from './store.document';\nimport { BehaviorSubject, shareReplay, switchMap } from 'rxjs';\nimport { filterMaybe, useFirst } from '@dereekb/rxjs';\n\n/**\n * Abstract directive that contains a DbxFirebaseDocumentStore and provides an interface for communicating with other directives.\n */\n@Directive()\nexport abstract class DbxFirebaseDocumentStoreDirective<T = unknown, D extends FirestoreDocument<T> = FirestoreDocument<T>, S extends DbxFirebaseDocumentStore<T, D> = DbxFirebaseDocumentStore<T, D>> implements OnDestroy {\n private readonly _store = new BehaviorSubject<Maybe<S>>(undefined);\n readonly store$ = this._store.pipe(filterMaybe(), shareReplay(1));\n\n readonly exists$ = this.store$.pipe(switchMap((x) => x.exists$));\n readonly document$ = this.store$.pipe(switchMap((x) => x.document$));\n readonly documentLoadingState$ = this.store$.pipe(switchMap((x) => x.documentLoadingState$));\n\n readonly id$ = this.store$.pipe(switchMap((x) => x.id$));\n readonly key$ = this.store$.pipe(switchMap((x) => x.key$));\n readonly ref$ = this.store$.pipe(switchMap((x) => x.ref$));\n\n readonly snapshot$ = this.store$.pipe(switchMap((x) => x.snapshot$));\n readonly snapshotLoadingState$ = this.store$.pipe(switchMap((x) => x.snapshotLoadingState$));\n\n readonly modelIdentity$ = this.store$.pipe(switchMap((x) => x.modelIdentity$));\n readonly data$ = this.store$.pipe(switchMap((x) => x.data$));\n readonly loadingState$ = this.store$.pipe(switchMap((x) => x.dataLoadingState$));\n\n constructor(store: S) {\n this.replaceStore(store);\n }\n\n ngOnDestroy(): void {\n this._store.complete();\n }\n\n get store() {\n return this._store.value as S;\n }\n\n /**\n * Replaces the internal store.\n */\n replaceStore(store: S) {\n this._store.next(store);\n }\n\n // MARK: Inputs\n @Input()\n set documentId(documentId: Maybe<FirestoreModelId>) {\n useFirst(this.store$, (x) => x.setId(documentId));\n }\n\n @Input()\n set key(key: Maybe<FirestoreModelKey>) {\n useFirst(this.store$, (x) => x.setKey(key));\n }\n\n @Input()\n set ref(ref: Maybe<DocumentReference<T>>) {\n useFirst(this.store$, (x) => x.setRef(ref));\n }\n\n @Input()\n set streamMode(streamMode: FirestoreAccessorStreamMode) {\n useFirst(this.store$, (x) => x.setStreamMode(streamMode));\n }\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// The use of any here does not degrade the type-safety; we want to simply match that the Store type S is used in the Directive type C to provide it.\n\n/**\n * Configures providers for a DbxFirebaseDocumentStoreDirective.\n *\n * Can optionally also provide the actual store type to include in the providers array so it is instantiated by Angular.\n *\n * @param sourceType\n */\nexport function provideDbxFirebaseDocumentStoreDirective<S extends DbxFirebaseDocumentStoreDirective<any, any, any>>(sourceType: Type<S>): Provider[];\nexport function provideDbxFirebaseDocumentStoreDirective<S extends DbxFirebaseDocumentStore<any, any>, C extends DbxFirebaseDocumentStoreDirective<any, any, S> = DbxFirebaseDocumentStoreDirective<any, any, S>>(sourceType: Type<C>, storeType: Type<S>): Provider[];\nexport function provideDbxFirebaseDocumentStoreDirective<S extends DbxFirebaseDocumentStore<any, any>, C extends DbxFirebaseDocumentStoreDirective<any, any, S> = DbxFirebaseDocumentStoreDirective<any, any, S>>(sourceType: Type<C>, storeType?: Type<S>): Provider[] {\n const providers: Provider[] = [\n {\n provide: DbxFirebaseDocumentStoreDirective,\n useExisting: forwardRef(() => sourceType)\n }\n ];\n\n if (storeType) {\n providers.push(storeType);\n }\n\n return providers;\n}\n","import { distinctUntilModelKeyChange } from '@dereekb/rxjs';\nimport { DbxModelObjectStateService, ModelViewContext } from '@dereekb/dbx-web';\nimport { Directive, Input, NgZone, OnInit, inject } from '@angular/core';\nimport { AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { combineLatestWith, first, map, switchMap } from 'rxjs';\nimport { DbxFirebaseDocumentStoreDirective } from '../store/store.document.directive';\nimport { DbxFirebaseModelTypesService } from './model.types.service';\nimport { ModelKeyTypeNamePair } from '@dereekb/util';\n\n/**\n * Used with a DbxFirebaseDocumentStoreDirective to emit model viewed events.\n */\n@Directive({\n selector: '[dbxFirebaseModelViewedEvent]'\n})\nexport class DbxfirebaseModelViewedEventDirective extends AbstractSubscriptionDirective implements OnInit {\n readonly dbxFirebaseDocumentStoreDirective = inject(DbxFirebaseDocumentStoreDirective);\n readonly dbxModelObjectStateService = inject(DbxModelObjectStateService);\n readonly dbxFirebaseModelTypesService = inject(DbxFirebaseModelTypesService);\n readonly ngZone = inject(NgZone);\n\n @Input('dbxFirebaseModelViewedEvent')\n context?: ModelViewContext | undefined;\n\n ngOnInit(): void {\n this.sub = this.dbxFirebaseDocumentStoreDirective.data$\n .pipe(\n //\n distinctUntilModelKeyChange(),\n combineLatestWith(\n this.dbxFirebaseDocumentStoreDirective.modelIdentity$.pipe(\n switchMap((x) => this.dbxFirebaseModelTypesService.infoForType(x.modelType)),\n first()\n ),\n this.dbxFirebaseDocumentStoreDirective.key$\n ),\n map(([data, typeInfo, key]) => {\n const displayInfo = this.dbxFirebaseModelTypesService.getDisplayInfo(typeInfo, data);\n\n const pair: ModelKeyTypeNamePair = {\n key,\n type: typeInfo.modelType,\n name: displayInfo.title\n };\n\n return pair;\n })\n )\n .subscribe((modelKeyTypeNamePair) => {\n this.ngZone.run(() => this.dbxModelObjectStateService.emitModelViewEvent({ modelKeyTypeNamePair, context: this.context || undefined }));\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxListLayoutModule, DbxModelInfoModule } from '@dereekb/dbx-web';\nimport { DbxFirebaseModelTypeInstanceComponent, DbxFirebaseModelTypeInstanceViewComponent, DbxFirebaseModelTypeInstanceViewItemComponent } from './model.types.list.component';\nimport { DbxfirebaseModelViewedEventDirective } from './model.types.view.directive';\n\nconst declarations = [DbxfirebaseModelViewedEventDirective, DbxFirebaseModelTypeInstanceComponent, DbxFirebaseModelTypeInstanceViewComponent, DbxFirebaseModelTypeInstanceViewItemComponent];\n\n@NgModule({\n imports: [CommonModule, DbxModelInfoModule, DbxListLayoutModule],\n declarations,\n exports: declarations\n})\nexport class DbxFirebaseModelTypesModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxButtonModule, DbxListLayoutModule, DbxModelInfoModule, DbxPopoverInteractionModule, DbxRouterListModule } from '@dereekb/dbx-web';\nimport { DbxFirebaseModelHistoryComponent } from './model.history.component';\nimport { DbxFirebaseModelHistoryPopoverButtonComponent } from './model.history.popover.button.component';\nimport { DbxFirebaseModelHistoryPopoverComponent } from './model.history.popover.component';\nimport { DbxFirebaseModelTypesModule } from './model.types.module';\n\nconst declarations = [DbxFirebaseModelHistoryComponent, DbxFirebaseModelHistoryPopoverButtonComponent, DbxFirebaseModelHistoryPopoverComponent];\n\n@NgModule({\n imports: [CommonModule, DbxButtonModule, DbxRouterListModule, DbxPopoverInteractionModule, DbxModelInfoModule, DbxListLayoutModule, DbxFirebaseModelTypesModule],\n declarations,\n exports: declarations\n})\nexport class DbxFirebaseModelHistoryModule {}\n","import { FirestoreDocument, FirestoreModelIdentity } from '@dereekb/firebase';\nimport { SourceSelectLoadSource } from '@dereekb/dbx-form';\nimport { LoadingState, loadingStateFromObs, mapEachAsync } from '@dereekb/rxjs';\nimport { Observable } from 'rxjs';\nimport { GrantedRole } from '@dereekb/model';\nimport { MapFunction } from '@dereekb/util';\nimport { DbxFirebaseModelTypesServiceInstancePair } from './model.types.service';\nimport { DbxFirebaseModelTrackerHistoryFilter, DbxFirebaseModelTrackerService } from './model.tracker.service';\n\nexport interface DbxFirebaseSourceSelectLoadSourceConfig<M, D extends FirestoreDocument<any> = any, R extends GrantedRole = GrantedRole> extends Pick<DbxFirebaseModelTrackerHistoryFilter, 'filterItem'> {\n /**\n * Source label. Defaults to \"History\".\n */\n label?: string;\n /**\n * Type of model to pull from the history.\n */\n identity: FirestoreModelIdentity;\n /**\n * Maps a result instance to the target meta type\n */\n mapToMeta: MapFunction<DbxFirebaseModelTypesServiceInstancePair<D, R>, Observable<M>>;\n /**\n * Tracker service to load history values from.\n */\n dbxFirebaseModelTrackerService: DbxFirebaseModelTrackerService;\n}\n\n/**\n * Configures a SourceSelectLoadSource using the DbxFirebaseModelTrackerService to load models of a specific identity.\n *\n * @param config\n * @returns\n */\nexport function dbxFirebaseSourceSelectLoadSource<M>(config: DbxFirebaseSourceSelectLoadSourceConfig<M>): SourceSelectLoadSource<M> {\n const { label = 'History', identity, mapToMeta, filterItem, dbxFirebaseModelTrackerService } = config;\n const historyValuesObs = dbxFirebaseModelTrackerService.filterHistoryPairs({ identity, filterItem });\n const metaObs = historyValuesObs.pipe(mapEachAsync(mapToMeta));\n const meta: Observable<LoadingState<M[]>> = loadingStateFromObs(metaObs);\n\n return {\n label,\n meta\n };\n}\n","import { Directive, forwardRef, Input, OnDestroy, Provider, Type } from '@angular/core';\nimport { FirestoreDocument, FirestoreQueryConstraint } from '@dereekb/firebase';\nimport { Maybe, ArrayOrValue } from '@dereekb/util';\nimport { DbxFirebaseCollectionStore } from './store.collection';\nimport { BehaviorSubject, shareReplay, switchMap } from 'rxjs';\nimport { filterMaybe } from '@dereekb/rxjs';\n\n/**\n * Abstract directive that contains a DbxFirebaseCollectionStore and provides an interface for communicating with other directives.\n */\n@Directive()\nexport abstract class DbxFirebaseCollectionStoreDirective<T = unknown, D extends FirestoreDocument<T> = FirestoreDocument<T>, S extends DbxFirebaseCollectionStore<T, D> = DbxFirebaseCollectionStore<T, D>> implements OnDestroy {\n private readonly _store = new BehaviorSubject<Maybe<S>>(undefined);\n readonly store$ = this._store.pipe(filterMaybe(), shareReplay(1));\n\n readonly pageLoadingState$ = this.store$.pipe(switchMap((x) => x.pageLoadingState$));\n\n constructor(store: S) {\n this.replaceStore(store);\n }\n\n get store() {\n return this._store.value as S;\n }\n\n ngOnDestroy(): void {\n this._store.complete();\n }\n\n /**\n * Replaces the internal store.\n */\n replaceStore(store: S) {\n this._store.next(store);\n }\n\n // MARK: Inputs\n @Input()\n set maxPages(maxPages: Maybe<number>) {\n this.store.setMaxPages(maxPages);\n }\n\n @Input()\n set itemsPerPage(itemsPerPage: Maybe<number>) {\n this.store.setItemsPerPage(itemsPerPage);\n }\n\n @Input()\n set constraints(constraints: Maybe<ArrayOrValue<FirestoreQueryConstraint>>) {\n this.store.setConstraints(constraints);\n }\n\n next() {\n this.store.next();\n }\n\n restart() {\n this.store.restart();\n }\n\n setConstraints(constraints: Maybe<ArrayOrValue<FirestoreQueryConstraint>>) {\n this.store.setConstraints(constraints);\n }\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// The use of any here does not degrade the type-safety; we want to simply match that the Store type S is used in the Directive type C to provide it.\n\n/**\n * Configures providers for a DbxFirebaseCollectionStoreDirective.\n *\n * Can optionally also provide the actual store type to include in the providers array so it is instantiated by Angular.\n *\n * @param sourceType\n */\nexport function provideDbxFirebaseCollectionStoreDirective<S extends DbxFirebaseCollectionStoreDirective<any, any, any>>(sourceType: Type<S>): Provider[];\nexport function provideDbxFirebaseCollectionStoreDirective<S extends DbxFirebaseCollectionStore<any, any>, C extends DbxFirebaseCollectionStoreDirective<any, any, S> = DbxFirebaseCollectionStoreDirective<any, any, S>>(sourceType: Type<C>, storeType?: Type<S>): Provider[];\nexport function provideDbxFirebaseCollectionStoreDirective<S extends DbxFirebaseCollectionStore<any, any>, C extends DbxFirebaseCollectionStoreDirective<any, any, S> = DbxFirebaseCollectionStoreDirective<any, any, S>>(sourceType: Type<C>, storeType?: Type<S>): Provider[] {\n const providers: Provider[] = [\n {\n provide: DbxFirebaseCollectionStoreDirective,\n useExisting: forwardRef(() => sourceType)\n }\n ];\n\n if (storeType) {\n providers.push(storeType);\n }\n\n return providers;\n}\n","import { Directive, Input, OnDestroy, OnInit, inject } from '@angular/core';\nimport { FirestoreDocument } from '@dereekb/firebase';\nimport { Maybe } from '@dereekb/util';\nimport { DbxFirebaseCollectionStore } from './store.collection';\nimport { DbxFirebaseCollectionStoreDirective } from './store.collection.directive';\nimport { DbxFirebaseCollectionChangeWatcher, dbxFirebaseCollectionChangeWatcher, DbxFirebaseCollectionChangeWatcherEvent, DbxFirebaseCollectionChangeWatcherTriggerMode } from '../../loader/collection.change.watcher';\nimport { Observable } from 'rxjs';\nimport { dbxFirebaseCollectionChangeTriggerForWatcher } from '../../loader/collection.change.trigger';\n\n/**\n * Used to watch query doc changes and respond to them accordingly.\n */\n@Directive({\n selector: '[dbxFirebaseCollectionChange]'\n})\nexport class DbxFirebaseCollectionChangeDirective<T = unknown, D extends FirestoreDocument<T> = FirestoreDocument<T>, S extends DbxFirebaseCollectionStore<T, D> = DbxFirebaseCollectionStore<T, D>> implements DbxFirebaseCollectionChangeWatcher<S>, OnInit, OnDestroy {\n readonly dbxFirebaseCollectionStoreDirective = inject(DbxFirebaseCollectionStoreDirective<T, D, S>);\n\n private readonly _watcher = dbxFirebaseCollectionChangeWatcher(this.dbxFirebaseCollectionStoreDirective.store);\n private readonly _trigger = dbxFirebaseCollectionChangeTriggerForWatcher(this._watcher, () => this.restart());\n\n readonly mode$: Observable<DbxFirebaseCollectionChangeWatcherTriggerMode> = this._watcher.mode$;\n readonly event$: Observable<DbxFirebaseCollectionChangeWatcherEvent> = this._watcher.event$;\n readonly hasChangeAvailable$: Observable<boolean> = this._watcher.hasChangeAvailable$;\n readonly triggered$: Observable<boolean> = this._watcher.triggered$;\n readonly trigger$: Observable<void> = this._watcher.trigger$;\n\n get store() {\n return this._watcher.store;\n }\n\n ngOnInit(): void {\n this._trigger.init();\n }\n\n ngOnDestroy(): void {\n this._watcher.destroy();\n this._trigger.destroy();\n }\n\n @Input('dbxFirebaseCollectionChange')\n set mode(mode: Maybe<DbxFirebaseCollectionChangeWatcherTriggerMode | ''>) {\n this._watcher.setMode(mode || 'off');\n }\n\n restart() {\n this.dbxFirebaseCollectionStoreDirective.store.restart();\n }\n}\n","import { OnDestroy, Directive, Input, inject } from '@angular/core';\nimport { AbstractIfDirective } from '@dereekb/dbx-core';\nimport { shareReplay, BehaviorSubject, combineLatest, Observable, map } from 'rxjs';\nimport { DbxFirebaseCollectionChangeDirective } from './store.collection.change.directive';\nimport { IterationQueryDocChangeWatcherChangeType } from '@dereekb/firebase';\nimport { Maybe } from '@dereekb/util';\n\nexport type DbxFirebaseCollectionHasChangeDirectiveMode = 'all' | IterationQueryDocChangeWatcherChangeType;\n\n/**\n * Structural directive that displays the content when the target change is detected.\n *\n * Can specify which changes to appear on.\n */\n@Directive({\n selector: '[dbxFirebaseCollectionHasChange]'\n})\nexport class DbxFirebaseCollectionHasChangeDirective extends AbstractIfDirective implements OnDestroy {\n private _mode = new BehaviorSubject<DbxFirebaseCollectionHasChangeDirectiveMode>('addedAndRemoved');\n\n readonly directive = inject(DbxFirebaseCollectionChangeDirective);\n readonly show$: Observable<boolean> = combineLatest([this._mode, this.directive.event$]).pipe(\n map(([mode, event]) => {\n let show = false;\n\n if (event.type !== 'none') {\n switch (mode) {\n case 'all':\n show = true;\n break;\n case 'addedAndRemoved':\n show = event.type === 'addedAndRemoved' || event.type === 'added' || event.type === 'removed';\n break;\n default:\n show = event.type === mode;\n break;\n }\n }\n\n return show;\n }),\n shareReplay(1)\n );\n\n @Input('dbxFirebaseCollectionHasChange')\n get mode(): DbxFirebaseCollectionHasChangeDirectiveMode {\n return this._mode.value;\n }\n\n set mode(mode: Maybe<DbxFirebaseCollectionHasChangeDirectiveMode | ''>) {\n this._mode.next(mode || 'addedAndRemoved');\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._mode.complete();\n }\n}\n","import { AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { DbxListViewWrapper } from '@dereekb/dbx-web';\nimport { Directive, OnInit, inject } from '@angular/core';\nimport { DbxFirebaseCollectionStoreDirective } from './store.collection.directive';\n\n/**\n * Directive that connects a host DbxListView to a DbxFirebaseCollectionStoreDirective to pass data for rendering items from a collection and query parameters.\n */\n@Directive({\n selector: '[dbxFirebaseCollectionList]'\n})\nexport class DbxFirebaseCollectionListDirective<T> extends AbstractSubscriptionDirective implements OnInit {\n readonly dbxFirebaseCollectionStoreDirective = inject(DbxFirebaseCollectionStoreDirective<T>);\n readonly dbxListViewWrapper = inject(DbxListViewWrapper<T>, { host: true });\n\n constructor() {\n super();\n this.dbxListViewWrapper.state$ = this.dbxFirebaseCollectionStoreDirective.pageLoadingState$;\n }\n\n ngOnInit(): void {\n this.sub = this.dbxListViewWrapper.loadMore?.subscribe(() => {\n this.dbxFirebaseCollectionStoreDirective.next();\n });\n }\n}\n","import { Directive, OnInit, inject } from '@angular/core';\nimport { FirestoreDocument } from '@dereekb/firebase';\nimport { AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { DbxFirebaseAuthService } from '../../../auth/service/firebase.auth.service';\nimport { DbxFirebaseDocumentStoreDirective } from './store.document.directive';\n\n/**\n * Utility directive for a host DbxFirebaseDocumentStoreDirective that sets the document's ID to match the ID of the current user.\n *\n * This is useful for cases where each document is keyed by the user (I.E. implements UserRelatedById).\n */\n@Directive({\n selector: '[dbxFirebaseDocumentAuthId]'\n})\nexport class DbxFirebaseDocumentAuthIdDirective<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends AbstractSubscriptionDirective implements OnInit {\n readonly dbxFirebaseAuthService = inject(DbxFirebaseAuthService);\n readonly dbxFirebaseDocumentStoreDirective = inject(DbxFirebaseDocumentStoreDirective<T, D>, { host: true });\n\n ngOnInit(): void {\n this.sub = this.dbxFirebaseDocumentStoreDirective.store.setId(this.dbxFirebaseAuthService.userIdentifier$);\n }\n}\n","import { Observable, BehaviorSubject, map, shareReplay, of, switchMap } from 'rxjs';\nimport { DbxRouterService, DbxRouteParamDefaultRedirectInstance, DbxRouteParamReader, dbxRouteParamReaderInstance } from '@dereekb/dbx-core';\nimport { Destroyable, Initialized, Maybe, ModelKey } from '@dereekb/util';\nimport { MaybeObservableOrValueGetter, SwitchMapToDefaultFilterFunction } from '@dereekb/rxjs';\n\nexport const DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_ID_PARAM_KEY = 'id';\nexport const DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_KEY_PARAM_KEY = 'key';\nexport const DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_USE_PARAM_VALUE = '0';\n\n/**\n * Used to read an id with a specific key from the current route.\n *\n * Can be configured to redirect to a default route if a specific value is seen.\n */\nexport interface DbxFirebaseIdRouteParamRedirect extends DbxRouteParamReader<ModelKey> {\n /**\n * The id value as it is from the current state's params.\n */\n readonly idFromParams$: Observable<Maybe<ModelKey>>;\n /**\n * The id value as it is when considering the default value.\n */\n readonly id$: Observable<Maybe<ModelKey>>;\n setRedirectEnabled(redirect: Maybe<boolean>): void;\n setDecider(decider: string | SwitchMapToDefaultFilterFunction<ModelKey>): void;\n}\n\n/**\n * DbxFirebaseIdRouteParamRedirect instance\n */\nexport interface DbxFirebaseIdRouteParamRedirectInstance extends DbxFirebaseIdRouteParamRedirect, DbxRouteParamReader<ModelKey>, Initialized, Destroyable {\n readonly paramValue$: Observable<Maybe<string>>;\n readonly defaultValue$: Observable<Maybe<string>>;\n readonly value$: Observable<Maybe<string>>;\n\n readonly idFromParams$: Observable<Maybe<ModelKey>>;\n readonly id$: Observable<Maybe<ModelKey>>;\n\n setParamKey(paramKey: string): void;\n\n setDefaultValue(defaultValue: MaybeObservableOrValueGetter<string>): void;\n setRedirectEnabled(redirect: Maybe<boolean>): void;\n\n setDecider(decider: string | SwitchMapToDefaultFilterFunction<ModelKey>): void;\n setParamValue(value: MaybeObservableOrValueGetter<string>): void;\n}\n\nexport function dbxFirebaseKeyRouteParamRedirect(dbxRouterService: DbxRouterService, defaultParamKey: string = DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_KEY_PARAM_KEY): DbxFirebaseIdRouteParamRedirectInstance {\n return dbxFirebaseIdRouteParamRedirect(dbxRouterService, defaultParamKey);\n}\n\nexport function dbxFirebaseIdRouteParamRedirect(dbxRouterService: DbxRouterService, defaultParamKey: string = DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_ID_PARAM_KEY): DbxFirebaseIdRouteParamRedirectInstance {\n const _paramReader = dbxRouteParamReaderInstance<ModelKey>(dbxRouterService, defaultParamKey);\n const _paramRedirect = new DbxRouteParamDefaultRedirectInstance<ModelKey>(_paramReader);\n const _useDefaultParamDecider = new BehaviorSubject<string | SwitchMapToDefaultFilterFunction<ModelKey>>(DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_USE_PARAM_VALUE);\n\n const _useDefaultParam$: Observable<SwitchMapToDefaultFilterFunction<ModelKey>> = _useDefaultParamDecider.pipe(\n map((x) => {\n let result: SwitchMapToDefaultFilterFunction<ModelKey>;\n\n if (typeof x === 'string') {\n result = (value: Maybe<ModelKey>) => of(value === x);\n } else {\n result = x;\n }\n\n return result;\n }),\n shareReplay(1)\n );\n\n const setParamKey = (paramKey: Maybe<string>) => {\n _paramReader.setParamKey(paramKey || defaultParamKey);\n };\n\n const paramValue$ = _paramReader.paramValue$;\n const value$ = _paramReader.value$;\n\n const result: DbxFirebaseIdRouteParamRedirectInstance = {\n paramValue$,\n defaultValue$: _paramReader.defaultValue$,\n value$,\n idFromParams$: paramValue$,\n id$: value$,\n\n init(): void {\n _paramRedirect.setUseDefaultFilter((value: Maybe<string>) => {\n return _useDefaultParam$.pipe(switchMap((x) => x(value)));\n });\n\n _paramRedirect.init();\n },\n\n destroy(): void {\n _paramReader.destroy();\n _paramRedirect.destroy();\n _useDefaultParamDecider.complete();\n },\n\n getParamKey(): string {\n return _paramReader.getParamKey();\n },\n\n setParamKey,\n\n setDefaultValue(defaultValue: MaybeObservableOrValueGetter<string>): void {\n _paramReader.setDefaultValue(defaultValue);\n },\n\n setRedirectEnabled(redirect: Maybe<boolean>): void {\n _paramRedirect.enabled = redirect !== false;\n },\n\n setDecider(decider: string | SwitchMapToDefaultFilterFunction<ModelKey>): void {\n _useDefaultParamDecider.next(decider);\n },\n\n setParamValue(value: MaybeObservableOrValueGetter<string>): void {\n _paramReader.setParamValue(value);\n }\n };\n\n return result;\n}\n","import { Observable } from 'rxjs';\nimport { OnDestroy, Directive, Input, OnInit, inject } from '@angular/core';\nimport { DbxRouterService, AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { DbxFirebaseDocumentStoreDirective } from './store.document.directive';\nimport { Maybe, ModelKey } from '@dereekb/util';\nimport { MaybeObservableOrValueGetter, SwitchMapToDefaultFilterFunction } from '@dereekb/rxjs';\nimport { dbxFirebaseIdRouteParamRedirect } from '../../../router';\n\n/**\n * Used for synchronizing the document store id to the param of the route.\n */\n@Directive({\n selector: '[dbxFirebaseDocumentStoreRouteId]'\n})\nexport class DbxFirebaseDocumentStoreRouteIdDirective<T = unknown> extends AbstractSubscriptionDirective implements OnInit, OnDestroy {\n readonly dbxFirebaseDocumentStoreDirective = inject(DbxFirebaseDocumentStoreDirective<T>, { host: true });\n readonly dbxRouterService = inject(DbxRouterService);\n\n private readonly _redirectInstance = dbxFirebaseIdRouteParamRedirect(this.dbxRouterService);\n\n readonly idFromParams$: Observable<Maybe<ModelKey>> = this._redirectInstance.paramValue$;\n readonly id$: Observable<Maybe<ModelKey>> = this._redirectInstance.value$;\n\n ngOnInit(): void {\n this.sub = this.dbxFirebaseDocumentStoreDirective.store.setId(this.idFromParams$); // use from the params, as the params should get updated eventually to the id$ value\n this._redirectInstance.init();\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._redirectInstance.destroy();\n }\n\n // MARK: Input\n @Input('dbxFirebaseDocumentStoreRouteId')\n get idParam() {\n return this._redirectInstance.getParamKey();\n }\n\n set idParam(idParam: string) {\n this._redirectInstance.setParamKey(idParam);\n }\n\n @Input()\n set dbxFirebaseDocumentStoreRouteIdDefault(defaultValue: MaybeObservableOrValueGetter<ModelKey>) {\n this._redirectInstance.setDefaultValue(defaultValue);\n }\n\n /**\n * Whether or not to enable the redirection. Is enabled by default.\n */\n @Input()\n set dbxFirebaseDocumentStoreRouteIdDefaultRedirect(redirect: Maybe<boolean> | '') {\n this._redirectInstance.setRedirectEnabled(redirect !== false); // true by default\n }\n\n @Input()\n set dbxFirebaseDocumentStoreRouteIdDefaultDecision(decider: string | SwitchMapToDefaultFilterFunction<ModelKey>) {\n this._redirectInstance.setDecider(decider);\n }\n}\n","import { Observable } from 'rxjs';\nimport { OnDestroy, Directive, Input, OnInit, inject } from '@angular/core';\nimport { DbxRouterService, AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { DbxFirebaseDocumentStoreDirective } from './store.document.directive';\nimport { Maybe, ModelKey } from '@dereekb/util';\nimport { MaybeObservableOrValueGetter, SwitchMapToDefaultFilterFunction } from '@dereekb/rxjs';\nimport { dbxFirebaseKeyRouteParamRedirect } from '../../../router';\nimport { TwoWayFlatFirestoreModelKey } from '@dereekb/firebase';\n\n/**\n * Used for synchronizing the document store key to the param of the route. The param is interpreted as a TwoWayFlatFirestoreModelKey.\n */\n@Directive({\n selector: '[dbxFirebaseDocumentStoreRouteKey]'\n})\nexport class DbxFirebaseDocumentStoreRouteKeyDirective<T = unknown> extends AbstractSubscriptionDirective implements OnInit, OnDestroy {\n readonly dbxFirebaseDocumentStoreDirective = inject(DbxFirebaseDocumentStoreDirective<T>, { host: true });\n readonly dbxRouterService = inject(DbxRouterService);\n\n private readonly _redirectInstance = dbxFirebaseKeyRouteParamRedirect(this.dbxRouterService);\n\n readonly keyFromParams$: Observable<Maybe<ModelKey>> = this._redirectInstance.paramValue$;\n readonly key$: Observable<Maybe<TwoWayFlatFirestoreModelKey>> = this._redirectInstance.value$;\n\n ngOnInit(): void {\n this.sub = this.dbxFirebaseDocumentStoreDirective.store.setFlatKey(this.keyFromParams$); // use from the params, as the params should get updated eventually to the key$ value\n this._redirectInstance.init();\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._redirectInstance.destroy();\n }\n\n // MARK: Input\n @Input('dbxFirebaseDocumentStoreRouteKey')\n get keyParam() {\n return this._redirectInstance.getParamKey();\n }\n\n set keyParam(idParam: string) {\n this._redirectInstance.setParamKey(idParam);\n }\n\n @Input()\n set dbxFirebaseDocumentStoreRouteKeyDefault(defaultValue: MaybeObservableOrValueGetter<ModelKey>) {\n this._redirectInstance.setDefaultValue(defaultValue);\n }\n\n /**\n * Whether or not to enable the redirection. Is enabled by default.\n */\n @Input()\n set dbxFirebaseDocumentStoreRouteKeyDefaultRedirect(redirect: Maybe<boolean> | '') {\n this._redirectInstance.setRedirectEnabled(redirect !== false); // true by default\n }\n\n @Input()\n set dbxFirebaseDocumentStoreRouteKeyDefaultDecision(decider: string | SwitchMapToDefaultFilterFunction<ModelKey>) {\n this._redirectInstance.setDecider(decider);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DbxFirebaseCollectionChangeDirective } from './store.collection.change.directive';\nimport { DbxFirebaseCollectionHasChangeDirective } from './store.collection.change.if.directive';\nimport { DbxFirebaseCollectionListDirective } from './store.collection.list.directive';\nimport { DbxFirebaseDocumentAuthIdDirective } from './store.document.auth.directive';\nimport { DbxFirebaseDocumentStoreRouteIdDirective } from './store.document.router.directive';\nimport { DbxFirebaseDocumentStoreRouteKeyDirective } from './store.document.router.key.directive';\n\nconst declarations = [DbxFirebaseDocumentStoreRouteKeyDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseDocumentStoreRouteIdDirective, DbxFirebaseDocumentAuthIdDirective];\n\n@NgModule({\n imports: [],\n declarations,\n exports: declarations\n})\nexport class DbxFirebaseModelStoreModule {}\n","import { Injectable } from '@angular/core';\nimport { Observable, shareReplay, distinctUntilChanged, Subscription, exhaustMap, first, map, switchMap, tap } from 'rxjs';\nimport { FirebaseQueryItemAccumulator, FirestoreCollectionLike, FirestoreDocument, FirestoreItemPageIterationInstance, FirestoreQueryConstraint, IterationQueryDocChangeWatcher, DocumentDataWithIdAndKey, DocumentReference, FirebaseQuerySnapshotAccumulator, FirebaseQueryItemAccumulatorNextPageUntilResultsCountFunction } from '@dereekb/firebase';\nimport { ObservableOrValue, cleanupDestroyable, PageListLoadingState, filterMaybe, ItemAccumulatorNextPageUntilResultsCountResult } from '@dereekb/rxjs';\nimport { ArrayOrValue, Maybe, PageNumber } from '@dereekb/util';\nimport { LockSetComponentStore } from '@dereekb/dbx-core';\nimport { DbxFirebaseCollectionLoaderInstance, dbxFirebaseCollectionLoaderInstance, DbxFirebaseCollectionLoaderInstanceData } from '../../loader/collection.loader.instance';\nimport { DbxFirebaseCollectionLoaderAccessorWithAccumulator } from '../../loader/collection.loader';\n\nexport interface DbxFirebaseCollectionStore<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends DbxFirebaseCollectionLoaderAccessorWithAccumulator<T>, DbxFirebaseCollectionLoaderInstanceData<T, D> {\n readonly firestoreCollection$: Observable<Maybe<FirestoreCollectionLike<T, D>>>;\n readonly loader$: Observable<DbxFirebaseCollectionLoaderInstance<T, D>>;\n\n readonly hasDocuments$: Observable<boolean>;\n /**\n * Returns all document references loaded by the accumulator.\n */\n readonly allDocumentRefs$: Observable<DocumentReference<T>[]>;\n /**\n * Returns all documents loaded by the accomulator.\n */\n readonly allDocuments$: Observable<D[]>;\n /**\n * Returns all documents data loaded by the accumulator.\n */\n readonly allDocumentData$: Observable<DocumentDataWithIdAndKey<T>[]>;\n\n setMaxPages(observableOrValue: ObservableOrValue<Maybe<number>>): Subscription;\n setItemsPerPage(observableOrValue: ObservableOrValue<Maybe<number>>): Subscription;\n setConstraints(observableOrValue: ObservableOrValue<Maybe<ArrayOrValue<FirestoreQueryConstraint>>>): Subscription;\n next(observableOrValue: ObservableOrValue<void>): void;\n restart(observableOrValue: ObservableOrValue<void>): void;\n\n readonly setFirestoreCollection: (() => void) | ((observableOrValue: ObservableOrValue<Maybe<FirestoreCollectionLike<T, D>>>) => Subscription);\n}\n\nexport interface DbxFirebaseCollectionStoreContextState<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {\n readonly firestoreCollection?: Maybe<FirestoreCollectionLike<T, D>>;\n readonly maxPages?: Maybe<number>;\n readonly itemsPerPage?: Maybe<number>;\n readonly constraints?: Maybe<ArrayOrValue<FirestoreQueryConstraint>>;\n}\n\n@Injectable()\nexport class AbstractDbxFirebaseCollectionStore<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, C extends DbxFirebaseCollectionStoreContextState<T, D> = DbxFirebaseCollectionStoreContextState<T, D>> extends LockSetComponentStore<C> implements DbxFirebaseCollectionStore<T, D> {\n // MARK: Effects\n readonly setMaxPages = this.effect((input: Observable<Maybe<number>>) => {\n return input.pipe(switchMap((maxPages) => this.loader$.pipe(tap((x) => (x.maxPages = maxPages)))));\n });\n\n readonly setItemsPerPage = this.effect((input: Observable<Maybe<number>>) => {\n return input.pipe(switchMap((itemsPerPage) => this.loader$.pipe(tap((x) => (x.itemsPerPage = itemsPerPage)))));\n });\n\n readonly setConstraints = this.effect((input: Observable<Maybe<ArrayOrValue<FirestoreQueryConstraint>>>) => {\n return input.pipe(switchMap((constraints) => this.loader$.pipe(tap((x) => x.setConstraints(constraints)))));\n });\n\n readonly next = this.effect((input: Observable<void>) => {\n return input.pipe(\n exhaustMap(() =>\n this.loader$.pipe(\n first(),\n tap((x) => x.next())\n )\n )\n );\n });\n\n readonly restart = this.effect((input: Observable<void>) => {\n return input.pipe(\n exhaustMap(() =>\n this.loader$.pipe(\n first(),\n tap((x) => x.restart())\n )\n )\n );\n });\n\n // MARK: Accessors\n readonly currentFirestoreCollection$: Observable<Maybe<FirestoreCollectionLike<T, D>>> = this.state$.pipe(\n map((x) => x.firestoreCollection),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly firestoreCollection$: Observable<FirestoreCollectionLike<T, D>> = this.currentFirestoreCollection$.pipe(filterMaybe());\n\n readonly loader$: Observable<DbxFirebaseCollectionLoaderInstance<T, D>> = this.currentFirestoreCollection$.pipe(\n switchMap((collection) =>\n this.state$.pipe(\n first(),\n map((x) =>\n dbxFirebaseCollectionLoaderInstance({\n collection,\n maxPages: x.maxPages,\n itemsPerPage: x.itemsPerPage,\n constraints: x.constraints\n })\n )\n )\n ),\n cleanupDestroyable(),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly constraints$: Observable<Maybe<ArrayOrValue<FirestoreQueryConstraint>>> = this.loader$.pipe(switchMap((x) => x.constraints$));\n readonly firestoreIteration$: Observable<FirestoreItemPageIterationInstance<T>> = this.loader$.pipe(switchMap((x) => x.firestoreIteration$));\n readonly queryChangeWatcher$: Observable<IterationQueryDocChangeWatcher<T>> = this.loader$.pipe(switchMap((x) => x.queryChangeWatcher$));\n readonly pageLoadingState$: Observable<PageListLoadingState<DocumentDataWithIdAndKey<T>>> = this.loader$.pipe(switchMap((x) => x.pageLoadingState$));\n readonly snapshotAccumulator$: Observable<FirebaseQuerySnapshotAccumulator<T>> = this.loader$.pipe(switchMap((x) => x.snapshotAccumulator$));\n readonly accumulator$: Observable<FirebaseQueryItemAccumulator<T>> = this.loader$.pipe(switchMap((x) => x.accumulator$));\n\n readonly hasDocuments$: Observable<boolean> = this.loader$.pipe(switchMap((x) => x.hasDocuments$));\n readonly allDocumentRefs$: Observable<DocumentReference<T>[]> = this.loader$.pipe(switchMap((x) => x.allDocumentRefs$));\n readonly allDocuments$: Observable<D[]> = this.loader$.pipe(switchMap((x) => x.allDocuments$));\n readonly allDocumentData$: Observable<DocumentDataWithIdAndKey<T>[]> = this.loader$.pipe(switchMap((x) => x.allDocumentData$));\n\n readonly setFirestoreCollection = this.updater((state, firestoreCollection: FirestoreCollectionLike<T, D> | null | undefined) => ({ ...state, firestoreCollection }));\n\n loadToPage(page: PageNumber): Observable<PageNumber> {\n return this.loader$.pipe(switchMap((x) => x.loadToPage(page)));\n }\n\n loadPagesUntilResultsCount(maxResultsCount: number, countFunction?: FirebaseQueryItemAccumulatorNextPageUntilResultsCountFunction<T> | undefined): Observable<ItemAccumulatorNextPageUntilResultsCountResult> {\n return this.loader$.pipe(switchMap((x) => x.loadPagesUntilResultsCount(maxResultsCount, countFunction)));\n }\n\n loadAllResults(): Observable<PageNumber> {\n return this.loader$.pipe(switchMap((x) => x.loadAllResults()));\n }\n}\n","import { readableError } from '@dereekb/util';\n\nexport const DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR = 'DOES_NOT_EXIST';\n\nexport function modelDoesNotExistError() {\n return readableError(DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR, 'The document does not exist.');\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { Observable, shareReplay, distinctUntilChanged, map, switchMap, combineLatest, Subscription, of } from 'rxjs';\nimport {\n DocumentSnapshot,\n DocumentReference,\n FirestoreCollection,\n FirestoreDocument,\n DocumentDataWithIdAndKey,\n FirestoreModelId,\n FirestoreModelKey,\n FirestoreCollectionLike,\n FirestoreModelIdentity,\n firestoreModelIdsFromKey,\n firestoreModelKeyPartPairs,\n FirestoreModelCollectionAndIdPair,\n firestoreModelKeyPairObject,\n FirestoreModelCollectionAndIdPairObject,\n documentDataWithIdAndKey,\n FirestoreAccessorStreamMode,\n TwoWayFlatFirestoreModelKey,\n inferKeyFromTwoWayFlatFirestoreModelKey,\n RootSingleItemFirestoreCollection,\n FlatFirestoreModelKey,\n flatFirestoreModelKey,\n twoWayFlatFirestoreModelKey\n} from '@dereekb/firebase';\nimport { filterMaybe, LoadingState, beginLoading, successResult, loadingStateFromObs, errorResult, ObservableOrValue, isLoadingStateLoading } from '@dereekb/rxjs';\nimport { Maybe, isMaybeSo } from '@dereekb/util';\nimport { LockSetComponent, LockSetComponentStore } from '@dereekb/dbx-core';\nimport { modelDoesNotExistError } from '../../error';\n\nexport interface DbxFirebaseDocumentStore<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends LockSetComponent {\n readonly firestoreCollectionLike$: Observable<FirestoreCollectionLike<T, D>>;\n readonly firestoreCollection$: Observable<FirestoreCollection<T, D>>;\n\n readonly currentInputId$: Observable<Maybe<FirestoreModelId>>;\n readonly inputId$: Observable<FirestoreModelId>;\n readonly currentInputKey$: Observable<Maybe<FirestoreModelKey>>;\n readonly inputKey$: Observable<FirestoreModelKey>;\n readonly currentInputRef$: Observable<Maybe<DocumentReference<T>>>;\n readonly inputRef$: Observable<DocumentReference<T>>;\n\n readonly streamMode$: Observable<FirestoreAccessorStreamMode>;\n\n readonly currentDocument$: Observable<Maybe<D>>;\n readonly document$: Observable<D>;\n readonly id$: Observable<FirestoreModelId>;\n readonly key$: Observable<FirestoreModelKey>;\n readonly ref$: Observable<DocumentReference<T>>;\n readonly hasRef$: Observable<boolean>;\n readonly flatKey$: Observable<FlatFirestoreModelKey>;\n readonly twoWayFlatKey$: Observable<TwoWayFlatFirestoreModelKey>;\n\n readonly keyModelIds$: Observable<FirestoreModelId[]>;\n readonly keyPairs$: Observable<FirestoreModelCollectionAndIdPair[]>;\n readonly keyPairObject$: Observable<FirestoreModelCollectionAndIdPairObject>;\n\n readonly documentLoadingState$: Observable<LoadingState<D>>;\n readonly snapshot$: Observable<DocumentSnapshot<T>>;\n readonly snapshotLoadingState$: Observable<LoadingState<DocumentSnapshot<T>>>;\n readonly currentData$: Observable<Maybe<DocumentDataWithIdAndKey<T>>>;\n readonly data$: Observable<DocumentDataWithIdAndKey<T>>;\n readonly dataLoadingState$: Observable<LoadingState<DocumentDataWithIdAndKey<T>>>;\n readonly isLoadingData$: Observable<boolean>;\n readonly currentExists$: Observable<boolean>;\n readonly exists$: Observable<boolean>;\n readonly modelIdentity$: Observable<FirestoreModelIdentity>;\n\n /**\n * Sets the id of the document to load.\n */\n readonly setId: (observableOrValue: ObservableOrValue<Maybe<FirestoreModelId>>) => Subscription;\n\n /**\n * Sets the key of the document to load.\n */\n readonly setKey: (observableOrValue: ObservableOrValue<Maybe<FirestoreModelKey>>) => Subscription;\n\n /**\n * Sets the key of the document to load using a TwoWayFlatFirestoreModelKey.\n */\n readonly setFlatKey: (observableOrValue: ObservableOrValue<Maybe<TwoWayFlatFirestoreModelKey>>) => Subscription;\n\n /**\n * Sets the ref of the document to load.\n */\n readonly setRef: (observableOrValue: ObservableOrValue<Maybe<DocumentReference<T>>>) => Subscription;\n\n /**\n * Clears the key/id/ref and current document from the store.\n */\n readonly clearRefs: () => void;\n\n /**\n * Sets the stream mode.\n */\n readonly setStreamMode: (observableOrValue: ObservableOrValue<FirestoreAccessorStreamMode>) => Subscription;\n\n /**\n * Sets the FirestoreCollection to retrieve documents from.\n */\n readonly setFirestoreCollection: (() => void) | ((observableOrValue: ObservableOrValue<Maybe<FirestoreCollection<T, D>>>) => Subscription);\n\n /**\n * Sets the FirestoreCollectionLike to retrieve documents from.\n */\n readonly setFirestoreCollectionLike: (() => void) | ((observableOrValue: ObservableOrValue<Maybe<FirestoreCollectionLike<T, D>>>) => Subscription);\n}\n\nexport interface DbxFirebaseDocumentStoreContextState<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {\n readonly firestoreCollectionLike?: Maybe<FirestoreCollectionLike<T, D>>;\n readonly firestoreCollection?: Maybe<FirestoreCollection<T, D>>;\n readonly streamMode?: FirestoreAccessorStreamMode;\n readonly id?: Maybe<FirestoreModelId>;\n readonly key?: Maybe<FirestoreModelKey>;\n readonly ref?: Maybe<DocumentReference<T>>;\n}\n\n@Injectable()\nexport class AbstractDbxFirebaseDocumentStore<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, C extends DbxFirebaseDocumentStoreContextState<T, D> = DbxFirebaseDocumentStoreContextState<T, D>> extends LockSetComponentStore<C> implements DbxFirebaseDocumentStore<T, D> {\n // MARK: Effects\n\n // MARK: Accessors\n readonly currentFirestoreCollectionLike$: Observable<Maybe<FirestoreCollectionLike<T, D>>> = this.state$.pipe(\n map((x) => x.firestoreCollection ?? x.firestoreCollectionLike),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly currentFirestoreCollection$: Observable<Maybe<FirestoreCollection<T, D>>> = this.state$.pipe(\n map((x) => x.firestoreCollection),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly firestoreCollectionLike$: Observable<FirestoreCollectionLike<T, D>> = this.currentFirestoreCollectionLike$.pipe(filterMaybe());\n readonly firestoreCollection$: Observable<FirestoreCollection<T, D>> = this.currentFirestoreCollection$.pipe(filterMaybe());\n\n readonly currentInputId$: Observable<Maybe<FirestoreModelId>> = this.state$.pipe(\n map((x) => x.id),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly inputId$: Observable<FirestoreModelId> = this.currentInputId$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));\n\n readonly currentInputKey$: Observable<Maybe<FirestoreModelKey>> = this.state$.pipe(\n map((x) => x.key),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly inputKey$: Observable<FirestoreModelKey> = this.currentInputKey$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));\n\n readonly currentInputRef$: Observable<Maybe<DocumentReference<T>>> = this.state$.pipe(\n map((x) => x.ref),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly inputRef$: Observable<DocumentReference<T>> = this.currentInputRef$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));\n\n readonly streamMode$: Observable<FirestoreAccessorStreamMode> = this.state$.pipe(\n map((x) => x.streamMode ?? FirestoreAccessorStreamMode.STREAM),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly currentDocument$: Observable<Maybe<D>> = combineLatest([this.currentInputId$, this.currentInputKey$, this.currentInputRef$]).pipe(\n switchMap(([id, key, ref]) => {\n let document: Observable<Maybe<D>>;\n\n if (ref) {\n document = this.firestoreCollectionLike$.pipe(map((x) => x.documentAccessor().loadDocument(ref)));\n } else if (key) {\n document = this.firestoreCollectionLike$.pipe(map((x) => x.documentAccessor().loadDocumentForKey(key)));\n } else if (id) {\n document = this.firestoreCollection$.pipe(map((x) => x.documentAccessor().loadDocumentForId(id)));\n } else {\n document = of(undefined);\n }\n\n return document;\n }),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n /**\n * Whether or not an id/ref/key has been input and currentDocument is not null.\n */\n readonly hasRef$: Observable<boolean> = this.currentDocument$.pipe(\n map((x) => x?.documentRef != null),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly document$: Observable<D> = this.currentDocument$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));\n\n readonly documentLoadingState$: Observable<LoadingState<D>> = this.currentDocument$.pipe(\n map((x) => (x ? successResult(x) : beginLoading<D>())),\n shareReplay(1)\n );\n\n readonly id$: Observable<FirestoreModelId> = this.document$.pipe(\n map((x) => x.id),\n shareReplay(1)\n );\n\n readonly key$: Observable<FirestoreModelKey> = this.document$.pipe(\n map((x) => x.key),\n shareReplay(1)\n );\n\n readonly keyModelIds$: Observable<FirestoreModelId[]> = this.key$.pipe(map(firestoreModelIdsFromKey), shareReplay(1));\n readonly keyPairs$: Observable<FirestoreModelCollectionAndIdPair[]> = this.key$.pipe(map(firestoreModelKeyPartPairs), filterMaybe(), shareReplay(1));\n readonly keyPairObject$: Observable<FirestoreModelCollectionAndIdPairObject> = this.key$.pipe(map(firestoreModelKeyPairObject), filterMaybe(), shareReplay(1));\n\n readonly ref$: Observable<DocumentReference<T>> = this.document$.pipe(\n map((x) => x.documentRef),\n shareReplay(1)\n );\n\n readonly flatKey$: Observable<FlatFirestoreModelKey> = this.key$.pipe(\n map((x) => flatFirestoreModelKey(x)),\n shareReplay(1)\n );\n\n readonly twoWayFlatKey$: Observable<FlatFirestoreModelKey> = this.key$.pipe(\n map((x) => twoWayFlatFirestoreModelKey(x)),\n shareReplay(1)\n );\n\n readonly snapshot$: Observable<DocumentSnapshot<T>> = combineLatest([this.document$, this.streamMode$]).pipe(\n switchMap(([x, mode]) => x.snapshotStream(mode)),\n shareReplay(1)\n );\n\n readonly snapshotLoadingState$: Observable<LoadingState<DocumentSnapshot<T>>> = this.currentDocument$.pipe(\n switchMap(() => loadingStateFromObs(this.snapshot$)),\n shareReplay(1)\n );\n\n readonly currentData$: Observable<Maybe<DocumentDataWithIdAndKey<T>>> = this.snapshot$.pipe(\n map((x) => documentDataWithIdAndKey(x)),\n shareReplay(1)\n );\n\n readonly data$: Observable<DocumentDataWithIdAndKey<T>> = this.currentDocument$.pipe(\n switchMap(() => this.currentData$.pipe(filterMaybe())),\n shareReplay(1)\n );\n\n readonly dataLoadingState$: Observable<LoadingState<DocumentDataWithIdAndKey<T>>> = this.snapshotLoadingState$.pipe(\n map((x) => {\n let result: LoadingState<DocumentDataWithIdAndKey<T>>;\n\n if (x.value) {\n const data = documentDataWithIdAndKey(x.value);\n\n if (data) {\n result = successResult(data);\n } else {\n result = errorResult(modelDoesNotExistError());\n }\n } else {\n result = {\n ...x,\n value: undefined\n };\n }\n\n return result;\n }),\n shareReplay(1)\n );\n\n readonly isLoadingData$ = this.dataLoadingState$.pipe(map(isLoadingStateLoading), distinctUntilChanged(), shareReplay(1));\n\n /**\n * Returns false while hasRef$ is false, and then returns exists$.\n */\n readonly currentExists$: Observable<boolean> = this.hasRef$.pipe(\n switchMap((hasRef) => {\n if (hasRef) {\n return this.exists$;\n } else {\n return of(false);\n }\n }),\n shareReplay(1)\n );\n\n readonly exists$: Observable<boolean> = this.currentData$.pipe(\n map((x) => isMaybeSo(x)),\n shareReplay(1)\n );\n\n readonly doesNotExist$: Observable<boolean> = this.exists$.pipe(\n map((x) => !x),\n shareReplay(1)\n );\n\n readonly modelIdentity$: Observable<FirestoreModelIdentity> = this.document$.pipe(\n map((x) => x.modelIdentity),\n shareReplay(1)\n );\n\n // MARK: State Changes\n readonly setId = this.updater((state, id: Maybe<FirestoreModelId>) => (id ? { ...state, id, key: undefined, ref: undefined } : { ...state, id })) as (observableOrValue: Maybe<string> | Observable<Maybe<string>>) => Subscription;\n readonly setKey = this.updater((state, key: Maybe<FirestoreModelKey>) => (key ? { ...state, key, id: undefined, ref: undefined } : { ...state, key })) as (observableOrValue: Maybe<string> | Observable<Maybe<string>>) => Subscription;\n readonly setFlatKey = this.updater((state, key: Maybe<TwoWayFlatFirestoreModelKey>) => (key ? { ...state, key: inferKeyFromTwoWayFlatFirestoreModelKey(key), id: undefined, ref: undefined } : { ...state, key })) as (observableOrValue: Maybe<string> | Observable<Maybe<string>>) => Subscription;\n readonly setRef = this.updater((state, ref: Maybe<DocumentReference<T>>) => (ref ? { ...state, key: undefined, id: undefined, ref } : { ...state, ref })) as (observableOrValue: Maybe<DocumentReference<T>> | Observable<Maybe<DocumentReference<T>>>) => Subscription;\n\n readonly setStreamMode = this.updater((state, streamMode: FirestoreAccessorStreamMode) => ({ ...state, streamMode }));\n\n readonly clearRefs = this.updater((state) => ({ ...state, id: undefined, key: undefined, ref: undefined }));\n\n readonly setFirestoreCollection = this.updater((state, firestoreCollection: Maybe<FirestoreCollection<T, D>>) => ({ ...state, firestoreCollection }));\n readonly setFirestoreCollectionLike = this.updater((state, firestoreCollectionLike: Maybe<FirestoreCollectionLike<T, D>>) => ({ ...state, firestoreCollectionLike }));\n}\n\nfunction injectSingleItemIdIntoState<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, C extends DbxFirebaseDocumentStoreContextState<T, D> = DbxFirebaseDocumentStoreContextState<T, D>>(state?: C | undefined): C | undefined {\n const id = (state?.firestoreCollection as RootSingleItemFirestoreCollection<T, D>)?.singleItemIdentifier;\n\n if (state && id != null) {\n return { ...state, id };\n } else {\n return state;\n }\n}\n\n/**\n * AbstractDbxFirebaseDocumentWithParentStore extension for use with RootSingleItemFirestoreCollection.\n */\nexport class AbstractRootSingleItemDbxFirebaseDocument<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, C extends DbxFirebaseDocumentStoreContextState<T, D> = DbxFirebaseDocumentStoreContextState<T, D>> extends AbstractDbxFirebaseDocumentStore<T, D, C> {\n protected constructor(@Inject(null) @Optional() initialState?: C) {\n super(injectSingleItemIdIntoState<T, D, C>(initialState));\n }\n\n /**\n * Sets the SingleItemFirestoreCollection to use.\n */\n override readonly setFirestoreCollection = this.updater((state, firestoreCollection: Maybe<FirestoreCollection<T, D>>) => {\n if (firestoreCollection != null) {\n const id = (firestoreCollection as RootSingleItemFirestoreCollection<T, D>).singleItemIdentifier;\n\n if (id != null) {\n return { ...state, firestoreCollection, id };\n } else {\n throw new Error('AbstractRootSingleItemDbxFirebaseDocument only accepts RootSingleItemFirestoreCollection values with a singleItemIdentifier set for setFirestoreCollection.');\n }\n } else {\n return { ...state, firestoreCollection: null };\n }\n });\n\n /**\n * Does nothing on a AbstractRootSingleItemDbxFirebaseDocument.\n *\n * Ref is set with the FirestoreCollection\n */\n override readonly setId = this.updater((state, id: Maybe<FirestoreModelId>) => state) as (observableOrValue: Maybe<string> | Observable<Maybe<string>>) => Subscription;\n\n /**\n * Does nothing on a AbstractRootSingleItemDbxFirebaseDocument.\n *\n * Ref is set with the FirestoreCollection\n */\n override readonly setKey = this.updater((state, key: Maybe<FirestoreModelKey>) => state) as (observableOrValue: Maybe<string> | Observable<Maybe<string>>) => Subscription;\n\n /**\n * Does nothing on a AbstractRootSingleItemDbxFirebaseDocument.\n *\n * Ref is set with the FirestoreCollection\n */\n override readonly setRef = this.updater((state, ref: Maybe<DocumentReference<T>>) => state) as (observableOrValue: Maybe<DocumentReference<T>> | Observable<Maybe<DocumentReference<T>>>) => Subscription;\n\n override readonly clearRefs = this.updater((state) => state);\n}\n","import { ModelFirebaseCreateFunction, ModelFirebaseDeleteFunction, ModelFirebaseUpdateFunction, OnCallCreateModelResult, TargetModelParams, InferredTargetModelParams, ModelFirebaseCrudFunction, ModelFirebaseReadFunction } from '@dereekb/firebase';\nimport { lazyFrom, LoadingState, loadingStateFromObs } from '@dereekb/rxjs';\nimport { firstValue, PartialOnKeys } from '@dereekb/util';\nimport { shareReplay, exhaustMap, first, from, Observable } from 'rxjs';\nimport { DbxFirebaseDocumentStore } from './store.document';\n\n// MARK: Create\nexport type DbxFirebaseDocumentStoreCreateFunction<I, O extends OnCallCreateModelResult = OnCallCreateModelResult> = (params: I) => Observable<LoadingState<O>>;\n\n/**\n * Creates a function for a store that DbxFirebaseDocumentStore captures the ModelFirebaseCreateFunction result and sets the key of the created value.\n *\n * @param store\n * @param fn\n * @returns\n */\nexport function firebaseDocumentStoreCreateFunction<I, O extends OnCallCreateModelResult = OnCallCreateModelResult>(store: DbxFirebaseDocumentStore<any, any>, fn: ModelFirebaseCreateFunction<I, O>): DbxFirebaseDocumentStoreCreateFunction<I, O> {\n return (params: I) =>\n loadingStateFromObs(\n lazyFrom(() =>\n fn(params).then((result) => {\n const modelKeys = result.modelKeys;\n const firstKey = firstValue(modelKeys);\n\n if (firstKey) {\n store.setKey(firstKey);\n }\n\n return result;\n })\n )\n );\n}\n\nexport type DbxFirebaseDocumentStoreCrudFunction<I, O = void> = (input: I) => Observable<LoadingState<O>>;\n\n/**\n * Creates a DbxfirebaseDocumentStoreCrudFunction from the input ModelFirebaseCrudFunction.\n *\n * @param fn\n * @returns\n */\nexport function firebaseDocumentStoreCrudFunction<I, O = void>(fn: ModelFirebaseCrudFunction<I, O>): DbxFirebaseDocumentStoreCrudFunction<I, O> {\n return (params: I) => loadingStateFromObs(from(fn(params)).pipe(shareReplay(1)));\n}\n\n// MARK: Targeted Functions\n/**\n * A parameter that refers to a specific key.\n */\nexport type DbxFirebaseDocumentStoreFunctionParams = TargetModelParams | InferredTargetModelParams;\n\n/**\n * Used for the input to related functions\n */\nexport type DbxFirebaseDocumentStoreFunctionParamsInput<I extends DbxFirebaseDocumentStoreFunctionParams> = PartialOnKeys<I, 'key'>;\nexport type DbxFirebaseDocumentStoreFunction<I extends DbxFirebaseDocumentStoreFunctionParams, O = void> = DbxFirebaseDocumentStoreCrudFunction<DbxFirebaseDocumentStoreFunctionParamsInput<I>, O>;\n\n// MARK: Read\n/**\n * Creates a DbxfirebaseDocumentStoreCrudFunction for read.\n *\n * The store's current key is always injected into the params of the request.\n *\n * For functions that do not require the store's current key, use firebaseDocumentStoreCrudFunction() instead.\n *\n * @param store\n * @param fn\n * @returns\n */\nexport function firebaseDocumentStoreReadFunction<I extends DbxFirebaseDocumentStoreFunctionParams, O>(store: DbxFirebaseDocumentStore<any, any>, fn: ModelFirebaseReadFunction<I, O>): DbxFirebaseDocumentStoreFunction<I, O> {\n return firebaseDocumentStoreUpdateFunction(store, fn);\n}\n\n// MARK: Update\n/**\n * Creates a DbxFirebaseDocumentStoreFunction for update.\n *\n * The store's current key is always injected into the params of the request.\n *\n * @param store\n * @param fn\n * @returns\n */\nexport function firebaseDocumentStoreUpdateFunction<I extends DbxFirebaseDocumentStoreFunctionParams, O = void>(store: DbxFirebaseDocumentStore<any, any>, fn: ModelFirebaseUpdateFunction<I, O>): DbxFirebaseDocumentStoreFunction<I, O> {\n return (params: DbxFirebaseDocumentStoreFunctionParamsInput<I>) =>\n loadingStateFromObs(\n store.key$.pipe(\n first(),\n exhaustMap((key) =>\n fn({\n ...params,\n key // inject key into the parameters.\n } as I)\n ),\n shareReplay(1)\n )\n );\n}\n\n// MARK: Delete\n/**\n * Creates a DbxFirebaseDocumentStoreFunction for delete.\n *\n * The store's current key is always injected into the params of the request.\n *\n * @param store\n * @param fn\n * @returns\n */\nexport function firebaseDocumentStoreDeleteFunction<I extends DbxFirebaseDocumentStoreFunctionParams, O = void>(store: DbxFirebaseDocumentStore<any, any>, fn: ModelFirebaseDeleteFunction<I, O>): DbxFirebaseDocumentStoreFunction<I, O> {\n return (params: DbxFirebaseDocumentStoreFunctionParamsInput<I>) =>\n loadingStateFromObs(\n store.key$.pipe(\n first(),\n exhaustMap((key) =>\n fn({\n ...params,\n key // inject key into the parameters.\n } as I).then((result) => {\n store.clearRefs();\n return result;\n })\n ),\n shareReplay(1)\n )\n );\n}\n","import { LockSetComponentStore } from '@dereekb/dbx-core';\nimport { FirestoreCollectionLike, FirestoreCollectionWithParentFactory, FirestoreDocument } from '@dereekb/firebase';\nimport { cleanup, ObservableOrValue } from '@dereekb/rxjs';\nimport { Maybe } from '@dereekb/util';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { map, Observable, Subscription } from 'rxjs';\nimport { DbxFirebaseDocumentStore } from './store.document';\n\nexport interface DbxFirebaseComponentStoreWithParentContextState<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> {\n readonly parent?: Maybe<PD>;\n readonly collectionFactory?: Maybe<FirestoreCollectionWithParentFactory<T, PT, D, PD>>;\n}\n\nexport type DbxFirebaseComponentStoreSetParentEffectFunction<PD> = (parent: Observable<Maybe<PD>>) => Subscription;\nexport type DbxFirebaseComponentStoreWithParentSetParentEffectFunction<PD> = (observableOrValue: ObservableOrValue<Maybe<PD>>) => Subscription;\nexport type DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction<PT, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> = (observableOrValue: ObservableOrValue<DbxFirebaseDocumentStore<PT, PD>>) => Subscription;\n\nexport interface DbxFirebaseComponentStoreWithParent<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>, A extends FirestoreCollectionLike<T, D> = FirestoreCollectionLike<T, D>> extends LockSetComponentStore<object>, Pick<ComponentStore<DbxFirebaseComponentStoreWithParentContextState<T, PT, D, PD>>, 'effect'> {\n readonly currentParent$: Observable<Maybe<PD>>;\n readonly parent$: Observable<PD>;\n readonly currentCollectionFactory$: Observable<Maybe<FirestoreCollectionWithParentFactory<T, PT, D, PD>>>;\n readonly collectionFactory$: Observable<FirestoreCollectionWithParentFactory<T, PT, D, PD>>;\n readonly _setParent: DbxFirebaseComponentStoreSetParentEffectFunction<PD>;\n readonly _setParentDocument: (() => void) | ((observableOrValue: ObservableOrValue<Maybe<PD>>) => Subscription);\n readonly setFirestoreCollection: (() => void) | ((observableOrValue: ObservableOrValue<Maybe<A>>) => Subscription);\n}\n\nexport function setParentStoreEffect<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>, A extends FirestoreCollectionLike<T, D> = FirestoreCollectionLike<T, D>>(store: DbxFirebaseComponentStoreWithParent<T, PT, D, PD, A>): DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction<PT, PD> {\n return store.effect((input: Observable<Maybe<DbxFirebaseDocumentStore<PT, PD>>>) => {\n return input.pipe(\n map((parentStore) => {\n let result: Maybe<Subscription>;\n\n if (parentStore) {\n result = store._setParent(parentStore.currentDocument$) as Subscription;\n } else {\n result = undefined;\n }\n\n // set as the parent lock set too\n store.setParentLockSet(parentStore);\n\n return result;\n }),\n cleanup((sub) => {\n if (sub) {\n sub.unsubscribe();\n }\n })\n );\n });\n}\n","import { Maybe } from '@dereekb/util';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { filterMaybe, ObservableOrValue } from '@dereekb/rxjs';\nimport { Observable, shareReplay, distinctUntilChanged, map, Subscription, NEVER, switchMap, tap } from 'rxjs';\nimport { FirestoreCollectionGroup, FirestoreCollectionWithParentFactory, FirestoreDocument } from '@dereekb/firebase';\nimport { AbstractDbxFirebaseCollectionStore, DbxFirebaseCollectionStore, DbxFirebaseCollectionStoreContextState } from './store.collection';\nimport { DbxFirebaseComponentStoreSetParentEffectFunction, DbxFirebaseComponentStoreWithParent, DbxFirebaseComponentStoreWithParentContextState, DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction, setParentStoreEffect } from './store.subcollection.rxjs';\n\n/**\n * Whether or not to load values from a parent or a group.\n */\nexport type DbxFirebaseComponentStoreWithParentSourceMode = 'parent' | 'group';\n\nexport interface DbxFirebaseCollectionWithParentStoreContextState<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> extends DbxFirebaseCollectionStoreContextState<T, D>, DbxFirebaseComponentStoreWithParentContextState<T, PT, D, PD> {\n readonly mode?: Maybe<DbxFirebaseComponentStoreWithParentSourceMode>;\n readonly collectionGroup?: Maybe<FirestoreCollectionGroup<T, D>>;\n}\n\nexport type DbxFirebaseComponentStoreWithParentSetParentSourceModeFunction = (observableOrValue: ObservableOrValue<Maybe<DbxFirebaseComponentStoreWithParentSourceMode>>) => Subscription;\n\nexport interface DbxFirebaseCollectionWithParentStore<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> extends DbxFirebaseCollectionStore<T, D>, DbxFirebaseComponentStoreWithParent<T, PT, D, PD> {\n readonly setSourceMode: DbxFirebaseComponentStoreWithParentSetParentSourceModeFunction;\n readonly setCollectionGroup: (observableOrValue: FirestoreCollectionGroup<T, D> | Observable<FirestoreCollectionGroup<T, D>>) => Subscription;\n readonly currentCollectionGroup$: Observable<Maybe<FirestoreCollectionGroup<T, D>>>;\n readonly collectionGroup$: Observable<FirestoreCollectionGroup<T, D>>;\n}\n\n/**\n * Abstract DbxFirebaseCollectionStore that has a parent document from which is derives it's FiresbaseCollection from.\n */\n@Injectable()\nexport class AbstractDbxFirebaseCollectionWithParentStore<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>, C extends DbxFirebaseCollectionWithParentStoreContextState<T, PT, D, PD> = DbxFirebaseCollectionWithParentStoreContextState<T, PT, D, PD>> extends AbstractDbxFirebaseCollectionStore<T, D, C> implements DbxFirebaseCollectionWithParentStore<T, PT, D, PD> {\n // NOTE: Injection does not occur here, but we need @Injectable to compile properly for Angular usage\n constructor(@Inject(null) @Optional() state: C, @Inject(null) @Optional() defaultSourceMode?: DbxFirebaseComponentStoreWithParentSourceMode) {\n super(state);\n this.setSourceMode(defaultSourceMode || 'parent');\n }\n\n // MARK: Effects\n readonly setParentStore: DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction<PT, PD> = setParentStoreEffect(this);\n readonly setSourceMode: DbxFirebaseComponentStoreWithParentSetParentSourceModeFunction = this.effect((input: Observable<Maybe<DbxFirebaseComponentStoreWithParentSourceMode>>) => {\n return input.pipe(\n distinctUntilChanged(),\n switchMap((inputMode) => {\n const mode = inputMode?.toLowerCase() ?? 'parent'; // default to parent mode\n\n if (mode === 'group') {\n return this.currentCollectionGroup$.pipe(\n tap((collectionGroup) => {\n this.setFirestoreCollection(collectionGroup);\n })\n );\n } else {\n // parent document collection\n return this.currentParent$.pipe(\n switchMap((parent) => {\n if (parent) {\n return this.collectionFactory$.pipe(\n tap((collectionFactory) => {\n const collection = collectionFactory(parent);\n this.setFirestoreCollection(collection);\n })\n );\n } else {\n this.setFirestoreCollection(undefined);\n return NEVER;\n }\n })\n );\n }\n })\n );\n });\n\n // MARK: Accessors\n readonly currentParent$: Observable<Maybe<PD>> = this.state$.pipe(\n map((x) => x.parent),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly parent$: Observable<PD> = this.currentParent$.pipe(filterMaybe());\n\n readonly currentCollectionFactory$: Observable<Maybe<FirestoreCollectionWithParentFactory<T, PT, D, PD>>> = this.state$.pipe(\n map((x) => x.collectionFactory),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly collectionFactory$: Observable<FirestoreCollectionWithParentFactory<T, PT, D, PD>> = this.currentCollectionFactory$.pipe(filterMaybe());\n\n readonly currentCollectionGroup$: Observable<Maybe<FirestoreCollectionGroup<T, D>>> = this.state$.pipe(\n map((x) => x.collectionGroup),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly collectionGroup$: Observable<FirestoreCollectionGroup<T, D>> = this.currentCollectionGroup$.pipe(filterMaybe());\n\n // MARK: State Changes\n /**\n * Sets the collection factory function to use.\n */\n readonly setCollectionFactory = this.updater((state, collectionFactory: FirestoreCollectionWithParentFactory<T, PT, D, PD>) => ({ ...state, collectionFactory }));\n\n /**\n * Sets the collection group to use.\n */\n readonly setCollectionGroup = this.updater((state, collectionGroup: Maybe<FirestoreCollectionGroup<T, D>>) => ({ ...state, collectionGroup })) as (observableOrValue: Maybe<FirestoreCollectionGroup<T, D>> | Observable<Maybe<FirestoreCollectionGroup<T, D>>>) => Subscription;\n\n /**\n * Sets the parent on the current state.\n */\n readonly _setParentDocument = this.updater((state, parent: Maybe<PD>) => ({ ...state, parent }));\n readonly _setParent = this._setParentDocument as DbxFirebaseComponentStoreSetParentEffectFunction<PD>;\n}\n","import { filterMaybe } from '@dereekb/rxjs';\nimport { Injectable } from '@angular/core';\nimport { Observable, shareReplay, distinctUntilChanged, map, NEVER, switchMap, tap, Subscription } from 'rxjs';\nimport { FirestoreDocument, FirestoreCollectionWithParentFactory, FirestoreCollection, DocumentReference, FirestoreModelId, FirestoreModelKey, SingleItemFirestoreCollection, firestoreModelKeyParentKey } from '@dereekb/firebase';\nimport { Maybe } from '@dereekb/util';\nimport { AbstractDbxFirebaseDocumentStore, DbxFirebaseDocumentStore, DbxFirebaseDocumentStoreContextState } from './store.document';\nimport { DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction, setParentStoreEffect, DbxFirebaseComponentStoreWithParent, DbxFirebaseComponentStoreWithParentContextState, DbxFirebaseComponentStoreWithParentSetParentEffectFunction } from './store.subcollection.rxjs';\n\nexport interface DbxFirebaseDocumentWithParentStoreContextState<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> extends DbxFirebaseDocumentStoreContextState<T, D>, DbxFirebaseComponentStoreWithParentContextState<T, PT, D, PD> {}\n\nexport interface DbxFirebaseDocumentWithParentStore<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> extends DbxFirebaseDocumentStore<T, D>, DbxFirebaseComponentStoreWithParent<T, PT, D, PD, FirestoreCollection<T, D>> {}\n\n/**\n * Abstract DbxFirebaseDocumentStore that has a parent document from which is derives it's FiresbaseCollection from.\n */\n@Injectable()\nexport class AbstractDbxFirebaseDocumentWithParentStore<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>, C extends DbxFirebaseDocumentWithParentStoreContextState<T, PT, D, PD> = DbxFirebaseDocumentWithParentStoreContextState<T, PT, D, PD>> extends AbstractDbxFirebaseDocumentStore<T, D, C> implements DbxFirebaseDocumentWithParentStore<T, PT, D, PD> {\n // MARK: Effects\n readonly setParentStore: DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction<PT, PD> = setParentStoreEffect(this);\n readonly setParent: DbxFirebaseComponentStoreWithParentSetParentEffectFunction<PD> = this.effect((input: Observable<Maybe<PD>>) => {\n return input.pipe(\n switchMap((parent) => {\n this._setParentDocument(parent);\n\n if (parent) {\n return this.collectionFactory$.pipe(\n tap((collectionFactory) => {\n const collection = collectionFactory(parent);\n this.setFirestoreCollection(collection);\n })\n );\n } else {\n // clear the current collection\n this.setFirestoreCollection(undefined);\n\n // do nothing until a parent is returned.\n return NEVER;\n }\n })\n );\n });\n\n readonly _setParent = this.setParent;\n\n // MARK: Accessors\n /**\n * Returns the parent model key given the current key value.\n */\n readonly keyParentKey$ = this.key$.pipe(\n map((x) => firestoreModelKeyParentKey(x, 1)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly currentParent$: Observable<Maybe<PD>> = this.state$.pipe(\n map((x) => x.parent),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly currentParentKey$: Observable<Maybe<FirestoreModelKey>> = this.state$.pipe(\n map((x) => x.parent?.key),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly parent$: Observable<PD> = this.currentParent$.pipe(filterMaybe());\n readonly parentKey$: Observable<Maybe<FirestoreModelKey>> = this.currentParentKey$.pipe(filterMaybe());\n\n readonly currentCollectionFactory$: Observable<Maybe<FirestoreCollectionWithParentFactory<T, PT, D, PD>>> = this.state$.pipe(\n map((x) => x.collectionFactory),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly collectionFactory$: Observable<FirestoreCollectionWithParentFactory<T, PT, D, PD>> = this.currentCollectionFactory$.pipe(filterMaybe());\n\n // MARK: State Changes\n /**\n * Sets the collection factory function to use.\n */\n readonly setCollectionFactory = this.updater((state, collectionFactory: FirestoreCollectionWithParentFactory<T, PT, D, PD>) => ({ ...state, collectionFactory }));\n\n /**\n * Sets the parent on the current state.\n */\n readonly _setParentDocument = this.updater((state, parent: Maybe<PD>) => ({ ...state, parent }));\n}\n\n/**\n * AbstractDbxFirebaseDocumentWithParentStore extension for use with SingleItemFirestoreCollection.\n */\nexport class AbstractSingleItemDbxFirebaseDocument<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>, C extends DbxFirebaseDocumentWithParentStoreContextState<T, PT, D, PD> = DbxFirebaseDocumentWithParentStoreContextState<T, PT, D, PD>> extends AbstractDbxFirebaseDocumentWithParentStore<T, PT, D, PD, C> {\n /**\n * Sets the SingleItemFirestoreCollection to use.\n */\n override readonly setFirestoreCollection = this.updater((state, firestoreCollection: Maybe<FirestoreCollection<T, D>>) => {\n if (firestoreCollection != null) {\n const id = (firestoreCollection as SingleItemFirestoreCollection<T, PT, D, PD>).singleItemIdentifier;\n\n if (id != null) {\n return { ...state, firestoreCollection, id };\n } else {\n throw new Error('AbstractSingleItemDbxFirebaseDocument only accepts SingleItemFirestoreCollection values with a singleItemIdentifier set for setFirestoreCollection.');\n }\n } else {\n return { ...state, firestoreCollection: null };\n }\n });\n\n /**\n * Does nothing on a AbstractSingleItemDbxFirebaseDocument.\n *\n * Ref is set with the FirestoreCollection\n */\n override readonly setId = this.updater((state, id: Maybe<FirestoreModelId>) => state) as (observableOrValue: Maybe<string> | Observable<Maybe<string>>) => Subscription;\n\n /**\n * Does nothing on a AbstractSingleItemDbxFirebaseDocument.\n *\n * Ref is set with the FirestoreCollection\n */\n override readonly setKey = this.updater((state, key: Maybe<FirestoreModelKey>) => state) as (observableOrValue: Maybe<string> | Observable<Maybe<string>>) => Subscription;\n\n /**\n * Does nothing on a AbstractSingleItemDbxFirebaseDocument.\n *\n * Ref is set with the FirestoreCollection\n */\n override readonly setRef = this.updater((state, ref: Maybe<DocumentReference<T>>) => state) as (observableOrValue: Maybe<DocumentReference<T>> | Observable<Maybe<DocumentReference<T>>>) => Subscription;\n override readonly clearRefs = this.updater((state) => state);\n}\n","import { Directive, forwardRef, Input, Provider, Type } from '@angular/core';\nimport { FirestoreDocument } from '@dereekb/firebase';\nimport { Maybe } from '@dereekb/util';\nimport { DbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionStoreDirective } from './store.collection.directive';\nimport { DbxFirebaseCollectionWithParentStore, DbxFirebaseComponentStoreWithParentSourceMode } from './store.subcollection';\n\n/**\n * Abstract directive that contains a DbxFirebaseCollectionWithParentStore and provides an interface for communicating with other directives.\n */\n@Directive()\nexport abstract class DbxFirebaseCollectionWithParentStoreDirective<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>, S extends DbxFirebaseCollectionWithParentStore<T, PT, D, PD> = DbxFirebaseCollectionWithParentStore<T, PT, D, PD>> extends DbxFirebaseCollectionStoreDirective<T, D, S> {\n // MARK: Inputs\n @Input()\n set sourceMode(sourceMode: Maybe<DbxFirebaseComponentStoreWithParentSourceMode>) {\n this.store.setSourceMode(sourceMode);\n }\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// The use of any here does not degrade the type-safety; we want to simply match that the Store type S is used in the Directive type C to provide it.\n\n/**\n * Configures providers for a DbxFirebaseCollectionWithParentStoreDirective.\n *\n * Can optionally also provide the actual store type to include in the providers array so it is instantiated by Angular.\n *\n * @param sourceType\n */\nexport function provideDbxFirebaseCollectionWithParentStoreDirective<S extends DbxFirebaseCollectionWithParentStoreDirective<any, any, any, any, any>>(sourceType: Type<S>): Provider[];\nexport function provideDbxFirebaseCollectionWithParentStoreDirective<S extends DbxFirebaseCollectionWithParentStore<any, any, any, any>, C extends DbxFirebaseCollectionWithParentStoreDirective<any, any, any, any, S> = DbxFirebaseCollectionWithParentStoreDirective<any, any, any, any, S>>(sourceType: Type<C>, storeType?: Type<S>): Provider[];\nexport function provideDbxFirebaseCollectionWithParentStoreDirective<S extends DbxFirebaseCollectionWithParentStore<any, any, any, any>, C extends DbxFirebaseCollectionWithParentStoreDirective<any, any, any, any, S> = DbxFirebaseCollectionWithParentStoreDirective<any, any, any, any, S>>(sourceType: Type<C>, storeType?: Type<S>): Provider[] {\n const providers: Provider[] = [\n ...provideDbxFirebaseCollectionStoreDirective(sourceType, storeType),\n {\n provide: DbxFirebaseCollectionWithParentStoreDirective,\n useExisting: forwardRef(() => sourceType)\n }\n ];\n\n return providers;\n}\n","import { Injectable } from '@angular/core';\nimport { SystemState, SystemStateDocument, SystemStateFirestoreCollections } from '@dereekb/firebase';\nimport { AbstractDbxFirebaseCollectionStore } from '../modules/store/store.collection';\n\n@Injectable()\nexport class SystemStateCollectionStore extends AbstractDbxFirebaseCollectionStore<SystemState, SystemStateDocument> {\n constructor(collections: SystemStateFirestoreCollections) {\n super({ firestoreCollection: collections.systemStateCollection });\n }\n}\n","import { Directive } from '@angular/core';\nimport { SystemState, SystemStateDocument } from '@dereekb/firebase';\nimport { DbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionStoreDirective } from '../modules/store/store.collection.directive';\nimport { SystemStateCollectionStore } from './systemstate.collection.store';\n\n@Directive({\n selector: '[dbxFirebaseSystemStateCollection]',\n providers: provideDbxFirebaseCollectionStoreDirective(DbxFirebaseSystemStateCollectionStoreDirective, SystemStateCollectionStore)\n})\nexport class DbxFirebaseSystemStateCollectionStoreDirective extends DbxFirebaseCollectionStoreDirective<SystemState, SystemStateDocument, SystemStateCollectionStore> {\n constructor(store: SystemStateCollectionStore) {\n super(store);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SystemState, SystemStateDocument, SystemStateFirestoreCollection, SystemStateFirestoreCollections, SystemStateStoredData } from '@dereekb/firebase';\nimport { AbstractDbxFirebaseDocumentStore } from '../modules/store/store.document';\n\n@Injectable()\nexport class SystemStateDocumentStore<T extends SystemStateStoredData = SystemStateStoredData> extends AbstractDbxFirebaseDocumentStore<SystemState<T>, SystemStateDocument<T>> {\n constructor(collections: SystemStateFirestoreCollections) {\n super({ firestoreCollection: collections.systemStateCollection as SystemStateFirestoreCollection<T> });\n }\n}\n","import { SystemState, SystemStateStoredData, SystemStateTypeIdentifier } from '@dereekb/firebase';\nimport { LoadingState, mapLoadingState } from '@dereekb/rxjs';\nimport { map, Observable, shareReplay } from 'rxjs';\nimport { SystemStateDocumentStore } from './systemstate.document.store';\nimport { Inject, Injectable, Injector, OnDestroy, Optional, inject } from '@angular/core';\nimport { newWithInjector } from '@dereekb/dbx-core';\n\n/**\n * Abstract class used for accessing a SystemStateDocumentStore's data.\n */\n@Injectable()\nexport abstract class AbstractSystemStateDocumentStoreAccessor<T extends SystemStateStoredData = SystemStateStoredData> implements OnDestroy {\n readonly systemStateDocumentStore = newWithInjector(SystemStateDocumentStore<T>, inject(Injector));\n\n readonly documentData$ = this.systemStateDocumentStore.data$;\n readonly data$: Observable<T> = this.documentData$.pipe(\n map((x) => x.data),\n shareReplay(1)\n );\n readonly dataState$: Observable<LoadingState<T>> = this.systemStateDocumentStore.dataLoadingState$.pipe(mapLoadingState({ mapValue: (x: SystemState<T>) => x.data }), shareReplay(1));\n readonly exists$ = this.systemStateDocumentStore.exists$;\n readonly doesNotExist$ = this.systemStateDocumentStore.doesNotExist$;\n\n readonly type$: Observable<SystemStateTypeIdentifier> = this.systemStateDocumentStore.id$;\n\n constructor(@Inject(null) @Optional() type: SystemStateTypeIdentifier) {\n this.systemStateDocumentStore.setId(type);\n }\n\n ngOnDestroy(): void {\n this.systemStateDocumentStore.ngOnDestroy();\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { SystemState, SystemStateDocument, SystemStateStoredData } from '@dereekb/firebase';\nimport { DbxFirebaseDocumentStoreDirective, provideDbxFirebaseDocumentStoreDirective } from '../modules/store/store.document.directive';\nimport { SystemStateDocumentStore } from './systemstate.document.store';\n\n@Directive({\n selector: '[dbxFirebaseSystemStateDocument]',\n providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseSystemStateDocumentStoreDirective, SystemStateDocumentStore)\n})\nexport class DbxFirebaseSystemStateDocumentStoreDirective<T extends SystemStateStoredData = SystemStateStoredData> extends DbxFirebaseDocumentStoreDirective<SystemState<T>, SystemStateDocument<T>, SystemStateDocumentStore<T>> {\n constructor() {\n super(inject(SystemStateDocumentStore<T>));\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DbxFirebaseModelHistoryModule } from './modules/model/model.history.module';\nimport { DbxFirebaseModelTypesModule } from './modules/model/model.types.module';\nimport { DbxFirebaseModelStoreModule } from './modules/store/model.store.module';\n\n@NgModule({\n exports: [DbxFirebaseModelStoreModule, DbxFirebaseModelHistoryModule, DbxFirebaseModelTypesModule]\n})\nexport class DbxFirebaseModelModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FirestoreModelKey, flatFirestoreModelKey, twoWayFlatFirestoreModelKey } from '@dereekb/firebase';\nimport { Maybe } from '@dereekb/util';\n\n@Pipe({ name: 'flatFirestoreModelKey' })\nexport class FlatFirestoreModelKeyPipe implements PipeTransform {\n transform(input: Maybe<FirestoreModelKey>): string {\n if (input != null) {\n return flatFirestoreModelKey(input);\n } else {\n return '';\n }\n }\n}\n\n@Pipe({ name: 'twoWayFlatFirestoreModelKey' })\nexport class TwoWayFlatFirestoreModelKeyPipe implements PipeTransform {\n transform(input: Maybe<FirestoreModelKey>): string {\n if (input != null) {\n return twoWayFlatFirestoreModelKey(input);\n } else {\n return '';\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FlatFirestoreModelKeyPipe, TwoWayFlatFirestoreModelKeyPipe } from './key.pipe';\n\nconst declarations = [FlatFirestoreModelKeyPipe, TwoWayFlatFirestoreModelKeyPipe];\n\n@NgModule({\n declarations,\n exports: declarations\n})\nexport class DbxFirebasePipeModule {}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * Token to access the FirebaseStorageContextConfig value.\n */\nexport const DBX_FIREBASE_STORAGE_CONTEXT_CONFIG_TOKEN = new InjectionToken('DBX_FIREBASE_STORAGE_CONTEXT_CONFIG_TOKEN');\n\n/**\n * Token to access the FirebaseStorageContext value.\n */\nexport const DBX_FIREBASE_STORAGE_CONTEXT_TOKEN = new InjectionToken('DBX_FIREBASE_STORAGE_CONTEXT_TOKEN');\n","import { Injectable, inject } from '@angular/core';\nimport { FirebaseStorageContext, FirebaseStorageAccessor, FirebaseStorageAccessorFile, FirebaseStorageAccessorFolder, StoragePathInput } from '@dereekb/firebase';\nimport { DBX_FIREBASE_STORAGE_CONTEXT_TOKEN } from './firebase.storage';\n\n/**\n * Service that provides access to the app's FirebaseStorageContext.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseStorageService implements FirebaseStorageAccessor {\n readonly storageContext = inject<FirebaseStorageContext>(DBX_FIREBASE_STORAGE_CONTEXT_TOKEN);\n\n defaultBucket() {\n return this.storageContext.defaultBucket();\n }\n\n file(path: StoragePathInput): FirebaseStorageAccessorFile {\n return this.storageContext.file(path);\n }\n\n folder(path: StoragePathInput): FirebaseStorageAccessorFolder {\n return this.storageContext.folder(path);\n }\n}\n","import { Injector, ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { FirebaseApp } from '@angular/fire/app';\nimport { Storage } from '@angular/fire/storage';\nimport { clientFirebaseStorageContextFactory, FirebaseStorageContextFactoryConfig } from '@dereekb/firebase';\nimport { DBX_FIREBASE_STORAGE_CONTEXT_CONFIG_TOKEN, DBX_FIREBASE_STORAGE_CONTEXT_TOKEN } from './firebase.storage';\nimport { DbxFirebaseStorageService } from './firebase.storage.service';\n\nexport function dbxFirebaseStorageModuleContextConfigFactory(base?: FirebaseStorageContextFactoryConfig): DbxFirebaseStorageModuleContextConfigFactory {\n return (app: FirebaseApp, injector: Injector) => {\n return {\n defaultBucketId: base?.defaultBucketId || app.options.storageBucket,\n forceBucket: base?.forceBucket ?? false\n };\n };\n}\n\nexport type DbxFirebaseStorageModuleContextConfigFactory = (app: FirebaseApp, injector: Injector) => FirebaseStorageContextFactoryConfig;\n\nexport interface DbxFirebaseStorageModuleConfig {\n contextConfig?: FirebaseStorageContextFactoryConfig;\n contextConfigFactory?: DbxFirebaseStorageModuleContextConfigFactory;\n}\n\n@NgModule({})\nexport class DbxFirebaseStorageModule {\n static forRoot(config?: DbxFirebaseStorageModuleConfig): ModuleWithProviders<DbxFirebaseStorageModule> {\n const configFactory = config?.contextConfigFactory ?? dbxFirebaseStorageModuleContextConfigFactory(config?.contextConfig);\n\n const providers: Provider[] = [\n {\n provide: DBX_FIREBASE_STORAGE_CONTEXT_CONFIG_TOKEN,\n useFactory: configFactory,\n deps: [FirebaseApp, Injector]\n },\n {\n provide: DBX_FIREBASE_STORAGE_CONTEXT_TOKEN,\n useFactory: clientFirebaseStorageContextFactory,\n deps: [Storage, DBX_FIREBASE_STORAGE_CONTEXT_CONFIG_TOKEN]\n },\n DbxFirebaseStorageService\n ];\n\n return {\n ngModule: DbxFirebaseStorageModule,\n providers\n };\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DbxFirebaseModelModule } from './model/model.module';\n\n@NgModule({\n exports: [DbxFirebaseModelModule]\n})\nexport class DbxFirebaseModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i4","i1.DbxFirebaseLoginButtonComponent","i1.DbxFirebaseLoginButtonContainerComponent","i2","i2.DbxFirebaseLoginContextDirective","i3.DbxFirebaseLoginListComponent","i3","i5","i6.DbxFirebaseEmailFormComponent","i7.DbxFirebaseEmailRecoveryFormComponent","i1.DbxFirebaseLoginComponent","i1.DbxFirebaseDevelopmentSchedulerListComponent","i6.DbxFirebaseDevelopmentPopupContentFormComponent","i2.DbxFirebaseDevelopmentPopupContentComponent","i2.DbxFirebaseModelTypeInstanceComponent","i2.DbxFirebaseModelHistoryComponent","declarations","i1.SystemStateCollectionStore"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dereekb-dbx-firebase.mjs","sources":["../../../../packages/dbx-firebase/src/lib/auth/auth.ts","../../../../packages/dbx-firebase/src/lib/auth/service/firebase.auth.rxjs.ts","../../../../packages/dbx-firebase/src/lib/auth/service/firebase.auth.service.ts","../../../../packages/dbx-firebase/src/lib/analytics/analytics.user.source.ts","../../../../packages/dbx-firebase/src/lib/analytics/analytics.user.events.ts","../../../../packages/dbx-firebase/src/lib/auth/appcheck/appcheck.ts","../../../../packages/dbx-firebase/src/lib/firebase/options.ts","../../../../packages/dbx-firebase/src/lib/auth/appcheck/appcheck.interceptor.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.terms.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.terms.simple.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.password.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.service.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.context.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.button.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.apple.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.anonymous.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.context.directive.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.list.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.email.form.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.email.recovery.form.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.email.content.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.email.content.component.html","../../../../packages/dbx-firebase/src/lib/auth/login/login.email.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.facebook.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.google.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/register.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.github.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.twitter.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.microsoft.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/register.email.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/register.email.component.html","../../../../packages/dbx-firebase/src/lib/auth/login/login.terms.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/login.context.back.component.ts","../../../../packages/dbx-firebase/src/lib/auth/login/firebase.login.module.ts","../../../../packages/dbx-firebase/src/lib/auth/service/firebase.auth.service.delegate.ts","../../../../packages/dbx-firebase/src/lib/auth/firebase.auth.module.ts","../../../../packages/dbx-firebase/src/lib/development/development.widget.service.ts","../../../../packages/dbx-firebase/src/lib/development/development.scheduler.service.ts","../../../../packages/dbx-firebase/src/lib/development/development.scheduler.list.component.ts","../../../../packages/dbx-firebase/src/lib/development/development.scheduler.widget.component.ts","../../../../packages/dbx-firebase/src/lib/firebase/emulators.ts","../../../../packages/dbx-firebase/src/lib/firebase/firebase.module.ts","../../../../packages/dbx-firebase/src/lib/firebase/firebase.emulator.module.ts","../../../../packages/dbx-firebase/src/lib/firebase/firebase.emulator.service.ts","../../../../packages/dbx-firebase/src/lib/development/development.popup.content.form.component.ts","../../../../packages/dbx-firebase/src/lib/development/development.popup.content.component.ts","../../../../packages/dbx-firebase/src/lib/development/development.popup.content.component.html","../../../../packages/dbx-firebase/src/lib/development/development.popup.component.ts","../../../../packages/dbx-firebase/src/lib/development/development.service.ts","../../../../packages/dbx-firebase/src/lib/development/development.popup.directive.ts","../../../../packages/dbx-firebase/src/lib/development/development.module.ts","../../../../packages/dbx-firebase/src/lib/firestore/firebase.firestore.ts","../../../../packages/dbx-firebase/src/lib/firestore/firebase.firestore.module.ts","../../../../packages/dbx-firebase/src/lib/firestore/firebase.firestore.context.service.ts","../../../../packages/dbx-firebase/src/lib/function/firebase.function.module.ts","../../../../packages/dbx-firebase/src/lib/model/loader/collection.change.watcher.ts","../../../../packages/dbx-firebase/src/lib/model/loader/collection.change.trigger.ts","../../../../packages/dbx-firebase/src/lib/model/loader/collection.loader.instance.ts","../../../../packages/dbx-firebase/src/lib/model/loader/document.loader.instance.ts","../../../../packages/dbx-firebase/src/lib/model/service/model.context.instance.ts","../../../../packages/dbx-firebase/src/lib/model/service/model.context.service.ts","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.types.service.ts","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.tracker.service.ts","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.types.list.component.ts","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.history.component.ts","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.history.popover.component.ts","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.history.popover.component.html","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.history.popover.button.component.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.document.directive.ts","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.types.view.directive.ts","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.types.module.ts","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.history.module.ts","../../../../packages/dbx-firebase/src/lib/model/modules/model/model.sourceselect.history.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.collection.directive.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.collection.change.directive.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.collection.change.if.directive.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.collection.list.directive.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.document.auth.directive.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.document.router.directive.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.document.router.key.directive.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.document.twoway.key.source.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.document.twoway.key.source.directive.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.document.twoway.key.directive.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/model.store.module.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.collection.ts","../../../../packages/dbx-firebase/src/lib/model/error.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.document.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.document.crud.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.subcollection.rxjs.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.subcollection.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.subcollection.document.ts","../../../../packages/dbx-firebase/src/lib/model/modules/store/store.subcollection.directive.ts","../../../../packages/dbx-firebase/src/lib/model/system/systemstate.collection.store.ts","../../../../packages/dbx-firebase/src/lib/model/system/systemstate.collection.store.directive.ts","../../../../packages/dbx-firebase/src/lib/model/system/systemstate.document.store.ts","../../../../packages/dbx-firebase/src/lib/model/system/systemstate.document.store.accessor.ts","../../../../packages/dbx-firebase/src/lib/model/system/systemstate.document.store.directive.ts","../../../../packages/dbx-firebase/src/lib/model/model.module.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/service/notification.template.service.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/component/notificationitem.list.component.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/service/notificationitem.widget.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/service/notificationitem.widget.service.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/component/notificationitem.view.component.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/component/notificationitem.view.directive.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/component/notificationitem.content.component.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/component/notificationitem.content.component.html","../../../../packages/dbx-firebase/src/lib/modules/notification/component/notificationitem.view.default.component.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/store/notificationsummary.collection.store.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/store/notificationsummary.collection.store.directive.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/store/notificationsummary.document.store.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/store/notificationsummary.document.store.directive.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/store/notification.item.store.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/store/notificationuser.collection.store.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/store/notificationuser.collection.store.directive.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/store/notificationuser.document.store.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/store/notificationuser.document.store.directive.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/store/notificationbox.document.store.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/store/notificationbox.document.store.directive.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/store/notificationbox.collection.store.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/store/notificationbox.collection.store.directive.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/container/notification.item.store.popover.component.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/container/notification.item.store.popover.component.html","../../../../packages/dbx-firebase/src/lib/modules/notification/container/notification.item.store.popover.button.component.ts","../../../../packages/dbx-firebase/src/lib/modules/notification/notification.module.ts","../../../../packages/dbx-firebase/src/lib/pipe/key.pipe.ts","../../../../packages/dbx-firebase/src/lib/pipe/pipe.module.ts","../../../../packages/dbx-firebase/src/lib/router/id.param.redirect.ts","../../../../packages/dbx-firebase/src/lib/storage/firebase.storage.ts","../../../../packages/dbx-firebase/src/lib/storage/firebase.storage.service.ts","../../../../packages/dbx-firebase/src/lib/storage/firebase.storage.module.ts","../../../../packages/dbx-firebase/src/lib/module.ts","../../../../packages/dbx-firebase/src/dereekb-dbx-firebase.ts"],"sourcesContent":["import { safeFormatToISO8601DateString } from '@dereekb/date';\nimport { FirebaseAuthToken } from '@dereekb/firebase';\nimport { ISO8601DateString, type Maybe } from '@dereekb/util';\nimport { User, UserInfo } from 'firebase/auth';\n\nexport type AuthUserInfo = Omit<UserInfo, 'providerId'> & {\n /**\n * The creation time of the user's account.\n */\n readonly creationTime?: Maybe<ISO8601DateString>;\n /**\n * The last time the user signed in and recieved a refresh token.\n */\n readonly lastSignInTime?: Maybe<ISO8601DateString>;\n};\n\nexport function authUserInfoFromAuthUser(user: User): AuthUserInfo {\n return {\n displayName: user?.displayName,\n email: user.email,\n phoneNumber: user.phoneNumber,\n photoURL: user.photoURL,\n uid: user.uid,\n creationTime: safeFormatToISO8601DateString(user.metadata.creationTime),\n lastSignInTime: safeFormatToISO8601DateString(user.metadata.lastSignInTime)\n };\n}\n\nexport function firebaseAuthTokenFromUser(user: User): FirebaseAuthToken {\n return {\n email: user.email,\n emailVerified: user.emailVerified,\n phoneNumber: user.phoneNumber,\n creationTime: safeFormatToISO8601DateString(user.metadata.creationTime),\n lastSignInTime: safeFormatToISO8601DateString(user.metadata.lastSignInTime)\n };\n}\n","import { AuthUserState } from '@dereekb/dbx-core';\nimport { asObservable, ObservableOrValue } from '@dereekb/rxjs';\nimport { IdTokenResult } from 'firebase/auth';\nimport { Observable, of, shareReplay, switchMap } from 'rxjs';\nimport { AuthUserStateObsFunction, DbxFirebaseAuthService } from './firebase.auth.service';\n\n/**\n * Creates a AuthUserStateObsFunction that derives a user state from the input firebase auth service, and the optional stateForLoggedInUser input\n *\n * @param stateForLoggedInUser Optional function that returns an observable for the user's state if they are logged in and not an anonymous user.\n * @returns\n */\nexport function authUserStateFromFirebaseAuthServiceFunction(stateForLoggedInUser: AuthUserStateObsFunction = () => of('user')): AuthUserStateObsFunction {\n return (dbxFirebaseAuthService: DbxFirebaseAuthService) => {\n return dbxFirebaseAuthService.hasAuthUser$.pipe(\n switchMap((hasUser) => {\n let obs: Observable<AuthUserState>;\n\n if (hasUser) {\n obs = dbxFirebaseAuthService.isAnonymousUser$.pipe(switchMap((isAnon) => (isAnon ? of('anon' as AuthUserState) : stateForLoggedInUser(dbxFirebaseAuthService))));\n } else {\n obs = of('none');\n }\n\n return obs;\n }),\n shareReplay(1)\n );\n };\n}\n\nexport type StateFromTokenFunction = (token: IdTokenResult) => ObservableOrValue<AuthUserState>;\n\nexport function stateFromTokenForLoggedInUserFunction(stateFromToken: StateFromTokenFunction, defaultState: AuthUserState = 'user'): AuthUserStateObsFunction {\n return (dbxFirebaseAuthService: DbxFirebaseAuthService) => {\n return readValueFromIdToken<AuthUserState>(dbxFirebaseAuthService, stateFromToken, defaultState);\n };\n}\n\n/**\n * Convenience function to read a value from an IdTokenResult off of the current user.\n *\n * @param dbxFirebaseAuthService\n * @param readValueFromIdToken\n * @param defaultValue\n * @returns\n */\nexport function readValueFromIdToken<T>(dbxFirebaseAuthService: DbxFirebaseAuthService, readValueFromIdToken: (idToken: IdTokenResult) => ObservableOrValue<T>, defaultValue: T): Observable<T> {\n return dbxFirebaseAuthService.currentAuthUserInfo$.pipe(\n switchMap((x) => {\n if (x) {\n return dbxFirebaseAuthService.idTokenResult$.pipe(switchMap((x) => asObservable(readValueFromIdToken(x))));\n } else {\n return of(defaultValue);\n }\n })\n );\n}\n","import { filterMaybe, isNot, timeoutStartWith } from '@dereekb/rxjs';\nimport { Injectable, inject } from '@angular/core';\nimport { AuthUserState, DbxAuthService, loggedOutObsFromIsLoggedIn, loggedInObsFromIsLoggedIn, AuthUserIdentifier, authUserIdentifier, NoAuthUserIdentifier } from '@dereekb/dbx-core';\nimport { reauthenticateWithPopup, Auth, authState, idToken, User, IdTokenResult, ParsedToken, GoogleAuthProvider, signInWithPopup, AuthProvider, PopupRedirectResolver, signInAnonymously, signInWithEmailAndPassword, UserCredential, FacebookAuthProvider, GithubAuthProvider, TwitterAuthProvider, createUserWithEmailAndPassword } from '@angular/fire/auth';\nimport { of, Observable, distinctUntilChanged, shareReplay, map, switchMap, firstValueFrom, catchError, EMPTY } from 'rxjs';\nimport { AuthClaims, AuthClaimsObject, AuthRoleClaimsService, AuthRoleSet, AUTH_ADMIN_ROLE, cachedGetter, type Maybe } from '@dereekb/util';\nimport { AuthUserInfo, authUserInfoFromAuthUser, firebaseAuthTokenFromUser } from '../auth';\nimport { sendPasswordResetEmail } from 'firebase/auth';\nimport { authUserStateFromFirebaseAuthServiceFunction } from './firebase.auth.rxjs';\nimport { FirebaseAuthContextInfo } from '@dereekb/firebase';\n\n/**\n * Returns an observable that returns the state of the\n */\nexport type AuthUserStateObsFunction = (dbxFirebaseAuthService: DbxFirebaseAuthService) => Observable<AuthUserState>;\n\n// MARK: Delegate\nexport abstract class DbxFirebaseAuthServiceDelegate {\n readonly fullControlOfAuthUserState?: boolean = false;\n abstract authUserStateObs: AuthUserStateObsFunction;\n abstract authRolesObs(dbxFirebaseAuthService: DbxFirebaseAuthService): Observable<AuthRoleSet>;\n abstract isOnboarded(dbxFirebaseAuthService: DbxFirebaseAuthService): Observable<boolean>;\n /**\n * Whether or not the input roles imply the admin priviledges.\n */\n abstract isAdminInAuthRoleSet(authRoleSet: AuthRoleSet): boolean;\n abstract authRoleClaimsService?: Maybe<AuthRoleClaimsService<AuthClaimsObject>>;\n}\n\nexport const DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE: DbxFirebaseAuthServiceDelegate = {\n authUserStateObs: authUserStateFromFirebaseAuthServiceFunction(),\n authRolesObs(dbxFirebaseAuthService: DbxFirebaseAuthService): Observable<AuthRoleSet> {\n return dbxFirebaseAuthService.authUserState$.pipe(map((x) => (x === 'user' ? new Set(['user']) : new Set())));\n },\n isOnboarded(dbxFirebaseAuthService: DbxFirebaseAuthService): Observable<boolean> {\n return dbxFirebaseAuthService.authUserState$.pipe(map((x) => x === 'user'));\n },\n isAdminInAuthRoleSet(authRoleSet: AuthRoleSet): boolean {\n return authRoleSet.has(AUTH_ADMIN_ROLE);\n }\n};\n\n// MARK: Service\n@Injectable()\nexport class DbxFirebaseAuthService implements DbxAuthService {\n readonly firebaseAuth = inject(Auth);\n readonly delegate = inject(DbxFirebaseAuthServiceDelegate, { optional: true }) ?? DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE;\n\n readonly _authState$: Observable<Maybe<User>> = authState(this.firebaseAuth);\n\n readonly currentAuthUser$: Observable<Maybe<User>> = this._authState$.pipe(timeoutStartWith(null as Maybe<User>, 1000), distinctUntilChanged(), shareReplay(1));\n readonly currentAuthUserInfo$: Observable<Maybe<AuthUserInfo>> = this.currentAuthUser$.pipe(map((x) => (x ? authUserInfoFromAuthUser(x) : undefined)));\n\n readonly authUser$: Observable<User> = this.currentAuthUser$.pipe(filterMaybe());\n readonly authUserInfo$: Observable<AuthUserInfo> = this.authUser$.pipe(map(authUserInfoFromAuthUser));\n\n readonly hasAuthUser$: Observable<boolean> = this.currentAuthUser$.pipe(\n map((x) => Boolean(x)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly isAnonymousUser$: Observable<boolean> = this.authUser$.pipe(\n map((x) => x.isAnonymous),\n distinctUntilChanged(),\n shareReplay(1)\n );\n readonly isNotAnonymousUser$: Observable<boolean> = this.isAnonymousUser$.pipe(isNot(), distinctUntilChanged(), shareReplay(1));\n\n readonly isLoggedIn$: Observable<boolean> = this.hasAuthUser$;\n readonly isNotLoggedIn$: Observable<boolean> = this.isLoggedIn$.pipe(isNot());\n readonly onLogIn$: Observable<void> = loggedInObsFromIsLoggedIn(this.isLoggedIn$);\n readonly onLogOut$: Observable<void> = loggedOutObsFromIsLoggedIn(this.isLoggedIn$);\n\n readonly currentUid$: Observable<Maybe<AuthUserIdentifier>> = this.currentAuthUser$.pipe(\n map((x) => x?.uid),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly uid$: Observable<AuthUserIdentifier | NoAuthUserIdentifier> = this.currentUid$.pipe(map(authUserIdentifier), distinctUntilChanged(), shareReplay(1));\n /**\n * Alias for uid$\n */\n readonly userIdentifier$: Observable<AuthUserIdentifier | NoAuthUserIdentifier> = this.uid$;\n\n readonly currentIdTokenString$: Observable<Maybe<string>> = idToken(this.firebaseAuth).pipe(distinctUntilChanged(), shareReplay(1));\n readonly idTokenString$: Observable<string> = this.currentUid$.pipe(switchMap((x) => (x ? this.currentIdTokenString$.pipe(filterMaybe()) : EMPTY)));\n\n readonly currentIdTokenResult$: Observable<Maybe<IdTokenResult>> = this.currentAuthUser$.pipe(\n switchMap((x) => (x ? this.currentIdTokenString$.pipe(switchMap((y) => (y ? x.getIdTokenResult() : of(null)))) : of(null))),\n distinctUntilChanged(),\n shareReplay(1)\n );\n readonly idTokenResult$: Observable<IdTokenResult> = this.currentIdTokenResult$.pipe(filterMaybe());\n\n readonly currentClaims$: Observable<Maybe<ParsedToken>> = this.currentIdTokenResult$.pipe(\n map((x) => (x ? x.claims : null)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n readonly claims$: Observable<ParsedToken> = this.currentClaims$.pipe(filterMaybe());\n\n readonly currentAuthContextInfo$: Observable<Maybe<DbxFirebaseAuthContextInfo>> = this.currentAuthUser$.pipe(\n switchMap((x) => this.loadAuthContextInfoForUser(x)),\n shareReplay(1)\n );\n readonly authContextInfo$: Observable<Maybe<DbxFirebaseAuthContextInfo>> = this.currentAuthContextInfo$.pipe(filterMaybe());\n\n readonly authUserState$: Observable<AuthUserState> = (() => {\n const delegateAuthUserStateObs: Observable<AuthUserState> = this.delegate.authUserStateObs(this).pipe(\n catchError(() => of('error' as AuthUserState)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n let obs: Observable<AuthUserState>;\n\n if (this.delegate.fullControlOfAuthUserState) {\n obs = delegateAuthUserStateObs;\n } else {\n obs = this._authState$.pipe(\n distinctUntilChanged(),\n switchMap((x) => {\n if (x != null) {\n return delegateAuthUserStateObs;\n } else {\n return of('none' as AuthUserState);\n }\n })\n );\n }\n\n return obs;\n })();\n\n readonly authRoles$: Observable<AuthRoleSet> = this.delegate.authRolesObs(this);\n readonly isOnboarded$: Observable<boolean> = this.delegate.isOnboarded(this);\n\n private _authRoleClaimsService?: Maybe<AuthRoleClaimsService<AuthClaimsObject>> = this.delegate.authRoleClaimsService;\n readonly isAdminInAuthRoleSet: (authRoleSet: AuthRoleSet) => boolean = this.delegate.isAdminInAuthRoleSet;\n\n async refreshToken(): Promise<IdTokenResult> {\n const user = this.firebaseAuth.currentUser;\n\n if (!user) {\n throw new Error('no user to refresh the token for.');\n }\n\n return user.getIdTokenResult(true);\n }\n\n rolesForClaims<T extends AuthClaimsObject = AuthClaimsObject>(claims: AuthClaims<T>): AuthRoleSet {\n let result: AuthRoleSet;\n\n if (this._authRoleClaimsService) {\n return this._authRoleClaimsService.toRoles(claims);\n } else {\n console.warn('DbxFirebaseAuthService: rolesForClaims called with no authRoleClaimsService provided. An empty set is returned.');\n result = new Set();\n }\n\n return result;\n }\n\n getAuthContextInfo(): Promise<Maybe<DbxFirebaseAuthContextInfo>> {\n return firstValueFrom(this.authUser$).then((user) => this.loadAuthContextInfoForUser(user));\n }\n\n async loadAuthContextInfoForUser(user: Maybe<User>): Promise<Maybe<DbxFirebaseAuthContextInfo>> {\n let result: Maybe<DbxFirebaseAuthContextInfo>;\n\n if (user) {\n const jwtToken: IdTokenResult = await user.getIdTokenResult();\n result = dbxFirebaseAuthContextInfo(this, user, jwtToken);\n }\n\n return result;\n }\n\n logInWithGoogle(): Promise<UserCredential> {\n return this.logInWithPopup(new GoogleAuthProvider());\n }\n\n logInWithFacebook(): Promise<UserCredential> {\n return this.logInWithPopup(new FacebookAuthProvider());\n }\n\n logInWithTwitter(): Promise<UserCredential> {\n return this.logInWithPopup(new TwitterAuthProvider());\n }\n\n logInWithGithub(): Promise<UserCredential> {\n return this.logInWithPopup(new GithubAuthProvider());\n }\n\n logInWithApple(): Promise<UserCredential> {\n throw new Error('todo');\n }\n\n logInWithMicrosoft(): Promise<UserCredential> {\n // return this.logInWithPopup(new MicrosoftAuthProvider());\n throw new Error('todo');\n }\n\n logInWithPhone(): Promise<UserCredential> {\n throw new Error('todo');\n // return signInWithPhoneNumber(this.firebaseAuth, )\n }\n\n logInWithPopup(provider: AuthProvider, resolver?: PopupRedirectResolver): Promise<UserCredential> {\n return signInWithPopup(this.firebaseAuth, provider, resolver);\n }\n\n registerWithEmailAndPassword(email: string, password: string): Promise<UserCredential> {\n return createUserWithEmailAndPassword(this.firebaseAuth, email, password);\n }\n\n sendPasswordResetEmail(email: string): Promise<void> {\n return sendPasswordResetEmail(this.firebaseAuth, email);\n }\n\n logInWithEmailAndPassword(email: string, password: string): Promise<UserCredential> {\n return signInWithEmailAndPassword(this.firebaseAuth, email, password);\n }\n\n logInAsAnonymous(): Promise<UserCredential> {\n return signInAnonymously(this.firebaseAuth);\n }\n\n logOut(): Promise<void> {\n return this.firebaseAuth.signOut();\n }\n\n reauthenticateWithPopup(provider: AuthProvider, resolver?: PopupRedirectResolver): Promise<UserCredential> {\n return firstValueFrom(\n this.currentAuthUser$.pipe(\n switchMap((x: Maybe<User>) => {\n if (x) {\n return reauthenticateWithPopup(x, provider, resolver);\n } else {\n throw new Error('User is not logged in currently.');\n }\n })\n )\n );\n }\n}\n\n/**\n * FirebaseAuthContextInfo implementation from DbxFirebaseAuthService.\n */\nexport interface DbxFirebaseAuthContextInfo extends FirebaseAuthContextInfo {\n readonly service: DbxFirebaseAuthService;\n readonly user: User;\n readonly jwtToken: IdTokenResult;\n}\n\n/**\n * Creates a new DbxFirebaseAuthContextInfo instance.\n *\n * @param service\n * @param user\n * @param jwtToken\n * @returns\n */\nexport function dbxFirebaseAuthContextInfo(service: DbxFirebaseAuthService, user: User, jwtToken: IdTokenResult): DbxFirebaseAuthContextInfo {\n function getClaims<T extends AuthClaimsObject = AuthClaimsObject>(): AuthClaims<T> {\n return jwtToken.claims as AuthClaims<T>;\n }\n\n const { uid } = user;\n const token = firebaseAuthTokenFromUser(user);\n const getAuthRoles = cachedGetter(() => service.rolesForClaims(getClaims()));\n const isAdmin = cachedGetter(() => service.isAdminInAuthRoleSet(getAuthRoles()));\n\n const result: DbxFirebaseAuthContextInfo = {\n service,\n user,\n jwtToken,\n\n uid,\n\n isAdmin,\n getClaims,\n getAuthRoles,\n\n token\n };\n\n return result;\n}\n","import { Injectable, inject } from '@angular/core';\nimport { DbxAnalyticsUser, DbxAnalyticsUserProperties, DbxAnalyticsUserSource } from '@dereekb/dbx-analytics';\nimport { FactoryWithRequiredInput, type Maybe } from '@dereekb/util';\nimport { BehaviorSubject, map, Observable, of, switchMap, shareReplay, combineLatest } from 'rxjs';\nimport { AuthUserInfo } from '../auth/auth';\nimport { DbxFirebaseAuthService } from '../auth/service/firebase.auth.service';\n\nexport type DbxFirebaseAnalyticsUserPropertiesFactory = FactoryWithRequiredInput<Observable<DbxAnalyticsUserProperties>, AuthUserInfo>;\n\nexport function readDbxAnalyticsUserPropertiesFromAuthUserInfo(user: AuthUserInfo): DbxAnalyticsUserProperties {\n const properties: DbxAnalyticsUserProperties = {\n name: user.displayName ?? '',\n email: user.email ?? '',\n createdAt: user.creationTime ?? ''\n };\n\n return properties;\n}\n\nexport const DEFAULT_DBX_FIREBASE_ANALYTICS_USER_PROPERTIES_FACTORY: DbxFirebaseAnalyticsUserPropertiesFactory = (authUserInfo: AuthUserInfo) => of(readDbxAnalyticsUserPropertiesFromAuthUserInfo(authUserInfo));\n\n/**\n * DbxAnalyticsUserSource implementation that uses the DbxFirebaseAuthService.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseAnalyticsUserSource implements DbxAnalyticsUserSource {\n readonly dbxFirebaseAuthService = inject(DbxFirebaseAuthService);\n\n private _userPropertiesFactory = new BehaviorSubject<DbxFirebaseAnalyticsUserPropertiesFactory>(DEFAULT_DBX_FIREBASE_ANALYTICS_USER_PROPERTIES_FACTORY);\n\n readonly analyticsUser$: Observable<Maybe<DbxAnalyticsUser>> = combineLatest([this._userPropertiesFactory, this.dbxFirebaseAuthService.currentAuthUserInfo$]).pipe(\n switchMap(([userPropertiesFactory, x]) => {\n let analyticsUser: Observable<Maybe<DbxAnalyticsUser>>;\n\n if (x != null) {\n analyticsUser = userPropertiesFactory(x).pipe(\n map((properties) => ({\n user: x.uid,\n properties\n }))\n );\n } else {\n analyticsUser = of(null);\n }\n\n return analyticsUser;\n }),\n shareReplay(1)\n );\n\n get userPropertiesFactory() {\n return this._userPropertiesFactory.value;\n }\n\n set userPropertiesFactory(userPropertiesFactory: DbxFirebaseAnalyticsUserPropertiesFactory) {\n this._userPropertiesFactory.next(userPropertiesFactory);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { DbxAnalyticsService } from '@dereekb/dbx-analytics';\nimport { filterMaybe, SubscriptionObject } from '@dereekb/rxjs';\nimport { Destroyable, Initialized } from '@dereekb/util';\nimport { first } from 'rxjs';\nimport { DbxFirebaseAuthService } from '../auth/service/firebase.auth.service';\nimport { DbxFirebaseAnalyticsUserSource } from './analytics.user.source';\n\n/**\n * Service that listens for DbxFirebaseAuthService changes and emits them a user events.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseAnalyticsUserEventsListener implements Initialized, Destroyable {\n readonly dbxFirebaseAuthService = inject(DbxFirebaseAuthService);\n readonly dbxFirebaseAnalyticsUserSource = inject(DbxFirebaseAnalyticsUserSource);\n readonly dbxAnalyticsService = inject(DbxAnalyticsService);\n\n private _loginSub = new SubscriptionObject();\n private _logoutSub = new SubscriptionObject();\n\n init(): void {\n this._loginSub.subscription = this.dbxFirebaseAuthService.onLogIn$.subscribe(() => {\n this.dbxFirebaseAnalyticsUserSource.analyticsUser$.pipe(filterMaybe(), first()).subscribe((analyticsUser) => {\n this.dbxAnalyticsService.sendUserLoginEvent(analyticsUser);\n });\n });\n\n this._logoutSub.subscription = this.dbxFirebaseAuthService.onLogOut$.subscribe(() => {\n this.dbxAnalyticsService.sendUserLogoutEvent(undefined, false); // do not clear user. Will be cleared by the analytics service\n });\n }\n\n destroy(): void {\n this._loginSub.destroy();\n this._logoutSub.destroy();\n }\n}\n","/**\n * Enables debug token generation for AppCheck by setting FIREBASE_APPCHECK_DEBUG_TOKEN in the browser's self/window.\n *\n * https://firebase.google.com/docs/app-check/web/debug-provider\n *\n * @param enable\n */\nexport function enableAppCheckDebugTokenGeneration(enable = true) {\n (self as unknown as { FIREBASE_APPCHECK_DEBUG_TOKEN: boolean }).FIREBASE_APPCHECK_DEBUG_TOKEN = enable;\n}\n","import { InjectionToken } from '@angular/core';\nimport { PersistentCacheSettings } from 'firebase/firestore';\nimport { FirebaseOptions } from 'firebase/app';\nimport { DbxFirebaseLoginModuleRootConfig } from '../auth/login/firebase.login.module';\nimport { DbxFirebaseAppCheckConfig } from './appcheck';\nimport { DbxFirebaseEmulatorsConfig } from './emulators';\n\nexport const DBX_FIREBASE_OPTIONS_TOKEN = new InjectionToken('DbxFirebaseOptions');\n\nexport interface DbxFirebaseOptions extends FirebaseOptions, Pick<DbxFirebaseLoginModuleRootConfig, 'enabledLoginMethods'> {\n emulators: DbxFirebaseEmulatorsConfig;\n /**\n * Firebase AppCheck handling\n */\n appCheck?: DbxFirebaseAppCheckConfig;\n /**\n * Passed to the Functions initialization to set the domain to use when sending requests.\n */\n functionsRegionOrCustomDomain?: string | undefined;\n /**\n * Whether or not to call enableMultiTabIndexedDbPersistence() for firestore at setup time.\n *\n * True by default.\n */\n enableMultiTabIndexedDbPersistence?: boolean;\n /**\n * Whether or not to call enableIndexedDbPersistence() for firestore at setup time.\n *\n * True by default if enableMultiTabIndexedDbPersistence is false.\n */\n enableIndexedDbPersistence?: boolean;\n /**\n * Optional persistent cache setting to pass to the Firestore cache.\n */\n persistentCacheSettings?: Omit<PersistentCacheSettings, 'tabManager'>;\n}\n","import { urlWithoutParameters } from '@dereekb/util';\nimport { DBX_FIREBASE_OPTIONS_TOKEN, DbxFirebaseOptions } from '../../firebase/options';\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';\nimport { getToken } from 'firebase/app-check';\nimport { Observable, switchMap, first, map, from } from 'rxjs';\nimport { Injectable, inject } from '@angular/core';\nimport { AppCheck } from '@angular/fire/app-check';\n\ninterface EnabledAppCheckRoute {\n isWildcard: boolean;\n match: string;\n}\n\n/**\n * HTTP Interceptor that sets the X-Firebase-AppCheck for any requests to the routes configured in DbxFirebaseOptions.\n */\n@Injectable()\nexport class DbxFirebaseAppCheckHttpInterceptor implements HttpInterceptor {\n private appCheck = inject(AppCheck);\n\n private _appCheckRoutes: EnabledAppCheckRoute[] = ((dbxFirebaseOptions: DbxFirebaseOptions) => {\n const { appCheck } = dbxFirebaseOptions;\n\n let routes: EnabledAppCheckRoute[] = [];\n\n if (appCheck?.disabled !== false) {\n routes = (appCheck?.appCheckRoutes ?? ['/api/*']).map((route) => {\n const wildcardIndex = route.indexOf('*');\n const isWildcard = wildcardIndex === route.length - 1;\n const match = isWildcard ? route.substring(0, wildcardIndex) : route;\n\n return {\n isWildcard,\n match\n };\n });\n }\n\n return routes;\n })(inject<DbxFirebaseOptions>(DBX_FIREBASE_OPTIONS_TOKEN));\n\n private _isEnabled: boolean = this._appCheckRoutes.length > 0;\n\n intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n let obs: Observable<HttpEvent<unknown>>;\n\n if (this._isEnabled) {\n obs = this.matchesAnyRoute(req.url).pipe(\n switchMap((isMatch) => {\n let nextEvent: Observable<HttpEvent<unknown>>;\n\n if (isMatch) {\n nextEvent = from(\n getToken(this.appCheck).then((appCheckTokenResponse) => {\n const token = appCheckTokenResponse.token;\n let nextRequest: HttpRequest<unknown> = req;\n\n if (token) {\n nextRequest = req.clone({\n headers: req.headers.set('X-Firebase-AppCheck', token)\n });\n }\n\n return nextRequest;\n })\n ).pipe(switchMap((nextRequest) => next.handle(nextRequest)));\n } else {\n nextEvent = next.handle(req);\n }\n\n return nextEvent;\n })\n );\n } else {\n obs = next.handle(req);\n }\n\n return obs;\n }\n\n private matchesAnyRoute(inputUrl: string): Observable<boolean> {\n const url = urlWithoutParameters(inputUrl);\n\n function isEnabledRouteMatch(enabledRoute: EnabledAppCheckRoute): boolean {\n if (enabledRoute.isWildcard) {\n return url.startsWith(enabledRoute.match);\n } else {\n return url === enabledRoute.match;\n }\n }\n\n return from(this._appCheckRoutes).pipe(\n first((route) => isEnabledRouteMatch(route), false),\n map((x) => Boolean(x))\n );\n }\n}\n","export abstract class DbxFirebaseLoginTermsConfig {\n abstract readonly tosUrl: string;\n abstract readonly privacyUrl: string;\n}\n","import { ClickableAnchor } from '@dereekb/dbx-core';\nimport { Component, inject } from '@angular/core';\nimport { DbxFirebaseLoginTermsConfig } from './login.terms';\n\n@Component({\n template: `\n <div class=\"dbx-firebase-login-terms-view\">\n <dbx-link [anchor]=\"tosAnchor\">Terms</dbx-link>\n <span class=\"dbx-link-spacer\"></span>\n <dbx-link [anchor]=\"privacyAnchor\">Privacy</dbx-link>\n </div>\n `\n})\nexport class DbxFirebaseLoginTermsSimpleComponent {\n readonly dbxFirebaseLoginTermsConfig = inject(DbxFirebaseLoginTermsConfig);\n\n readonly tosAnchor: ClickableAnchor = {\n url: this.dbxFirebaseLoginTermsConfig.tosUrl,\n target: '_blank'\n };\n\n readonly privacyAnchor: ClickableAnchor = {\n url: this.dbxFirebaseLoginTermsConfig.privacyUrl,\n target: '_blank'\n };\n}\n","import { TextPasswordFieldPasswordParameters } from '@dereekb/dbx-form';\n\nexport type DbxFirebaseAuthLoginPasswordConfig = TextPasswordFieldPasswordParameters;\n\nexport const DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG: DbxFirebaseAuthLoginPasswordConfig = {\n minLength: 6\n};\n","import { mapIterable, addToSet, removeFromSet, Maybe, ArrayOrValue, filterMaybeArrayValues } from '@dereekb/util';\nimport { Inject, Injectable, InjectionToken, Optional, Type, inject } from '@angular/core';\nimport { FirebaseLoginMethodCategory, FirebaseLoginMethodType, KnownFirebaseLoginMethodType } from './login';\nimport { DbxFirebaseLoginTermsSimpleComponent } from './login.terms.simple.component';\nimport { DbxFirebaseAuthLoginPasswordConfig, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG } from './login.password';\n\n/**\n * Default providers to inject.\n */\nexport const DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN = new InjectionToken('DefaultDbxFirebaseAuthLoginProviders');\nexport const DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN = new InjectionToken('DefaultDbxFirebaseAuthLoginTermsComponentClass');\nexport const DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN = new InjectionToken('DefaultDbxFirebaseAuthLoginPasswordConfig');\n\nexport interface DbxFirebaseAuthLoginProvider<D = unknown> {\n /**\n * Category for this login method.\n */\n readonly category?: FirebaseLoginMethodCategory;\n /**\n * Login method key for this type.\n */\n readonly loginMethodType: KnownFirebaseLoginMethodType | FirebaseLoginMethodType;\n /**\n * Login/Registration class to use.\n */\n readonly componentClass: Type<unknown>;\n /**\n * Custom registration type to use instead. If false, registration is not allowd for this type.\n */\n readonly registrationComponentClass?: Type<unknown> | false;\n /**\n * Custom data available to the components.\n *\n * Components are responsible for knowing the typing information of this data.\n */\n readonly componentData?: D;\n /**\n * Asset configuration for this type.\n */\n readonly assets: DbxFirebaseAuthLoginProviderAssets;\n}\n\n/**\n * Asset configurations for a provider.\n */\nexport interface DbxFirebaseAuthLoginProviderAssets {\n /**\n * URL of the logo to use.\n */\n readonly logoUrl?: string;\n /**\n * Icon to use in place of the logo.\n */\n readonly loginIcon?: string;\n /**\n * Log in text to display next to the logo.\n */\n readonly loginText?: string;\n /**\n * Optional background color to apply.\n */\n readonly backgroundColor?: string;\n /**\n * Optional background color to apply.\n */\n readonly textColor?: string;\n}\n\n/**\n * Service used for registering components used for logging in.\n *\n * Default providers can be configured by the DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN injectable value.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseAuthLoginService {\n readonly termsComponentClass = inject<Type<unknown>>(DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN) ?? DbxFirebaseLoginTermsSimpleComponent;\n\n private _enableAll = false;\n private _passwordConfig: DbxFirebaseAuthLoginPasswordConfig;\n private _providers = new Map<FirebaseLoginMethodType, DbxFirebaseAuthLoginProvider>();\n private _assets = new Map<FirebaseLoginMethodType, DbxFirebaseAuthLoginProviderAssets>();\n private _enabled = new Set<FirebaseLoginMethodType>();\n\n constructor(@Optional() @Inject(DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN) defaultProviders: DbxFirebaseAuthLoginProvider[], @Optional() @Inject(DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN) passwordConfig: DbxFirebaseAuthLoginPasswordConfig) {\n if (defaultProviders) {\n defaultProviders.forEach((x) => this.register(x, false));\n }\n\n this._passwordConfig = passwordConfig ?? DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG;\n }\n\n /**\n * Used to register a provider. If a provider is already registered, this will override it by default.\n *\n * @param provider\n * @param override\n */\n register(provider: DbxFirebaseAuthLoginProvider, override: boolean = true): boolean {\n if (override || !this._providers.has(provider.loginMethodType)) {\n this._providers.set(provider.loginMethodType, provider);\n\n if (provider.assets) {\n this.updateAssetsForProvider(provider.loginMethodType, provider.assets);\n }\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Updates the assets for a provider type.\n *\n * @param type\n * @param assets\n */\n updateAssetsForProvider(type: FirebaseLoginMethodType, assets: Partial<DbxFirebaseAuthLoginProviderAssets>): void {\n const current = this._assets.get(type);\n const update = {\n ...current,\n ...assets\n };\n\n this._assets.set(type, update);\n }\n\n // MARK: Enable/Disable\n /**\n * Enables all providers and any providers that will be registered.\n */\n setEnableAll(enableAll = true) {\n this._enableAll = enableAll;\n }\n\n clearEnabled(): void {\n this._enabled = new Set();\n }\n\n /**\n * Enables all of the specified types.\n *\n * @param types\n */\n enable(types: ArrayOrValue<FirebaseLoginMethodType>): void {\n addToSet(this._enabled, types);\n }\n\n disable(types: ArrayOrValue<FirebaseLoginMethodType>): void {\n removeFromSet(this._enabled, types);\n }\n\n // MARK: Get\n getRegisteredTypes(): FirebaseLoginMethodType[] {\n return Array.from(this._providers.keys());\n }\n\n getEnabledTypes(): FirebaseLoginMethodType[] {\n return this._enableAll ? this.getRegisteredTypes() : Array.from(this._enabled);\n }\n\n getLoginProvider(type: FirebaseLoginMethodType): Maybe<DbxFirebaseAuthLoginProvider> {\n return this._providers.get(type);\n }\n\n getLoginProviders(types: Iterable<FirebaseLoginMethodType>): DbxFirebaseAuthLoginProvider[] {\n return filterMaybeArrayValues(mapIterable(types ?? [], (x) => this._providers.get(x)));\n }\n\n getRegisterProvider(type: FirebaseLoginMethodType): Maybe<DbxFirebaseAuthLoginProvider> {\n return this._providers.get(type);\n }\n\n getRegisterProviders(types: Iterable<FirebaseLoginMethodType>): DbxFirebaseAuthLoginProvider[] {\n return filterMaybeArrayValues(mapIterable(types ?? [], (x) => this._providers.get(x))).filter((x) => x.registrationComponentClass !== false);\n }\n\n getProviderAssets(type: FirebaseLoginMethodType): Maybe<DbxFirebaseAuthLoginProviderAssets> {\n return this._assets.get(type);\n }\n\n getPasswordConfig() {\n return this._passwordConfig;\n }\n\n setPasswordConfig(passwordConfig: DbxFirebaseAuthLoginPasswordConfig) {\n this._passwordConfig = passwordConfig;\n }\n}\n","import { DbxInjectionContext } from '@dereekb/dbx-core';\n\n/**\n * Injection token for a DbxInjectionContext for DbxFirebaseLoginContext.\n */\nexport abstract class DbxFirebaseLoginContext extends DbxInjectionContext {}\n","import { Component, Directive, Input, OnInit, inject } from '@angular/core';\nimport { WorkUsingObservable } from '@dereekb/rxjs';\nimport { from } from 'rxjs';\nimport { DbxFirebaseAuthService } from '../service/firebase.auth.service';\nimport { FirebaseLoginMethodType } from './login';\nimport { DbxFirebaseAuthLoginService } from './login.service';\nimport { DbxFirebaseLoginContext } from './login.context';\n\nexport interface DbxFirebaseLoginButtonConfig {\n text: string;\n iconUrl?: string;\n icon?: string;\n buttonColor?: string;\n buttonTextColor?: string;\n handleLogin: () => Promise<unknown>;\n}\n\n/**\n * Login button and action.\n */\n@Component({\n selector: 'dbx-firebase-login-button',\n template: `\n <ng-container dbxAction [dbxActionHandler]=\"handleAction\" dbxActionValue [dbxActionSuccessHandler]=\"onActionSuccess\">\n <dbx-button dbxActionButton [customTextColor]=\"buttonTextColor\" [customButtonColor]=\"buttonColor\" [raised]=\"true\">\n <div class=\"dbx-firebase-login-button-content\">\n <span class=\"dbx-firebase-login-button-icon dbx-icon-spacer\">\n <img *ngIf=\"iconUrl\" [src]=\"iconUrl\" />\n <mat-icon *ngIf=\"icon\">{{ icon }}</mat-icon>\n </span>\n <span class=\"dbx-firebase-login-button-text\">{{ text }}</span>\n </div>\n </dbx-button>\n </ng-container>\n `,\n host: {\n class: 'dbx-firebase-login-button'\n }\n})\nexport class DbxFirebaseLoginButtonComponent {\n @Input()\n config!: DbxFirebaseLoginButtonConfig;\n\n get iconUrl() {\n return this.config?.iconUrl;\n }\n\n get icon() {\n return this.config?.icon;\n }\n\n get text() {\n return this.config?.text;\n }\n\n get buttonColor() {\n return this.config?.buttonColor ?? 'transparent';\n }\n\n get buttonTextColor() {\n return this.config?.buttonTextColor;\n }\n\n readonly handleAction: WorkUsingObservable = () => {\n const loginPromise = this.config.handleLogin();\n return from(loginPromise);\n };\n\n onActionSuccess = () => {\n // todo: show checkmark on success?\n };\n}\n\n@Component({\n selector: 'dbx-firebase-login-button-container',\n template: `\n <div class=\"dbx-firebase-login-button-container\">\n <ng-content></ng-content>\n </div>\n `\n})\nexport class DbxFirebaseLoginButtonContainerComponent {}\n\nexport const DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE = `\n <dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"config\"></dbx-firebase-login-button>\n </dbx-firebase-login-button-container>\n`;\n\n@Directive()\nexport abstract class AbstractConfiguredDbxFirebaseLoginButtonDirective implements OnInit {\n readonly dbxFirebaseAuthService = inject(DbxFirebaseAuthService);\n readonly dbxFirebaseAuthLoginService = inject(DbxFirebaseAuthLoginService);\n readonly dbxFirebaseLoginContext = inject(DbxFirebaseLoginContext);\n\n private _config!: DbxFirebaseLoginButtonConfig;\n\n abstract readonly loginProvider: FirebaseLoginMethodType;\n\n ngOnInit(): void {\n const assets = this.assetConfig;\n\n this._config = {\n text: assets.loginText ?? `<loginText not configured>`,\n icon: assets.loginIcon,\n iconUrl: assets.logoUrl,\n buttonColor: assets.backgroundColor,\n buttonTextColor: assets.textColor,\n handleLogin: () => this.handleLogin()\n };\n }\n\n abstract handleLogin(): Promise<unknown>;\n\n get providerConfig() {\n return this.dbxFirebaseAuthLoginService.getLoginProvider(this.loginProvider);\n }\n\n get assetConfig() {\n return this.dbxFirebaseAuthLoginService.getProviderAssets(this.loginProvider) ?? {};\n }\n\n get config() {\n return this._config;\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractConfiguredDbxFirebaseLoginButtonDirective, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE } from './login.button.component';\n\n@Component({\n selector: 'dbx-firebase-login-apple',\n template: DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE\n})\nexport class DbxFirebaseLoginAppleComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {\n readonly loginProvider = 'apple';\n\n handleLogin() {\n return this.dbxFirebaseAuthService.logInWithApple();\n }\n}\n","export type FirebaseLoginMethodType = string;\nexport type FirebaseLoginMethodCategory = string;\n\nexport type KnownFirebaseLoginMethodType = 'email' | 'phone' | 'google' | 'facebook' | 'github' | 'twitter' | 'apple' | 'microsoft' | 'anonymous'; // TODO: Add more\n\nexport const DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY = 'default';\nexport const OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY = 'oauth';\n\nexport type KnownFirebaseLoginMethodCategory = typeof DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY | typeof OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY;\n\nexport type DbxFirebaseLoginMode = 'login' | 'register';\n","import { Component } from '@angular/core';\nimport { AbstractConfiguredDbxFirebaseLoginButtonDirective, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE } from './login.button.component';\n\n@Component({\n selector: 'dbx-firebase-login-anonymous',\n template: DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE\n})\nexport class DbxFirebaseLoginAnonymousComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {\n readonly loginProvider = 'anonymous';\n\n handleLogin() {\n return this.dbxFirebaseAuthService.logInAsAnonymous();\n }\n}\n","import { Directive } from '@angular/core';\nimport { AbstractForwardDbxInjectionContextDirective } from '@dereekb/dbx-core';\nimport { DbxFirebaseLoginContext } from './login.context';\n\n/**\n * DbxFirebaseLoginContext implementation.\n */\n@Directive({\n selector: '[dbxFirebaseLoginContext]',\n providers: [\n {\n provide: DbxFirebaseLoginContext,\n useExisting: DbxFirebaseLoginContextDirective\n }\n ]\n})\nexport class DbxFirebaseLoginContextDirective extends AbstractForwardDbxInjectionContextDirective implements DbxFirebaseLoginContext {}\n","import { Observable, BehaviorSubject, map, shareReplay, combineLatest } from 'rxjs';\nimport { DbxFirebaseAuthLoginProvider, DbxFirebaseAuthLoginService } from './login.service';\nimport { DbxFirebaseLoginMode, FirebaseLoginMethodType, FirebaseLoginMethodCategory } from './login';\nimport { Component, Input, OnDestroy, inject } from '@angular/core';\nimport { containsStringAnyCase, Maybe, ArrayOrValue, excludeValuesFromArray, asArray } from '@dereekb/util';\nimport { DbxInjectionComponentConfig } from '@dereekb/dbx-core';\n\n/**\n * Pre-configured login component that displays all configured login types.\n */\n@Component({\n selector: 'dbx-firebase-login-list',\n template: `\n <div class=\"dbx-firebase-login-item\" *ngFor=\"let config of providerInjectionConfigs$ | async\">\n <dbx-injection [config]=\"config\"></dbx-injection>\n </div>\n `,\n host: {\n class: 'dbx-firebase-login-list'\n }\n})\nexport class DbxFirebaseLoginListComponent implements OnDestroy {\n readonly dbxFirebaseAuthLoginService = inject(DbxFirebaseAuthLoginService);\n\n private _loginMode = new BehaviorSubject<DbxFirebaseLoginMode>('login');\n private _inputProviderCategories = new BehaviorSubject<Maybe<ArrayOrValue<FirebaseLoginMethodCategory>>>(undefined);\n private _omitProviderTypes = new BehaviorSubject<Maybe<ArrayOrValue<FirebaseLoginMethodType>>>(undefined);\n private _inputProviderTypes = new BehaviorSubject<Maybe<ArrayOrValue<FirebaseLoginMethodType>>>(undefined);\n\n readonly providerTypes$: Observable<string[]> = combineLatest([this._inputProviderTypes, this._omitProviderTypes]).pipe(\n map(([providerTypes, omitProviderTypes]) => {\n const baseTypes = providerTypes ? asArray(providerTypes) : this.dbxFirebaseAuthLoginService.getEnabledTypes();\n const types = omitProviderTypes ? excludeValuesFromArray(baseTypes, asArray(omitProviderTypes)) : baseTypes;\n return types;\n }),\n shareReplay(1)\n );\n\n readonly providers$ = combineLatest([this.providerTypes$, this._inputProviderCategories]).pipe(\n map(([x, inputProviderCategories]) => {\n const providerCategories = asArray(inputProviderCategories);\n let providers = this.dbxFirebaseAuthLoginService.getLoginProviders(x);\n\n if (providerCategories.length) {\n const categories = new Set(providerCategories);\n providers = providers.filter((x) => containsStringAnyCase(categories, x.category ?? ''));\n }\n\n return providers;\n })\n );\n\n readonly providerInjectionConfigs$: Observable<DbxInjectionComponentConfig[]> = combineLatest([this._loginMode, this.providers$]).pipe(\n map(([mode, providers]: [DbxFirebaseLoginMode, DbxFirebaseAuthLoginProvider[]]) => {\n const mapFn = mode === 'register' ? (x: DbxFirebaseAuthLoginProvider) => ({ componentClass: x.registrationComponentClass ?? x.componentClass } as DbxInjectionComponentConfig) : (x: DbxFirebaseAuthLoginProvider) => ({ componentClass: x.componentClass } as DbxInjectionComponentConfig);\n return providers.map(mapFn);\n })\n );\n\n ngOnDestroy(): void {\n this._loginMode.complete();\n this._inputProviderCategories.complete();\n this._omitProviderTypes.complete();\n this._inputProviderTypes.complete();\n }\n\n @Input()\n set loginMode(loginMode: DbxFirebaseLoginMode) {\n this._loginMode.next(loginMode);\n }\n\n @Input()\n set providerTypes(providerTypes: Maybe<ArrayOrValue<FirebaseLoginMethodType>>) {\n this._inputProviderTypes.next(providerTypes);\n }\n\n @Input()\n set omitProviderTypes(providerTypes: Maybe<ArrayOrValue<FirebaseLoginMethodType>>) {\n this._omitProviderTypes.next(providerTypes);\n }\n\n @Input()\n set providerCategories(providerCategories: Maybe<ArrayOrValue<FirebaseLoginMethodCategory>>) {\n this._inputProviderCategories.next(providerCategories);\n }\n}\n","import { DbxFirebaseLoginMode, FirebaseLoginMethodCategory, FirebaseLoginMethodType } from './login';\nimport { Component, Input } from '@angular/core';\nimport { ArrayOrValue, type Maybe } from '@dereekb/util';\n\n/**\n * Pre-configured login component that displays all configured login types.\n */\n@Component({\n selector: 'dbx-firebase-login',\n template: `\n <ng-container *dbxInjectionContext dbxFirebaseLoginContext>\n <dbx-firebase-login-list [providerTypes]=\"providerTypes\" [omitProviderTypes]=\"omitProviderTypes\" [providerCategories]=\"providerCategories\" [loginMode]=\"loginMode\"></dbx-firebase-login-list>\n </ng-container>\n `,\n host: {\n class: 'd-block dbx-firebase-login',\n '[class]': '{ \"dbx-firebase-register\": loginMode === \"register\" }'\n }\n})\nexport class DbxFirebaseLoginComponent {\n @Input()\n loginMode: DbxFirebaseLoginMode = 'login';\n\n @Input()\n providerTypes: Maybe<ArrayOrValue<FirebaseLoginMethodType>>;\n\n @Input()\n omitProviderTypes: Maybe<ArrayOrValue<FirebaseLoginMethodType>>;\n\n @Input()\n providerCategories: Maybe<ArrayOrValue<FirebaseLoginMethodCategory>>;\n}\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { TextPasswordFieldConfig, provideFormlyContext, AbstractAsyncFormlyFormDirective, usernamePasswordLoginFields, DefaultUsernameLoginFieldsValue } from '@dereekb/dbx-form';\nimport { type Maybe } from '@dereekb/util';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { BehaviorSubject, map, Observable } from 'rxjs';\nimport { DbxFirebaseLoginMode } from './login';\n\nexport type DbxFirebaseEmailFormValue = DefaultUsernameLoginFieldsValue;\n\nexport interface DbxFirebaseEmailFormConfig {\n loginMode: DbxFirebaseLoginMode;\n passwordConfig?: TextPasswordFieldConfig;\n}\n\n@Component({\n template: `\n <dbx-formly></dbx-formly>\n `,\n selector: 'dbx-firebase-email-form',\n providers: [provideFormlyContext()]\n})\nexport class DbxFirebaseEmailFormComponent extends AbstractAsyncFormlyFormDirective<DbxFirebaseEmailFormValue> implements OnDestroy {\n private _config = new BehaviorSubject<DbxFirebaseEmailFormConfig>({ loginMode: 'login' });\n\n readonly fields$: Observable<Maybe<FormlyFieldConfig[]>> = this._config.pipe(\n map(({ loginMode = 'login', passwordConfig }) => {\n const fields: FormlyFieldConfig[] = usernamePasswordLoginFields({ username: 'email', password: passwordConfig, verifyPassword: loginMode === 'register' });\n return fields;\n })\n );\n\n @Input()\n set config(config: DbxFirebaseEmailFormConfig) {\n this._config.next(config);\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this._config.complete();\n }\n}\n","import { Component } from '@angular/core';\nimport { provideFormlyContext, AbstractSyncFormlyFormDirective, emailField } from '@dereekb/dbx-form';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\n\nexport interface DbxFirebaseEmailRecoveryFormValue {\n email: string;\n}\n\n@Component({\n template: `\n <dbx-formly></dbx-formly>\n `,\n selector: 'dbx-firebase-email-recovery-form',\n providers: [provideFormlyContext()]\n})\nexport class DbxFirebaseEmailRecoveryFormComponent extends AbstractSyncFormlyFormDirective<DbxFirebaseEmailRecoveryFormValue> {\n readonly fields: FormlyFieldConfig[] = [emailField({ required: true })];\n}\n","import { DbxFirebaseEmailRecoveryFormValue } from './login.email.recovery.form.component';\nimport { DBX_INJECTION_COMPONENT_DATA, ClickableAnchor, DbxActionSuccessHandlerFunction } from '@dereekb/dbx-core';\nimport { WorkUsingObservable, WorkUsingContext } from '@dereekb/rxjs';\nimport { DbxFirebaseAuthService } from './../service/firebase.auth.service';\nimport { firstValueFrom, from, tap, BehaviorSubject } from 'rxjs';\nimport { Component, EventEmitter, OnDestroy, inject } from '@angular/core';\nimport { DbxFirebaseLoginContext } from './login.context';\nimport { DbxFirebaseEmailFormValue, DbxFirebaseEmailFormConfig } from './login.email.form.component';\nimport { DbxFirebaseLoginMode } from './login';\nimport { firebaseAuthErrorToReadableError } from '@dereekb/firebase';\nimport { type Maybe } from '@dereekb/util';\n\nexport interface DbxFirebaseLoginEmailContentComponentConfig extends DbxFirebaseEmailFormConfig {\n loginMode: DbxFirebaseLoginMode;\n}\n\nexport type DbxFirebaseLoginEmailContentMode = 'login' | 'recover' | 'recoversent';\n\n@Component({\n templateUrl: './login.email.content.component.html'\n})\nexport class DbxFirebaseLoginEmailContentComponent implements OnDestroy {\n readonly dbxFirebaseAuthService = inject(DbxFirebaseAuthService);\n readonly config = inject<DbxFirebaseLoginEmailContentComponentConfig>(DBX_INJECTION_COMPONENT_DATA);\n\n readonly formConfig: DbxFirebaseEmailFormConfig = {\n loginMode: this.config.loginMode,\n passwordConfig: this.config.passwordConfig\n };\n\n emailFormValue: Maybe<DbxFirebaseEmailFormValue>;\n recoveryFormValue: Maybe<DbxFirebaseEmailRecoveryFormValue>;\n\n private _emailMode = new BehaviorSubject<DbxFirebaseLoginEmailContentMode>('login');\n readonly emailMode$ = this._emailMode.asObservable();\n\n readonly forgotAnchor: ClickableAnchor = {\n onClick: () => {\n this.openRecovery();\n }\n };\n\n readonly doneOrCancelled = new EventEmitter<boolean>();\n\n static openEmailLoginContext(dbxFirebaseLoginContext: DbxFirebaseLoginContext, config: DbxFirebaseLoginEmailContentComponentConfig): Promise<boolean> {\n return dbxFirebaseLoginContext.showContext({\n config: {\n componentClass: DbxFirebaseLoginEmailContentComponent,\n data: config\n },\n use: (instance) => firstValueFrom(instance.doneOrCancelled)\n });\n }\n\n ngOnDestroy(): void {\n this._emailMode.complete();\n }\n\n get loginMode() {\n return this.config.loginMode;\n }\n\n get isLoginMode() {\n return this.loginMode === 'login';\n }\n\n get isRegisterMode() {\n return this.loginMode === 'register';\n }\n\n get buttonText() {\n return this.config.loginMode === 'register' ? 'Register' : 'Log In';\n }\n\n readonly handleLoginAction: WorkUsingObservable<DbxFirebaseEmailFormValue> = (value: DbxFirebaseEmailFormValue) => {\n this.emailFormValue = value;\n this.recoveryFormValue = { email: value.username }; // cache value for recovery\n\n let result;\n\n if (this.loginMode === 'register') {\n result = this.dbxFirebaseAuthService.registerWithEmailAndPassword(value.username, value.password);\n } else {\n result = this.dbxFirebaseAuthService.logInWithEmailAndPassword(value.username, value.password).catch((error) => {\n throw firebaseAuthErrorToReadableError(error);\n });\n }\n\n return from(result).pipe(\n tap(() => {\n this.doneOrCancelled.next(true);\n })\n );\n };\n\n // MARK: Recovery\n openRecovery() {\n this._emailMode.next('recover');\n }\n\n readonly handleRecoveryAction: WorkUsingContext<DbxFirebaseEmailRecoveryFormValue> = (value: DbxFirebaseEmailRecoveryFormValue, context) => {\n this.recoveryFormValue = value;\n this.emailFormValue = { username: value.email, password: '' };\n context.startWorkingWithPromise(this.dbxFirebaseAuthService.sendPasswordResetEmail(value.email));\n };\n\n // MARK: Recovering\n readonly handleRecoverySuccess: DbxActionSuccessHandlerFunction = (x) => {\n this._emailMode.next('recoversent');\n };\n\n clickedRecoveryAcknowledged() {\n this._emailMode.next('login');\n }\n\n // MARK: Cancel\n onCancel() {\n this.doneOrCancelled.next(false);\n }\n\n onCancelReset() {\n this.doneOrCancelled.next(false);\n }\n}\n","<div class=\"dbx-firebase-login-email-content\">\n <ng-container [ngSwitch]=\"emailMode$ | async\">\n <ng-container *ngSwitchCase=\"'login'\">\n <ng-container *ngTemplateOutlet=\"loginView\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'recover'\">\n <ng-container *ngTemplateOutlet=\"resetPassword\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'recoversent'\">\n <ng-container *ngTemplateOutlet=\"resetPasswordSent\"></ng-container>\n </ng-container>\n </ng-container>\n</div>\n\n<!-- Login View -->\n<ng-template #loginView>\n <ng-container dbxAction [dbxActionHandler]=\"handleLoginAction\">\n <dbx-firebase-email-form [config]=\"formConfig\" dbxActionForm [dbxFormSource]=\"emailFormValue\"></dbx-firebase-email-form>\n <div class=\"dbx-firebase-login-email-forgot-prompt\" *ngIf=\"isLoginMode\">\n <dbx-link [anchor]=\"forgotAnchor\">Forgot Password?</dbx-link>\n </div>\n <div class=\"dbx-flex\">\n <dbx-button class=\"dbx-button-wide\" [text]=\"buttonText\" [raised]=\"true\" color=\"primary\" dbxActionButton></dbx-button>\n <dbx-button-spacer></dbx-button-spacer>\n <span class=\"dbx-spacer\"></span>\n <button mat-flat-button (click)=\"onCancel()\">Cancel</button>\n </div>\n <dbx-error dbxActionError></dbx-error>\n </ng-container>\n</ng-template>\n\n<!-- Reset Password View -->\n<ng-template #resetPassword>\n <div class=\"dbx-firebase-login-email-content-recovery\" dbxAction [dbxActionHandler]=\"handleRecoveryAction\" [dbxActionSuccessHandler]=\"handleRecoverySuccess\">\n <dbx-firebase-email-recovery-form dbxActionForm [dbxFormSource]=\"recoveryFormValue\"></dbx-firebase-email-recovery-form>\n <p class=\"dbx-hint\">An email will be sent to the above address to help you reset your password.</p>\n <div class=\"dbx-flex\">\n <dbx-button class=\"dbx-button-wide\" text=\"Send Recovery Email\" [raised]=\"true\" color=\"primary\" dbxActionButton></dbx-button>\n <span class=\"dbx-spacer\"></span>\n <button mat-flat-button (click)=\"onCancelReset()\">Cancel Recovery</button>\n </div>\n <dbx-error dbxActionError></dbx-error>\n </div>\n</ng-template>\n\n<!-- Reset Password Sent -->\n<ng-template #resetPasswordSent>\n <div class=\"dbx-firebase-login-email-content-recovery-sent\">\n <p class=\"dbx-hint\">A recovery email was sent to the specified address. Please check your email for next steps.</p>\n <button mat-raised-button (click)=\"clickedRecoveryAcknowledged()\">Ok</button>\n </div>\n</ng-template>\n","import { Component } from '@angular/core';\nimport { AbstractConfiguredDbxFirebaseLoginButtonDirective, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE } from './login.button.component';\nimport { DbxFirebaseLoginEmailContentComponent } from './login.email.content.component';\n\n@Component({\n selector: 'dbx-firebase-login-email',\n template: DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE\n})\nexport class DbxFirebaseLoginEmailComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {\n readonly loginProvider = 'email';\n\n handleLogin() {\n return DbxFirebaseLoginEmailContentComponent.openEmailLoginContext(this.dbxFirebaseLoginContext, { loginMode: 'login', passwordConfig: this.dbxFirebaseAuthLoginService.getPasswordConfig() });\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractConfiguredDbxFirebaseLoginButtonDirective, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE } from './login.button.component';\n\n@Component({\n selector: 'dbx-firebase-login-facebook',\n template: DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE\n})\nexport class DbxFirebaseLoginFacebookComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {\n readonly loginProvider = 'facebook';\n\n handleLogin() {\n return this.dbxFirebaseAuthService.logInWithFacebook();\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractConfiguredDbxFirebaseLoginButtonDirective, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE } from './login.button.component';\n\n@Component({\n selector: 'dbx-firebase-login-google',\n template: DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE\n})\nexport class DbxFirebaseLoginGoogleComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {\n readonly loginProvider = 'google';\n\n handleLogin() {\n return this.dbxFirebaseAuthService.logInWithGoogle();\n }\n}\n","import { FirebaseLoginMethodCategory, FirebaseLoginMethodType } from './login';\nimport { Component, Input } from '@angular/core';\nimport { ArrayOrValue, type Maybe } from '@dereekb/util';\n\n/**\n * Pre-configured register component that displays all configured login types and their registration components.\n */\n@Component({\n selector: 'dbx-firebase-register',\n template: `\n <dbx-firebase-login loginMode=\"register\" [providerTypes]=\"providerTypes\" [omitProviderTypes]=\"omitProviderTypes\" [providerCategories]=\"providerCategories\"></dbx-firebase-login>\n `\n})\nexport class DbxFirebaseRegisterComponent {\n @Input()\n providerTypes: Maybe<ArrayOrValue<FirebaseLoginMethodType>>;\n\n @Input()\n omitProviderTypes: Maybe<ArrayOrValue<FirebaseLoginMethodType>>;\n\n @Input()\n providerCategories: Maybe<ArrayOrValue<FirebaseLoginMethodCategory>>;\n}\n","import { Component } from '@angular/core';\nimport { AbstractConfiguredDbxFirebaseLoginButtonDirective, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE } from './login.button.component';\n\n@Component({\n selector: 'dbx-firebase-login-github',\n template: DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE\n})\nexport class DbxFirebaseLoginGitHubComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {\n readonly loginProvider = 'github';\n\n handleLogin() {\n return this.dbxFirebaseAuthService.logInWithGithub();\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractConfiguredDbxFirebaseLoginButtonDirective, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE } from './login.button.component';\n\n@Component({\n selector: 'dbx-firebase-login-twitter',\n template: DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE\n})\nexport class DbxFirebaseLoginTwitterComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {\n readonly loginProvider = 'twitter';\n\n handleLogin() {\n return this.dbxFirebaseAuthService.logInWithTwitter();\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractConfiguredDbxFirebaseLoginButtonDirective, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE } from './login.button.component';\n\n@Component({\n selector: 'dbx-firebase-login-microsoft',\n template: DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE\n})\nexport class DbxFirebaseLoginMicrosoftComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {\n readonly loginProvider = 'microsoft';\n\n handleLogin() {\n return this.dbxFirebaseAuthService.logInWithMicrosoft();\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractConfiguredDbxFirebaseLoginButtonDirective } from './login.button.component';\nimport { DbxFirebaseLoginEmailContentComponent } from './login.email.content.component';\n\n@Component({\n templateUrl: './register.email.component.html'\n})\nexport class DbxFirebaseRegisterEmailComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {\n readonly loginProvider = 'email';\n\n handleLogin() {\n return DbxFirebaseLoginEmailContentComponent.openEmailLoginContext(this.dbxFirebaseLoginContext, { loginMode: 'register', passwordConfig: this.dbxFirebaseAuthLoginService.getPasswordConfig() });\n }\n}\n","<dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"config\"></dbx-firebase-login-button>\n</dbx-firebase-login-button-container>\n","import { DbxInjectionComponentConfig } from '@dereekb/dbx-core';\n\nimport { Component, inject } from '@angular/core';\nimport { DbxFirebaseAuthLoginService } from './login.service';\n\n@Component({\n selector: 'dbx-firebase-login-terms',\n template: `\n <dbx-injection [config]=\"config\"></dbx-injection>\n `,\n host: {\n class: 'dbx-firebase-login-terms d-block'\n }\n})\nexport class DbxFirebaseLoginTermsComponent {\n readonly dbxFirebaseAuthLoginService = inject(DbxFirebaseAuthLoginService);\n\n readonly config: DbxInjectionComponentConfig = {\n componentClass: this.dbxFirebaseAuthLoginService.termsComponentClass\n };\n}\n","import { ClickableAnchor } from '@dereekb/dbx-core';\nimport { Component, EventEmitter, Output } from '@angular/core';\n\n@Component({\n selector: 'dbx-firebase-login-context-back-button',\n template: `\n <dbx-link [anchor]=\"anchor\">Choose other login method.</dbx-link>\n `\n})\nexport class DbxFirebaseLoginContextBackButtonComponent {\n @Output()\n readonly cancelLogin = new EventEmitter<void>();\n\n readonly anchor: ClickableAnchor = {\n onClick: () => this.cancelLogin.emit()\n };\n}\n","import { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { DbxFirebaseLoginAppleComponent } from './login.apple.component';\nimport { DbxFirebaseLoginButtonComponent, DbxFirebaseLoginButtonContainerComponent } from './login.button.component';\nimport { Inject, ModuleWithProviders, NgModule, Type, inject } from '@angular/core';\nimport { DbxInjectionComponentModule } from '@dereekb/dbx-core';\nimport { DbxActionModule, DbxRouterAnchorModule, DbxButtonModule, DbxReadableErrorModule } from '@dereekb/dbx-web';\nimport { FirebaseLoginMethodType, KnownFirebaseLoginMethodType, OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY, DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY } from './login';\nimport { DbxFirebaseLoginAnonymousComponent } from './login.anonymous.component';\nimport { DbxFirebaseLoginComponent } from './login.component';\nimport { DbxFirebaseLoginEmailComponent } from './login.email.component';\nimport { DbxFirebaseLoginFacebookComponent } from './login.facebook.component';\nimport { DbxFirebaseLoginGoogleComponent } from './login.google.component';\nimport { DbxFirebaseAuthLoginProvider, DbxFirebaseAuthLoginService, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN } from './login.service';\nimport { DbxFirebaseRegisterComponent } from './register.component';\nimport { DbxFirebaseLoginGitHubComponent } from './login.github.component';\nimport { DbxFirebaseLoginTwitterComponent } from './login.twitter.component';\nimport { DbxFirebaseLoginMicrosoftComponent } from './login.microsoft.component';\nimport { DbxFirebaseLoginListComponent } from './login.list.component';\nimport { DbxFirebaseRegisterEmailComponent } from './register.email.component';\nimport { DbxFirebaseLoginContextDirective } from './login.context.directive';\nimport { DbxFirebaseLoginEmailContentComponent } from './login.email.content.component';\nimport { DbxFormActionModule, DbxFormFormlyTextFieldModule, DbxFormIoModule, DbxFormlyModule, DbxFormModule } from '@dereekb/dbx-form';\nimport { DbxFirebaseEmailFormComponent } from './login.email.form.component';\nimport { DbxFirebaseLoginTermsComponent } from './login.terms.component';\nimport { DbxFirebaseLoginTermsSimpleComponent } from './login.terms.simple.component';\nimport { DbxFirebaseLoginContextBackButtonComponent } from './login.context.back.component';\nimport { DbxFirebaseEmailRecoveryFormComponent } from './login.email.recovery.form.component';\nimport { DbxFirebaseAuthLoginPasswordConfig } from './login.password';\nimport { DbxFirebaseLoginTermsConfig } from './login.terms';\n\nexport abstract class DbxFirebaseLoginModuleRootConfig extends DbxFirebaseLoginTermsConfig {\n abstract readonly enabledLoginMethods: FirebaseLoginMethodType[] | true;\n abstract readonly termsComponentClass?: Type<unknown>;\n abstract readonly passwordConfig?: DbxFirebaseAuthLoginPasswordConfig;\n}\n\nexport function defaultFirebaseAuthLoginProvidersFactory(): DbxFirebaseAuthLoginProvider[] {\n // NOTE: Asset URLS are from Firebase.\n // https://firebase.google.com/docs/auth/web/firebaseui\n const baseFirebaseJSUrl = `https://www.gstatic.com/firebasejs/ui/2.0.0/images/auth`;\n\n // NOTE: Colors are from https://brandcolors.net/\n\n return [\n {\n category: DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY,\n loginMethodType: 'email' as KnownFirebaseLoginMethodType,\n componentClass: DbxFirebaseLoginEmailComponent,\n registrationComponentClass: DbxFirebaseRegisterEmailComponent,\n assets: {\n logoUrl: `${baseFirebaseJSUrl}/mail.svg`,\n loginText: 'Continue with Email',\n backgroundColor: '#ea4335', // gmail red color\n textColor: '#FFF'\n }\n },\n {\n category: OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY,\n loginMethodType: 'google' as KnownFirebaseLoginMethodType,\n componentClass: DbxFirebaseLoginGoogleComponent,\n assets: {\n logoUrl: `${baseFirebaseJSUrl}/google.svg`,\n loginText: 'Continue with Google',\n backgroundColor: '#FFF',\n textColor: '#757575'\n }\n },\n {\n category: OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY,\n loginMethodType: 'facebook' as KnownFirebaseLoginMethodType,\n componentClass: DbxFirebaseLoginFacebookComponent,\n assets: {\n logoUrl: `${baseFirebaseJSUrl}/facebook.svg`,\n loginText: 'Continue with Facebook',\n backgroundColor: '#4267B2',\n textColor: '#FFF'\n }\n },\n {\n category: OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY,\n loginMethodType: 'twitter' as KnownFirebaseLoginMethodType,\n componentClass: DbxFirebaseLoginTwitterComponent,\n assets: {\n logoUrl: `${baseFirebaseJSUrl}/twitter.svg`,\n loginText: 'Continue with Twitter',\n backgroundColor: '#1da1f2',\n textColor: '#FFF'\n }\n },\n {\n category: OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY,\n loginMethodType: 'github' as KnownFirebaseLoginMethodType,\n componentClass: DbxFirebaseLoginGitHubComponent,\n assets: {\n logoUrl: `${baseFirebaseJSUrl}/github.svg`,\n loginText: 'Continue with Github',\n backgroundColor: '#333',\n textColor: '#FFF'\n }\n },\n /*{\n category: OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY,\n loginMethodType: 'apple' as KnownFirebaseLoginMethodType,\n componentClass: DbxFirebaseLoginGitHubComponent,\n assets: {\n logoUrl: `${baseFirebaseJSUrl}/apple.svg`,\n loginText: 'Continue with Apple',\n backgroundColor: '#333',\n textColor: '#FFF'\n }\n }, {\n category: OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY,\n loginMethodType: 'microsoft' as KnownFirebaseLoginMethodType,\n componentClass: DbxFirebaseLoginGitHubComponent,\n assets: {\n logoUrl: `${baseFirebaseJSUrl}/microsoft.svg`,\n loginText: 'Continue with Microsoft',\n backgroundColor: '#ea3e23',\n textColor: '#FFF'\n }\n },*/ {\n category: DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY,\n loginMethodType: 'anonymous' as KnownFirebaseLoginMethodType,\n componentClass: DbxFirebaseLoginAnonymousComponent,\n assets: {\n loginIcon: 'account_circle',\n loginText: 'Continue as Guest',\n backgroundColor: '#000',\n textColor: '#FFF'\n }\n }\n ];\n}\n\n/**\n * Contains components related to logging in.\n */\n@NgModule({\n imports: [CommonModule, MatIconModule, MatButtonModule, DbxRouterAnchorModule, DbxFormIoModule, DbxFormModule, DbxFormlyModule, DbxFormActionModule, DbxFormFormlyTextFieldModule, DbxReadableErrorModule, DbxActionModule, DbxButtonModule, DbxInjectionComponentModule],\n declarations: [\n DbxFirebaseLoginComponent,\n DbxFirebaseLoginContextDirective,\n DbxFirebaseLoginContextBackButtonComponent,\n DbxFirebaseRegisterComponent,\n DbxFirebaseLoginListComponent,\n DbxFirebaseLoginButtonComponent,\n DbxFirebaseLoginButtonContainerComponent,\n DbxFirebaseLoginEmailComponent,\n DbxFirebaseLoginEmailContentComponent,\n DbxFirebaseEmailFormComponent,\n DbxFirebaseEmailRecoveryFormComponent,\n DbxFirebaseRegisterEmailComponent,\n DbxFirebaseLoginGoogleComponent,\n DbxFirebaseLoginGitHubComponent,\n DbxFirebaseLoginTwitterComponent,\n DbxFirebaseLoginAppleComponent,\n DbxFirebaseLoginMicrosoftComponent,\n DbxFirebaseLoginFacebookComponent,\n DbxFirebaseLoginAnonymousComponent,\n DbxFirebaseLoginTermsComponent,\n DbxFirebaseLoginTermsSimpleComponent\n ],\n exports: [\n DbxFirebaseLoginComponent,\n DbxFirebaseLoginContextDirective,\n DbxFirebaseLoginContextBackButtonComponent,\n DbxFirebaseRegisterComponent,\n DbxFirebaseLoginListComponent,\n DbxFirebaseLoginButtonComponent,\n DbxFirebaseLoginButtonContainerComponent,\n DbxFirebaseLoginEmailComponent,\n DbxFirebaseLoginEmailContentComponent,\n DbxFirebaseEmailFormComponent,\n DbxFirebaseEmailRecoveryFormComponent,\n DbxFirebaseRegisterEmailComponent,\n DbxFirebaseLoginGoogleComponent,\n DbxFirebaseLoginGitHubComponent,\n DbxFirebaseLoginTwitterComponent,\n DbxFirebaseLoginAppleComponent,\n DbxFirebaseLoginMicrosoftComponent,\n DbxFirebaseLoginFacebookComponent,\n DbxFirebaseLoginAnonymousComponent,\n DbxFirebaseLoginTermsComponent,\n DbxFirebaseLoginTermsSimpleComponent\n ],\n providers: []\n})\nexport class DbxFirebaseLoginModule {\n readonly dbxFirebaseAuthLoginService = inject(DbxFirebaseAuthLoginService);\n\n constructor(@Inject(DbxFirebaseLoginModuleRootConfig) config: DbxFirebaseLoginModuleRootConfig) {\n if (config.enabledLoginMethods === true) {\n this.dbxFirebaseAuthLoginService.setEnableAll();\n } else {\n this.dbxFirebaseAuthLoginService.enable(config.enabledLoginMethods); // enable the types in the service.\n }\n }\n\n static forRoot(config: DbxFirebaseLoginModuleRootConfig): ModuleWithProviders<DbxFirebaseLoginModule> {\n return {\n ngModule: DbxFirebaseLoginModule,\n providers: [\n {\n provide: DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN,\n useFactory: defaultFirebaseAuthLoginProvidersFactory\n },\n {\n provide: DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN,\n useValue: config.termsComponentClass\n },\n {\n provide: DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN,\n useValue: config.passwordConfig\n },\n {\n provide: DbxFirebaseLoginModuleRootConfig,\n useValue: config\n },\n {\n provide: DbxFirebaseLoginTermsConfig,\n useValue: config\n }\n ]\n };\n }\n}\n","import { addToSetCopy, AuthClaims, AuthClaimsObject, AuthRoleClaimsService, AuthRoleSet, filterMaybeArrayValues } from '@dereekb/util';\nimport { map, Observable, switchMap } from 'rxjs';\nimport { authUserStateFromFirebaseAuthServiceFunction, stateFromTokenForLoggedInUserFunction, StateFromTokenFunction } from './firebase.auth.rxjs';\nimport { AuthUserStateObsFunction, DbxFirebaseAuthService, DbxFirebaseAuthServiceDelegate, DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE } from './firebase.auth.service';\n\nexport interface AuthRolesObsWithClaimsServiceConfig<T extends AuthClaimsObject> extends Partial<Pick<DbxFirebaseAuthServiceDelegate, 'isAdminInAuthRoleSet' | 'authUserStateObs'>> {\n /**\n * (Optional) alternative to supplying authUserStateObs. Is passed to authUserStateFromFirebaseAuthService.\n */\n readonly stateForLoggedInUser?: AuthUserStateObsFunction;\n /**\n * (Optional) alternative to supplying authUserStateObs.\n */\n readonly stateForLoggedInUserToken?: StateFromTokenFunction;\n /**\n * Claims service to use for decoding.\n */\n readonly claimsService: AuthRoleClaimsService<T>;\n /**\n * Whether or not to also add the current AuthUserState value to decoded roles.\n */\n readonly addAuthUserStateToRoles?: boolean;\n}\n\nexport function authRolesObsWithClaimsService<T extends AuthClaimsObject>(config: AuthRolesObsWithClaimsServiceConfig<T>): (dbxFirebaseAuthService: DbxFirebaseAuthService) => Observable<AuthRoleSet> {\n const { addAuthUserStateToRoles: addAuthUserState, claimsService } = config;\n\n return (dbxFirebaseAuthService: DbxFirebaseAuthService): Observable<AuthRoleSet> => {\n let obs = dbxFirebaseAuthService.idTokenResult$.pipe(map((x) => claimsService.toRoles(x.claims as AuthClaims<T>)));\n\n if (addAuthUserState) {\n obs = obs.pipe(switchMap((authRoleSet: AuthRoleSet) => dbxFirebaseAuthService.authUserState$.pipe(map((userState) => addToSetCopy(authRoleSet, [userState])))));\n }\n\n return obs;\n };\n}\n\nexport type DefaultDbxFirebaseAuthServiceDelegateWithClaimsServiceConfig<T extends AuthClaimsObject> = AuthRolesObsWithClaimsServiceConfig<T>;\n\nexport function defaultDbxFirebaseAuthServiceDelegateWithClaimsService<T extends AuthClaimsObject>(config: DefaultDbxFirebaseAuthServiceDelegateWithClaimsServiceConfig<T>): DbxFirebaseAuthServiceDelegate {\n if (filterMaybeArrayValues([config.stateForLoggedInUser, config.stateForLoggedInUserToken, config.authUserStateObs]).length > 1) {\n throw new Error('Cannot specify a combination of \"stateForLoggedInUserToken\", \"stateForLoggedInUser\" and \"authUserStateObs\". Must specify one at max.');\n }\n\n const authUserStateObs = config.authUserStateObs ?? authUserStateFromFirebaseAuthServiceFunction(config.stateForLoggedInUserToken ? stateFromTokenForLoggedInUserFunction(config.stateForLoggedInUserToken) : config.stateForLoggedInUser);\n\n return {\n authUserStateObs,\n isAdminInAuthRoleSet: config.isAdminInAuthRoleSet ?? DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE.isAdminInAuthRoleSet,\n authRolesObs: authRolesObsWithClaimsService(config),\n isOnboarded: DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE.isOnboarded,\n authRoleClaimsService: config.claimsService as unknown as AuthRoleClaimsService<AuthClaimsObject>\n };\n}\n","import { Injector, ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { DbxAuthService } from '@dereekb/dbx-core';\nimport { DbxFirebaseAuthService, DbxFirebaseAuthServiceDelegate } from './service/firebase.auth.service';\n\nexport interface DbxFirebaseAuthModuleConfig {\n delegateFactory?: (injector: Injector) => DbxFirebaseAuthServiceDelegate;\n}\n\n@NgModule({})\nexport class DbxFirebaseAuthModule {\n static forRoot(config: DbxFirebaseAuthModuleConfig): ModuleWithProviders<DbxFirebaseAuthModule> {\n const providers: Provider[] = [\n DbxFirebaseAuthService,\n {\n provide: DbxAuthService,\n useExisting: DbxFirebaseAuthService\n }\n ];\n\n if (config.delegateFactory) {\n providers.push({\n provide: DbxFirebaseAuthServiceDelegate,\n useFactory: config.delegateFactory,\n deps: [Injector]\n });\n }\n\n return {\n ngModule: DbxFirebaseAuthModule,\n providers\n };\n }\n}\n","import { iterableToArray } from '@dereekb/util';\nimport { Inject, Injectable, InjectionToken, Optional, inject } from '@angular/core';\nimport { DbxWidgetService, DbxWidgetType } from '@dereekb/dbx-web';\nimport { DbxFirebaseDevelopmentWidgetEntry } from './development.widget';\n\n/**\n * Default providers to inject.\n */\nexport const DEFAULT_FIREBASE_DEVELOPMENT_WIDGET_PROVIDERS_TOKEN = new InjectionToken('DefaultDbxFirebaseDevelopmentWidgetEntries');\n\n/**\n * Service used for registering widgets used for development.\n *\n * Default providers can be configured by the DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN injectable value.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseDevelopmentWidgetService {\n readonly dbxWidgetService = inject(DbxWidgetService);\n\n private readonly _entries = new Map<DbxWidgetType, DbxFirebaseDevelopmentWidgetEntry>();\n\n constructor(@Optional() @Inject(DEFAULT_FIREBASE_DEVELOPMENT_WIDGET_PROVIDERS_TOKEN) defaultEntries: DbxFirebaseDevelopmentWidgetEntry[]) {\n if (defaultEntries) {\n defaultEntries.forEach((x) => this.register(x, false));\n }\n }\n\n /**\n * Used to register a provider. If a provider is already registered, this will override it by default.\n *\n * @param provider\n * @param override\n */\n register(provider: DbxFirebaseDevelopmentWidgetEntry, override: boolean = true): boolean {\n const type = provider.widget.type;\n\n if (override || !this._entries.has(type)) {\n this._entries.set(type, provider);\n this.dbxWidgetService.register(provider.widget, override);\n return true;\n } else {\n return false;\n }\n }\n\n getEntryWidgetIdentifiers(): DbxWidgetType[] {\n return Array.from(this._entries.keys());\n }\n\n getEntries(): DbxFirebaseDevelopmentWidgetEntry[] {\n return iterableToArray(this._entries.values());\n }\n}\n","import { DbxAuthService } from '@dereekb/dbx-core';\nimport { tap, switchMap, BehaviorSubject, Observable, interval, combineLatest, map, exhaustMap, distinctUntilChanged, shareReplay } from 'rxjs';\nimport { Initialized, Milliseconds, runAsyncTasksForValues } from '@dereekb/util';\nimport { Injectable, InjectionToken, inject } from '@angular/core';\nimport { lazyFrom, SubscriptionObject, switchMapWhileTrue } from '@dereekb/rxjs';\nimport { FirebaseDevelopmentFunctions, ScheduledFunctionDevelopmentFirebaseFunctionListEntry, ScheduledFunctionDevelopmentFirebaseFunctionListResult, ScheduledFunctionDevelopmentFunctionTypeEnum } from '@dereekb/firebase';\n\n/**\n * Whether or not the scheduler should be enabled.\n */\nexport const DEFAULT_FIREBASE_DEVELOPMENT_SCHEDULER_ENABLED_TOKEN = new InjectionToken('DefaultDbxFirebaseDevelopmentSchedulerEnabled');\n\n/**\n * Service used for hitting the scheduler in the development environment using the\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseDevelopmentSchedulerService implements Initialized {\n readonly dbxAuthService = inject(DbxAuthService);\n readonly firebaseDevelopmentFunctions = inject(FirebaseDevelopmentFunctions);\n\n private _sub = new SubscriptionObject();\n private _enabled = new BehaviorSubject<boolean>(inject<boolean>(DEFAULT_FIREBASE_DEVELOPMENT_SCHEDULER_ENABLED_TOKEN, { optional: true }) !== false);\n\n private _timerInterval = new BehaviorSubject<Milliseconds>(60 * 1000);\n private _error = new BehaviorSubject<boolean>(false);\n\n readonly enabled$ = this._enabled.asObservable();\n readonly running$ = combineLatest([this._enabled, this.dbxAuthService.authUserState$.pipe(map((x) => x === 'user'))]).pipe(\n map(([enabled, userReady]) => enabled && userReady),\n distinctUntilChanged(),\n shareReplay(1)\n );\n readonly timerInterval$ = this._timerInterval.asObservable();\n readonly error$ = this._error.pipe(distinctUntilChanged());\n\n readonly schedulerList$: Observable<ScheduledFunctionDevelopmentFirebaseFunctionListEntry[]> = lazyFrom(() => {\n return this.firebaseDevelopmentFunctions\n .scheduledFunction({ type: ScheduledFunctionDevelopmentFunctionTypeEnum.LIST })\n .then((result) => {\n const list = result as ScheduledFunctionDevelopmentFirebaseFunctionListResult;\n return list.list;\n })\n .catch((e) => {\n console.error('Failed to retrieve development schedule list from server.', e);\n throw e;\n });\n });\n\n init(): void {\n this._sub.subscription = this.running$\n .pipe(\n switchMapWhileTrue(() => {\n console.log('DbxFirebaseDevelopmentSchedulerService enabled.');\n return combineLatest([this._timerInterval, this.schedulerList$]).pipe(\n switchMap(([timerInterval, schedulerList]) => {\n const executionOrder: string[] = schedulerList.map((x) => x.name);\n\n return interval(timerInterval).pipe(\n exhaustMap(() => {\n console.log('Running scheduled tasks in order... ', executionOrder);\n\n return runAsyncTasksForValues(executionOrder, (taskName) => this.runScheduledFunction(taskName), { sequential: true, retriesAllowed: false })\n .then(() => true)\n .catch((e) => {\n console.log('Failed running scheduled task: ', e);\n this._error.next(true);\n return false;\n });\n }),\n tap((success) => {\n if (success) {\n console.log('Successfully finished running all scheduled tasks.');\n this._error.next(false);\n }\n })\n );\n })\n );\n })\n )\n .subscribe();\n }\n\n runScheduledFunction(taskName: string) {\n return this.firebaseDevelopmentFunctions.scheduledFunction({\n run: taskName,\n type: ScheduledFunctionDevelopmentFunctionTypeEnum.RUN\n });\n }\n\n setTimer(timerInterval: number) {\n this._timerInterval.next(timerInterval);\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { AbstractDbxSelectionListWrapperDirective, AbstractDbxValueListViewItemComponent, AbstractDbxSelectionListViewDirective, DEFAULT_LIST_WRAPPER_DIRECTIVE_TEMPLATE, DbxSelectionValueListViewConfig, provideDbxListView, DEFAULT_DBX_SELECTION_VALUE_LIST_DIRECTIVE_TEMPLATE, DbxValueAsListItem, provideDbxListViewWrapper } from '@dereekb/dbx-web';\nimport { from, of } from 'rxjs';\nimport { ScheduledFunctionDevelopmentFirebaseFunctionListEntry } from '@dereekb/firebase';\nimport { DbxFirebaseDevelopmentSchedulerService } from './development.scheduler.service';\nimport { WorkUsingContext } from '@dereekb/rxjs';\n\nexport type ScheduledFunctionDevelopmentFirebaseFunctionListEntryWithSelection = DbxValueAsListItem<ScheduledFunctionDevelopmentFirebaseFunctionListEntry>;\n\n@Component({\n selector: 'dbx-firebase-development-scheduler-list',\n template: DEFAULT_LIST_WRAPPER_DIRECTIVE_TEMPLATE,\n providers: provideDbxListViewWrapper(DbxFirebaseDevelopmentSchedulerListComponent)\n})\nexport class DbxFirebaseDevelopmentSchedulerListComponent extends AbstractDbxSelectionListWrapperDirective<ScheduledFunctionDevelopmentFirebaseFunctionListEntry> {\n constructor() {\n super({\n componentClass: DbxFirebaseDevelopmentSchedulerListViewComponent,\n defaultSelectionMode: 'view'\n });\n }\n}\n\n@Component({\n selector: 'dbx-firebase-development-scheduler-list-view',\n template: DEFAULT_DBX_SELECTION_VALUE_LIST_DIRECTIVE_TEMPLATE,\n providers: provideDbxListView(DbxFirebaseDevelopmentSchedulerListViewComponent)\n})\nexport class DbxFirebaseDevelopmentSchedulerListViewComponent extends AbstractDbxSelectionListViewDirective<ScheduledFunctionDevelopmentFirebaseFunctionListEntry> {\n readonly config: DbxSelectionValueListViewConfig<ScheduledFunctionDevelopmentFirebaseFunctionListEntryWithSelection> = {\n componentClass: DbxFirebaseDevelopmentSchedulerListViewItemComponent,\n mapValuesToItemValues: (x) => of(x.map((y) => ({ ...y, icon: y.icon, itemValue: y })))\n };\n}\n\n@Component({\n template: `\n <div dbxAction dbxActionValue fastTrigger [dbxActionHandler]=\"handleRun\">\n <dbx-button dbxActionButton [text]=\"'Run ' + name\"></dbx-button>\n <div *dbxActionHasSuccess=\"3000\" class=\"dbx-success\" dbxActionSuccess>Success</div>\n </div>\n `\n})\nexport class DbxFirebaseDevelopmentSchedulerListViewItemComponent extends AbstractDbxValueListViewItemComponent<ScheduledFunctionDevelopmentFirebaseFunctionListEntry> {\n readonly dbxFirebaseDevelopmentSchedulerService = inject(DbxFirebaseDevelopmentSchedulerService);\n\n get name() {\n return this.itemValue.name;\n }\n\n readonly handleRun: WorkUsingContext<unknown, unknown> = (value, context) => {\n context.startWorkingWithObservable(from(this.dbxFirebaseDevelopmentSchedulerService.runScheduledFunction(this.name)));\n };\n}\n","import { Component, inject } from '@angular/core';\nimport { loadingStateFromObs } from '@dereekb/rxjs';\nimport { DbxFirebaseDevelopmentSchedulerService } from './development.scheduler.service';\nimport { DbxFirebaseDevelopmentWidgetEntry } from './development.widget';\n\nexport const DEVELOPMENT_FIREBASE_SERVER_SCHEDULER_WIDGET_KEY = 'DEVELOPMENT_FIREBASE_SERVER_SCHEDULER_WIDGET';\n\nexport function developmentFirebaseServerSchedulerWidgetEntry(): DbxFirebaseDevelopmentWidgetEntry {\n return {\n label: 'Run Scheduled Task',\n widget: {\n type: DEVELOPMENT_FIREBASE_SERVER_SCHEDULER_WIDGET_KEY,\n componentClass: DbxFirebaseDevelopmentSchedulerWidgetComponent\n }\n };\n}\n\n@Component({\n template: `\n <div>\n <dbx-firebase-development-scheduler-list [state$]=\"state$\"></dbx-firebase-development-scheduler-list>\n </div>\n `\n})\nexport class DbxFirebaseDevelopmentSchedulerWidgetComponent {\n readonly dbxFirebaseDevelopmentSchedulerService = inject(DbxFirebaseDevelopmentSchedulerService);\n readonly entries$ = this.dbxFirebaseDevelopmentSchedulerService.schedulerList$;\n readonly state$ = loadingStateFromObs(this.entries$);\n}\n","export interface DbxFirebaseEmulatorConfig {\n /**\n * Port to target.\n */\n port: number;\n /**\n * Defaults to localhost if not provided.\n */\n host?: string;\n}\n\nexport interface DbxFirebaseEmulatorsConfig {\n /**\n * Whether or not to enable the emulators.\n */\n useEmulators?: boolean;\n /**\n * Default host to target. Defaults to localhost if not provided.\n */\n host?: string;\n /**\n * emulator UI configuration\n */\n ui?: DbxFirebaseEmulatorConfig;\n /**\n * Auth emulator configuration\n */\n auth?: DbxFirebaseEmulatorConfig;\n /**\n * Firestore emulator configuration\n */\n firestore?: DbxFirebaseEmulatorConfig;\n /**\n * Firestore emulator configuration\n */\n storage?: DbxFirebaseEmulatorConfig;\n /**\n * Functions emulator configuration\n */\n functions?: DbxFirebaseEmulatorConfig;\n /**\n * Database emulator configuration\n */\n database?: DbxFirebaseEmulatorConfig;\n}\n\nexport abstract class DbxFirebaseParsedEmulatorsConfig implements DbxFirebaseEmulatorsConfig {\n abstract useEmulators: boolean;\n host?: string;\n /**\n * Fix used by some components to allow changing 0.0.0.0 to localhost. Defaults to true.\n */\n allow0000ToLocalhost?: boolean;\n ui?: Required<DbxFirebaseEmulatorConfig>;\n auth?: Required<DbxFirebaseEmulatorConfig>;\n firestore?: Required<DbxFirebaseEmulatorConfig>;\n storage?: Required<DbxFirebaseEmulatorConfig>;\n functions?: Required<DbxFirebaseEmulatorConfig>;\n database?: Required<DbxFirebaseEmulatorConfig>;\n}\n","import { ModuleWithProviders, NgModule, Injector } from '@angular/core';\nimport { FirebaseOptions, initializeApp } from 'firebase/app';\nimport { initializeAppCheck, ReCaptchaV3Provider } from 'firebase/app-check';\nimport { FirebaseApp, provideFirebaseApp } from '@angular/fire/app';\nimport { provideStorage, getStorage, connectStorageEmulator } from '@angular/fire/storage';\nimport { provideFunctions, getFunctions, connectFunctionsEmulator } from '@angular/fire/functions';\nimport { provideFirestore, connectFirestoreEmulator, initializeFirestore, persistentLocalCache, persistentMultipleTabManager, FirestoreSettings, persistentSingleTabManager } from '@angular/fire/firestore';\nimport { provideAuth, getAuth, connectAuthEmulator } from '@angular/fire/auth';\nimport { AppCheck, provideAppCheck } from '@angular/fire/app-check';\nimport { DbxFirebaseParsedEmulatorsConfig } from './emulators';\nimport { DbxFirebaseOptions, DBX_FIREBASE_OPTIONS_TOKEN } from './options';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { enableAppCheckDebugTokenGeneration } from '../auth/appcheck';\nimport { DbxFirebaseAppCheckHttpInterceptor } from '../auth/appcheck/appcheck.interceptor';\n\n/**\n * Default firebase firestore provider module.\n */\n@NgModule({\n imports: [\n provideFirestore((injector: Injector) => {\n const firebaseApp = injector.get(FirebaseApp);\n const firebaseOptions = injector.get<DbxFirebaseOptions>(DBX_FIREBASE_OPTIONS_TOKEN);\n\n const firestoreSettings: FirestoreSettings = {};\n\n const { enableMultiTabIndexedDbPersistence, enableIndexedDbPersistence } = firebaseOptions;\n const { persistentCacheSettings } = firebaseOptions;\n\n if (enableIndexedDbPersistence !== false) {\n let tabManager;\n\n if (enableMultiTabIndexedDbPersistence !== false) {\n tabManager = persistentMultipleTabManager();\n } else {\n tabManager = persistentSingleTabManager(undefined);\n }\n\n firestoreSettings.localCache = persistentLocalCache({\n tabManager,\n ...persistentCacheSettings\n });\n }\n\n const firestore = initializeFirestore(firebaseApp, firestoreSettings);\n const emulators = injector.get<DbxFirebaseParsedEmulatorsConfig>(DbxFirebaseParsedEmulatorsConfig, undefined);\n\n if (emulators?.useEmulators && emulators?.firestore) {\n connectFirestoreEmulator(firestore, emulators.firestore.host, emulators.firestore.port, {});\n }\n\n return firestore;\n })\n ]\n})\nexport class DbxFirebaseDefaultFirestoreProviderModule {}\n\n/**\n * Default firebase app check provider module.\n *\n * Also configures the DbxFirebaseAppCheckHttpInterceptor with HTTP_INTERCEPTORS in order for appCheck to be appended to requests to the api.\n */\n@NgModule({\n imports: [\n provideAppCheck((injector: Injector) => {\n const firebaseApp = injector.get(FirebaseApp);\n const firebaseOptions = injector.get<DbxFirebaseOptions>(DBX_FIREBASE_OPTIONS_TOKEN);\n const appCheckOptions = firebaseOptions.appCheck;\n const appCheckKnowinglyDisabled = appCheckOptions?.disabled === true || firebaseOptions.emulators?.useEmulators === true;\n let appCheck: AppCheck;\n\n if (appCheckOptions && !appCheckKnowinglyDisabled) {\n // enable the debug tokens if not using emulators and allowDebugTokens is set true\n if (firebaseOptions.emulators?.useEmulators !== true && appCheckOptions.allowDebugTokens) {\n enableAppCheckDebugTokenGeneration(true);\n }\n\n // Only enabled outside of app-check environments. The emulators will not use appcheck.\n appCheck = initializeAppCheck(firebaseApp, {\n provider: new ReCaptchaV3Provider(appCheckOptions.reCaptchaV3),\n isTokenAutoRefreshEnabled: appCheckOptions.isTokenAutoRefreshEnabled ?? true\n });\n\n console.log('Enabled AppCheck.');\n } else {\n appCheck = undefined as unknown as AppCheck;\n\n if (!appCheckKnowinglyDisabled) {\n console.error('dbx-firebase: No appcheck configuration for the app, and not specifically disabled in config either.');\n }\n }\n\n return appCheck;\n })\n ],\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: DbxFirebaseAppCheckHttpInterceptor,\n multi: true\n }\n ]\n})\nexport class DbxFirebaseDefaultAppCheckProviderModule {}\n\n/**\n * Default firebase auth provider module.\n */\n@NgModule({\n imports: [\n provideAuth((injector: Injector) => {\n const firebaseApp = injector.get(FirebaseApp);\n const auth = getAuth(firebaseApp);\n const emulators = injector.get<DbxFirebaseParsedEmulatorsConfig>(DbxFirebaseParsedEmulatorsConfig, undefined);\n\n if (emulators?.useEmulators && emulators?.auth) {\n connectAuthEmulator(auth, `http://${emulators.auth.host}:${emulators.auth.port}`);\n }\n\n return auth;\n })\n ]\n})\nexport class DbxFirebaseDefaultAuthProviderModule {}\n\n/**\n * Default firebase storage provider module.\n */\n@NgModule({\n imports: [\n provideStorage((injector: Injector) => {\n const firebaseApp = injector.get(FirebaseApp);\n const storage = getStorage(firebaseApp);\n const emulators = injector.get<DbxFirebaseParsedEmulatorsConfig>(DbxFirebaseParsedEmulatorsConfig, undefined);\n\n if (emulators?.useEmulators && emulators?.storage) {\n connectStorageEmulator(storage, emulators.storage.host, emulators.storage.port, {});\n }\n\n return storage;\n })\n ]\n})\nexport class DbxFirebaseDefaultStorageProviderModule {}\n\n/**\n * Default firebase functions provider module.\n */\n@NgModule({\n imports: [\n provideFunctions((injector: Injector) => {\n const firebaseApp = injector.get(FirebaseApp);\n const firebaseOptions = injector.get<DbxFirebaseOptions>(DBX_FIREBASE_OPTIONS_TOKEN);\n const { functionsRegionOrCustomDomain } = firebaseOptions;\n\n const functions = getFunctions(firebaseApp, functionsRegionOrCustomDomain);\n const emulators = injector.get<DbxFirebaseParsedEmulatorsConfig>(DbxFirebaseParsedEmulatorsConfig, undefined);\n\n if (emulators?.useEmulators && emulators?.functions) {\n connectFunctionsEmulator(functions, emulators.functions.host, emulators.functions.port);\n }\n\n return functions;\n })\n ]\n})\nexport class DbxFirebaseDefaultFunctionsProviderModule {}\n\n/**\n * Default provider module.\n */\n@NgModule({\n imports: [\n provideFirebaseApp((injector: Injector) => {\n const firebaseOptions = injector.get<DbxFirebaseOptions>(DBX_FIREBASE_OPTIONS_TOKEN);\n return initializeApp(firebaseOptions);\n }),\n DbxFirebaseDefaultAppCheckProviderModule,\n DbxFirebaseDefaultFirestoreProviderModule,\n DbxFirebaseDefaultAuthProviderModule,\n DbxFirebaseDefaultStorageProviderModule,\n DbxFirebaseDefaultFunctionsProviderModule\n ]\n})\nexport class DbxFirebaseDefaultFirebaseProvidersModule {\n static forRoot(firebaseOptions: FirebaseOptions): ModuleWithProviders<DbxFirebaseDefaultFirebaseProvidersModule> {\n return {\n ngModule: DbxFirebaseDefaultFirebaseProvidersModule,\n providers: [\n {\n provide: DBX_FIREBASE_OPTIONS_TOKEN,\n useValue: firebaseOptions\n }\n ]\n };\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { DbxFirebaseEmulatorConfig, DbxFirebaseEmulatorsConfig, DbxFirebaseParsedEmulatorsConfig } from './emulators';\nimport { type Maybe } from '@dereekb/util';\n\n/**\n * Used to configure the DbxFirebaseEmulatorsConfig provider.\n */\n@NgModule()\nexport class DbxFirebaseEmulatorModule {\n static forRoot(config: DbxFirebaseEmulatorsConfig): ModuleWithProviders<DbxFirebaseEmulatorModule> {\n const defaultHost = config.host ?? 'localhost';\n\n function emulatorConfig(emulator: Maybe<DbxFirebaseEmulatorConfig>): Required<DbxFirebaseEmulatorConfig> | undefined {\n return emulator ? { host: emulator.host ?? defaultHost, port: emulator.port } : undefined;\n }\n\n const finalConfig: DbxFirebaseParsedEmulatorsConfig = {\n useEmulators: config.useEmulators !== false,\n ui: emulatorConfig(config.ui),\n auth: emulatorConfig(config.auth),\n firestore: emulatorConfig(config.firestore),\n storage: emulatorConfig(config.storage),\n functions: emulatorConfig(config.functions),\n database: emulatorConfig(config.database)\n };\n\n return {\n ngModule: DbxFirebaseEmulatorModule,\n providers: [\n {\n provide: DbxFirebaseParsedEmulatorsConfig,\n useValue: finalConfig\n }\n ]\n };\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { ClickableUrl } from '@dereekb/dbx-core';\nimport { type Maybe } from '@dereekb/util';\nimport { DbxFirebaseParsedEmulatorsConfig } from './emulators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseEmulatorService {\n readonly emulatorsConfig = inject(DbxFirebaseParsedEmulatorsConfig);\n\n get useEmulators(): boolean {\n return this.emulatorsConfig.useEmulators || false;\n }\n\n get emulatorUIAnchor(): Maybe<ClickableUrl> {\n const ui = this.emulatorsConfig.ui;\n let host = this.emulatorsConfig.host;\n\n // Issue where sometimes 0.0.0.0 is not configured to handle transferring traffic properly, compared to localhost. This sets 0.0.0.0 to localhost unless disallowed.\n if (host === '0.0.0.0' && this.emulatorsConfig.allow0000ToLocalhost !== false) {\n host = 'localhost';\n }\n\n return ui\n ? {\n url: `http://${host ?? 'localhost'}:${ui.port}`,\n target: '_blank'\n }\n : undefined;\n }\n}\n","import { Component } from '@angular/core';\nimport { provideFormlyContext, AbstractConfigAsyncFormlyFormDirective, pickableItemChipField, filterPickableItemFieldValuesByLabel, SearchableValueFieldDisplayFn, SearchableValueFieldDisplayValue, SearchableValueFieldValue } from '@dereekb/dbx-form';\nimport { type Maybe } from '@dereekb/util';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { map, Observable, of } from 'rxjs';\nimport { DbxFirebaseDevelopmentWidgetEntry } from './development.widget';\n\nexport interface DbxFirebaseDevelopmentPopupContentFormInput {\n readonly entries: DbxFirebaseDevelopmentWidgetEntry[];\n}\n\nexport interface DbxFirebaseDevelopmentPopupContentFormValue {\n readonly specifier?: Maybe<string>;\n}\n\nconst DISPLAY_FOR_DEVELOPMENT_POPUP_STRING_VALUE: SearchableValueFieldDisplayFn<string, DbxFirebaseDevelopmentWidgetEntry> = (values: SearchableValueFieldValue<string, DbxFirebaseDevelopmentWidgetEntry>[]) => {\n const displayValues: SearchableValueFieldDisplayValue<string, DbxFirebaseDevelopmentWidgetEntry>[] = values.map((x) => ({ ...x, label: x.meta?.label || x.value }));\n const obs: Observable<SearchableValueFieldDisplayValue<string, DbxFirebaseDevelopmentWidgetEntry>[]> = of(displayValues);\n return obs;\n};\n\n@Component({\n template: `\n <dbx-formly></dbx-formly>\n `,\n selector: 'dbx-firebase-development-popup-content-form',\n providers: [provideFormlyContext()]\n})\nexport class DbxFirebaseDevelopmentPopupContentFormComponent extends AbstractConfigAsyncFormlyFormDirective<DbxFirebaseDevelopmentPopupContentFormValue, DbxFirebaseDevelopmentPopupContentFormInput> {\n readonly fields$: Observable<FormlyFieldConfig[]> = this.config$.pipe(\n map((config: DbxFirebaseDevelopmentPopupContentFormInput) => {\n return [\n pickableItemChipField<string, DbxFirebaseDevelopmentWidgetEntry>({\n key: 'specifier',\n filterLabel: 'Tools',\n description: 'Pick a tool to get started.',\n filterValues: filterPickableItemFieldValuesByLabel,\n loadValues: () => of(config.entries.map((y) => ({ value: y.widget.type, meta: y }))),\n displayForValue: DISPLAY_FOR_DEVELOPMENT_POPUP_STRING_VALUE,\n asArrayValue: false\n })\n ];\n })\n );\n}\n","import { ClickableAnchor, DbxAuthService } from '@dereekb/dbx-core';\nimport { Component, OnDestroy, OnInit, inject } from '@angular/core';\nimport { DbxWidgetDataPair, TwoColumnsContextStore } from '@dereekb/dbx-web';\nimport { DevelopmentFirebaseFunctionSpecifier } from '@dereekb/firebase';\nimport { WorkUsingContext, filterMaybe, IsModifiedFunction, SubscriptionObject } from '@dereekb/rxjs';\nimport { type Maybe } from '@dereekb/util';\nimport { first, BehaviorSubject, distinctUntilChanged, map, shareReplay, combineLatest, Observable } from 'rxjs';\nimport { DbxFirebaseDevelopmentWidgetService } from './development.widget.service';\nimport { DbxFirebaseDevelopmentSchedulerService } from './development.scheduler.service';\nimport { DbxFirebaseDevelopmentPopupContentFormValue } from './development.popup.content.form.component';\nimport { msToSeconds } from '@dereekb/date';\nimport { DEVELOPMENT_FIREBASE_SERVER_SCHEDULER_WIDGET_KEY } from './development.scheduler.widget.component';\nimport { DbxFirebaseEmulatorService } from '../firebase';\n\n@Component({\n selector: 'dbx-firebase-development-popup-content',\n templateUrl: './development.popup.content.component.html',\n styleUrls: ['./development.popup.component.scss'],\n providers: [TwoColumnsContextStore]\n})\nexport class DbxFirebaseDevelopmentPopupContentComponent implements OnInit, OnDestroy {\n readonly twoColumnsContextStore = inject(TwoColumnsContextStore);\n readonly dbxAuthService = inject(DbxAuthService);\n readonly dbxFirebaseDevelopmentWidgetService = inject(DbxFirebaseDevelopmentWidgetService);\n readonly dbxFirebaseDevelopmentSchedulerService = inject(DbxFirebaseDevelopmentSchedulerService);\n readonly dbxFirebaseEmulatorService = inject(DbxFirebaseEmulatorService);\n\n private readonly _backSub = new SubscriptionObject();\n\n readonly showEmulatorButton = this.dbxFirebaseEmulatorService.useEmulators === true;\n readonly emulatorUIAnchor: ClickableAnchor = this.dbxFirebaseEmulatorService.emulatorUIAnchor ?? {};\n\n readonly entries = this.dbxFirebaseDevelopmentWidgetService.getEntries();\n\n private readonly _activeEntrySelector = new BehaviorSubject<Maybe<DevelopmentFirebaseFunctionSpecifier>>(DEVELOPMENT_FIREBASE_SERVER_SCHEDULER_WIDGET_KEY);\n\n readonly isLoggedIn$ = this.dbxAuthService.isLoggedIn$;\n\n readonly entries$ = this.isLoggedIn$.pipe(\n distinctUntilChanged(),\n map((isLoggedIn) => this.entries),\n shareReplay(1)\n );\n\n readonly formConfig$ = this.entries$.pipe(map((entries) => ({ entries })));\n readonly activeEntrySelector$ = this._activeEntrySelector.pipe(distinctUntilChanged());\n readonly currentActiveEntry$ = combineLatest([this.entries$, this.activeEntrySelector$]).pipe(\n map(([entries, selector]) => (selector ? entries.find((e) => e.widget.type === selector) : undefined)),\n shareReplay(1)\n );\n\n readonly showRight$ = this.currentActiveEntry$.pipe(map((x) => x != null));\n readonly activeEntry$ = this.currentActiveEntry$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));\n\n readonly rightTitle$ = this.activeEntry$.pipe(map((x) => x.label));\n readonly widgetConfig$: Observable<DbxWidgetDataPair> = this.activeEntry$.pipe(\n map((x) => ({ data: undefined, type: x.widget.type })),\n shareReplay(1)\n );\n\n readonly schedulerRunning$ = this.dbxFirebaseDevelopmentSchedulerService.running$;\n readonly schedulerInterval$ = this.dbxFirebaseDevelopmentSchedulerService.timerInterval$.pipe(\n map((x) => msToSeconds(x)),\n shareReplay(1)\n );\n readonly schedulerError$ = this.dbxFirebaseDevelopmentSchedulerService.error$.pipe(\n map((x) => (x ? 'Error Occured' : 'Ok')),\n shareReplay(1)\n );\n\n readonly formData$: Observable<DbxFirebaseDevelopmentPopupContentFormValue> = this._activeEntrySelector.pipe(\n distinctUntilChanged(),\n map((specifier) => ({ specifier }))\n );\n\n ngOnInit(): void {\n this.twoColumnsContextStore.setShowRight(this.showRight$);\n this._backSub.subscription = this.twoColumnsContextStore.back$.subscribe(() => {\n this.clearSelection();\n });\n }\n\n ngOnDestroy(): void {\n this._activeEntrySelector.complete();\n }\n\n readonly handleFormUpdate: WorkUsingContext<DbxFirebaseDevelopmentPopupContentFormValue, void> = (value, context) => {\n this._activeEntrySelector.next(value.specifier);\n context.success();\n };\n\n readonly isFormModified: IsModifiedFunction<DbxFirebaseDevelopmentPopupContentFormValue> = (value) => {\n return this._activeEntrySelector.pipe(\n map((currentSelector) => value.specifier !== currentSelector),\n first()\n );\n };\n\n clearSelection() {\n this._activeEntrySelector.next(undefined);\n }\n}\n","<dbx-two-column class=\"dbx-firebase-development-popup-content\" [dbxTwoColumnFullLeft]=\"true\">\n <dbx-two-block left>\n <div>\n <h4>Info</h4>\n <p>Scheduler (Running): {{ schedulerRunning$ | async }} : {{ schedulerInterval$ | async }}s : {{ schedulerError$ | async }}</p>\n <div>\n <dbx-anchor [anchor]=\"emulatorUIAnchor\" *ngIf=\"showEmulatorButton\">\n <button mat-flat-button color=\"accent\">Emulator Enabled</button>\n </dbx-anchor>\n </div>\n </div>\n <div>\n <h4>Tools</h4>\n <div dbxAction dbxActionEnforceModified dbxActionAutoTrigger instantTrigger [dbxActionHandler]=\"handleFormUpdate\">\n <dbx-firebase-development-popup-content-form dbxActionForm [dbxFormSource]=\"formData$\" dbxFormSourceMode=\"always\" [dbxActionFormModified]=\"isFormModified\" [config]=\"formConfig$ | async\"></dbx-firebase-development-popup-content-form>\n </div>\n </div>\n </dbx-two-block>\n <dbx-two-column-right right [header]=\"(rightTitle$ | async) || ''\">\n <dbx-widget-view [config]=\"widgetConfig$ | async\"></dbx-widget-view>\n </dbx-two-column-right>\n</dbx-two-column>\n","import { Component, ViewChild, inject } from '@angular/core';\nimport { DbxPopupKey, AbstractPopupDirective, DbxPopupService } from '@dereekb/dbx-web';\nimport { NgPopoverRef } from 'ng-overlay-container';\nimport { DbxFirebaseDevelopmentPopupContentComponent } from './development.popup.content.component';\n\nexport const DEFAULT_FIREBASE_DEVELOPMENT_POPUP_KEY = 'devpopup';\n\n@Component({\n template: `\n <dbx-popup-content>\n <dbx-popup-controls [header]=\"header\" controls></dbx-popup-controls>\n <dbx-firebase-development-popup-content (shouldClose)=\"closePopup()\"></dbx-firebase-development-popup-content>\n </dbx-popup-content>\n `\n})\nexport class DbxFirebaseDevelopmentPopupComponent extends AbstractPopupDirective {\n private readonly popupService = inject(DbxPopupService);\n\n @ViewChild(DbxFirebaseDevelopmentPopupContentComponent, { static: true })\n content!: DbxFirebaseDevelopmentPopupContentComponent;\n\n readonly header = 'Development Tools';\n\n static openPopup(popupService: DbxPopupService, popupKey?: DbxPopupKey): NgPopoverRef {\n return popupService.open({\n key: popupKey ?? DEFAULT_FIREBASE_DEVELOPMENT_POPUP_KEY,\n componentClass: DbxFirebaseDevelopmentPopupComponent,\n closeOnTransition: false,\n isDraggable: true,\n position: 'center'\n });\n }\n\n reopen = () => {\n DbxFirebaseDevelopmentPopupComponent.openPopup(this.popupService, this.popup.key);\n };\n}\n","import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\n\n/**\n * Enabled state\n */\nexport const DEFAULT_FIREBASE_DEVELOPMENT_ENABLED_TOKEN = new InjectionToken('DefaultDbxFirebaseDevelopmentEnabled');\n\n/**\n * Service used for registering widgets used for development.\n *\n * Default providers can be configured by the DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN injectable value.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseDevelopmentService {\n constructor(@Optional() @Inject(DEFAULT_FIREBASE_DEVELOPMENT_ENABLED_TOKEN) readonly enabled: boolean) {}\n}\n","import { OnDestroy, HostListener, AfterViewInit, Directive, inject } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { DbxPopupService } from '@dereekb/dbx-web';\nimport { NgPopoverRef } from 'ng-overlay-container';\nimport { DbxFirebaseDevelopmentPopupComponent } from './development.popup.component';\nimport { DbxFirebaseDevelopmentService } from './development.service';\n\n/**\n * Directive for controlling and displaying\n */\n@Directive({\n selector: '[dbxFirebaseDevelopment]'\n})\nexport class DbxFirebaseDevelopmentDirective implements OnDestroy, AfterViewInit {\n readonly popupService = inject(DbxPopupService);\n readonly matSnackBar = inject(MatSnackBar);\n readonly dbxFirebaseDevelopmentService = inject(DbxFirebaseDevelopmentService);\n\n ref?: NgPopoverRef<any, any>;\n\n get enabled() {\n return this.dbxFirebaseDevelopmentService.enabled;\n }\n\n @HostListener('window:keydown', ['$event'])\n handleKeyboardEvent(event: KeyboardEvent) {\n if (this.enabled && event.shiftKey && event.altKey && event.code === 'KeyD') {\n this.togglePopup();\n event.preventDefault();\n }\n }\n\n togglePopup() {\n if (this.ref) {\n this.closePopup();\n } else {\n this.openPopup();\n }\n }\n\n openPopup() {\n if (!this.ref) {\n const ref = DbxFirebaseDevelopmentPopupComponent.openPopup(this.popupService);\n ref.afterClosed$.subscribe(() => {\n if (this.ref === ref) {\n this.ref = undefined;\n }\n });\n\n this.ref = ref;\n }\n }\n\n closePopup() {\n if (this.ref != null) {\n this.ref.close();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.enabled) {\n this.matSnackBar\n .open('Dev Tools: alt/option + shift + D', 'Open', {\n horizontalPosition: 'center',\n verticalPosition: 'bottom',\n duration: 8 * 1000\n })\n .onAction()\n .subscribe(() => {\n this.openPopup();\n });\n }\n }\n\n ngOnDestroy(): void {\n this.closePopup();\n }\n}\n","import { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule, inject } from '@angular/core';\nimport { DbxInjectionComponentModule } from '@dereekb/dbx-core';\nimport { DbxActionModule, DbxRouterAnchorModule, DbxButtonModule, DbxReadableErrorModule, DbxPopupInteractionModule, DbxTwoColumnLayoutModule, DbxBlockLayoutModule, DbxWidgetModule, DbxListLayoutModule, DbxTextModule } from '@dereekb/dbx-web';\nimport { DEFAULT_FIREBASE_DEVELOPMENT_WIDGET_PROVIDERS_TOKEN } from './development.widget.service';\nimport { DbxFormActionModule, DbxFormFormlyTextFieldModule, DbxFormIoModule, DbxFormlyModule, DbxFormModule } from '@dereekb/dbx-form';\nimport { DbxFirebaseDevelopmentPopupComponent } from './development.popup.component';\nimport { DbxFirebaseDevelopmentPopupContentComponent } from './development.popup.content.component';\nimport { DbxFirebaseDevelopmentDirective } from './development.popup.directive';\nimport { DEFAULT_FIREBASE_DEVELOPMENT_ENABLED_TOKEN } from './development.service';\nimport { DbxFirebaseDevelopmentPopupContentFormComponent } from './development.popup.content.form.component';\nimport { DbxFirebaseDevelopmentSchedulerService } from './development.scheduler.service';\nimport { DbxFirebaseDevelopmentWidgetEntry } from './development.widget';\nimport { DbxFirebaseDevelopmentSchedulerListComponent, DbxFirebaseDevelopmentSchedulerListViewComponent, DbxFirebaseDevelopmentSchedulerListViewItemComponent } from './development.scheduler.list.component';\nimport { DbxFirebaseDevelopmentSchedulerWidgetComponent, developmentFirebaseServerSchedulerWidgetEntry } from './development.scheduler.widget.component';\n\nexport abstract class DbxFirebaseDevelopmentModuleRootConfig {\n abstract readonly enabled: boolean;\n abstract readonly entries: DbxFirebaseDevelopmentWidgetEntry[];\n abstract readonly addDevelopmentSchedulerWidget?: boolean;\n}\n\n/**\n * Contains components related to logging in.\n */\n@NgModule({\n imports: [CommonModule, MatIconModule, DbxWidgetModule, DbxTextModule, DbxBlockLayoutModule, DbxTwoColumnLayoutModule, MatButtonModule, DbxRouterAnchorModule, DbxPopupInteractionModule, DbxFormIoModule, DbxFormModule, DbxFormlyModule, DbxFormActionModule, DbxFormFormlyTextFieldModule, DbxReadableErrorModule, DbxActionModule, DbxButtonModule, DbxInjectionComponentModule, DbxListLayoutModule],\n declarations: [\n //\n DbxFirebaseDevelopmentPopupContentFormComponent,\n DbxFirebaseDevelopmentDirective,\n DbxFirebaseDevelopmentPopupComponent,\n DbxFirebaseDevelopmentPopupContentComponent,\n DbxFirebaseDevelopmentSchedulerWidgetComponent,\n DbxFirebaseDevelopmentSchedulerListComponent,\n DbxFirebaseDevelopmentSchedulerListViewComponent,\n DbxFirebaseDevelopmentSchedulerListViewItemComponent\n ],\n exports: [\n //\n DbxFirebaseDevelopmentDirective,\n DbxFirebaseDevelopmentPopupComponent,\n DbxFirebaseDevelopmentPopupContentComponent,\n DbxFirebaseDevelopmentSchedulerWidgetComponent,\n DbxFirebaseDevelopmentSchedulerListComponent,\n DbxFirebaseDevelopmentSchedulerListViewComponent,\n DbxFirebaseDevelopmentSchedulerListViewItemComponent\n ]\n})\nexport class DbxFirebaseDevelopmentModule {\n readonly dbxFirebaseDevelopmentSchedulerService = inject(DbxFirebaseDevelopmentSchedulerService);\n\n constructor() {\n this.dbxFirebaseDevelopmentSchedulerService.init();\n }\n\n static forRoot(config: DbxFirebaseDevelopmentModuleRootConfig): ModuleWithProviders<DbxFirebaseDevelopmentModule> {\n let entries = config.entries;\n\n if (config.addDevelopmentSchedulerWidget !== false) {\n entries = [developmentFirebaseServerSchedulerWidgetEntry(), ...config.entries];\n }\n\n return {\n ngModule: DbxFirebaseDevelopmentModule,\n providers: [\n {\n provide: DEFAULT_FIREBASE_DEVELOPMENT_WIDGET_PROVIDERS_TOKEN,\n useValue: entries\n },\n {\n provide: DEFAULT_FIREBASE_DEVELOPMENT_ENABLED_TOKEN,\n useValue: config.enabled\n },\n {\n provide: DbxFirebaseDevelopmentModuleRootConfig,\n useValue: config\n }\n ]\n };\n }\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * Token to access the FirestoreContext value.\n */\nexport const DBX_FIRESTORE_CONTEXT_TOKEN = new InjectionToken('DBX_FIRESTORE_CONTEXT_TOKEN');\n","import { ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { clientFirebaseFirestoreContextFactory, FirestoreContext, NotificationFirestoreCollections, SystemStateFirestoreCollections } from '@dereekb/firebase';\nimport { DBX_FIRESTORE_CONTEXT_TOKEN } from './firebase.firestore';\nimport { Firestore } from '@angular/fire/firestore';\nimport { ClassLikeType } from '@dereekb/util';\n\nexport function provideSystemStateFirestoreCollections(appCollection: SystemStateFirestoreCollections): SystemStateFirestoreCollections {\n if (!appCollection.systemStateCollection) {\n throw new Error(`SystemStateFirestoreCollections could not be provided using the app's app collection. Set provideSystemStateFirestoreCollections to false in DbxFirebaseFirestoreCollectionModuleConfig to prevent auto-initialization, or update your app's collection class to implement SystemStateFirestoreCollections.`);\n }\n\n return appCollection;\n}\n\nexport function provideNotificationFirestoreCollections(appCollection: NotificationFirestoreCollections): NotificationFirestoreCollections {\n if (!appCollection.notificationSummaryCollection) {\n throw new Error(`NotificationFirestoreCollections could not be provided using the app's app collection. Set provideNotificationFirestoreCollections to false in DbxFirebaseFirestoreCollectionModuleConfig to prevent auto-initialization, or update your app's collection class to implement NotificationFirestoreCollections.`);\n }\n\n return appCollection;\n}\n\nexport interface DbxFirebaseFirestoreCollectionModuleConfig<T> {\n readonly appCollectionClass: ClassLikeType<T>;\n readonly collectionFactory: (context: FirestoreContext) => T;\n /**\n * Whether or not to provide the SystemStateFirestoreCollections.\n *\n * True by default.\n */\n readonly provideSystemStateFirestoreCollections?: boolean;\n /**\n * Whether or not to provide the NotificationFirestoreCollections.\n *\n * False by default.\n */\n readonly provideNotificationFirestoreCollections?: boolean;\n}\n\n/**\n * Used to initialize the FirestoreCollection for a DbxFirebase app.\n */\n@NgModule()\nexport class DbxFirebaseFirestoreCollectionModule {\n static forRoot<T>(config: DbxFirebaseFirestoreCollectionModuleConfig<T>): ModuleWithProviders<DbxFirebaseFirestoreCollectionModule> {\n const providers: Provider[] = [\n {\n provide: DBX_FIRESTORE_CONTEXT_TOKEN,\n useFactory: clientFirebaseFirestoreContextFactory,\n deps: [Firestore]\n },\n {\n provide: config.appCollectionClass,\n useFactory: config.collectionFactory,\n deps: [DBX_FIRESTORE_CONTEXT_TOKEN]\n }\n ];\n\n if (config.provideSystemStateFirestoreCollections !== false) {\n providers.push({\n /**\n * Provide SystemStateFirestoreCollections via the app collections class and using SystemStateFirestoreCollections.\n */\n provide: SystemStateFirestoreCollections,\n useFactory: provideSystemStateFirestoreCollections,\n deps: [config.appCollectionClass]\n });\n }\n\n if (config.provideNotificationFirestoreCollections) {\n providers.push({\n provide: NotificationFirestoreCollections,\n useFactory: provideNotificationFirestoreCollections,\n deps: [config.appCollectionClass]\n });\n }\n\n return {\n ngModule: DbxFirebaseFirestoreCollectionModule,\n providers\n };\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { FirestoreContext } from '@dereekb/firebase';\nimport { DBX_FIRESTORE_CONTEXT_TOKEN } from './firebase.firestore';\n\n/**\n * Service that provides access to the app's FirestoreContext.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirestoreContextService {\n readonly firestoreContext = inject<FirestoreContext>(DBX_FIRESTORE_CONTEXT_TOKEN);\n}\n","import { ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { Functions } from '@angular/fire/functions';\nimport { FirebaseDevelopmentFunctions, FirebaseFunctionsConfigMap, FirebaseFunctionsMap, FIREBASE_DEVELOPMENT_FUNCTIONS_MAP_KEY, LazyFirebaseFunctions } from '@dereekb/firebase';\nimport { ClassLikeType, forEachKeyValue } from '@dereekb/util';\n\nexport interface DbxFirebaseFunctionsModuleConfig<T, M extends FirebaseFunctionsMap = FirebaseFunctionsMap> {\n functionsGetterToken: ClassLikeType<T>;\n functionsGetterFactory: (functions: Functions) => T;\n /**\n * Key of the functions config to use to inject FirebaseDevelopmentFunctions using that same provider.\n *\n * Defaults to \"developmentFunctions\". If false, will not be injected automatically.\n */\n developmentFunctionsKey?: string | false;\n /**\n * Optional functions config map to provide.\n *\n * If provided, will inject all the types with factory functions so they can be injected into the app.\n */\n functionsConfigMap?: FirebaseFunctionsConfigMap<M>;\n}\n\n/**\n * Used to initialize the LazyFirebaseFunctions type for a DbxFirebase app.\n *\n * Handles the key different, automatically injecting FirebaseDevelopmentFunctions with this existing value.\n */\n@NgModule()\nexport class DbxFirebaseFunctionsModule {\n static forRoot<T, M extends FirebaseFunctionsMap = FirebaseFunctionsMap>(config: DbxFirebaseFunctionsModuleConfig<T, M>): ModuleWithProviders<DbxFirebaseFunctionsModule> {\n const providers: Provider[] = [\n {\n provide: config.functionsGetterToken,\n useFactory: config.functionsGetterFactory,\n deps: [Functions]\n }\n ];\n\n if (config.functionsConfigMap) {\n forEachKeyValue(config.functionsConfigMap, {\n forEach: ([key, entry]) => {\n const provide = entry[0];\n\n providers.push({\n provide,\n useFactory: (lazyFunctions: LazyFirebaseFunctions<M>) => {\n const getter = lazyFunctions[key as string];\n\n if (!getter) {\n throw new Error(`Could not create provider for firebase function getter \"${provide}\" as the getter was unavailable.`);\n } else {\n return getter();\n }\n },\n deps: [config.functionsGetterToken]\n });\n }\n });\n\n // Add a provider for FirebaseDevelopmentFunctions if developmentFunctions is provided.\n const developmentFunctionsKey = config.developmentFunctionsKey ?? FIREBASE_DEVELOPMENT_FUNCTIONS_MAP_KEY;\n\n if (developmentFunctionsKey) {\n const developmentFunctionsConfig = config.functionsConfigMap[developmentFunctionsKey];\n\n if (developmentFunctionsConfig != null) {\n providers.push({\n provide: FirebaseDevelopmentFunctions,\n useExisting: developmentFunctionsConfig[0]\n });\n }\n }\n }\n\n return {\n ngModule: DbxFirebaseFunctionsModule,\n providers\n };\n }\n}\n","import { IterationQueryDocChangeWatcherChangeType, IterationQueryDocChangeWatcherEvent } from '@dereekb/firebase';\nimport { SubscriptionObject } from '@dereekb/rxjs';\nimport { Destroyable } from '@dereekb/util';\nimport { filter, take, map, BehaviorSubject, distinctUntilChanged, Observable, switchMap, startWith, shareReplay, combineLatest } from 'rxjs';\nimport { DbxFirebaseCollectionLoaderAccessor } from './collection.loader';\n\n/**\n * DbxFirebaseCollectionChangeWatcher trigger modes\n * - auto: will automatically call trigger\n * - off: will never call trigger\n */\nexport type DbxFirebaseCollectionChangeWatcherTriggerMode = 'auto' | 'off';\nexport type DbxFirebaseCollectionChangeWatcherEvent = Pick<IterationQueryDocChangeWatcherEvent<unknown>, 'time' | 'type'>;\n\n/**\n * Used to watch a DbxFirebaseCollectionLoaderAccessor for when the query changes and\n */\nexport interface DbxFirebaseCollectionChangeWatcher<S extends DbxFirebaseCollectionLoaderAccessor<any>> {\n readonly store: S;\n /**\n * Current mode observable\n */\n readonly mode$: Observable<DbxFirebaseCollectionChangeWatcherTriggerMode>;\n /**\n * Stream of events\n */\n readonly event$: Observable<DbxFirebaseCollectionChangeWatcherEvent>;\n readonly hasChangeAvailable$: Observable<boolean>;\n /**\n * Current trigger state. Based on the hasChangeAvailable$ state and current mode.\n */\n readonly triggered$: Observable<boolean>;\n /**\n * Trigger emitter. Only emits when triggered$ is/becomes true.\n */\n readonly trigger$: Observable<void>;\n}\n\n/**\n * DbxFirebaseCollectionChangeWatcher instance that can be destroyed and the mode changed.\n */\nexport interface DbxFirebaseCollectionChangeWatcherInstance<S extends DbxFirebaseCollectionLoaderAccessor<any>> extends DbxFirebaseCollectionChangeWatcher<S>, Destroyable {\n /**\n * Changes the mode\n */\n setMode(mode: DbxFirebaseCollectionChangeWatcherTriggerMode): void;\n}\n\nexport function dbxFirebaseCollectionChangeWatcher<S extends DbxFirebaseCollectionLoaderAccessor<any>>(store: S, initialMode?: DbxFirebaseCollectionChangeWatcherTriggerMode): DbxFirebaseCollectionChangeWatcherInstance<S> {\n const _mode = new BehaviorSubject<DbxFirebaseCollectionChangeWatcherTriggerMode>(initialMode ?? 'off');\n const _sub = new SubscriptionObject();\n\n const mode$ = _mode.pipe(distinctUntilChanged());\n\n const event$: Observable<DbxFirebaseCollectionChangeWatcherEvent> = store.queryChangeWatcher$.pipe(\n switchMap((x) =>\n x.event$.pipe(\n filter((x) => x.type !== 'none'), // do not share 'none' events.\n take(1), // only need one event to mark as change is available.\n startWith({\n time: new Date(),\n type: 'none' as IterationQueryDocChangeWatcherChangeType\n })\n )\n ),\n shareReplay(1)\n );\n\n const hasChangeAvailable$: Observable<boolean> = event$.pipe(\n map((x) => x.type !== 'none'),\n shareReplay(1)\n );\n\n const triggered$: Observable<boolean> = combineLatest([mode$, hasChangeAvailable$]).pipe(map(([mode, hasChange]) => mode === 'auto' && hasChange));\n\n const trigger$: Observable<void> = triggered$.pipe(\n filter((triggered) => triggered),\n map(() => undefined)\n );\n\n function destroy() {\n _sub.destroy();\n _mode.complete();\n }\n\n function setMode(mode: DbxFirebaseCollectionChangeWatcherTriggerMode) {\n _mode.next(mode);\n }\n\n const instance: DbxFirebaseCollectionChangeWatcherInstance<S> = {\n store,\n mode$,\n event$,\n hasChangeAvailable$,\n triggered$,\n trigger$,\n destroy,\n setMode\n };\n\n return instance;\n}\n","import { SubscriptionObject, ObservableOrValue, asObservable } from '@dereekb/rxjs';\nimport { BehaviorSubject, filter, switchMap, exhaustMap, EMPTY } from 'rxjs';\nimport { Destroyable, Maybe, Initialized } from '@dereekb/util';\nimport { DbxFirebaseCollectionChangeWatcher, dbxFirebaseCollectionChangeWatcher } from './collection.change.watcher';\nimport { DbxFirebaseCollectionLoaderAccessor } from './collection.loader';\n\nexport type DbxFirebaseCollectionChangeTriggerFunction<S extends DbxFirebaseCollectionLoaderAccessor<any>> = (instance: DbxFirebaseCollectionChangeTriggerInstance<S>) => ObservableOrValue<void>;\n\n/**\n * Restarts the store.\n *\n * @param instance\n * @returns\n */\nexport const DEFAULT_FIREBASE_COLLECTION_CHANGE_TRIGGER_FUNCTION: DbxFirebaseCollectionChangeTriggerFunction<any> = (instance) => instance.watcher.store.restart();\n\nexport interface DbxFirebaseCollectionChangeTriggerInstanceConfig<S extends DbxFirebaseCollectionLoaderAccessor<any>> {\n readonly watcher: DbxFirebaseCollectionChangeWatcher<S> & Partial<Destroyable>;\n /**\n * Whether or not to also destroy the watcher when the trigger instance is destroyed.\n *\n * Defaults to false.\n */\n readonly destroyWatcherOnDestroy?: boolean;\n /**\n * Initial trigger function to use.\n *\n * By default restarts the store.\n */\n readonly triggerFunction?: Maybe<DbxFirebaseCollectionChangeTriggerFunction<S>>;\n}\n\nexport interface DbxFirebaseCollectionChangeTrigger<S extends DbxFirebaseCollectionLoaderAccessor<any>> {\n readonly watcher: DbxFirebaseCollectionChangeWatcher<S>;\n setTriggerFunction?: Maybe<DbxFirebaseCollectionChangeTriggerFunction<S>>;\n}\n\nexport class DbxFirebaseCollectionChangeTriggerInstance<S extends DbxFirebaseCollectionLoaderAccessor<any>> implements DbxFirebaseCollectionChangeTrigger<S>, Initialized, Destroyable {\n readonly watcher: DbxFirebaseCollectionChangeWatcher<S>;\n\n private readonly _config: DbxFirebaseCollectionChangeTriggerInstanceConfig<S>;\n private readonly _triggerFunction = new BehaviorSubject<Maybe<DbxFirebaseCollectionChangeTriggerFunction<S>>>(undefined);\n private readonly _sub = new SubscriptionObject();\n\n constructor(config: DbxFirebaseCollectionChangeTriggerInstanceConfig<S>) {\n this._config = config;\n this.watcher = config.watcher;\n this.triggerFunction = config.triggerFunction ?? DEFAULT_FIREBASE_COLLECTION_CHANGE_TRIGGER_FUNCTION;\n }\n\n get config() {\n return this._config;\n }\n\n init(): void {\n this._sub.subscription = this._triggerFunction\n .pipe(\n switchMap((triggerFunction) => {\n if (triggerFunction) {\n return this.watcher.triggered$.pipe(\n filter((triggered) => triggered),\n exhaustMap(() => asObservable(triggerFunction(this)))\n );\n } else {\n return EMPTY;\n }\n })\n )\n .subscribe();\n }\n\n destroy(): void {\n this._triggerFunction.complete();\n\n if (this._config.destroyWatcherOnDestroy === true) {\n (this.watcher as unknown as Destroyable)?.destroy();\n }\n }\n\n get triggerFunction(): Maybe<DbxFirebaseCollectionChangeTriggerFunction<S>> {\n return this._triggerFunction.value;\n }\n\n set triggerFunction(triggerFunction: Maybe<DbxFirebaseCollectionChangeTriggerFunction<S>>) {\n this._triggerFunction.next(triggerFunction);\n }\n}\n\n/**\n * Creates a new DbxFirebaseCollectionChangeWatcher, set the modes to \"auto\", and creates a new DbxFirebaseCollectionChangeTriggerInstance.\n *\n * If no trigger function is provided it will default to resetting the store.\n *\n * NOTE: Don't forget to initialize the DbxFirebaseCollectionChangeTriggerInstance and handle other lifecycle changes.\n *\n * @param store\n * @param triggerFunction\n * @returns\n */\nexport function dbxFirebaseCollectionChangeTriggerForStore<S extends DbxFirebaseCollectionLoaderAccessor<any>>(store: S, triggerFunction?: Maybe<DbxFirebaseCollectionChangeTriggerFunction<S>>): DbxFirebaseCollectionChangeTriggerInstance<S> {\n return dbxFirebaseCollectionChangeTrigger<S>({\n watcher: dbxFirebaseCollectionChangeWatcher<S>(store, 'auto'),\n destroyWatcherOnDestroy: true,\n triggerFunction:\n triggerFunction ??\n (() => {\n store.restart();\n })\n });\n}\n\nexport function dbxFirebaseCollectionChangeTriggerForWatcher<S extends DbxFirebaseCollectionLoaderAccessor<any>>(watcher: DbxFirebaseCollectionChangeWatcher<S>, triggerFunction?: Maybe<DbxFirebaseCollectionChangeTriggerFunction<S>>): DbxFirebaseCollectionChangeTriggerInstance<S> {\n return dbxFirebaseCollectionChangeTrigger<S>({\n watcher,\n destroyWatcherOnDestroy: false,\n triggerFunction\n });\n}\n\nexport function dbxFirebaseCollectionChangeTrigger<S extends DbxFirebaseCollectionLoaderAccessor<any>>(config: DbxFirebaseCollectionChangeTriggerInstanceConfig<S>): DbxFirebaseCollectionChangeTriggerInstance<S> {\n return new DbxFirebaseCollectionChangeTriggerInstance(config);\n}\n","import { PageListLoadingState, cleanupDestroyable, filterMaybe, useFirst, SubscriptionObject, accumulatorFlattenPageListLoadingState, ItemAccumulatorNextPageUntilResultsCountFunction, itemAccumulatorNextPageUntilResultsCount, iteratorNextPageUntilPage, iteratorNextPageUntilMaxPageLoadLimit, pageItemAccumulatorCurrentPage, ItemAccumulatorNextPageUntilResultsCountResult } from '@dereekb/rxjs';\nimport { BehaviorSubject, combineLatest, map, shareReplay, distinctUntilChanged, Subject, throttleTime, switchMap, Observable, tap, startWith, NEVER } from 'rxjs';\nimport { DocumentDataWithIdAndKey, DocumentReference, FirebaseQueryItemAccumulator, firebaseQueryItemAccumulator, FirebaseQueryItemAccumulatorNextPageUntilResultsCountFunction, FirebaseQuerySnapshotAccumulator, firebaseQuerySnapshotAccumulator, FirestoreCollectionLike, FirestoreDocument, FirestoreItemPageIterationInstance, FirestoreItemPageIteratorFilter, FirestoreQueryConstraint, IterationQueryDocChangeWatcher, iterationQueryDocChangeWatcher } from '@dereekb/firebase';\nimport { ArrayOrValue, Destroyable, GetterOrValue, Initialized, Maybe, PageNumber, countAllInNestedArray } from '@dereekb/util';\nimport { DbxFirebaseCollectionLoaderAccessor, DbxFirebaseCollectionLoaderWithAccumulator } from './collection.loader';\n\nexport interface DbxFirebaseCollectionLoaderInstanceInitConfig<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {\n collection?: Maybe<FirestoreCollectionLike<T, D>>;\n maxPages?: Maybe<number>;\n itemsPerPage?: Maybe<number>;\n constraints?: Maybe<ArrayOrValue<FirestoreQueryConstraint>>;\n}\n\nexport type DbxFirebaseCollectionLoaderInstanceData<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> = DbxFirebaseCollectionLoaderAccessor<T>;\n\n/**\n * DbxFirebaseModelLoader implementation within an instance.\n */\nexport class DbxFirebaseCollectionLoaderInstance<T = unknown, D extends FirestoreDocument<T> = FirestoreDocument<T>> implements DbxFirebaseCollectionLoaderWithAccumulator<T>, DbxFirebaseCollectionLoaderInstanceData<T, D>, Initialized, Destroyable {\n private readonly _maxPagesSub = new SubscriptionObject();\n\n protected readonly _collection = new BehaviorSubject<Maybe<FirestoreCollectionLike<T, D>>>(undefined);\n\n protected readonly _maxPages = new BehaviorSubject<Maybe<number>>(undefined);\n protected readonly _itemsPerPage = new BehaviorSubject<Maybe<number>>(undefined);\n protected readonly _constraints = new BehaviorSubject<Maybe<ArrayOrValue<FirestoreQueryConstraint>>>(undefined);\n protected readonly _restart = new Subject<void>();\n\n readonly collection$ = this._collection.pipe(distinctUntilChanged());\n readonly constraints$ = this._constraints.pipe(distinctUntilChanged());\n\n readonly iteratorFilter$: Observable<FirestoreItemPageIteratorFilter> = combineLatest([this._itemsPerPage.pipe(distinctUntilChanged()), this.constraints$]).pipe(\n map(([limit, constraints]) => ({ limit, constraints, maxPageLoadLimit: this.maxPages } as FirestoreItemPageIteratorFilter)),\n shareReplay(1)\n );\n\n readonly firestoreIteration$: Observable<FirestoreItemPageIterationInstance<T>> = this.collection$.pipe(\n switchMap((collection) => {\n if (collection) {\n return combineLatest([this.iteratorFilter$, this._restart.pipe(startWith(undefined))]).pipe(\n throttleTime(100, undefined, { trailing: true }), // prevent rapid changes and executing filters too quickly.\n map(([iteratorFilter]) => collection.firestoreIteration(iteratorFilter)),\n cleanupDestroyable(), // cleanup the iteration\n shareReplay(1)\n );\n } else {\n return NEVER; // don't emit anything until collection is provided.\n }\n }),\n cleanupDestroyable(), // cleanup the iteration\n shareReplay(1)\n );\n\n readonly queryChangeWatcher$: Observable<IterationQueryDocChangeWatcher<T>> = this.firestoreIteration$.pipe(\n map((instance) => iterationQueryDocChangeWatcher({ instance })),\n shareReplay(1)\n );\n\n readonly snapshotAccumulator$: Observable<FirebaseQuerySnapshotAccumulator<T>> = this.firestoreIteration$.pipe(\n map((x) => firebaseQuerySnapshotAccumulator<T>(x)),\n cleanupDestroyable(),\n shareReplay(1)\n );\n\n readonly snapshotAccumulatorDocumentRefs$: Observable<DocumentReference<T>[][]> = this.snapshotAccumulator$.pipe(\n switchMap((x) => x.allItems$.pipe(map((y) => y.map((z) => z.map((zz) => zz.ref))))),\n shareReplay(1)\n );\n\n readonly snapshotAccumulatorDocuments$: Observable<D[][]> = combineLatest([this.collection$.pipe(filterMaybe()), this.snapshotAccumulatorDocumentRefs$]).pipe(\n map(([collection, documentRefs]) => {\n const accessor = collection.documentAccessor();\n return documentRefs.map((y) => y.map((z) => accessor.loadDocument(z)));\n }),\n shareReplay(1)\n );\n\n readonly accumulator$: Observable<FirebaseQueryItemAccumulator<T>> = this.firestoreIteration$.pipe(\n map((x) => firebaseQueryItemAccumulator<T>(x)),\n cleanupDestroyable(),\n shareReplay(1)\n );\n\n readonly accumulatorPage$: Observable<PageNumber> = this.accumulator$.pipe(\n switchMap((x) => pageItemAccumulatorCurrentPage(x)),\n shareReplay(1)\n );\n\n /**\n * Passthrough for currentAllItems$ from the accumulator.\n */\n readonly currentAccumulatorItems$: Observable<DocumentDataWithIdAndKey<T>[][]> = this.accumulator$.pipe(\n switchMap((x) => x.currentAllItems$),\n shareReplay(1)\n );\n\n /**\n * Passthrough for allItems$ from the accumulator.\n */\n readonly accumulatorItems$: Observable<DocumentDataWithIdAndKey<T>[][]> = this.accumulator$.pipe(\n switchMap((x) => x.allItems$),\n shareReplay(1)\n );\n\n readonly hasDocuments$: Observable<boolean> = this.firestoreIteration$.pipe(\n switchMap((x) => x.firstState$.pipe(map((x) => Boolean(x.value?.length)))),\n shareReplay(1)\n );\n\n readonly allDocumentRefs$: Observable<DocumentReference<T>[]> = this.snapshotAccumulatorDocumentRefs$.pipe(\n map((x) => x.flat()),\n shareReplay(1)\n );\n\n readonly allDocuments$: Observable<D[]> = this.snapshotAccumulatorDocuments$.pipe(\n map((x) => x.flat()),\n shareReplay(1)\n );\n\n readonly allDocumentData$: Observable<DocumentDataWithIdAndKey<T>[]> = this.accumulatorItems$.pipe(\n map((x) => x.flat()),\n shareReplay(1)\n );\n\n readonly pageLoadingState$: Observable<PageListLoadingState<DocumentDataWithIdAndKey<T>>> = this.accumulator$.pipe(\n switchMap((x) => accumulatorFlattenPageListLoadingState(x)),\n shareReplay(1)\n );\n\n constructor(initConfig?: DbxFirebaseCollectionLoaderInstanceInitConfig<T, D>) {\n this._collection.next(initConfig?.collection);\n this._maxPages.next(initConfig?.maxPages);\n this._itemsPerPage.next(initConfig?.itemsPerPage);\n this._constraints.next(initConfig?.constraints);\n }\n\n init(): void {\n // When max pages changes, update the iteration's max page limit.\n this._maxPagesSub.subscription = this._maxPages\n .pipe(\n distinctUntilChanged(),\n filterMaybe(), // do not pass null/undefined values\n switchMap((maxPageLoadLimit) =>\n this.firestoreIteration$.pipe(\n tap((iteration) => {\n iteration.setMaxPageLoadLimit(maxPageLoadLimit);\n })\n )\n )\n )\n .subscribe();\n }\n\n destroy(): void {\n this._maxPages.complete();\n this._collection.complete();\n this._constraints.complete();\n this._itemsPerPage.complete();\n this._restart.complete();\n this._maxPagesSub.destroy();\n }\n\n // MARK: Inputs\n get maxPages(): Maybe<number> {\n return this._maxPages.value;\n }\n\n set maxPages(maxPages: Maybe<number>) {\n if (this.maxPages != maxPages) {\n this._maxPages.next(maxPages);\n }\n }\n\n get itemsPerPage(): Maybe<number> {\n return this._itemsPerPage.value;\n }\n\n set itemsPerPage(itemsPerPage: Maybe<number>) {\n if (this.itemsPerPage != itemsPerPage) {\n this._itemsPerPage.next(itemsPerPage);\n }\n }\n\n get constraints(): Maybe<ArrayOrValue<FirestoreQueryConstraint>> {\n return this._constraints.value;\n }\n\n set constraints(constraints: Maybe<ArrayOrValue<FirestoreQueryConstraint>>) {\n this._constraints.next(constraints);\n }\n\n get collection(): Maybe<FirestoreCollectionLike<T, D>> {\n return this._collection.value;\n }\n\n set collection(collection: Maybe<FirestoreCollectionLike<T, D>>) {\n this._collection.next(collection);\n }\n\n // MARK: DbxFirebaseCollectionLoader\n next() {\n useFirst(this.firestoreIteration$, (x) => x.next());\n }\n\n restart() {\n this._restart.next();\n }\n\n setConstraints(constraints: Maybe<ArrayOrValue<FirestoreQueryConstraint>>) {\n this.constraints = constraints;\n }\n\n setCollection(firestoreCollection: Maybe<FirestoreCollectionLike<T, D>>) {\n this.collection = firestoreCollection;\n }\n\n loadPagesUntilResultsCount(maxResultsLimit: GetterOrValue<number>, countResultsFunction?: FirebaseQueryItemAccumulatorNextPageUntilResultsCountFunction<T> | undefined): Observable<ItemAccumulatorNextPageUntilResultsCountResult> {\n const defaultFn: ItemAccumulatorNextPageUntilResultsCountFunction<DocumentDataWithIdAndKey<T>[]> = countAllInNestedArray;\n return this.accumulator$.pipe(\n switchMap((accumulator) =>\n itemAccumulatorNextPageUntilResultsCount({\n accumulator,\n maxResultsLimit,\n countResultsFunction: countResultsFunction ?? defaultFn\n })\n )\n );\n }\n\n loadToPage(page: PageNumber): Observable<PageNumber> {\n return this.accumulator$.pipe(switchMap((accumulator) => iteratorNextPageUntilPage(accumulator.itemIteration, page)));\n }\n\n loadAllResults(): Observable<PageNumber> {\n return this.accumulator$.pipe(switchMap((accumulator) => iteratorNextPageUntilMaxPageLoadLimit(accumulator.itemIteration)));\n }\n}\n\nexport function dbxFirebaseCollectionLoaderInstance<T, D extends FirestoreDocument<T> = FirestoreDocument<T>>(config: DbxFirebaseCollectionLoaderInstanceInitConfig<T, D>): DbxFirebaseCollectionLoaderInstance<T, D> {\n return new DbxFirebaseCollectionLoaderInstance<T, D>(config);\n}\n\nexport function dbxFirebaseCollectionLoaderInstanceWithCollection<T, D extends FirestoreDocument<T> = FirestoreDocument<T>>(collection: Maybe<FirestoreCollectionLike<T, D>>): DbxFirebaseCollectionLoaderInstance<T, D> {\n return new DbxFirebaseCollectionLoaderInstance<T, D>({ collection });\n}\n","import { ObservableOrValue, useAsObservable, PageListLoadingState, filterMaybe, SubscriptionObject, asObservable, pageLoadingStateFromObs } from '@dereekb/rxjs';\nimport { BehaviorSubject, map, shareReplay, distinctUntilChanged, Subject, switchMap, Observable, startWith, exhaustMap } from 'rxjs';\nimport { dataFromDocumentSnapshots, DocumentDataWithIdAndKey, DocumentReference, documentReferencesFromDocuments, DocumentSnapshot, FirestoreDocument, FirestoreDocumentAccessor, firestoreModelIdsFromDocuments, FirestoreModelKey, firestoreModelKeysFromDocuments, getDataFromDocumentSnapshots, getDocumentSnapshots, latestSnapshotsFromDocuments, LimitedFirestoreDocumentAccessor, loadDocumentsForDocumentReferences, loadDocumentsForIds, loadDocumentsForKeys } from '@dereekb/firebase';\nimport { ArrayOrValue, asArray, Destroyable, type Maybe } from '@dereekb/util';\nimport { DbxFirebaseDocumentLoader, DbxLimitedFirebaseDocumentLoader } from './document.loader';\n\nexport interface DbxFirebaseDocumentLoaderInstanceInitConfig<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>> {\n readonly accessor: A;\n}\n\n/**\n * DbxLimitedFirebaseDocumentLoader implementation within an instance.\n */\nexport class DbxLimitedFirebaseDocumentLoaderInstance<T = unknown, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>> implements DbxLimitedFirebaseDocumentLoader<T>, Destroyable {\n readonly accessor: A;\n\n protected readonly _documents = new BehaviorSubject<Maybe<D[]>>(undefined);\n protected readonly _restart = new Subject<void>();\n protected readonly _sub = new SubscriptionObject();\n\n readonly documents$ = this._documents.pipe(filterMaybe(), distinctUntilChanged());\n readonly keys$ = this.documents$.pipe(map(firestoreModelKeysFromDocuments));\n readonly ids$ = this.documents$.pipe(map(firestoreModelIdsFromDocuments));\n readonly refs$ = this.documents$.pipe(map(documentReferencesFromDocuments));\n\n readonly snapshots$: Observable<DocumentSnapshot<T>[]> = this.documents$.pipe(\n switchMap((docs) =>\n this._restart.pipe(\n startWith(null),\n exhaustMap(() => getDocumentSnapshots<D>(docs))\n )\n ),\n shareReplay(1)\n );\n\n readonly data$: Observable<DocumentDataWithIdAndKey<T>[]> = this.snapshots$.pipe(\n map((snapshots) => getDataFromDocumentSnapshots(snapshots, true)),\n shareReplay(1)\n );\n\n /**\n * Snapshot stream of the documents\n */\n readonly snapshotsStream$: Observable<DocumentSnapshot<T>[]> = this.documents$.pipe(\n switchMap((docs) => latestSnapshotsFromDocuments(docs)),\n shareReplay(1)\n );\n\n /**\n * Data streamd of the documents.\n */\n readonly dataStream$: Observable<DocumentDataWithIdAndKey<T>[]> = this.snapshotsStream$.pipe(dataFromDocumentSnapshots(), shareReplay(1));\n\n readonly pageLoadingState$: Observable<PageListLoadingState<DocumentDataWithIdAndKey<T>>> = pageLoadingStateFromObs(this.data$, false);\n readonly pageLoadingStateStream$: Observable<PageListLoadingState<DocumentDataWithIdAndKey<T>>> = pageLoadingStateFromObs(this.dataStream$, false);\n\n constructor(initConfig: DbxFirebaseDocumentLoaderInstanceInitConfig<T, D, A>) {\n this.accessor = initConfig.accessor;\n }\n\n destroy(): void {\n this._documents.complete();\n this._restart.complete();\n this._sub.destroy();\n }\n\n restart() {\n this._restart.next();\n }\n\n setKeys(keys: Maybe<ObservableOrValue<ArrayOrValue<FirestoreModelKey>>>): void {\n this.setDocuments(asObservable(keys).pipe(map((x) => loadDocumentsForKeys(this.accessor, asArray(x)))));\n }\n\n setRefs(refs: Maybe<ObservableOrValue<ArrayOrValue<DocumentReference<T>>>>): void {\n this.setDocuments(asObservable(refs).pipe(map((x) => loadDocumentsForDocumentReferences(this.accessor, asArray(x)))));\n }\n\n setDocuments(docs: Maybe<ObservableOrValue<ArrayOrValue<D>>>): void {\n this._sub.subscription = useAsObservable(docs, (x) => this._documents.next(asArray(x)));\n }\n}\n\nexport function dbxLimitedFirebaseDocumentLoaderInstance<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>>(config: DbxFirebaseDocumentLoaderInstanceInitConfig<T, D, A>): DbxLimitedFirebaseDocumentLoaderInstance<T, D, A> {\n return new DbxLimitedFirebaseDocumentLoaderInstance<T, D, A>(config);\n}\n\nexport function dbxLimitedFirebaseDocumentLoaderInstanceWithAccessor<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends LimitedFirestoreDocumentAccessor<T, D> = LimitedFirestoreDocumentAccessor<T, D>>(accessor: A): DbxLimitedFirebaseDocumentLoaderInstance<T, D, A> {\n return new DbxLimitedFirebaseDocumentLoaderInstance<T, D, A>({ accessor });\n}\n\n// MARK: Full DbxFirebaseDocumentLoaderInstance\nexport class DbxFirebaseDocumentLoaderInstance<T = unknown, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends FirestoreDocumentAccessor<T, D> = FirestoreDocumentAccessor<T, D>> extends DbxLimitedFirebaseDocumentLoaderInstance<T, D, A> implements DbxFirebaseDocumentLoader<T>, Destroyable {\n setIds(ids: Maybe<ObservableOrValue<ArrayOrValue<FirestoreModelKey>>>): void {\n this.setDocuments(asObservable(ids).pipe(map((x) => loadDocumentsForIds(this.accessor, asArray(x)))));\n }\n}\n\nexport function dbxFirebaseDocumentLoaderInstance<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends FirestoreDocumentAccessor<T, D> = FirestoreDocumentAccessor<T, D>>(config: DbxFirebaseDocumentLoaderInstanceInitConfig<T, D, A>): DbxFirebaseDocumentLoaderInstance<T, D, A> {\n return new DbxFirebaseDocumentLoaderInstance<T, D, A>(config);\n}\n\nexport function dbxFirebaseDocumentLoaderInstanceWithAccessor<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, A extends FirestoreDocumentAccessor<T, D> = FirestoreDocumentAccessor<T, D>>(accessor: A): DbxFirebaseDocumentLoaderInstance<T, D, A> {\n return new DbxFirebaseDocumentLoaderInstance<T, D, A>({ accessor });\n}\n","import { FirestoreDocument, FirebasePermissionErrorContext, InModelContextFirebaseModelService, FirestoreDocumentData, DocumentSnapshot, FirestoreAccessorStreamMode, SnapshotOptions, InContextFirebaseModelsService, FirebaseModelsService } from '@dereekb/firebase';\nimport { GrantedRole, GrantedRoleTruthMap, GrantedRoleTruthMapObject } from '@dereekb/model';\nimport { asObservable, ObservableOrValue } from '@dereekb/rxjs';\nimport { SetIncludesMode, IterableOrValue, ModelKey } from '@dereekb/util';\nimport { map, Observable, switchMap, shareReplay, distinctUntilChanged } from 'rxjs';\nimport { DbxFirebaseInContextFirebaseModelInfoServiceInstance } from './model.context';\n\nexport type DbxFirebaseInContextFirebaseModelServiceInstanceFactory<S extends InContextFirebaseModelsService<any>, C extends FirebasePermissionErrorContext = FirebasePermissionErrorContext> = <D extends FirestoreDocument<any>, R extends GrantedRole = GrantedRole>(type: S extends InContextFirebaseModelsService<infer Y> ? (Y extends FirebaseModelsService<infer X, infer C> ? keyof X : never) : never, keyObs: ObservableOrValue<ModelKey>) => DbxFirebaseInContextFirebaseModelServiceInstance<D, R, C>;\n\nexport function dbxFirebaseInContextFirebaseModelServiceInstanceFactory<S extends InContextFirebaseModelsService<any>, C extends FirebasePermissionErrorContext = FirebasePermissionErrorContext>(context$: Observable<S>): DbxFirebaseInContextFirebaseModelServiceInstanceFactory<S, C> {\n return <D extends FirestoreDocument<any>, R extends GrantedRole = GrantedRole>(type: S extends InContextFirebaseModelsService<infer Y> ? (Y extends FirebaseModelsService<infer X, infer C> ? keyof X : never) : never, keyObs: ObservableOrValue<ModelKey>) => {\n const key$ = asObservable(keyObs);\n const modelServiceObs = context$.pipe(\n map((x) => x(type)),\n switchMap((service) => key$.pipe(map((key) => service(key))))\n ) as unknown as Observable<InModelContextFirebaseModelService<C, FirestoreDocumentData<D>, D, R>>;\n\n return dbxFirebaseInContextFirebaseModelServiceInstance<D, R, C>(modelServiceObs);\n };\n}\n\nexport interface DbxFirebaseInContextFirebaseModelServiceInstance<D extends FirestoreDocument<any>, R extends GrantedRole = GrantedRole, C extends FirebasePermissionErrorContext = FirebasePermissionErrorContext> extends DbxFirebaseInContextFirebaseModelInfoServiceInstance<D, R> {\n readonly modelService$: Observable<InModelContextFirebaseModelService<C, FirestoreDocumentData<D>, D, R>>;\n}\n\n/**\n * Creates a new DbxFirebaseInContextFirebaseModelServiceInstance.\n *\n * Wraps an InModelContextFirebaseModelService observable and provides different piped observables.\n */\nexport function dbxFirebaseInContextFirebaseModelServiceInstance<D extends FirestoreDocument<any>, R extends GrantedRole = GrantedRole, C extends FirebasePermissionErrorContext = FirebasePermissionErrorContext>(modelService$: Observable<InModelContextFirebaseModelService<C, FirestoreDocumentData<D>, D, R>>) {\n const key$ = modelService$.pipe(map((x) => x.model.key));\n\n // MARK: Model\n const modelType$ = modelService$.pipe(\n map((x) => x.model.modelType),\n distinctUntilChanged()\n );\n\n const model$ = modelService$.pipe(\n map((x) => x.model),\n distinctUntilChanged((a, b) => a.key === b.key),\n shareReplay(1)\n );\n\n const snapshotData$ = model$.pipe(\n switchMap((x) => x.snapshotData()),\n shareReplay(1)\n );\n\n function snapshotStream(mode: FirestoreAccessorStreamMode): Observable<DocumentSnapshot<FirestoreDocumentData<D>>> {\n return model$.pipe(\n switchMap((x) => x.snapshotStream(mode)),\n shareReplay(1)\n );\n }\n\n function snapshotDataStream(mode: FirestoreAccessorStreamMode, options?: SnapshotOptions): Observable<FirestoreDocumentData<D>> {\n return model$.pipe(\n switchMap((x) => x.snapshotDataStream(mode)),\n shareReplay(1)\n );\n }\n\n // MARK: Roles\n const roleReader$ = modelService$.pipe(\n switchMap((x) => x.roleReader()),\n shareReplay(1)\n );\n\n const roleMap$ = roleReader$.pipe(\n map((x) => x.roleMap),\n shareReplay(1)\n );\n\n const hasNoAccess$ = roleReader$.pipe(\n map((x) => x.hasNoAccess()),\n shareReplay(1)\n );\n\n function truthMap<M extends GrantedRoleTruthMapObject<any, R>>(input: M): Observable<GrantedRoleTruthMap<M>> {\n return roleReader$.pipe(\n map((x) => x.truthMap(input)),\n shareReplay(1)\n );\n }\n\n function hasAnyRoles(roles: IterableOrValue<R>): Observable<boolean> {\n return hasRoles('any', roles);\n }\n\n function hasAllRoles(roles: IterableOrValue<R>): Observable<boolean> {\n return hasRoles('all', roles);\n }\n\n function hasRoles(setIncludes: SetIncludesMode, roles: IterableOrValue<R>): Observable<boolean> {\n return roleReader$.pipe(\n map((x) => x.hasRoles(setIncludes, roles)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n }\n\n function containsAnyRoles(roles: IterableOrValue<R>): Observable<boolean> {\n return containsRoles('any', roles);\n }\n\n function containsAllRoles(roles: IterableOrValue<R>): Observable<boolean> {\n return containsRoles('all', roles);\n }\n\n function containsRoles(setIncludes: SetIncludesMode, roles: IterableOrValue<R>): Observable<boolean> {\n return roleReader$.pipe(\n map((x) => x.containsRoles(setIncludes, roles)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n }\n\n const result: DbxFirebaseInContextFirebaseModelServiceInstance<D, R, C> = {\n modelService$,\n key$,\n modelType$,\n model$,\n snapshotData$,\n snapshotStream,\n snapshotDataStream,\n roleReader$,\n roleMap$,\n hasNoAccess$,\n truthMap,\n hasAnyRoles,\n hasAllRoles,\n hasRoles,\n containsAnyRoles,\n containsAllRoles,\n containsRoles\n };\n\n return result;\n}\n","import { FirestoreModelType, buildFirebaseCollectionTypeModelTypeMap, FirebasePermissionErrorContext, FirestoreDocument, FirestoreModelIdentityTypeMap, FirestoreModelKey, InContextFirebaseModelsService, firestoreModelKeyCollectionTypePair } from '@dereekb/firebase';\nimport { asObservable, ObservableOrValue } from '@dereekb/rxjs';\nimport { GrantedRole } from '@dereekb/model';\nimport { shareReplay, map, Observable, OperatorFunction, first, switchMap } from 'rxjs';\nimport { DbxFirebaseInContextFirebaseModelInfoServiceInstance } from './model.context';\nimport { DbxFirebaseInContextFirebaseModelServiceInstanceFactory } from './model.context.instance';\n\n/**\n * Used for retrieving contexts for a specific model type/identity.\n */\nexport abstract class DbxFirebaseModelContextService {\n /**\n * Creates a new DbxFirebaseInContextFirebaseModelInfoServiceInstance for the input model key.\n *\n * @param key$\n */\n abstract modelInfoInstance<D extends FirestoreDocument<any> = any, R extends GrantedRole = GrantedRole>(keyObs: ObservableOrValue<FirestoreModelKey>): Observable<DbxFirebaseInContextFirebaseModelInfoServiceInstance<D, R>>;\n}\n\nexport type DbxFirebaseModelContextServiceInfoInstanceFactory = <D extends FirestoreDocument<any>, R extends GrantedRole = GrantedRole>(keyObs: ObservableOrValue<FirestoreModelKey>) => Observable<DbxFirebaseInContextFirebaseModelInfoServiceInstance<D, R>>;\n\nexport interface DbxFirebaseModelContextServiceInfoInstanceFactoryConfig<S extends InContextFirebaseModelsService<any>, C extends FirebasePermissionErrorContext = FirebasePermissionErrorContext> {\n readonly modelService: DbxFirebaseInContextFirebaseModelServiceInstanceFactory<S, C>;\n readonly entityMap$: Observable<FirestoreModelIdentityTypeMap>;\n}\n\nexport function dbxFirebaseModelContextServiceInfoInstanceFactory<S extends InContextFirebaseModelsService<any>, C extends FirebasePermissionErrorContext = FirebasePermissionErrorContext>(config: DbxFirebaseModelContextServiceInfoInstanceFactoryConfig<S, C>): DbxFirebaseModelContextServiceInfoInstanceFactory {\n const { modelService, entityMap$ } = config;\n return <D extends FirestoreDocument<any>, R extends GrantedRole = GrantedRole>(keyObs: ObservableOrValue<string>) => {\n const key$ = asObservable(keyObs);\n\n return key$.pipe(\n map(firestoreModelKeyCollectionTypePair),\n switchMap((pair) => {\n return entityMap$.pipe(\n map((entityMap) => {\n const modelType = entityMap.get(pair.collectionType) as FirestoreModelType;\n\n if (!modelType) {\n const message = `dbxFirebaseModelContextServiceInfoInstanceFactory Error: Failed to retrieve model type for collection type \"${pair.collectionType}\"`;\n console.error(message);\n throw new Error(message);\n }\n\n return modelService(modelType as any, pair.key) as DbxFirebaseInContextFirebaseModelInfoServiceInstance<D, R>;\n })\n );\n })\n );\n };\n}\n\n/**\n * Operator function that builds a FirestoreModelIdentityTypeMap from the input context and shares the replay.\n *\n * Since the output won't change with different contexts, the map is built once and then shared.\n *\n * @returns\n */\nexport function firebaseContextServiceEntityMap<T extends InContextFirebaseModelsService<any>>(): OperatorFunction<T, FirestoreModelIdentityTypeMap> {\n return (obs: Observable<T>) => {\n return obs.pipe(\n map((x) => buildFirebaseCollectionTypeModelTypeMap(x)),\n first(),\n shareReplay(1)\n );\n };\n}\n","import { distinctUntilChanged, map, Observable, shareReplay, switchMap, combineLatest, of, catchError } from 'rxjs';\nimport { FirestoreCollectionType, FirestoreDocument, FirestoreDocumentData, FirestoreModelIdentity, FirestoreModelKey } from '@dereekb/firebase';\nimport { DbxModelTypeInfo, DbxModelTypesMap, DbxModelTypesService } from '@dereekb/dbx-web';\nimport { ArrayOrValue, asArray, FactoryWithRequiredInput, Maybe, ModelTypeString } from '@dereekb/util';\nimport { ClickableAnchorLinkSegueRef, IconAndTitle, SegueRef } from '@dereekb/dbx-core';\nimport { ObservableOrValue, filterMaybeArray } from '@dereekb/rxjs';\nimport { GrantedRole } from '@dereekb/model';\nimport { Optional, Injectable, inject, Inject } from '@angular/core';\nimport { DbxFirebaseModelContextService } from '../../service/model.context.service';\nimport { DbxFirebaseInContextFirebaseModelInfoServiceInstance } from '../../service/model.context';\n\n/**\n * Configuration provided in the root module for configuring entries.\n */\nexport abstract class DbxFirebaseModelTypesServiceConfig {\n abstract entries: DbxFirebaseModelTypesServiceEntry[];\n}\n\nexport interface DbxFirebaseModelTypesServiceEntry<T = unknown> extends Omit<DbxModelTypeInfo, 'canSegueToView' | 'modelType'> {\n /**\n * Identity of the item being registered.\n */\n readonly identity: FirestoreModelIdentity;\n /**\n * Creates the DbxFirebaseModelDisplayInfo for the input data.\n *\n * If no icon is provided, it uses the default icon configured in this entry.\n *\n * @param value\n * @returns\n */\n readonly displayInfoFactory: FactoryWithRequiredInput<DbxFirebaseModelDisplayInfo, T>;\n}\n\nexport type DbxFirebaseModelDisplayInfo = IconAndTitle;\n\nexport interface DbxFirebaseModelTypeInfo<T = unknown> extends DbxModelTypeInfo, Pick<DbxFirebaseModelTypesServiceEntry<T>, 'identity' | 'displayInfoFactory'> {}\n\nexport type DbxFirebaseModelTypesMap = DbxModelTypesMap<DbxFirebaseModelTypeInfo>;\n\n/**\n * Provides model type information about models registered within Firebase.\n *\n * Automatically configures the DbxModelTypesService.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseModelTypesService {\n readonly dbxFirebaseModelContextService = inject(DbxFirebaseModelContextService);\n readonly dbxModelTypesService = inject(DbxModelTypesService<DbxFirebaseModelTypeInfo>);\n\n constructor(@Optional() @Inject(DbxFirebaseModelTypesServiceConfig) initialConfig?: DbxFirebaseModelTypesServiceConfig) {\n if (initialConfig) {\n this.register(initialConfig.entries);\n }\n }\n\n getDisplayInfo<T>(typeInfo: DbxFirebaseModelTypeInfo<T>, data: T) {\n let displayInfo: DbxFirebaseModelDisplayInfo;\n\n if (data != null) {\n displayInfo = typeInfo.displayInfoFactory(data);\n displayInfo.icon = displayInfo.icon || typeInfo.icon; // set default icon\n } else {\n displayInfo = this.getDefaultDisplayInfo(typeInfo);\n }\n\n return displayInfo;\n }\n\n getDefaultDisplayInfo<T = unknown>(typeInfo: DbxFirebaseModelTypeInfo<T>) {\n // TODO: Make configurable\n return {\n title: typeInfo.label ?? '',\n icon: 'warning'\n };\n }\n\n // MARK: Register\n register(entries: ArrayOrValue<DbxFirebaseModelTypesServiceEntry>) {\n const typeConfigs = asArray(entries).map((x) => ({ ...x, modelType: x.identity.modelType }));\n this.dbxModelTypesService.addTypeConfigs(typeConfigs);\n }\n\n // MARK: Retrieval\n currentInfoForType(type: ModelTypeString | FirestoreCollectionType): Observable<Maybe<DbxFirebaseModelTypeInfo>> {\n return this.dbxModelTypesService.typesMap$.pipe(map((x) => x[type]));\n }\n\n infoForType(type: ModelTypeString | FirestoreCollectionType): Observable<DbxFirebaseModelTypeInfo> {\n return this.currentInfoForType(type).pipe(\n map((x) => {\n if (!x) {\n console.error(`DbxFirebaseModelTypesService: contained no info for type \"${type}\". Ensure the correct type was entered, and that the type is registered with the DbxFirebaseModelTypesService.`);\n throw x;\n }\n\n return x as DbxFirebaseModelTypeInfo;\n })\n );\n }\n\n instanceForKey<D extends FirestoreDocument<any> = any, R extends GrantedRole = GrantedRole>(key$: ObservableOrValue<FirestoreModelKey>): DbxFirebaseModelTypesServiceInstance<D, R> {\n return dbxFirebaseModelTypesServiceInstance<D, R>(this.dbxFirebaseModelContextService.modelInfoInstance<D, R>(key$), this);\n }\n\n instancePairsForKeys(keys: ArrayOrValue<ObservableOrValue<FirestoreModelKey>>) {\n return dbxFirebaseModelTypesServiceInstancePairForKeysFactory(this)(keys);\n }\n}\n\n/**\n * Information pair for an instance.\n */\nexport interface DbxFirebaseModelTypesServiceInstancePair<D extends FirestoreDocument<any> = any, R extends GrantedRole = GrantedRole> {\n readonly key: FirestoreModelKey;\n readonly instance: DbxFirebaseModelTypesServiceInstance<D, R>;\n readonly displayInfo: DbxFirebaseModelDisplayInfo;\n readonly segueRef: Maybe<ClickableAnchorLinkSegueRef>;\n}\n\nexport type DbxFirebaseModelTypesServiceInstancePairForKeysFactory = (keys: ArrayOrValue<ObservableOrValue<FirestoreModelKey>>) => Observable<DbxFirebaseModelTypesServiceInstancePair[]>;\n\nexport function dbxFirebaseModelTypesServiceInstancePairForKeysFactory(service: DbxFirebaseModelTypesService): DbxFirebaseModelTypesServiceInstancePairForKeysFactory {\n return (keys: ArrayOrValue<ObservableOrValue<FirestoreModelKey>>) => {\n const instances = asArray(keys).map((x) => service.instanceForKey(x).safeInstancePair$);\n return instances.length ? combineLatest(instances).pipe(filterMaybeArray(), shareReplay(1)) : of([]);\n };\n}\n\n/**\n * DbxFirebaseModelTypesService instance\n */\nexport interface DbxFirebaseModelTypesServiceInstance<D extends FirestoreDocument<any> = any, R extends GrantedRole = GrantedRole> {\n readonly modelInfoInstance$: Observable<DbxFirebaseInContextFirebaseModelInfoServiceInstance<D, R>>;\n readonly dbxFirebaseModelTypesService: DbxFirebaseModelTypesService;\n readonly key$: Observable<string>;\n readonly modelType$: Observable<string>;\n readonly snapshotData$: Observable<Maybe<FirestoreDocumentData<D>>>;\n readonly typeInfo$: Observable<DbxFirebaseModelTypeInfo<unknown>>;\n readonly identity$: Observable<FirestoreModelIdentity>;\n readonly segueRef$: Observable<Maybe<SegueRef>>;\n readonly displayInfo$: Observable<DbxFirebaseModelDisplayInfo>;\n readonly clickableSegueRef$: Observable<Maybe<ClickableAnchorLinkSegueRef>>;\n readonly safeInstancePair$: Observable<Maybe<DbxFirebaseModelTypesServiceInstancePair>>;\n readonly instancePair$: Observable<DbxFirebaseModelTypesServiceInstancePair>;\n}\n\nexport function dbxFirebaseModelTypesServiceInstance<D extends FirestoreDocument<any> = any, R extends GrantedRole = GrantedRole>(modelInfoInstance$: Observable<DbxFirebaseInContextFirebaseModelInfoServiceInstance<D, R>>, dbxFirebaseModelTypesService: DbxFirebaseModelTypesService) {\n const key$ = modelInfoInstance$.pipe(switchMap((x) => x.key$));\n const modelType$ = modelInfoInstance$.pipe(switchMap((x) => x.modelType$));\n const snapshotData$ = modelInfoInstance$.pipe(switchMap((x) => x.snapshotData$));\n\n const typeInfo$ = modelType$.pipe(\n switchMap((x) => dbxFirebaseModelTypesService.infoForType(x)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n const identity$ = typeInfo$.pipe(\n map((x) => x.identity),\n distinctUntilChanged()\n );\n\n const segueRef$: Observable<Maybe<SegueRef>> = combineLatest([key$, typeInfo$]).pipe(\n map(([key, info]) => (info.sref ? info.sref(key) : undefined)),\n shareReplay(1)\n );\n\n const displayInfo$: Observable<DbxFirebaseModelDisplayInfo> = combineLatest([typeInfo$, snapshotData$]).pipe(\n map(([typeInfo, data]) => dbxFirebaseModelTypesService.getDisplayInfo(typeInfo, data)),\n shareReplay(1)\n );\n\n const clickableSegueRef$: Observable<Maybe<ClickableAnchorLinkSegueRef>> = combineLatest([segueRef$, displayInfo$]).pipe(\n map(([segueRef, displayInfo]) => {\n let ref: Maybe<ClickableAnchorLinkSegueRef> = undefined;\n\n if (segueRef) {\n ref = {\n ...segueRef,\n title: displayInfo.title,\n icon: displayInfo.icon\n };\n }\n\n return ref;\n }),\n shareReplay(1)\n );\n\n const instancePair$: Observable<DbxFirebaseModelTypesServiceInstancePair> = combineLatest([clickableSegueRef$, displayInfo$, key$]).pipe(\n map(([segueRef, displayInfo, key]) => ({ segueRef, displayInfo, key, instance })),\n shareReplay(1)\n );\n\n const safeInstancePair$: Observable<Maybe<DbxFirebaseModelTypesServiceInstancePair>> = instancePair$.pipe(catchError(() => of(undefined)));\n\n const instance: DbxFirebaseModelTypesServiceInstance<D, R> = {\n modelInfoInstance$,\n dbxFirebaseModelTypesService,\n key$,\n modelType$,\n snapshotData$,\n typeInfo$,\n identity$,\n segueRef$,\n displayInfo$,\n clickableSegueRef$,\n safeInstancePair$,\n instancePair$\n };\n\n return instance;\n}\n","import { ArrayOrValue, DecisionFunction, Maybe, asArray, invertDecision } from '@dereekb/util';\nimport { FirestoreModelIdentity } from '@dereekb/firebase';\nimport { map, Observable, switchMap, shareReplay, startWith, of, catchError } from 'rxjs';\nimport { Injectable, inject } from '@angular/core';\nimport { allDbxModelViewTrackerEventModelKeys, DbxModelTrackerService } from '@dereekb/dbx-web';\nimport { DbxFirebaseModelTypesService, DbxFirebaseModelTypesServiceInstancePair } from './model.types.service';\nimport { filterItemsWithObservableDecision, filterMaybeArray, invertObservableDecision, mapEachAsync, ObservableDecisionFunction } from '@dereekb/rxjs';\n\nexport interface DbxFirebaseModelTrackerFilterItem {\n instancePair: DbxFirebaseModelTypesServiceInstancePair;\n identity: FirestoreModelIdentity;\n}\n\nexport interface DbxFirebaseModelTrackerHistoryFilter {\n /**\n * Whether or not to exclude the values instead of include them.\n */\n invertFilter?: boolean;\n /**\n * Identity types to filter on.\n */\n identity?: Maybe<ArrayOrValue<FirestoreModelIdentity>>;\n /**\n * Arbitrary filter function to filter individual items.\n */\n filterItem?: ObservableDecisionFunction<DbxFirebaseModelTrackerFilterItem>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseModelTrackerService {\n readonly dbxModelTrackerService = inject(DbxModelTrackerService);\n readonly dbxFirebaseModelTypesService = inject(DbxFirebaseModelTypesService);\n\n readonly historyKeys$ = this.dbxModelTrackerService.newEvent$.pipe(\n startWith(null),\n switchMap(() => this.loadHistoryKeys()),\n shareReplay(1)\n );\n\n readonly historyPairs$ = this.dbxModelTrackerService.newEvent$.pipe(\n startWith(null),\n switchMap(() => this.loadHistoryPairs()), // TODO: Improve efficiency of this to only load/remove items for new keys\n shareReplay(1)\n );\n\n readonly filterItemHistoryPairs$: Observable<DbxFirebaseModelTrackerFilterItem[]> = this.historyPairs$.pipe(\n mapEachAsync(\n (instancePair) =>\n instancePair.instance.identity$.pipe(\n map((identity) => ({ instancePair, identity })),\n catchError(() => of(undefined))\n ),\n { onlyFirst: true }\n ),\n filterMaybeArray<DbxFirebaseModelTrackerFilterItem>(),\n shareReplay(1)\n );\n\n /**\n * Filters from historyPairs$ using the input filter configuration, if it is provided.\n *\n * @param filter\n * @returns\n */\n filterHistoryPairs(filter?: Maybe<DbxFirebaseModelTrackerHistoryFilter>): Observable<DbxFirebaseModelTypesServiceInstancePair[]> {\n if (filter && (filter?.identity || filter?.filterItem)) {\n const { invertFilter = false, identity, filterItem } = filter;\n const allowedIdentities = new Set(asArray(identity));\n const baseIsAllowedIdentityFn: DecisionFunction<FirestoreModelIdentity> = identity ? (x) => allowedIdentities.has(x) : () => true;\n const isAllowedIdentityFn = invertDecision(baseIsAllowedIdentityFn, invertFilter);\n\n const baseFilterItemFn: ObservableDecisionFunction<DbxFirebaseModelTrackerFilterItem> = filterItem ? invertObservableDecision(filterItem, invertFilter) : () => of(true);\n\n const filterItemFn: ObservableDecisionFunction<DbxFirebaseModelTrackerFilterItem> = (x) => {\n if (isAllowedIdentityFn(x.identity)) {\n return baseFilterItemFn(x);\n } else {\n return of(false);\n }\n };\n\n return this.filterItemHistoryPairs$.pipe(\n filterItemsWithObservableDecision(filterItemFn),\n map((x) => x.map((y) => y.instancePair)),\n shareReplay(1)\n );\n } else {\n return this.historyPairs$;\n }\n }\n\n loadHistoryKeys() {\n return this.dbxModelTrackerService.getAllViewEvents().pipe(map(allDbxModelViewTrackerEventModelKeys));\n }\n\n loadHistoryPairs(): Observable<DbxFirebaseModelTypesServiceInstancePair[]> {\n const historyKeys$ = this.loadHistoryKeys();\n return historyKeys$.pipe(switchMap((x) => this.dbxFirebaseModelTypesService.instancePairsForKeys(x)));\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractDbxSelectionListWrapperDirective, AbstractDbxValueListViewItemComponent, AbstractDbxSelectionListViewDirective, DEFAULT_LIST_WRAPPER_DIRECTIVE_TEMPLATE, DbxSelectionValueListViewConfig, provideDbxListView, DEFAULT_DBX_SELECTION_VALUE_LIST_DIRECTIVE_TEMPLATE, DbxValueAsListItem, provideDbxListViewWrapper } from '@dereekb/dbx-web';\nimport { of } from 'rxjs';\nimport { DbxFirebaseModelTypesServiceInstancePair } from './model.types.service';\n\nexport type DbxFirebaseModelTypeInstanceItem = DbxValueAsListItem<DbxFirebaseModelTypesServiceInstancePair>;\n\n/**\n * Renders an item as configured from the DbxFirebaseModelTypesServiceInstancePair.\n */\n@Component({\n selector: 'dbx-firebase-model-type-instance-list',\n template: DEFAULT_LIST_WRAPPER_DIRECTIVE_TEMPLATE,\n providers: provideDbxListViewWrapper(DbxFirebaseModelTypeInstanceComponent)\n})\nexport class DbxFirebaseModelTypeInstanceComponent extends AbstractDbxSelectionListWrapperDirective<DbxFirebaseModelTypesServiceInstancePair> {\n constructor() {\n super({\n componentClass: DbxFirebaseModelTypeInstanceViewComponent,\n defaultSelectionMode: 'view'\n });\n }\n}\n\n@Component({\n selector: 'dbx-firebase-model-type-instance-list-view',\n template: DEFAULT_DBX_SELECTION_VALUE_LIST_DIRECTIVE_TEMPLATE,\n providers: provideDbxListView(DbxFirebaseModelTypeInstanceViewComponent)\n})\nexport class DbxFirebaseModelTypeInstanceViewComponent extends AbstractDbxSelectionListViewDirective<DbxFirebaseModelTypesServiceInstancePair> {\n readonly config: DbxSelectionValueListViewConfig<DbxFirebaseModelTypeInstanceItem> = {\n componentClass: DbxFirebaseModelTypeInstanceViewItemComponent,\n mapValuesToItemValues: (x) => of(x.map((y) => ({ itemValue: y, icon: y.displayInfo.icon ?? y.icon, anchor: y.segueRef })))\n };\n}\n\n@Component({\n template: `\n <span>{{ title }}</span>\n `\n})\nexport class DbxFirebaseModelTypeInstanceViewItemComponent extends AbstractDbxValueListViewItemComponent<DbxFirebaseModelTypesServiceInstancePair> {\n get title() {\n return this.itemValue.displayInfo.title;\n }\n}\n","import { Component, Input, OnDestroy, inject } from '@angular/core';\nimport { AnchorForValueFunction } from '@dereekb/dbx-web';\nimport { loadingStateFromObs } from '@dereekb/rxjs';\nimport { type Maybe } from '@dereekb/util';\nimport { BehaviorSubject, switchMap, shareReplay } from 'rxjs';\nimport { DbxFirebaseModelTrackerHistoryFilter, DbxFirebaseModelTrackerService } from './model.tracker.service';\nimport { DbxFirebaseModelTypesServiceInstancePair } from './model.types.service';\n\n@Component({\n selector: 'dbx-firebase-model-history',\n template: `\n <dbx-firebase-model-type-instance-list [state$]=\"state$\" [dbxListItemModifier] [dbxListItemAnchorModifier]=\"anchorForItem\">\n <ng-content empty select=\"[empty]\"></ng-content>\n </dbx-firebase-model-type-instance-list>\n `\n})\nexport class DbxFirebaseModelHistoryComponent implements OnDestroy {\n readonly dbxFirebaseModelTrackerService = inject(DbxFirebaseModelTrackerService);\n\n private readonly _historyFilter = new BehaviorSubject<Maybe<DbxFirebaseModelTrackerHistoryFilter>>(undefined);\n\n @Input()\n anchorForItem?: Maybe<AnchorForValueFunction<DbxFirebaseModelTypesServiceInstancePair>>;\n\n @Input()\n get historyFilter() {\n return this._historyFilter.value;\n }\n\n set historyFilter(historyFilter: Maybe<DbxFirebaseModelTrackerHistoryFilter>) {\n this._historyFilter.next(historyFilter);\n }\n\n readonly historyFilter$ = this._historyFilter.asObservable();\n\n readonly historyPairs$ = this.historyFilter$.pipe(\n switchMap((x) => this.dbxFirebaseModelTrackerService.filterHistoryPairs(x)),\n shareReplay(1)\n );\n\n readonly state$ = loadingStateFromObs(this.historyPairs$);\n\n ngOnDestroy(): void {\n this._historyFilter.complete();\n }\n}\n","import { Component, ElementRef } from '@angular/core';\nimport { NgPopoverRef } from 'ng-overlay-container';\nimport { AbstractPopoverDirective, AnchorForValueFunction, DbxPopoverKey, DbxPopoverService } from '@dereekb/dbx-web';\nimport { type Maybe } from '@dereekb/util';\nimport { DbxFirebaseModelTypesServiceInstancePair } from './model.types.service';\nimport { DbxFirebaseModelTrackerHistoryFilter } from './model.tracker.service';\n\nexport interface DbxFirebaseModelHistoryPopoverParams {\n /**\n * Custom icon\n *\n * Defaults to \"history\"\n */\n icon?: string;\n /**\n * Custom header text\n *\n * Defaults to \"History\"\n */\n header?: string;\n /**\n * Custom empty text when no items exist.\n */\n emptyText?: string;\n /**\n * Origin to add the popover to.\n */\n origin: ElementRef;\n /**\n * Optional config to pass to the DbxFirebaseHistoryComponent\n */\n historyFilter?: Maybe<DbxFirebaseModelTrackerHistoryFilter>;\n /**\n * Anchor\n */\n anchorForItem?: Maybe<AnchorForValueFunction<DbxFirebaseModelTypesServiceInstancePair>>;\n}\n\nexport const DEFAULT_DBX_FIREBASE_MODEL_HISTORY_COMPONENT_POPOVER_KEY = 'history';\n\n@Component({\n templateUrl: './model.history.popover.component.html'\n})\nexport class DbxFirebaseModelHistoryPopoverComponent extends AbstractPopoverDirective<unknown, DbxFirebaseModelHistoryPopoverParams> {\n static openPopover(popupService: DbxPopoverService, { origin, header, icon, emptyText, historyFilter, anchorForItem }: DbxFirebaseModelHistoryPopoverParams, popoverKey?: DbxPopoverKey): NgPopoverRef {\n return popupService.open({\n key: popoverKey ?? DEFAULT_DBX_FIREBASE_MODEL_HISTORY_COMPONENT_POPOVER_KEY,\n origin,\n componentClass: DbxFirebaseModelHistoryPopoverComponent,\n data: {\n header,\n icon,\n emptyText,\n historyFilter,\n anchorForItem\n }\n });\n }\n\n get params(): DbxFirebaseModelHistoryPopoverParams {\n return this.popover.data as DbxFirebaseModelHistoryPopoverParams;\n }\n\n get icon() {\n return this.params.icon ?? 'history';\n }\n\n get header() {\n return this.params.header ?? 'History';\n }\n\n get emptyText() {\n return this.params.header ?? 'History is empty.';\n }\n\n get historyFilter() {\n return this.params.historyFilter;\n }\n\n get anchorForItem() {\n return this.params.anchorForItem;\n }\n}\n","<dbx-popover-content>\n <!-- Header -->\n <dbx-popover-header [icon]=\"icon\" [header]=\"header\"></dbx-popover-header>\n <!-- Content -->\n <dbx-popover-scroll-content>\n <dbx-firebase-model-history [historyFilter]=\"historyFilter\" [anchorForItem]=\"anchorForItem\">\n <dbx-list-empty-content empty>\n <p>{{ emptyText }}</p>\n </dbx-list-empty-content>\n </dbx-firebase-model-history>\n </dbx-popover-scroll-content>\n</dbx-popover-content>\n","import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild, inject } from '@angular/core';\nimport { AbstractPopoverRefDirective, DbxPopoverService } from '@dereekb/dbx-web';\nimport { NgPopoverRef } from 'ng-overlay-container';\nimport { DbxFirebaseModelHistoryPopoverComponent, DbxFirebaseModelHistoryPopoverParams } from './model.history.popover.component';\n\nexport type DbxFirebaseModelHistoryPopoverButtonConfig = DbxFirebaseModelHistoryPopoverParams;\n\n@Component({\n selector: 'dbx-firebase-model-history-popover-button',\n template: `\n <dbx-icon-button #button (buttonClick)=\"showHistoryPopover()\" icon=\"history\"></dbx-icon-button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DbxFirebaseModelHistoryPopoverButtonComponent extends AbstractPopoverRefDirective<unknown, unknown> {\n private readonly _dbxPopoverService = inject(DbxPopoverService);\n\n @ViewChild('button', { read: ElementRef, static: false })\n buttonElement!: ElementRef;\n\n @Input()\n config?: DbxFirebaseModelHistoryPopoverButtonConfig;\n\n protected override _makePopoverRef(origin?: ElementRef): NgPopoverRef<unknown, unknown> {\n const config = this.config;\n\n if (!origin) {\n throw new Error('Missing origin.');\n }\n\n return DbxFirebaseModelHistoryPopoverComponent.openPopover(this._dbxPopoverService, {\n origin,\n ...config\n });\n }\n\n showHistoryPopover(): void {\n const origin = this.buttonElement.nativeElement;\n this.showPopover(origin);\n }\n}\n","import { Directive, forwardRef, Input, OnDestroy, Provider, Type } from '@angular/core';\nimport { DocumentReference, FirestoreAccessorStreamMode, FirestoreDocument, FirestoreModelKey, FirestoreModelId, TwoWayFlatFirestoreModelKey } from '@dereekb/firebase';\nimport { ModelKey, type Maybe } from '@dereekb/util';\nimport { DbxFirebaseDocumentStore } from './store.document';\nimport { BehaviorSubject, first, Observable, shareReplay, Subscription, switchMap } from 'rxjs';\nimport { filterMaybe, useFirst } from '@dereekb/rxjs';\nimport { DbxRouteModelIdDirectiveDelegate, DbxRouteModelKeyDirectiveDelegate, provideDbxRouteModelIdDirectiveDelegate, provideDbxRouteModelKeyDirectiveDelegate } from '@dereekb/dbx-core';\nimport { DbxFirebaseDocumentStoreTwoWayKeyProvider } from './store.document.twoway.key.source';\n\n/**\n * Abstract directive that contains a DbxFirebaseDocumentStore and provides an interface for communicating with other directives.\n */\n@Directive()\nexport abstract class DbxFirebaseDocumentStoreDirective<T = unknown, D extends FirestoreDocument<T> = FirestoreDocument<T>, S extends DbxFirebaseDocumentStore<T, D> = DbxFirebaseDocumentStore<T, D>> implements DbxFirebaseDocumentStoreTwoWayKeyProvider, DbxRouteModelIdDirectiveDelegate, DbxRouteModelKeyDirectiveDelegate, OnDestroy {\n private readonly _store = new BehaviorSubject<Maybe<S>>(undefined);\n\n readonly store$ = this._store.pipe(filterMaybe(), shareReplay(1));\n\n readonly exists$ = this.store$.pipe(switchMap((x) => x.exists$));\n readonly document$ = this.store$.pipe(switchMap((x) => x.document$));\n readonly documentLoadingState$ = this.store$.pipe(switchMap((x) => x.documentLoadingState$));\n\n readonly id$ = this.store$.pipe(switchMap((x) => x.id$));\n readonly key$ = this.store$.pipe(switchMap((x) => x.key$));\n readonly twoWayFlatKey$ = this.store$.pipe(switchMap((x) => x.twoWayFlatKey$));\n readonly ref$ = this.store$.pipe(switchMap((x) => x.ref$));\n\n readonly snapshot$ = this.store$.pipe(switchMap((x) => x.snapshot$));\n readonly snapshotLoadingState$ = this.store$.pipe(switchMap((x) => x.snapshotLoadingState$));\n\n readonly modelIdentity$ = this.store$.pipe(switchMap((x) => x.modelIdentity$));\n readonly data$ = this.store$.pipe(switchMap((x) => x.data$));\n readonly loadingState$ = this.store$.pipe(switchMap((x) => x.dataLoadingState$));\n\n constructor(store: S) {\n this.replaceStore(store);\n }\n\n ngOnDestroy(): void {\n this._store.complete();\n }\n\n get store() {\n return this._store.value as S;\n }\n\n /**\n * Replaces the internal store.\n */\n replaceStore(store: S) {\n this._store.next(store);\n }\n\n useRouteModelIdParamsObservable(idFromParams: Observable<Maybe<ModelKey>>): Subscription {\n return this.store$.pipe(first()).subscribe((x) => x.setId(idFromParams));\n }\n\n useRouteModelKeyParamsObservable(keyFromParams: Observable<Maybe<ModelKey>>): Subscription {\n return this.store$.pipe(first()).subscribe((x) => x.setKey(keyFromParams));\n }\n\n // MARK: Inputs\n @Input()\n set documentId(documentId: Maybe<FirestoreModelId>) {\n useFirst(this.store$, (x) => x.setId(documentId));\n }\n\n @Input()\n set key(key: Maybe<FirestoreModelKey>) {\n useFirst(this.store$, (x) => x.setKey(key));\n }\n\n @Input()\n set flatKey(flatKey: Maybe<TwoWayFlatFirestoreModelKey>) {\n useFirst(this.store$, (x) => x.setFlatKey(flatKey));\n }\n\n @Input()\n set ref(ref: Maybe<DocumentReference<T>>) {\n useFirst(this.store$, (x) => x.setRef(ref));\n }\n\n @Input()\n set streamMode(streamMode: FirestoreAccessorStreamMode) {\n useFirst(this.store$, (x) => x.setStreamMode(streamMode));\n }\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// The use of any here does not degrade the type-safety; we want to simply match that the Store type S is used in the Directive type C to provide it.\n\n/**\n * Configures providers for a DbxFirebaseDocumentStoreDirective.\n *\n * Can optionally also provide the actual store type to include in the providers array so it is instantiated by Angular.\n *\n * @param sourceType\n */\nexport function provideDbxFirebaseDocumentStoreDirective<S extends DbxFirebaseDocumentStoreDirective<any, any, any>>(sourceType: Type<S>): Provider[];\nexport function provideDbxFirebaseDocumentStoreDirective<S extends DbxFirebaseDocumentStore<any, any>, C extends DbxFirebaseDocumentStoreDirective<any, any, S> = DbxFirebaseDocumentStoreDirective<any, any, S>>(sourceType: Type<C>, storeType: Type<S>): Provider[];\nexport function provideDbxFirebaseDocumentStoreDirective<S extends DbxFirebaseDocumentStore<any, any>, C extends DbxFirebaseDocumentStoreDirective<any, any, S> = DbxFirebaseDocumentStoreDirective<any, any, S>>(sourceType: Type<C>, storeType?: Type<S>): Provider[] {\n const providers: Provider[] = [\n {\n provide: DbxFirebaseDocumentStoreDirective,\n useExisting: forwardRef(() => sourceType)\n },\n ...provideDbxRouteModelIdDirectiveDelegate(sourceType),\n ...provideDbxRouteModelKeyDirectiveDelegate(sourceType)\n ];\n\n if (storeType != null) {\n providers.push(storeType);\n }\n\n return providers;\n}\n","import { distinctUntilModelKeyChange } from '@dereekb/rxjs';\nimport { DbxModelObjectStateService, ModelViewContext } from '@dereekb/dbx-web';\nimport { Directive, Input, NgZone, OnInit, inject } from '@angular/core';\nimport { AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { combineLatestWith, first, map, switchMap } from 'rxjs';\nimport { DbxFirebaseDocumentStoreDirective } from '../store/store.document.directive';\nimport { DbxFirebaseModelTypesService } from './model.types.service';\nimport { ModelKeyTypeNamePair } from '@dereekb/util';\n\n/**\n * Used with a DbxFirebaseDocumentStoreDirective to emit model viewed events.\n */\n@Directive({\n selector: '[dbxFirebaseModelViewedEvent]'\n})\nexport class DbxfirebaseModelViewedEventDirective extends AbstractSubscriptionDirective implements OnInit {\n readonly dbxFirebaseDocumentStoreDirective = inject(DbxFirebaseDocumentStoreDirective);\n readonly dbxModelObjectStateService = inject(DbxModelObjectStateService);\n readonly dbxFirebaseModelTypesService = inject(DbxFirebaseModelTypesService);\n readonly ngZone = inject(NgZone);\n\n @Input('dbxFirebaseModelViewedEvent')\n context?: ModelViewContext | undefined;\n\n ngOnInit(): void {\n this.sub = this.dbxFirebaseDocumentStoreDirective.data$\n .pipe(\n //\n distinctUntilModelKeyChange(),\n combineLatestWith(\n this.dbxFirebaseDocumentStoreDirective.modelIdentity$.pipe(\n switchMap((x) => this.dbxFirebaseModelTypesService.infoForType(x.modelType)),\n first()\n ),\n this.dbxFirebaseDocumentStoreDirective.key$\n ),\n map(([data, typeInfo, key]) => {\n const displayInfo = this.dbxFirebaseModelTypesService.getDisplayInfo(typeInfo, data);\n\n const pair: ModelKeyTypeNamePair = {\n key,\n type: typeInfo.modelType,\n name: displayInfo.title\n };\n\n return pair;\n })\n )\n .subscribe((modelKeyTypeNamePair) => {\n this.ngZone.run(() => this.dbxModelObjectStateService.emitModelViewEvent({ modelKeyTypeNamePair, context: this.context || undefined }));\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxListLayoutModule, DbxModelInfoModule } from '@dereekb/dbx-web';\nimport { DbxFirebaseModelTypeInstanceComponent, DbxFirebaseModelTypeInstanceViewComponent, DbxFirebaseModelTypeInstanceViewItemComponent } from './model.types.list.component';\nimport { DbxfirebaseModelViewedEventDirective } from './model.types.view.directive';\n\nconst declarations = [DbxfirebaseModelViewedEventDirective, DbxFirebaseModelTypeInstanceComponent, DbxFirebaseModelTypeInstanceViewComponent, DbxFirebaseModelTypeInstanceViewItemComponent];\n\n@NgModule({\n imports: [CommonModule, DbxModelInfoModule, DbxListLayoutModule],\n declarations,\n exports: declarations\n})\nexport class DbxFirebaseModelTypesModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxButtonModule, DbxListLayoutModule, DbxModelInfoModule, DbxPopoverInteractionModule, DbxRouterListModule } from '@dereekb/dbx-web';\nimport { DbxFirebaseModelHistoryComponent } from './model.history.component';\nimport { DbxFirebaseModelHistoryPopoverButtonComponent } from './model.history.popover.button.component';\nimport { DbxFirebaseModelHistoryPopoverComponent } from './model.history.popover.component';\nimport { DbxFirebaseModelTypesModule } from './model.types.module';\n\nconst declarations = [DbxFirebaseModelHistoryComponent, DbxFirebaseModelHistoryPopoverButtonComponent, DbxFirebaseModelHistoryPopoverComponent];\n\n@NgModule({\n imports: [CommonModule, DbxButtonModule, DbxRouterListModule, DbxPopoverInteractionModule, DbxModelInfoModule, DbxListLayoutModule, DbxFirebaseModelTypesModule],\n declarations,\n exports: declarations\n})\nexport class DbxFirebaseModelHistoryModule {}\n","import { FirestoreDocument, FirestoreModelIdentity } from '@dereekb/firebase';\nimport { SourceSelectLoadSource } from '@dereekb/dbx-form';\nimport { LoadingState, loadingStateFromObs, mapEachAsync } from '@dereekb/rxjs';\nimport { Observable } from 'rxjs';\nimport { GrantedRole } from '@dereekb/model';\nimport { MapFunction } from '@dereekb/util';\nimport { DbxFirebaseModelTypesServiceInstancePair } from './model.types.service';\nimport { DbxFirebaseModelTrackerHistoryFilter, DbxFirebaseModelTrackerService } from './model.tracker.service';\n\nexport interface DbxFirebaseSourceSelectLoadSourceConfig<M, D extends FirestoreDocument<any> = any, R extends GrantedRole = GrantedRole> extends Pick<DbxFirebaseModelTrackerHistoryFilter, 'filterItem'> {\n /**\n * Source label. Defaults to \"History\".\n */\n label?: string;\n /**\n * Type of model to pull from the history.\n */\n identity: FirestoreModelIdentity;\n /**\n * Maps a result instance to the target meta type\n */\n mapToMeta: MapFunction<DbxFirebaseModelTypesServiceInstancePair<D, R>, Observable<M>>;\n /**\n * Tracker service to load history values from.\n */\n dbxFirebaseModelTrackerService: DbxFirebaseModelTrackerService;\n}\n\n/**\n * Configures a SourceSelectLoadSource using the DbxFirebaseModelTrackerService to load models of a specific identity.\n *\n * @param config\n * @returns\n */\nexport function dbxFirebaseSourceSelectLoadSource<M>(config: DbxFirebaseSourceSelectLoadSourceConfig<M>): SourceSelectLoadSource<M> {\n const { label = 'History', identity, mapToMeta, filterItem, dbxFirebaseModelTrackerService } = config;\n const historyValuesObs = dbxFirebaseModelTrackerService.filterHistoryPairs({ identity, filterItem });\n const metaObs = historyValuesObs.pipe(mapEachAsync(mapToMeta));\n const meta: Observable<LoadingState<M[]>> = loadingStateFromObs(metaObs);\n\n return {\n label,\n meta\n };\n}\n","import { Directive, forwardRef, Input, OnDestroy, Provider, Type } from '@angular/core';\nimport { FirestoreDocument, FirestoreQueryConstraint } from '@dereekb/firebase';\nimport { Maybe, ArrayOrValue } from '@dereekb/util';\nimport { DbxFirebaseCollectionStore } from './store.collection';\nimport { BehaviorSubject, shareReplay, switchMap } from 'rxjs';\nimport { filterMaybe } from '@dereekb/rxjs';\n\n/**\n * Abstract directive that contains a DbxFirebaseCollectionStore and provides an interface for communicating with other directives.\n */\n@Directive()\nexport abstract class DbxFirebaseCollectionStoreDirective<T = unknown, D extends FirestoreDocument<T> = FirestoreDocument<T>, S extends DbxFirebaseCollectionStore<T, D> = DbxFirebaseCollectionStore<T, D>> implements OnDestroy {\n private readonly _store = new BehaviorSubject<Maybe<S>>(undefined);\n readonly store$ = this._store.pipe(filterMaybe(), shareReplay(1));\n\n readonly pageLoadingState$ = this.store$.pipe(switchMap((x) => x.pageLoadingState$));\n\n constructor(store: S) {\n this.replaceStore(store);\n }\n\n get store() {\n return this._store.value as S;\n }\n\n ngOnDestroy(): void {\n this._store.complete();\n }\n\n /**\n * Replaces the internal store.\n */\n replaceStore(store: S) {\n this._store.next(store);\n }\n\n // MARK: Inputs\n @Input()\n set maxPages(maxPages: Maybe<number>) {\n this.store.setMaxPages(maxPages);\n }\n\n @Input()\n set itemsPerPage(itemsPerPage: Maybe<number>) {\n this.store.setItemsPerPage(itemsPerPage);\n }\n\n @Input()\n set constraints(constraints: Maybe<ArrayOrValue<FirestoreQueryConstraint>>) {\n this.store.setConstraints(constraints);\n }\n\n next() {\n this.store.next();\n }\n\n restart() {\n this.store.restart();\n }\n\n setConstraints(constraints: Maybe<ArrayOrValue<FirestoreQueryConstraint>>) {\n this.store.setConstraints(constraints);\n }\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// The use of any here does not degrade the type-safety; we want to simply match that the Store type S is used in the Directive type C to provide it.\n\n/**\n * Configures providers for a DbxFirebaseCollectionStoreDirective.\n *\n * Can optionally also provide the actual store type to include in the providers array so it is instantiated by Angular.\n *\n * @param sourceType\n */\nexport function provideDbxFirebaseCollectionStoreDirective<S extends DbxFirebaseCollectionStoreDirective<any, any, any>>(sourceType: Type<S>): Provider[];\nexport function provideDbxFirebaseCollectionStoreDirective<S extends DbxFirebaseCollectionStore<any, any>, C extends DbxFirebaseCollectionStoreDirective<any, any, S> = DbxFirebaseCollectionStoreDirective<any, any, S>>(sourceType: Type<C>, storeType?: Type<S>): Provider[];\nexport function provideDbxFirebaseCollectionStoreDirective<S extends DbxFirebaseCollectionStore<any, any>, C extends DbxFirebaseCollectionStoreDirective<any, any, S> = DbxFirebaseCollectionStoreDirective<any, any, S>>(sourceType: Type<C>, storeType?: Type<S>): Provider[] {\n const providers: Provider[] = [\n {\n provide: DbxFirebaseCollectionStoreDirective,\n useExisting: forwardRef(() => sourceType)\n }\n ];\n\n if (storeType) {\n providers.push(storeType);\n }\n\n return providers;\n}\n","import { Directive, Input, OnDestroy, OnInit, inject } from '@angular/core';\nimport { FirestoreDocument } from '@dereekb/firebase';\nimport { type Maybe } from '@dereekb/util';\nimport { DbxFirebaseCollectionStore } from './store.collection';\nimport { DbxFirebaseCollectionStoreDirective } from './store.collection.directive';\nimport { DbxFirebaseCollectionChangeWatcher, dbxFirebaseCollectionChangeWatcher, DbxFirebaseCollectionChangeWatcherEvent, DbxFirebaseCollectionChangeWatcherTriggerMode } from '../../loader/collection.change.watcher';\nimport { Observable } from 'rxjs';\nimport { dbxFirebaseCollectionChangeTriggerForWatcher } from '../../loader/collection.change.trigger';\n\n/**\n * Used to watch query doc changes and respond to them accordingly.\n */\n@Directive({\n selector: '[dbxFirebaseCollectionChange]'\n})\nexport class DbxFirebaseCollectionChangeDirective<T = unknown, D extends FirestoreDocument<T> = FirestoreDocument<T>, S extends DbxFirebaseCollectionStore<T, D> = DbxFirebaseCollectionStore<T, D>> implements DbxFirebaseCollectionChangeWatcher<S>, OnInit, OnDestroy {\n readonly dbxFirebaseCollectionStoreDirective = inject(DbxFirebaseCollectionStoreDirective<T, D, S>);\n\n private readonly _watcher = dbxFirebaseCollectionChangeWatcher(this.dbxFirebaseCollectionStoreDirective.store);\n private readonly _trigger = dbxFirebaseCollectionChangeTriggerForWatcher(this._watcher, () => this.restart());\n\n readonly mode$: Observable<DbxFirebaseCollectionChangeWatcherTriggerMode> = this._watcher.mode$;\n readonly event$: Observable<DbxFirebaseCollectionChangeWatcherEvent> = this._watcher.event$;\n readonly hasChangeAvailable$: Observable<boolean> = this._watcher.hasChangeAvailable$;\n readonly triggered$: Observable<boolean> = this._watcher.triggered$;\n readonly trigger$: Observable<void> = this._watcher.trigger$;\n\n get store() {\n return this._watcher.store;\n }\n\n ngOnInit(): void {\n this._trigger.init();\n }\n\n ngOnDestroy(): void {\n this._watcher.destroy();\n this._trigger.destroy();\n }\n\n @Input('dbxFirebaseCollectionChange')\n set mode(mode: Maybe<DbxFirebaseCollectionChangeWatcherTriggerMode | ''>) {\n this._watcher.setMode(mode || 'off');\n }\n\n restart() {\n this.dbxFirebaseCollectionStoreDirective.store.restart();\n }\n}\n","import { OnDestroy, Directive, Input, inject } from '@angular/core';\nimport { AbstractIfDirective } from '@dereekb/dbx-core';\nimport { shareReplay, BehaviorSubject, combineLatest, Observable, map } from 'rxjs';\nimport { DbxFirebaseCollectionChangeDirective } from './store.collection.change.directive';\nimport { IterationQueryDocChangeWatcherChangeType } from '@dereekb/firebase';\nimport { type Maybe } from '@dereekb/util';\n\nexport type DbxFirebaseCollectionHasChangeDirectiveMode = 'all' | IterationQueryDocChangeWatcherChangeType;\n\n/**\n * Structural directive that displays the content when the target change is detected.\n *\n * Can specify which changes to appear on.\n */\n@Directive({\n selector: '[dbxFirebaseCollectionHasChange]'\n})\nexport class DbxFirebaseCollectionHasChangeDirective extends AbstractIfDirective implements OnDestroy {\n private _mode = new BehaviorSubject<DbxFirebaseCollectionHasChangeDirectiveMode>('addedAndRemoved');\n\n readonly directive = inject(DbxFirebaseCollectionChangeDirective);\n readonly show$: Observable<boolean> = combineLatest([this._mode, this.directive.event$]).pipe(\n map(([mode, event]) => {\n let show = false;\n\n if (event.type !== 'none') {\n switch (mode) {\n case 'all':\n show = true;\n break;\n case 'addedAndRemoved':\n show = event.type === 'addedAndRemoved' || event.type === 'added' || event.type === 'removed';\n break;\n default:\n show = event.type === mode;\n break;\n }\n }\n\n return show;\n }),\n shareReplay(1)\n );\n\n @Input('dbxFirebaseCollectionHasChange')\n get mode(): DbxFirebaseCollectionHasChangeDirectiveMode {\n return this._mode.value;\n }\n\n set mode(mode: Maybe<DbxFirebaseCollectionHasChangeDirectiveMode | ''>) {\n this._mode.next(mode || 'addedAndRemoved');\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._mode.complete();\n }\n}\n","import { AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { DbxListViewWrapper } from '@dereekb/dbx-web';\nimport { Directive, OnInit, inject } from '@angular/core';\nimport { DbxFirebaseCollectionStoreDirective } from './store.collection.directive';\n\n/**\n * Directive that connects a host DbxListView to a DbxFirebaseCollectionStoreDirective to pass data for rendering items from a collection and query parameters.\n */\n@Directive({\n selector: '[dbxFirebaseCollectionList]'\n})\nexport class DbxFirebaseCollectionListDirective<T> extends AbstractSubscriptionDirective implements OnInit {\n readonly dbxFirebaseCollectionStoreDirective = inject(DbxFirebaseCollectionStoreDirective<T>);\n readonly dbxListViewWrapper = inject(DbxListViewWrapper<T>, { host: true });\n\n constructor() {\n super();\n this.dbxListViewWrapper.state$ = this.dbxFirebaseCollectionStoreDirective.pageLoadingState$;\n }\n\n ngOnInit(): void {\n this.sub = this.dbxListViewWrapper.loadMore?.subscribe(() => {\n this.dbxFirebaseCollectionStoreDirective.next();\n });\n }\n}\n","import { Directive, OnInit, inject } from '@angular/core';\nimport { FirestoreDocument } from '@dereekb/firebase';\nimport { AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { DbxFirebaseAuthService } from '../../../auth/service/firebase.auth.service';\nimport { DbxFirebaseDocumentStoreDirective } from './store.document.directive';\n\n/**\n * Utility directive for a host DbxFirebaseDocumentStoreDirective that sets the document's ID to match the ID of the current user.\n *\n * This is useful for cases where each document is keyed by the user (I.E. implements UserRelatedById).\n */\n@Directive({\n selector: '[dbxFirebaseDocumentAuthId]'\n})\nexport class DbxFirebaseDocumentAuthIdDirective<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends AbstractSubscriptionDirective implements OnInit {\n readonly dbxFirebaseAuthService = inject(DbxFirebaseAuthService);\n readonly dbxFirebaseDocumentStoreDirective = inject(DbxFirebaseDocumentStoreDirective<T, D>, { host: true });\n\n ngOnInit(): void {\n this.sub = this.dbxFirebaseDocumentStoreDirective.store.setId(this.dbxFirebaseAuthService.userIdentifier$);\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { DbxRouteModelIdDirective } from '@dereekb/dbx-core';\nimport { Maybe, ModelKey } from '@dereekb/util';\nimport { MaybeObservableOrValueGetter, SwitchMapToDefaultFilterFunction } from '@dereekb/rxjs';\n\n/**\n * Used for synchronizing the document store id to the param of the route.\n *\n * @deprecated use DbxRouteModelIdDirective instead.\n */\n@Directive({\n selector: '[dbxFirebaseDocumentStoreRouteId]'\n})\nexport class DbxFirebaseDocumentStoreRouteIdDirective<T = unknown> extends DbxRouteModelIdDirective {\n // MARK: Input\n @Input('dbxFirebaseDocumentStoreRouteId')\n get dbxFirebaseDocumentStoreRouteId() {\n return this.idParam;\n }\n\n set dbxFirebaseDocumentStoreRouteId(idParam: string) {\n this.idParam = idParam;\n }\n\n @Input()\n set dbxFirebaseDocumentStoreRouteIdDefault(defaultValue: MaybeObservableOrValueGetter<ModelKey>) {\n this.dbxRouteModelIdDefault = defaultValue;\n }\n\n /**\n * Whether or not to enable the redirection. Is enabled by default.\n */\n @Input()\n set dbxFirebaseDocumentStoreRouteIdDefaultRedirect(redirect: Maybe<boolean> | '') {\n this.dbxRouteModelIdDefaultRedirect = redirect;\n }\n\n @Input()\n set dbxFirebaseDocumentStoreRouteIdDefaultDecision(decider: string | SwitchMapToDefaultFilterFunction<ModelKey>) {\n this.dbxRouteModelIdDefaultDecision = decider;\n }\n}\n","import { Directive, Input, inject } from '@angular/core';\nimport { DbxRouteModelKeyDirective } from '@dereekb/dbx-core';\nimport { DbxFirebaseDocumentStoreDirective } from './store.document.directive';\nimport { Maybe, ModelKey } from '@dereekb/util';\nimport { MaybeObservableOrValueGetter, SwitchMapToDefaultFilterFunction } from '@dereekb/rxjs';\n\n/**\n * Used for synchronizing the document store key to the param of the route. The param is interpreted as a TwoWayFlatFirestoreModelKey.\n *\n * @deprecated use DbxRouteModelKeyDirective instead.\n */\n@Directive({\n selector: '[dbxFirebaseDocumentStoreRouteKey]'\n})\nexport class DbxFirebaseDocumentStoreRouteKeyDirective<T = unknown> extends DbxRouteModelKeyDirective {\n readonly dbxFirebaseDocumentStoreDirective = inject(DbxFirebaseDocumentStoreDirective<T>, { host: true });\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n // MARK: Input\n @Input('dbxFirebaseDocumentStoreRouteKey')\n get dbxFirebaseDocumentStoreRouteKey() {\n return this.keyParam;\n }\n\n set dbxFirebaseDocumentStoreRouteKey(keyParam: string) {\n this.keyParam = keyParam;\n }\n\n @Input()\n set dbxFirebaseDocumentStoreRouteKeyDefault(defaultValue: MaybeObservableOrValueGetter<ModelKey>) {\n this.dbxRouteModelKeyDefault = defaultValue;\n }\n\n /**\n * Whether or not to enable the redirection. Is enabled by default.\n */\n @Input()\n set dbxFirebaseDocumentStoreRouteKeyDefaultRedirect(redirect: Maybe<boolean> | '') {\n this.dbxRouteModelKeyDefaultRedirect = redirect;\n }\n\n @Input()\n set dbxFirebaseDocumentStoreRouteKeyDefaultDecision(decider: string | SwitchMapToDefaultFilterFunction<ModelKey>) {\n this.dbxRouteModelKeyDefaultDecision = decider;\n }\n}\n","import { Type, Provider, forwardRef } from '@angular/core';\nimport { TwoWayFlatFirestoreModelKey } from '@dereekb/firebase';\nimport { Observable } from 'rxjs';\n\nexport abstract class DbxFirebaseDocumentStoreTwoWayKeyProvider {\n abstract readonly twoWayFlatKey$: Observable<TwoWayFlatFirestoreModelKey>;\n}\n\n/**\n * Configures Providers for a DbxFirebaseDocumentStoreTwoWayKeyProvider.\n */\nexport function provideDbxFirebaseDocumentStoreTwoWayKeyProvider<S extends DbxFirebaseDocumentStoreTwoWayKeyProvider>(sourceType: Type<S>): Provider[] {\n const providers: Provider[] = [\n {\n provide: DbxFirebaseDocumentStoreTwoWayKeyProvider,\n useExisting: forwardRef(() => sourceType)\n }\n ];\n\n return providers;\n}\n","import { Observable } from 'rxjs';\nimport { Directive, inject } from '@angular/core';\nimport { DbxFirebaseDocumentStoreDirective } from './store.document.directive';\nimport { DbxFirebaseDocumentStoreTwoWayKeyProvider, provideDbxFirebaseDocumentStoreTwoWayKeyProvider } from './store.document.twoway.key.source';\n\n/**\n * Directive that implements DbxFirebaseDocumentStoreTwoWayKeyProvider and passes the twoWayFlatKey from a host DbxFirebaseDocumentStoreDirective.\n */\n@Directive({\n selector: '[dbxFirebaseDocumentStoreTwoWayModelKeySource]',\n providers: provideDbxFirebaseDocumentStoreTwoWayKeyProvider(DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective)\n})\nexport class DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective implements DbxFirebaseDocumentStoreTwoWayKeyProvider {\n readonly dbxFirebaseDocumentStoreDirective = inject(DbxFirebaseDocumentStoreDirective, { host: true });\n readonly twoWayFlatKey$: Observable<string> = this.dbxFirebaseDocumentStoreDirective.twoWayFlatKey$;\n}\n","import { Directive, OnInit, inject } from '@angular/core';\nimport { DbxFirebaseDocumentStoreDirective } from './store.document.directive';\nimport { DbxFirebaseDocumentStoreTwoWayKeyProvider } from './store.document.twoway.key.source';\nimport { AbstractSubscriptionDirective } from '@dereekb/dbx-core';\n\n/**\n * Used for providing an id from the twoWayFlatKey$ from a DbxFirebaseDocumentStoreTwoWayKeyProvider.\n */\n@Directive({\n selector: '[dbxFirebaseDocumentStoreIdFromTwoWayModelKey]'\n})\nexport class DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective extends AbstractSubscriptionDirective implements OnInit {\n readonly dbxFirebaseDocumentStoreDirective = inject(DbxFirebaseDocumentStoreDirective, { host: true });\n readonly dbxFirebaseDocumentStoreTwoWayKeyProvider = inject(DbxFirebaseDocumentStoreTwoWayKeyProvider, { skipSelf: true, host: false });\n\n ngOnInit(): void {\n this.sub = this.dbxFirebaseDocumentStoreDirective.store.setId(this.dbxFirebaseDocumentStoreTwoWayKeyProvider.twoWayFlatKey$);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DbxFirebaseCollectionChangeDirective } from './store.collection.change.directive';\nimport { DbxFirebaseCollectionHasChangeDirective } from './store.collection.change.if.directive';\nimport { DbxFirebaseCollectionListDirective } from './store.collection.list.directive';\nimport { DbxFirebaseDocumentAuthIdDirective } from './store.document.auth.directive';\nimport { DbxFirebaseDocumentStoreRouteIdDirective } from './store.document.router.directive';\nimport { DbxFirebaseDocumentStoreRouteKeyDirective } from './store.document.router.key.directive';\nimport { DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective } from './store.document.twoway.key.source.directive';\nimport { DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective } from './store.document.twoway.key.directive';\n\nconst declarations = [DbxFirebaseDocumentStoreRouteKeyDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseDocumentStoreRouteIdDirective, DbxFirebaseDocumentAuthIdDirective, DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective];\n\n@NgModule({\n imports: [],\n declarations,\n exports: declarations\n})\nexport class DbxFirebaseModelStoreModule {}\n","import { Injectable } from '@angular/core';\nimport { Observable, shareReplay, distinctUntilChanged, Subscription, exhaustMap, first, map, switchMap, tap } from 'rxjs';\nimport { FirebaseQueryItemAccumulator, FirestoreCollectionLike, FirestoreDocument, FirestoreItemPageIterationInstance, FirestoreQueryConstraint, IterationQueryDocChangeWatcher, DocumentDataWithIdAndKey, DocumentReference, FirebaseQuerySnapshotAccumulator, FirebaseQueryItemAccumulatorNextPageUntilResultsCountFunction } from '@dereekb/firebase';\nimport { ObservableOrValue, cleanupDestroyable, PageListLoadingState, filterMaybe, ItemAccumulatorNextPageUntilResultsCountResult } from '@dereekb/rxjs';\nimport { ArrayOrValue, Maybe, PageNumber } from '@dereekb/util';\nimport { LockSetComponentStore } from '@dereekb/dbx-core';\nimport { DbxFirebaseCollectionLoaderInstance, dbxFirebaseCollectionLoaderInstance, DbxFirebaseCollectionLoaderInstanceData } from '../../loader/collection.loader.instance';\nimport { DbxFirebaseCollectionLoaderAccessorWithAccumulator } from '../../loader/collection.loader';\n\nexport interface DbxFirebaseCollectionStore<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends DbxFirebaseCollectionLoaderAccessorWithAccumulator<T>, DbxFirebaseCollectionLoaderInstanceData<T, D> {\n readonly firestoreCollection$: Observable<Maybe<FirestoreCollectionLike<T, D>>>;\n readonly loader$: Observable<DbxFirebaseCollectionLoaderInstance<T, D>>;\n\n readonly hasDocuments$: Observable<boolean>;\n /**\n * Returns all document references loaded by the accumulator.\n */\n readonly allDocumentRefs$: Observable<DocumentReference<T>[]>;\n /**\n * Returns all documents loaded by the accomulator.\n */\n readonly allDocuments$: Observable<D[]>;\n /**\n * Returns all documents data loaded by the accumulator.\n */\n readonly allDocumentData$: Observable<DocumentDataWithIdAndKey<T>[]>;\n\n setMaxPages(observableOrValue: ObservableOrValue<Maybe<number>>): Subscription;\n setItemsPerPage(observableOrValue: ObservableOrValue<Maybe<number>>): Subscription;\n setConstraints(observableOrValue: ObservableOrValue<Maybe<ArrayOrValue<FirestoreQueryConstraint>>>): Subscription;\n next(observableOrValue: ObservableOrValue<void>): void;\n restart(observableOrValue: ObservableOrValue<void>): void;\n\n readonly setFirestoreCollection: (() => void) | ((observableOrValue: ObservableOrValue<Maybe<FirestoreCollectionLike<T, D>>>) => Subscription);\n}\n\nexport interface DbxFirebaseCollectionStoreContextState<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {\n readonly firestoreCollection?: Maybe<FirestoreCollectionLike<T, D>>;\n readonly maxPages?: Maybe<number>;\n readonly itemsPerPage?: Maybe<number>;\n readonly constraints?: Maybe<ArrayOrValue<FirestoreQueryConstraint>>;\n}\n\n@Injectable()\nexport class AbstractDbxFirebaseCollectionStore<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, C extends DbxFirebaseCollectionStoreContextState<T, D> = DbxFirebaseCollectionStoreContextState<T, D>> extends LockSetComponentStore<C> implements DbxFirebaseCollectionStore<T, D> {\n // MARK: Effects\n readonly setMaxPages = this.effect((input: Observable<Maybe<number>>) => {\n return input.pipe(switchMap((maxPages) => this.loader$.pipe(tap((x) => (x.maxPages = maxPages)))));\n });\n\n readonly setItemsPerPage = this.effect((input: Observable<Maybe<number>>) => {\n return input.pipe(switchMap((itemsPerPage) => this.loader$.pipe(tap((x) => (x.itemsPerPage = itemsPerPage)))));\n });\n\n readonly setConstraints = this.effect((input: Observable<Maybe<ArrayOrValue<FirestoreQueryConstraint>>>) => {\n return input.pipe(switchMap((constraints) => this.loader$.pipe(tap((x) => x.setConstraints(constraints)))));\n });\n\n readonly next = this.effect((input: Observable<void>) => {\n return input.pipe(\n exhaustMap(() =>\n this.loader$.pipe(\n first(),\n tap((x) => x.next())\n )\n )\n );\n });\n\n readonly restart = this.effect((input: Observable<void>) => {\n return input.pipe(\n exhaustMap(() =>\n this.loader$.pipe(\n first(),\n tap((x) => x.restart())\n )\n )\n );\n });\n\n // MARK: Accessors\n readonly currentFirestoreCollection$: Observable<Maybe<FirestoreCollectionLike<T, D>>> = this.state$.pipe(\n map((x) => x.firestoreCollection),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly firestoreCollection$: Observable<FirestoreCollectionLike<T, D>> = this.currentFirestoreCollection$.pipe(filterMaybe());\n\n readonly loader$: Observable<DbxFirebaseCollectionLoaderInstance<T, D>> = this.currentFirestoreCollection$.pipe(\n switchMap((collection) =>\n this.state$.pipe(\n first(),\n map((x) =>\n dbxFirebaseCollectionLoaderInstance({\n collection,\n maxPages: x.maxPages,\n itemsPerPage: x.itemsPerPage,\n constraints: x.constraints\n })\n )\n )\n ),\n cleanupDestroyable(),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly constraints$: Observable<Maybe<ArrayOrValue<FirestoreQueryConstraint>>> = this.loader$.pipe(switchMap((x) => x.constraints$));\n readonly firestoreIteration$: Observable<FirestoreItemPageIterationInstance<T>> = this.loader$.pipe(switchMap((x) => x.firestoreIteration$));\n readonly queryChangeWatcher$: Observable<IterationQueryDocChangeWatcher<T>> = this.loader$.pipe(switchMap((x) => x.queryChangeWatcher$));\n readonly pageLoadingState$: Observable<PageListLoadingState<DocumentDataWithIdAndKey<T>>> = this.loader$.pipe(switchMap((x) => x.pageLoadingState$));\n readonly snapshotAccumulator$: Observable<FirebaseQuerySnapshotAccumulator<T>> = this.loader$.pipe(switchMap((x) => x.snapshotAccumulator$));\n readonly accumulator$: Observable<FirebaseQueryItemAccumulator<T>> = this.loader$.pipe(switchMap((x) => x.accumulator$));\n\n readonly hasDocuments$: Observable<boolean> = this.loader$.pipe(switchMap((x) => x.hasDocuments$));\n readonly allDocumentRefs$: Observable<DocumentReference<T>[]> = this.loader$.pipe(switchMap((x) => x.allDocumentRefs$));\n readonly allDocuments$: Observable<D[]> = this.loader$.pipe(switchMap((x) => x.allDocuments$));\n readonly allDocumentData$: Observable<DocumentDataWithIdAndKey<T>[]> = this.loader$.pipe(switchMap((x) => x.allDocumentData$));\n\n readonly setFirestoreCollection = this.updater((state, firestoreCollection: FirestoreCollectionLike<T, D> | null | undefined) => ({ ...state, firestoreCollection }));\n\n loadToPage(page: PageNumber): Observable<PageNumber> {\n return this.loader$.pipe(switchMap((x) => x.loadToPage(page)));\n }\n\n loadPagesUntilResultsCount(maxResultsCount: number, countFunction?: FirebaseQueryItemAccumulatorNextPageUntilResultsCountFunction<T> | undefined): Observable<ItemAccumulatorNextPageUntilResultsCountResult> {\n return this.loader$.pipe(switchMap((x) => x.loadPagesUntilResultsCount(maxResultsCount, countFunction)));\n }\n\n loadAllResults(): Observable<PageNumber> {\n return this.loader$.pipe(switchMap((x) => x.loadAllResults()));\n }\n}\n","import { readableError } from '@dereekb/util';\n\nexport const DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR = 'DOES_NOT_EXIST';\n\nexport function modelDoesNotExistError() {\n return readableError(DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR, 'The document does not exist.');\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { Observable, shareReplay, distinctUntilChanged, map, switchMap, combineLatest, Subscription, of, catchError } from 'rxjs';\nimport {\n DocumentSnapshot,\n DocumentReference,\n FirestoreCollection,\n FirestoreDocument,\n DocumentDataWithIdAndKey,\n FirestoreModelId,\n FirestoreModelKey,\n FirestoreCollectionLike,\n FirestoreModelIdentity,\n firestoreModelIdsFromKey,\n firestoreModelKeyPartPairs,\n FirestoreModelCollectionAndIdPair,\n firestoreModelKeyPairObject,\n FirestoreModelCollectionAndIdPairObject,\n documentDataWithIdAndKey,\n FirestoreAccessorStreamMode,\n TwoWayFlatFirestoreModelKey,\n inferKeyFromTwoWayFlatFirestoreModelKey,\n RootSingleItemFirestoreCollection,\n FlatFirestoreModelKey,\n flatFirestoreModelKey,\n twoWayFlatFirestoreModelKey,\n FIRESTORE_PERMISSION_DENIED_ERROR_CODE,\n isClientFirebaseError\n} from '@dereekb/firebase';\nimport { filterMaybe, LoadingState, beginLoading, successResult, loadingStateFromObs, errorResult, ObservableOrValue, isLoadingStateLoading } from '@dereekb/rxjs';\nimport { Maybe, isMaybeSo } from '@dereekb/util';\nimport { LockSetComponent, LockSetComponentStore } from '@dereekb/dbx-core';\nimport { modelDoesNotExistError } from '../../error';\n\nexport interface DbxFirebaseDocumentStore<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends LockSetComponent {\n readonly firestoreCollectionLike$: Observable<FirestoreCollectionLike<T, D>>;\n readonly firestoreCollection$: Observable<FirestoreCollection<T, D>>;\n\n readonly currentInputId$: Observable<Maybe<FirestoreModelId>>;\n readonly inputId$: Observable<FirestoreModelId>;\n readonly currentInputKey$: Observable<Maybe<FirestoreModelKey>>;\n readonly inputKey$: Observable<FirestoreModelKey>;\n readonly currentInputRef$: Observable<Maybe<DocumentReference<T>>>;\n readonly inputRef$: Observable<DocumentReference<T>>;\n\n readonly streamMode$: Observable<FirestoreAccessorStreamMode>;\n\n readonly currentDocument$: Observable<Maybe<D>>;\n readonly document$: Observable<D>;\n readonly id$: Observable<FirestoreModelId>;\n readonly key$: Observable<FirestoreModelKey>;\n readonly ref$: Observable<DocumentReference<T>>;\n readonly hasRef$: Observable<boolean>;\n readonly flatKey$: Observable<FlatFirestoreModelKey>;\n readonly twoWayFlatKey$: Observable<TwoWayFlatFirestoreModelKey>;\n\n readonly keyModelIds$: Observable<FirestoreModelId[]>;\n readonly keyPairs$: Observable<FirestoreModelCollectionAndIdPair[]>;\n readonly keyPairObject$: Observable<FirestoreModelCollectionAndIdPairObject>;\n\n readonly documentLoadingState$: Observable<LoadingState<D>>;\n readonly snapshot$: Observable<DocumentSnapshot<T>>;\n readonly snapshotLoadingState$: Observable<LoadingState<DocumentSnapshot<T>>>;\n readonly currentData$: Observable<Maybe<DocumentDataWithIdAndKey<T>>>;\n readonly data$: Observable<DocumentDataWithIdAndKey<T>>;\n readonly dataLoadingState$: Observable<LoadingState<DocumentDataWithIdAndKey<T>>>;\n readonly isLoadingData$: Observable<boolean>;\n readonly currentExists$: Observable<boolean>;\n readonly exists$: Observable<boolean>;\n readonly modelIdentity$: Observable<FirestoreModelIdentity>;\n\n /**\n * Sets the id of the document to load.\n */\n readonly setId: (observableOrValue: ObservableOrValue<Maybe<FirestoreModelId>>) => Subscription;\n\n /**\n * Sets the key of the document to load.\n */\n readonly setKey: (observableOrValue: ObservableOrValue<Maybe<FirestoreModelKey>>) => Subscription;\n\n /**\n * Sets the key of the document to load using a TwoWayFlatFirestoreModelKey.\n */\n readonly setFlatKey: (observableOrValue: ObservableOrValue<Maybe<TwoWayFlatFirestoreModelKey>>) => Subscription;\n\n /**\n * Sets the ref of the document to load.\n */\n readonly setRef: (observableOrValue: ObservableOrValue<Maybe<DocumentReference<T>>>) => Subscription;\n\n /**\n * Clears the key/id/ref and current document from the store.\n */\n readonly clearRefs: () => void;\n\n /**\n * Sets the stream mode.\n */\n readonly setStreamMode: (observableOrValue: ObservableOrValue<FirestoreAccessorStreamMode>) => Subscription;\n\n /**\n * Sets the FirestoreCollection to retrieve documents from.\n */\n readonly setFirestoreCollection: (() => void) | ((observableOrValue: ObservableOrValue<Maybe<FirestoreCollection<T, D>>>) => Subscription);\n\n /**\n * Sets the FirestoreCollectionLike to retrieve documents from.\n */\n readonly setFirestoreCollectionLike: (() => void) | ((observableOrValue: ObservableOrValue<Maybe<FirestoreCollectionLike<T, D>>>) => Subscription);\n}\n\nexport interface DbxFirebaseDocumentStoreContextState<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {\n readonly firestoreCollectionLike?: Maybe<FirestoreCollectionLike<T, D>>;\n readonly firestoreCollection?: Maybe<FirestoreCollection<T, D>>;\n readonly streamMode?: FirestoreAccessorStreamMode;\n readonly id?: Maybe<FirestoreModelId>;\n readonly key?: Maybe<FirestoreModelKey>;\n readonly ref?: Maybe<DocumentReference<T>>;\n}\n\n@Injectable()\nexport class AbstractDbxFirebaseDocumentStore<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, C extends DbxFirebaseDocumentStoreContextState<T, D> = DbxFirebaseDocumentStoreContextState<T, D>> extends LockSetComponentStore<C> implements DbxFirebaseDocumentStore<T, D> {\n // MARK: Effects\n\n // MARK: Accessors\n readonly currentFirestoreCollectionLike$: Observable<Maybe<FirestoreCollectionLike<T, D>>> = this.state$.pipe(\n map((x) => x.firestoreCollection ?? x.firestoreCollectionLike),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly currentFirestoreCollection$: Observable<Maybe<FirestoreCollection<T, D>>> = this.state$.pipe(\n map((x) => x.firestoreCollection),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly firestoreCollectionLike$: Observable<FirestoreCollectionLike<T, D>> = this.currentFirestoreCollectionLike$.pipe(filterMaybe());\n readonly firestoreCollection$: Observable<FirestoreCollection<T, D>> = this.currentFirestoreCollection$.pipe(filterMaybe());\n\n readonly currentInputId$: Observable<Maybe<FirestoreModelId>> = this.state$.pipe(\n map((x) => x.id),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly inputId$: Observable<FirestoreModelId> = this.currentInputId$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));\n\n readonly currentInputKey$: Observable<Maybe<FirestoreModelKey>> = this.state$.pipe(\n map((x) => x.key),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly inputKey$: Observable<FirestoreModelKey> = this.currentInputKey$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));\n\n readonly currentInputRef$: Observable<Maybe<DocumentReference<T>>> = this.state$.pipe(\n map((x) => x.ref),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly inputRef$: Observable<DocumentReference<T>> = this.currentInputRef$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));\n\n readonly streamMode$: Observable<FirestoreAccessorStreamMode> = this.state$.pipe(\n map((x) => x.streamMode ?? FirestoreAccessorStreamMode.STREAM),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly currentDocument$: Observable<Maybe<D>> = combineLatest([this.currentInputId$, this.currentInputKey$, this.currentInputRef$]).pipe(\n switchMap(([id, key, ref]) => {\n let document: Observable<Maybe<D>>;\n\n if (ref) {\n document = this.firestoreCollectionLike$.pipe(map((x) => x.documentAccessor().loadDocument(ref)));\n } else if (key) {\n document = this.firestoreCollectionLike$.pipe(map((x) => x.documentAccessor().loadDocumentForKey(key)));\n } else if (id) {\n document = this.firestoreCollection$.pipe(map((x) => x.documentAccessor().loadDocumentForId(id)));\n } else {\n document = of(undefined);\n }\n\n return document;\n }),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n /**\n * Whether or not an id/ref/key has been input and currentDocument is not null.\n */\n readonly hasRef$: Observable<boolean> = this.currentDocument$.pipe(\n map((x) => x?.documentRef != null),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly document$: Observable<D> = this.currentDocument$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));\n\n readonly documentLoadingState$: Observable<LoadingState<D>> = this.currentDocument$.pipe(\n map((x) => (x ? successResult(x) : beginLoading<D>())),\n shareReplay(1)\n );\n\n readonly id$: Observable<FirestoreModelId> = this.document$.pipe(\n map((x) => x.id),\n shareReplay(1)\n );\n\n readonly key$: Observable<FirestoreModelKey> = this.document$.pipe(\n map((x) => x.key),\n shareReplay(1)\n );\n\n readonly keyModelIds$: Observable<FirestoreModelId[]> = this.key$.pipe(map(firestoreModelIdsFromKey), shareReplay(1));\n readonly keyPairs$: Observable<FirestoreModelCollectionAndIdPair[]> = this.key$.pipe(map(firestoreModelKeyPartPairs), filterMaybe(), shareReplay(1));\n readonly keyPairObject$: Observable<FirestoreModelCollectionAndIdPairObject> = this.key$.pipe(map(firestoreModelKeyPairObject), filterMaybe(), shareReplay(1));\n\n readonly ref$: Observable<DocumentReference<T>> = this.document$.pipe(\n map((x) => x.documentRef),\n shareReplay(1)\n );\n\n readonly flatKey$: Observable<FlatFirestoreModelKey> = this.key$.pipe(\n map((x) => flatFirestoreModelKey(x)),\n shareReplay(1)\n );\n\n readonly twoWayFlatKey$: Observable<FlatFirestoreModelKey> = this.key$.pipe(\n map((x) => twoWayFlatFirestoreModelKey(x)),\n shareReplay(1)\n );\n\n readonly snapshot$: Observable<DocumentSnapshot<T>> = combineLatest([this.document$, this.streamMode$]).pipe(\n switchMap(([x, mode]) => x.snapshotStream(mode)),\n shareReplay(1)\n );\n\n readonly snapshotLoadingState$: Observable<LoadingState<DocumentSnapshot<T>>> = this.currentDocument$.pipe(\n switchMap(() => loadingStateFromObs(this.snapshot$)),\n shareReplay(1)\n );\n\n readonly currentData$: Observable<Maybe<DocumentDataWithIdAndKey<T>>> = this.snapshot$.pipe(\n map((x) => documentDataWithIdAndKey(x)),\n shareReplay(1)\n );\n\n readonly data$: Observable<DocumentDataWithIdAndKey<T>> = this.currentDocument$.pipe(\n switchMap(() => this.currentData$.pipe(filterMaybe())),\n shareReplay(1)\n );\n\n readonly dataLoadingState$: Observable<LoadingState<DocumentDataWithIdAndKey<T>>> = this.snapshotLoadingState$.pipe(\n map((x) => {\n let result: LoadingState<DocumentDataWithIdAndKey<T>>;\n\n if (x.value) {\n const data = documentDataWithIdAndKey(x.value);\n\n if (data) {\n result = successResult(data);\n } else {\n result = errorResult(modelDoesNotExistError());\n }\n } else {\n result = {\n ...x,\n value: undefined\n };\n }\n\n return result;\n }),\n shareReplay(1)\n );\n\n readonly isLoadingData$ = this.dataLoadingState$.pipe(map(isLoadingStateLoading), distinctUntilChanged(), shareReplay(1));\n\n /**\n * Returns false while hasRef$ is false, and then returns exists$.\n */\n readonly currentExists$: Observable<boolean> = this.hasRef$.pipe(\n switchMap((hasRef) => {\n if (hasRef) {\n return this.exists$;\n } else {\n return of(false);\n }\n }),\n shareReplay(1)\n );\n\n readonly exists$: Observable<boolean> = this.currentData$.pipe(\n map((x) => isMaybeSo(x)),\n catchError((e) => {\n let result: Maybe<boolean>;\n\n if (isClientFirebaseError(e)) {\n switch (e.code) {\n case FIRESTORE_PERMISSION_DENIED_ERROR_CODE:\n result = false;\n break;\n }\n }\n\n if (result == null) {\n throw e;\n }\n\n return of(result);\n }),\n shareReplay(1)\n );\n\n readonly doesNotExist$: Observable<boolean> = this.exists$.pipe(\n map((x) => !x),\n shareReplay(1)\n );\n\n readonly modelIdentity$: Observable<FirestoreModelIdentity> = this.document$.pipe(\n map((x) => x.modelIdentity),\n shareReplay(1)\n );\n\n // MARK: State Changes\n readonly setId = this.updater((state, id: Maybe<FirestoreModelId>) => (id ? { ...state, id, key: undefined, ref: undefined } : { ...state, id })) as (observableOrValue: Maybe<string> | Observable<Maybe<string>>) => Subscription;\n readonly setKey = this.updater((state, key: Maybe<FirestoreModelKey>) => (key ? { ...state, key, id: undefined, ref: undefined } : { ...state, key })) as (observableOrValue: Maybe<string> | Observable<Maybe<string>>) => Subscription;\n readonly setFlatKey = this.updater((state, key: Maybe<TwoWayFlatFirestoreModelKey>) => (key ? { ...state, key: inferKeyFromTwoWayFlatFirestoreModelKey(key), id: undefined, ref: undefined } : { ...state, key })) as (observableOrValue: Maybe<string> | Observable<Maybe<string>>) => Subscription;\n readonly setRef = this.updater((state, ref: Maybe<DocumentReference<T>>) => (ref ? { ...state, key: undefined, id: undefined, ref } : { ...state, ref })) as (observableOrValue: Maybe<DocumentReference<T>> | Observable<Maybe<DocumentReference<T>>>) => Subscription;\n\n readonly setStreamMode = this.updater((state, streamMode: FirestoreAccessorStreamMode) => ({ ...state, streamMode }));\n\n readonly clearRefs = this.updater((state) => ({ ...state, id: undefined, key: undefined, ref: undefined }));\n\n readonly setFirestoreCollection = this.updater((state, firestoreCollection: Maybe<FirestoreCollection<T, D>>) => ({ ...state, firestoreCollection }));\n readonly setFirestoreCollectionLike = this.updater((state, firestoreCollectionLike: Maybe<FirestoreCollectionLike<T, D>>) => ({ ...state, firestoreCollectionLike }));\n}\n\nfunction injectSingleItemIdIntoState<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, C extends DbxFirebaseDocumentStoreContextState<T, D> = DbxFirebaseDocumentStoreContextState<T, D>>(state?: C | undefined): C | undefined {\n const id = (state?.firestoreCollection as RootSingleItemFirestoreCollection<T, D>)?.singleItemIdentifier;\n\n if (state && id != null) {\n return { ...state, id };\n } else {\n return state;\n }\n}\n\n/**\n * AbstractDbxFirebaseDocumentWithParentStore extension for use with RootSingleItemFirestoreCollection.\n */\nexport class AbstractRootSingleItemDbxFirebaseDocument<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, C extends DbxFirebaseDocumentStoreContextState<T, D> = DbxFirebaseDocumentStoreContextState<T, D>> extends AbstractDbxFirebaseDocumentStore<T, D, C> {\n protected constructor(@Inject(null) @Optional() initialState?: C) {\n super(injectSingleItemIdIntoState<T, D, C>(initialState));\n }\n\n /**\n * Sets the SingleItemFirestoreCollection to use.\n */\n override readonly setFirestoreCollection = this.updater((state, firestoreCollection: Maybe<FirestoreCollection<T, D>>) => {\n if (firestoreCollection != null) {\n const id = (firestoreCollection as RootSingleItemFirestoreCollection<T, D>).singleItemIdentifier;\n\n if (id != null) {\n return { ...state, firestoreCollection, id };\n } else {\n throw new Error('AbstractRootSingleItemDbxFirebaseDocument only accepts RootSingleItemFirestoreCollection values with a singleItemIdentifier set for setFirestoreCollection.');\n }\n } else {\n return { ...state, firestoreCollection: null };\n }\n });\n\n /**\n * Does nothing on a AbstractRootSingleItemDbxFirebaseDocument.\n *\n * Ref is set with the FirestoreCollection\n */\n override readonly setId = this.updater((state, id: Maybe<FirestoreModelId>) => state) as (observableOrValue: Maybe<string> | Observable<Maybe<string>>) => Subscription;\n\n /**\n * Does nothing on a AbstractRootSingleItemDbxFirebaseDocument.\n *\n * Ref is set with the FirestoreCollection\n */\n override readonly setKey = this.updater((state, key: Maybe<FirestoreModelKey>) => state) as (observableOrValue: Maybe<string> | Observable<Maybe<string>>) => Subscription;\n\n /**\n * Does nothing on a AbstractRootSingleItemDbxFirebaseDocument.\n *\n * Ref is set with the FirestoreCollection\n */\n override readonly setRef = this.updater((state, ref: Maybe<DocumentReference<T>>) => state) as (observableOrValue: Maybe<DocumentReference<T>> | Observable<Maybe<DocumentReference<T>>>) => Subscription;\n\n override readonly clearRefs = this.updater((state) => state);\n}\n","import { ModelFirebaseCreateFunction, ModelFirebaseDeleteFunction, ModelFirebaseUpdateFunction, OnCallCreateModelResult, TargetModelParams, InferredTargetModelParams, ModelFirebaseCrudFunction, ModelFirebaseReadFunction } from '@dereekb/firebase';\nimport { lazyFrom, LoadingState, loadingStateFromObs } from '@dereekb/rxjs';\nimport { firstValue, PartialOnKeys } from '@dereekb/util';\nimport { shareReplay, exhaustMap, first, from, Observable } from 'rxjs';\nimport { DbxFirebaseDocumentStore } from './store.document';\n\n// MARK: Create\nexport type DbxFirebaseDocumentStoreCreateFunction<I, O extends OnCallCreateModelResult = OnCallCreateModelResult> = (params: I) => Observable<LoadingState<O>>;\n\n/**\n * Creates a function for a store that DbxFirebaseDocumentStore captures the ModelFirebaseCreateFunction result and sets the key of the created value.\n *\n * @param store\n * @param fn\n * @returns\n */\nexport function firebaseDocumentStoreCreateFunction<I, O extends OnCallCreateModelResult = OnCallCreateModelResult>(store: DbxFirebaseDocumentStore<any, any>, fn: ModelFirebaseCreateFunction<I, O>): DbxFirebaseDocumentStoreCreateFunction<I, O> {\n return (params: I) =>\n loadingStateFromObs(\n lazyFrom(() =>\n fn(params).then((result) => {\n const modelKeys = result.modelKeys;\n const firstKey = firstValue(modelKeys);\n\n if (firstKey) {\n store.setKey(firstKey);\n }\n\n return result;\n })\n )\n );\n}\n\nexport type DbxFirebaseDocumentStoreCrudFunction<I, O = void> = (input: I) => Observable<LoadingState<O>>;\n\n/**\n * Creates a DbxfirebaseDocumentStoreCrudFunction from the input ModelFirebaseCrudFunction.\n *\n * @param fn\n * @returns\n */\nexport function firebaseDocumentStoreCrudFunction<I, O = void>(fn: ModelFirebaseCrudFunction<I, O>): DbxFirebaseDocumentStoreCrudFunction<I, O> {\n return (params: I) => loadingStateFromObs(from(fn(params)).pipe(shareReplay(1)));\n}\n\n// MARK: Targeted Functions\n/**\n * A parameter that refers to a specific key.\n */\nexport type DbxFirebaseDocumentStoreFunctionParams = TargetModelParams | InferredTargetModelParams;\n\n/**\n * Used for the input to related functions\n */\nexport type DbxFirebaseDocumentStoreFunctionParamsInput<I extends DbxFirebaseDocumentStoreFunctionParams> = PartialOnKeys<I, 'key'>;\nexport type DbxFirebaseDocumentStoreFunction<I extends DbxFirebaseDocumentStoreFunctionParams, O = void> = DbxFirebaseDocumentStoreCrudFunction<DbxFirebaseDocumentStoreFunctionParamsInput<I>, O>;\n\n// MARK: Read\n/**\n * Creates a DbxfirebaseDocumentStoreCrudFunction for read.\n *\n * The store's current key is always injected into the params of the request.\n *\n * For functions that do not require the store's current key, use firebaseDocumentStoreCrudFunction() instead.\n *\n * @param store\n * @param fn\n * @returns\n */\nexport function firebaseDocumentStoreReadFunction<I extends DbxFirebaseDocumentStoreFunctionParams, O>(store: DbxFirebaseDocumentStore<any, any>, fn: ModelFirebaseReadFunction<I, O>): DbxFirebaseDocumentStoreFunction<I, O> {\n return firebaseDocumentStoreUpdateFunction(store, fn);\n}\n\n// MARK: Update\n/**\n * Creates a DbxFirebaseDocumentStoreFunction for update.\n *\n * The store's current key is always injected into the params of the request.\n *\n * @param store\n * @param fn\n * @returns\n */\nexport function firebaseDocumentStoreUpdateFunction<I extends DbxFirebaseDocumentStoreFunctionParams, O = void>(store: DbxFirebaseDocumentStore<any, any>, fn: ModelFirebaseUpdateFunction<I, O>): DbxFirebaseDocumentStoreFunction<I, O> {\n return (params: DbxFirebaseDocumentStoreFunctionParamsInput<I>) =>\n loadingStateFromObs(\n store.key$.pipe(\n first(),\n exhaustMap((key) =>\n fn({\n ...params,\n key // inject key into the parameters.\n } as I)\n ),\n shareReplay(1)\n )\n );\n}\n\n// MARK: Delete\n/**\n * Creates a DbxFirebaseDocumentStoreFunction for delete.\n *\n * The store's current key is always injected into the params of the request.\n *\n * @param store\n * @param fn\n * @returns\n */\nexport function firebaseDocumentStoreDeleteFunction<I extends DbxFirebaseDocumentStoreFunctionParams, O = void>(store: DbxFirebaseDocumentStore<any, any>, fn: ModelFirebaseDeleteFunction<I, O>): DbxFirebaseDocumentStoreFunction<I, O> {\n return (params: DbxFirebaseDocumentStoreFunctionParamsInput<I>) =>\n loadingStateFromObs(\n store.key$.pipe(\n first(),\n exhaustMap((key) =>\n fn({\n ...params,\n key // inject key into the parameters.\n } as I).then((result) => {\n store.clearRefs();\n return result;\n })\n ),\n shareReplay(1)\n )\n );\n}\n","import { LockSetComponentStore } from '@dereekb/dbx-core';\nimport { FirestoreCollectionLike, FirestoreCollectionWithParentFactory, FirestoreDocument } from '@dereekb/firebase';\nimport { cleanup, ObservableOrValue } from '@dereekb/rxjs';\nimport { type Maybe } from '@dereekb/util';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { map, Observable, Subscription } from 'rxjs';\nimport { DbxFirebaseDocumentStore } from './store.document';\n\nexport interface DbxFirebaseComponentStoreWithParentContextState<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> {\n readonly parent?: Maybe<PD>;\n readonly collectionFactory?: Maybe<FirestoreCollectionWithParentFactory<T, PT, D, PD>>;\n}\n\nexport type DbxFirebaseComponentStoreSetParentEffectFunction<PD> = (parent: Observable<Maybe<PD>>) => Subscription;\nexport type DbxFirebaseComponentStoreWithParentSetParentEffectFunction<PD> = (observableOrValue: ObservableOrValue<Maybe<PD>>) => Subscription;\nexport type DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction<PT, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> = (observableOrValue: ObservableOrValue<DbxFirebaseDocumentStore<PT, PD>>) => Subscription;\n\nexport interface DbxFirebaseComponentStoreWithParent<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>, A extends FirestoreCollectionLike<T, D> = FirestoreCollectionLike<T, D>> extends LockSetComponentStore<object>, Pick<ComponentStore<DbxFirebaseComponentStoreWithParentContextState<T, PT, D, PD>>, 'effect'> {\n readonly currentParent$: Observable<Maybe<PD>>;\n readonly parent$: Observable<PD>;\n readonly currentCollectionFactory$: Observable<Maybe<FirestoreCollectionWithParentFactory<T, PT, D, PD>>>;\n readonly collectionFactory$: Observable<FirestoreCollectionWithParentFactory<T, PT, D, PD>>;\n readonly _setParent: DbxFirebaseComponentStoreSetParentEffectFunction<PD>;\n readonly _setParentDocument: (() => void) | ((observableOrValue: ObservableOrValue<Maybe<PD>>) => Subscription);\n readonly setFirestoreCollection: (() => void) | ((observableOrValue: ObservableOrValue<Maybe<A>>) => Subscription);\n}\n\nexport function setParentStoreEffect<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>, A extends FirestoreCollectionLike<T, D> = FirestoreCollectionLike<T, D>>(store: DbxFirebaseComponentStoreWithParent<T, PT, D, PD, A>): DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction<PT, PD> {\n return store.effect((input: Observable<Maybe<DbxFirebaseDocumentStore<PT, PD>>>) => {\n return input.pipe(\n map((parentStore) => {\n let result: Maybe<Subscription>;\n\n if (parentStore) {\n result = store._setParent(parentStore.currentDocument$) as Subscription;\n } else {\n result = undefined;\n }\n\n // set as the parent lock set too\n store.setParentLockSet(parentStore);\n\n return result;\n }),\n cleanup((sub) => {\n if (sub) {\n sub.unsubscribe();\n }\n })\n );\n });\n}\n","import { type Maybe } from '@dereekb/util';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { filterMaybe, ObservableOrValue } from '@dereekb/rxjs';\nimport { Observable, shareReplay, distinctUntilChanged, map, Subscription, NEVER, switchMap, tap } from 'rxjs';\nimport { FirestoreCollectionGroup, FirestoreCollectionWithParentFactory, FirestoreDocument } from '@dereekb/firebase';\nimport { AbstractDbxFirebaseCollectionStore, DbxFirebaseCollectionStore, DbxFirebaseCollectionStoreContextState } from './store.collection';\nimport { DbxFirebaseComponentStoreSetParentEffectFunction, DbxFirebaseComponentStoreWithParent, DbxFirebaseComponentStoreWithParentContextState, DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction, setParentStoreEffect } from './store.subcollection.rxjs';\n\n/**\n * Whether or not to load values from a parent or a group.\n */\nexport type DbxFirebaseComponentStoreWithParentSourceMode = 'parent' | 'group';\n\nexport interface DbxFirebaseCollectionWithParentStoreContextState<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> extends DbxFirebaseCollectionStoreContextState<T, D>, DbxFirebaseComponentStoreWithParentContextState<T, PT, D, PD> {\n readonly mode?: Maybe<DbxFirebaseComponentStoreWithParentSourceMode>;\n readonly collectionGroup?: Maybe<FirestoreCollectionGroup<T, D>>;\n}\n\nexport type DbxFirebaseComponentStoreWithParentSetParentSourceModeFunction = (observableOrValue: ObservableOrValue<Maybe<DbxFirebaseComponentStoreWithParentSourceMode>>) => Subscription;\n\nexport interface DbxFirebaseCollectionWithParentStore<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> extends DbxFirebaseCollectionStore<T, D>, DbxFirebaseComponentStoreWithParent<T, PT, D, PD> {\n readonly setSourceMode: DbxFirebaseComponentStoreWithParentSetParentSourceModeFunction;\n readonly setCollectionGroup: (observableOrValue: FirestoreCollectionGroup<T, D> | Observable<FirestoreCollectionGroup<T, D>>) => Subscription;\n readonly currentCollectionGroup$: Observable<Maybe<FirestoreCollectionGroup<T, D>>>;\n readonly collectionGroup$: Observable<FirestoreCollectionGroup<T, D>>;\n}\n\n/**\n * Abstract DbxFirebaseCollectionStore that has a parent document from which is derives it's FiresbaseCollection from.\n */\n@Injectable()\nexport class AbstractDbxFirebaseCollectionWithParentStore<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>, C extends DbxFirebaseCollectionWithParentStoreContextState<T, PT, D, PD> = DbxFirebaseCollectionWithParentStoreContextState<T, PT, D, PD>> extends AbstractDbxFirebaseCollectionStore<T, D, C> implements DbxFirebaseCollectionWithParentStore<T, PT, D, PD> {\n // NOTE: Injection does not occur here, but we need @Injectable to compile properly for Angular usage\n constructor(@Inject(null) @Optional() state: C, @Inject(null) @Optional() defaultSourceMode?: DbxFirebaseComponentStoreWithParentSourceMode) {\n super(state);\n this.setSourceMode(defaultSourceMode || 'parent');\n }\n\n // MARK: Effects\n readonly setParentStore: DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction<PT, PD> = setParentStoreEffect(this);\n readonly setSourceMode: DbxFirebaseComponentStoreWithParentSetParentSourceModeFunction = this.effect((input: Observable<Maybe<DbxFirebaseComponentStoreWithParentSourceMode>>) => {\n return input.pipe(\n distinctUntilChanged(),\n switchMap((inputMode) => {\n const mode = inputMode?.toLowerCase() ?? 'parent'; // default to parent mode\n\n if (mode === 'group') {\n return this.currentCollectionGroup$.pipe(\n tap((collectionGroup) => {\n this.setFirestoreCollection(collectionGroup);\n })\n );\n } else {\n // parent document collection\n return this.currentParent$.pipe(\n switchMap((parent) => {\n if (parent) {\n return this.collectionFactory$.pipe(\n tap((collectionFactory) => {\n const collection = collectionFactory(parent);\n this.setFirestoreCollection(collection);\n })\n );\n } else {\n this.setFirestoreCollection(undefined);\n return NEVER;\n }\n })\n );\n }\n })\n );\n });\n\n // MARK: Accessors\n readonly currentParent$: Observable<Maybe<PD>> = this.state$.pipe(\n map((x) => x.parent),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly parent$: Observable<PD> = this.currentParent$.pipe(filterMaybe());\n\n readonly currentCollectionFactory$: Observable<Maybe<FirestoreCollectionWithParentFactory<T, PT, D, PD>>> = this.state$.pipe(\n map((x) => x.collectionFactory),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly collectionFactory$: Observable<FirestoreCollectionWithParentFactory<T, PT, D, PD>> = this.currentCollectionFactory$.pipe(filterMaybe());\n\n readonly currentCollectionGroup$: Observable<Maybe<FirestoreCollectionGroup<T, D>>> = this.state$.pipe(\n map((x) => x.collectionGroup),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly collectionGroup$: Observable<FirestoreCollectionGroup<T, D>> = this.currentCollectionGroup$.pipe(filterMaybe());\n\n // MARK: State Changes\n /**\n * Sets the collection factory function to use.\n */\n readonly setCollectionFactory = this.updater((state, collectionFactory: FirestoreCollectionWithParentFactory<T, PT, D, PD>) => ({ ...state, collectionFactory }));\n\n /**\n * Sets the collection group to use.\n */\n readonly setCollectionGroup = this.updater((state, collectionGroup: Maybe<FirestoreCollectionGroup<T, D>>) => ({ ...state, collectionGroup })) as (observableOrValue: Maybe<FirestoreCollectionGroup<T, D>> | Observable<Maybe<FirestoreCollectionGroup<T, D>>>) => Subscription;\n\n /**\n * Sets the parent on the current state.\n */\n readonly _setParentDocument = this.updater((state, parent: Maybe<PD>) => ({ ...state, parent }));\n readonly _setParent = this._setParentDocument as DbxFirebaseComponentStoreSetParentEffectFunction<PD>;\n}\n","import { filterMaybe } from '@dereekb/rxjs';\nimport { Injectable } from '@angular/core';\nimport { Observable, shareReplay, distinctUntilChanged, map, NEVER, switchMap, tap, Subscription } from 'rxjs';\nimport { FirestoreDocument, FirestoreCollectionWithParentFactory, FirestoreCollection, DocumentReference, FirestoreModelId, FirestoreModelKey, SingleItemFirestoreCollection, firestoreModelKeyParentKey } from '@dereekb/firebase';\nimport { type Maybe } from '@dereekb/util';\nimport { AbstractDbxFirebaseDocumentStore, DbxFirebaseDocumentStore, DbxFirebaseDocumentStoreContextState } from './store.document';\nimport { DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction, setParentStoreEffect, DbxFirebaseComponentStoreWithParent, DbxFirebaseComponentStoreWithParentContextState, DbxFirebaseComponentStoreWithParentSetParentEffectFunction } from './store.subcollection.rxjs';\n\nexport interface DbxFirebaseDocumentWithParentStoreContextState<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> extends DbxFirebaseDocumentStoreContextState<T, D>, DbxFirebaseComponentStoreWithParentContextState<T, PT, D, PD> {}\n\nexport interface DbxFirebaseDocumentWithParentStore<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> extends DbxFirebaseDocumentStore<T, D>, DbxFirebaseComponentStoreWithParent<T, PT, D, PD, FirestoreCollection<T, D>> {}\n\n/**\n * Abstract DbxFirebaseDocumentStore that has a parent document from which is derives it's FiresbaseCollection from.\n */\n@Injectable()\nexport class AbstractDbxFirebaseDocumentWithParentStore<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>, C extends DbxFirebaseDocumentWithParentStoreContextState<T, PT, D, PD> = DbxFirebaseDocumentWithParentStoreContextState<T, PT, D, PD>> extends AbstractDbxFirebaseDocumentStore<T, D, C> implements DbxFirebaseDocumentWithParentStore<T, PT, D, PD> {\n // MARK: Effects\n readonly setParentStore: DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction<PT, PD> = setParentStoreEffect(this);\n readonly setParent: DbxFirebaseComponentStoreWithParentSetParentEffectFunction<PD> = this.effect((input: Observable<Maybe<PD>>) => {\n return input.pipe(\n switchMap((parent) => {\n this._setParentDocument(parent);\n\n if (parent) {\n return this.collectionFactory$.pipe(\n tap((collectionFactory) => {\n const collection = collectionFactory(parent);\n this.setFirestoreCollection(collection);\n })\n );\n } else {\n // clear the current collection\n this.setFirestoreCollection(undefined);\n\n // do nothing until a parent is returned.\n return NEVER;\n }\n })\n );\n });\n\n readonly _setParent = this.setParent;\n\n // MARK: Accessors\n /**\n * Returns the parent model key given the current key value.\n */\n readonly keyParentKey$ = this.key$.pipe(\n map((x) => firestoreModelKeyParentKey(x, 1)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly currentParent$: Observable<Maybe<PD>> = this.state$.pipe(\n map((x) => x.parent),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly currentParentKey$: Observable<Maybe<FirestoreModelKey>> = this.state$.pipe(\n map((x) => x.parent?.key),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly parent$: Observable<PD> = this.currentParent$.pipe(filterMaybe());\n readonly parentKey$: Observable<Maybe<FirestoreModelKey>> = this.currentParentKey$.pipe(filterMaybe());\n\n readonly currentCollectionFactory$: Observable<Maybe<FirestoreCollectionWithParentFactory<T, PT, D, PD>>> = this.state$.pipe(\n map((x) => x.collectionFactory),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly collectionFactory$: Observable<FirestoreCollectionWithParentFactory<T, PT, D, PD>> = this.currentCollectionFactory$.pipe(filterMaybe());\n\n // MARK: State Changes\n /**\n * Sets the collection factory function to use.\n */\n readonly setCollectionFactory = this.updater((state, collectionFactory: FirestoreCollectionWithParentFactory<T, PT, D, PD>) => ({ ...state, collectionFactory }));\n\n /**\n * Sets the parent on the current state.\n */\n readonly _setParentDocument = this.updater((state, parent: Maybe<PD>) => ({ ...state, parent }));\n}\n\n/**\n * AbstractDbxFirebaseDocumentWithParentStore extension for use with SingleItemFirestoreCollection.\n */\nexport class AbstractSingleItemDbxFirebaseDocument<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>, C extends DbxFirebaseDocumentWithParentStoreContextState<T, PT, D, PD> = DbxFirebaseDocumentWithParentStoreContextState<T, PT, D, PD>> extends AbstractDbxFirebaseDocumentWithParentStore<T, PT, D, PD, C> {\n /**\n * Sets the SingleItemFirestoreCollection to use.\n */\n override readonly setFirestoreCollection = this.updater((state, firestoreCollection: Maybe<FirestoreCollection<T, D>>) => {\n if (firestoreCollection != null) {\n const id = (firestoreCollection as SingleItemFirestoreCollection<T, PT, D, PD>).singleItemIdentifier;\n\n if (id != null) {\n return { ...state, firestoreCollection, id };\n } else {\n throw new Error('AbstractSingleItemDbxFirebaseDocument only accepts SingleItemFirestoreCollection values with a singleItemIdentifier set for setFirestoreCollection.');\n }\n } else {\n return { ...state, firestoreCollection: null };\n }\n });\n\n /**\n * Does nothing on a AbstractSingleItemDbxFirebaseDocument.\n *\n * Ref is set with the FirestoreCollection\n */\n override readonly setId = this.updater((state, id: Maybe<FirestoreModelId>) => state) as (observableOrValue: Maybe<string> | Observable<Maybe<string>>) => Subscription;\n\n /**\n * Does nothing on a AbstractSingleItemDbxFirebaseDocument.\n *\n * Ref is set with the FirestoreCollection\n */\n override readonly setKey = this.updater((state, key: Maybe<FirestoreModelKey>) => state) as (observableOrValue: Maybe<string> | Observable<Maybe<string>>) => Subscription;\n\n /**\n * Does nothing on a AbstractSingleItemDbxFirebaseDocument.\n *\n * Ref is set with the FirestoreCollection\n */\n override readonly setRef = this.updater((state, ref: Maybe<DocumentReference<T>>) => state) as (observableOrValue: Maybe<DocumentReference<T>> | Observable<Maybe<DocumentReference<T>>>) => Subscription;\n override readonly clearRefs = this.updater((state) => state);\n}\n","import { Directive, forwardRef, Input, Provider, Type } from '@angular/core';\nimport { FirestoreDocument } from '@dereekb/firebase';\nimport { type Maybe } from '@dereekb/util';\nimport { DbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionStoreDirective } from './store.collection.directive';\nimport { DbxFirebaseCollectionWithParentStore, DbxFirebaseComponentStoreWithParentSourceMode } from './store.subcollection';\n\n/**\n * Abstract directive that contains a DbxFirebaseCollectionWithParentStore and provides an interface for communicating with other directives.\n */\n@Directive()\nexport abstract class DbxFirebaseCollectionWithParentStoreDirective<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>, S extends DbxFirebaseCollectionWithParentStore<T, PT, D, PD> = DbxFirebaseCollectionWithParentStore<T, PT, D, PD>> extends DbxFirebaseCollectionStoreDirective<T, D, S> {\n // MARK: Inputs\n @Input()\n set sourceMode(sourceMode: Maybe<DbxFirebaseComponentStoreWithParentSourceMode>) {\n this.store.setSourceMode(sourceMode);\n }\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// The use of any here does not degrade the type-safety; we want to simply match that the Store type S is used in the Directive type C to provide it.\n\n/**\n * Configures providers for a DbxFirebaseCollectionWithParentStoreDirective.\n *\n * Can optionally also provide the actual store type to include in the providers array so it is instantiated by Angular.\n *\n * @param sourceType\n */\nexport function provideDbxFirebaseCollectionWithParentStoreDirective<S extends DbxFirebaseCollectionWithParentStoreDirective<any, any, any, any, any>>(sourceType: Type<S>): Provider[];\nexport function provideDbxFirebaseCollectionWithParentStoreDirective<S extends DbxFirebaseCollectionWithParentStore<any, any, any, any>, C extends DbxFirebaseCollectionWithParentStoreDirective<any, any, any, any, S> = DbxFirebaseCollectionWithParentStoreDirective<any, any, any, any, S>>(sourceType: Type<C>, storeType?: Type<S>): Provider[];\nexport function provideDbxFirebaseCollectionWithParentStoreDirective<S extends DbxFirebaseCollectionWithParentStore<any, any, any, any>, C extends DbxFirebaseCollectionWithParentStoreDirective<any, any, any, any, S> = DbxFirebaseCollectionWithParentStoreDirective<any, any, any, any, S>>(sourceType: Type<C>, storeType?: Type<S>): Provider[] {\n const providers: Provider[] = [\n ...provideDbxFirebaseCollectionStoreDirective(sourceType, storeType),\n {\n provide: DbxFirebaseCollectionWithParentStoreDirective,\n useExisting: forwardRef(() => sourceType)\n }\n ];\n\n return providers;\n}\n","import { Injectable } from '@angular/core';\nimport { SystemState, SystemStateDocument, SystemStateFirestoreCollections } from '@dereekb/firebase';\nimport { AbstractDbxFirebaseCollectionStore } from '../modules/store/store.collection';\n\n@Injectable()\nexport class SystemStateCollectionStore extends AbstractDbxFirebaseCollectionStore<SystemState, SystemStateDocument> {\n constructor(collections: SystemStateFirestoreCollections) {\n super({ firestoreCollection: collections.systemStateCollection });\n }\n}\n","import { Directive } from '@angular/core';\nimport { SystemState, SystemStateDocument } from '@dereekb/firebase';\nimport { DbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionStoreDirective } from '../modules/store/store.collection.directive';\nimport { SystemStateCollectionStore } from './systemstate.collection.store';\n\n@Directive({\n selector: '[dbxFirebaseSystemStateCollection]',\n providers: provideDbxFirebaseCollectionStoreDirective(DbxFirebaseSystemStateCollectionStoreDirective, SystemStateCollectionStore)\n})\nexport class DbxFirebaseSystemStateCollectionStoreDirective extends DbxFirebaseCollectionStoreDirective<SystemState, SystemStateDocument, SystemStateCollectionStore> {\n constructor(store: SystemStateCollectionStore) {\n super(store);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SystemState, SystemStateDocument, SystemStateFirestoreCollection, SystemStateFirestoreCollections, SystemStateStoredData } from '@dereekb/firebase';\nimport { AbstractDbxFirebaseDocumentStore } from '../modules/store/store.document';\n\n@Injectable()\nexport class SystemStateDocumentStore<T extends SystemStateStoredData = SystemStateStoredData> extends AbstractDbxFirebaseDocumentStore<SystemState<T>, SystemStateDocument<T>> {\n constructor(collections: SystemStateFirestoreCollections) {\n super({ firestoreCollection: collections.systemStateCollection as SystemStateFirestoreCollection<T> });\n }\n}\n","import { SystemState, SystemStateStoredData, SystemStateTypeIdentifier } from '@dereekb/firebase';\nimport { LoadingState, mapLoadingState } from '@dereekb/rxjs';\nimport { map, Observable, shareReplay } from 'rxjs';\nimport { SystemStateDocumentStore } from './systemstate.document.store';\nimport { Inject, Injectable, Injector, OnDestroy, Optional, inject } from '@angular/core';\nimport { newWithInjector } from '@dereekb/dbx-core';\n\n/**\n * Abstract class used for accessing a SystemStateDocumentStore's data.\n */\n@Injectable()\nexport abstract class AbstractSystemStateDocumentStoreAccessor<T extends SystemStateStoredData = SystemStateStoredData> implements OnDestroy {\n readonly systemStateDocumentStore = newWithInjector(SystemStateDocumentStore<T>, inject(Injector));\n\n readonly documentData$ = this.systemStateDocumentStore.data$;\n readonly data$: Observable<T> = this.documentData$.pipe(\n map((x) => x.data),\n shareReplay(1)\n );\n readonly dataState$: Observable<LoadingState<T>> = this.systemStateDocumentStore.dataLoadingState$.pipe(mapLoadingState({ mapValue: (x: SystemState<T>) => x.data }), shareReplay(1));\n readonly exists$ = this.systemStateDocumentStore.exists$;\n readonly doesNotExist$ = this.systemStateDocumentStore.doesNotExist$;\n\n readonly type$: Observable<SystemStateTypeIdentifier> = this.systemStateDocumentStore.id$;\n\n constructor(@Inject(null) @Optional() type: SystemStateTypeIdentifier) {\n this.systemStateDocumentStore.setId(type);\n }\n\n ngOnDestroy(): void {\n this.systemStateDocumentStore.ngOnDestroy();\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { SystemState, SystemStateDocument, SystemStateStoredData } from '@dereekb/firebase';\nimport { DbxFirebaseDocumentStoreDirective, provideDbxFirebaseDocumentStoreDirective } from '../modules/store/store.document.directive';\nimport { SystemStateDocumentStore } from './systemstate.document.store';\n\n@Directive({\n selector: '[dbxFirebaseSystemStateDocument]',\n providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseSystemStateDocumentStoreDirective, SystemStateDocumentStore)\n})\nexport class DbxFirebaseSystemStateDocumentStoreDirective<T extends SystemStateStoredData = SystemStateStoredData> extends DbxFirebaseDocumentStoreDirective<SystemState<T>, SystemStateDocument<T>, SystemStateDocumentStore<T>> {\n constructor() {\n super(inject(SystemStateDocumentStore<T>));\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DbxFirebaseModelHistoryModule } from './modules/model/model.history.module';\nimport { DbxFirebaseModelTypesModule } from './modules/model/model.types.module';\nimport { DbxFirebaseModelStoreModule } from './modules/store/model.store.module';\n\n@NgModule({\n exports: [DbxFirebaseModelStoreModule, DbxFirebaseModelHistoryModule, DbxFirebaseModelTypesModule]\n})\nexport class DbxFirebaseModelModule {}\n","import { Injectable, inject } from '@angular/core';\nimport { AppNotificationTemplateTypeInfoRecordService, NotificationItem, NotificationItemMetadata, NotificationItemSubjectMessagePair } from '@dereekb/firebase';\n\n/**\n * Client-side service used for retrieving notification templates.\n */\n@Injectable()\nexport class DbxFirebaseNotificationTemplateService {\n readonly appNotificationTemplateTypeInfoRecordService = inject(AppNotificationTemplateTypeInfoRecordService);\n\n notificationItemSubjectMessagePairForNotificationSummaryItem<D extends NotificationItemMetadata = {}>(item: NotificationItem<D>): NotificationItemSubjectMessagePair<D> {\n const templateType = item.t;\n const templateDetails = this.appNotificationTemplateTypeInfoRecordService.appNotificationTemplateTypeInfoRecord[templateType];\n\n const subject = item.s ?? templateDetails.name;\n const message = item.g ?? '';\n const date = item.cat;\n\n return {\n item,\n subject,\n message,\n date\n };\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { AbstractDbxSelectionListWrapperDirective, AbstractDbxValueListViewItemComponent, AbstractDbxSelectionListViewDirective, DEFAULT_LIST_WRAPPER_DIRECTIVE_TEMPLATE, DbxSelectionValueListViewConfig, provideDbxListView, DEFAULT_DBX_SELECTION_VALUE_LIST_DIRECTIVE_TEMPLATE, DbxValueAsListItem, provideDbxListViewWrapper } from '@dereekb/dbx-web';\nimport { NotificationItem } from '@dereekb/firebase';\nimport { cachedGetter } from '@dereekb/util';\nimport { of } from 'rxjs';\nimport { DbxFirebaseNotificationTemplateService } from '../service/notification.template.service';\n\nexport type NotificationItemWithSelection = DbxValueAsListItem<NotificationItem>;\n\n@Component({\n selector: 'dbx-firebase-notificationitem-list',\n template: DEFAULT_LIST_WRAPPER_DIRECTIVE_TEMPLATE,\n providers: provideDbxListViewWrapper(DbxFirebaseNotificationItemListComponent)\n})\nexport class DbxFirebaseNotificationItemListComponent extends AbstractDbxSelectionListWrapperDirective<NotificationItem> {\n constructor() {\n super({\n componentClass: DbxFirebaseNotificationItemListViewComponent,\n defaultSelectionMode: 'view'\n });\n }\n}\n\n@Component({\n selector: 'dbx-firebase-notificationitem-list-view',\n template: DEFAULT_DBX_SELECTION_VALUE_LIST_DIRECTIVE_TEMPLATE,\n providers: provideDbxListView(DbxFirebaseNotificationItemListViewComponent)\n})\nexport class DbxFirebaseNotificationItemListViewComponent extends AbstractDbxSelectionListViewDirective<NotificationItem> {\n readonly config: DbxSelectionValueListViewConfig<NotificationItemWithSelection> = {\n componentClass: DbxFirebaseNotificationItemListViewItemComponent,\n mapValuesToItemValues: (x) => of(x.map((y) => ({ ...y, icon: y.icon, itemValue: y })))\n };\n}\n\n@Component({\n template: `\n <div class=\"dbx-list-item-padded dbx-list-two-line-item dbx-firebase-notificationitem-list-view-item\">\n <div class=\"item-left\">\n <span class=\"notificationitem-subject\">{{ subject }}</span>\n <span class=\"notificationitem-message item-details\">{{ message | cutText: 90 }}</span>\n <span class=\"notificationitem-date item-details-footnote\">{{ date | date: 'medium' }}</span>\n </div>\n </div>\n `\n})\nexport class DbxFirebaseNotificationItemListViewItemComponent extends AbstractDbxValueListViewItemComponent<NotificationItem> {\n readonly dbxFirebaseNotificationTemplateService = inject(DbxFirebaseNotificationTemplateService);\n\n readonly pairGetter = cachedGetter(() => this.dbxFirebaseNotificationTemplateService.notificationItemSubjectMessagePairForNotificationSummaryItem(this.itemValue));\n\n get subject() {\n return this.pairGetter().subject;\n }\n\n get message() {\n return this.pairGetter().message;\n }\n\n get date() {\n return this.pairGetter().date;\n }\n}\n","import { DbxWidgetEntry, DbxWidgetType } from '@dereekb/dbx-web';\nimport { NotificationTemplateType, NotificationTemplateTypeInfo } from '@dereekb/firebase';\n\n/**\n * Prefix used by all widgets.\n *\n * Does not include the \"-\" between the prefix and the template type returned by dbxWidgetTypeForNotificationTemplateType().\n */\nexport const FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE_PREFIX: string = 'dbxFirebaseNotificationItem';\n\nexport const DEFAULT_FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE: DbxWidgetType = `${FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE_PREFIX}Default`;\n\nexport function dbxWidgetTypeForNotificationTemplateType(notificationTemplateType: NotificationTemplateType): DbxWidgetType {\n return `${FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE_PREFIX}-${notificationTemplateType}`;\n}\n\n/**\n * Used for registering a DbxFirebaseNotificationItemWidgetEntry.\n *\n * The notificationTemplateType should be known by the app, otherwise a warning may be thrown.\n */\nexport interface DbxFirebaseNotificationItemWidgetEntryRegistration extends Omit<DbxWidgetEntry, 'type'> {\n readonly notificationTemplateType: NotificationTemplateType;\n}\n\n/**\n * A widget used for DbxFirebaseNotificationItem views.\n */\nexport interface DbxFirebaseNotificationItemWidgetEntry {\n readonly notificationTemplateType: NotificationTemplateType;\n readonly notificationTemplateTypeInfo: NotificationTemplateTypeInfo;\n readonly widget: DbxWidgetEntry;\n}\n","import { Injectable, inject } from '@angular/core';\nimport { NotificationTemplateType } from '@dereekb/firebase';\nimport { DbxFirebaseNotificationTemplateService } from './notification.template.service';\nimport { DbxWidgetEntry, DbxWidgetService } from '@dereekb/dbx-web';\nimport { DEFAULT_FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE, DbxFirebaseNotificationItemWidgetEntry, DbxFirebaseNotificationItemWidgetEntryRegistration, dbxWidgetTypeForNotificationTemplateType } from './notificationitem.widget';\n\n/**\n * Service used for registering widgets used for notification items.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseNotificationItemWidgetService {\n readonly dbxWidgetService = inject(DbxWidgetService);\n readonly dbxFirebaseNotificationTemplateService = inject(DbxFirebaseNotificationTemplateService);\n\n private readonly _entries = new Map<NotificationTemplateType, DbxFirebaseNotificationItemWidgetEntry>();\n\n /**\n * Used to register a item widget. If widget for the given type is already registered, this will override it by default.\n *\n * @param provider\n * @param override\n */\n register(provider: DbxFirebaseNotificationItemWidgetEntryRegistration, override: boolean = true): boolean {\n const { componentClass, notificationTemplateType } = provider;\n const widgetType = dbxWidgetTypeForNotificationTemplateType(notificationTemplateType);\n\n if (override || !this._entries.has(notificationTemplateType)) {\n const notificationTemplateTypeInfo = this.dbxFirebaseNotificationTemplateService.appNotificationTemplateTypeInfoRecordService.appNotificationTemplateTypeInfoRecord[notificationTemplateType];\n\n if (!notificationTemplateTypeInfo) {\n console.warn(`DbxFirebaseNotificationItemWidgetService.register(): No known template type info was found for notification type: ${notificationTemplateType}. The entry is not being registered.`);\n } else {\n const entry: DbxFirebaseNotificationItemWidgetEntry = {\n notificationTemplateType,\n notificationTemplateTypeInfo,\n widget: {\n type: widgetType,\n componentClass\n }\n };\n\n this._entries.set(notificationTemplateType, entry);\n this.dbxWidgetService.register(entry.widget, override);\n return true;\n }\n }\n\n return false;\n }\n\n registerDefaultWidget(entry: Omit<DbxWidgetEntry, 'type'>, override: boolean = true): boolean {\n return this.dbxWidgetService.register(\n {\n ...entry,\n type: DEFAULT_FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE\n },\n override\n );\n }\n}\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { DbxWidgetViewComponentConfig } from '@dereekb/dbx-web';\nimport { NotificationItem, NotificationItemMetadata } from '@dereekb/firebase';\nimport { filterMaybe } from '@dereekb/rxjs';\nimport { Maybe } from '@dereekb/util';\nimport { BehaviorSubject, Observable, map, shareReplay } from 'rxjs';\nimport { DEFAULT_FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE, dbxWidgetTypeForNotificationTemplateType } from '../service';\n\n@Component({\n selector: 'dbx-firebase-notificationitem-view',\n template: `\n <dbx-widget-view [config]=\"config$ | async\"></dbx-widget-view>\n `\n})\nexport class DbxFirebaseNotificationItemViewComponent<D extends NotificationItemMetadata = {}> implements OnDestroy {\n private readonly _item = new BehaviorSubject<Maybe<NotificationItem<D>>>(undefined);\n\n readonly config$: Observable<DbxWidgetViewComponentConfig> = this._item.pipe(\n filterMaybe(),\n map((data) => {\n const type = dbxWidgetTypeForNotificationTemplateType(data.t);\n\n const widgetConfig: DbxWidgetViewComponentConfig = {\n type,\n data,\n defaultType: DEFAULT_FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE\n };\n\n return widgetConfig;\n }),\n shareReplay(1)\n );\n\n ngOnDestroy(): void {\n this._item.complete();\n }\n\n @Input()\n get item(): Maybe<NotificationItem<D>> {\n return this._item.getValue();\n }\n\n set item(value: Maybe<NotificationItem<D>>) {\n this._item.next(value);\n }\n}\n","import { Directive } from '@angular/core';\nimport { AbstractDbxWidgetComponent } from '@dereekb/dbx-web';\nimport { NotificationItem, NotificationItemMetadata } from '@dereekb/firebase';\n\n@Directive()\nexport abstract class AbstractDbxFirebaseNotificationItemWidgetComponent<D extends NotificationItemMetadata = {}> extends AbstractDbxWidgetComponent<NotificationItem<D>> {\n get notificationItem(): NotificationItem<D> {\n return this.data;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\n\n@Component({\n selector: 'dbx-firebase-notificationitem-content',\n templateUrl: './notificationitem.content.component.html',\n styleUrls: ['./notificationitem.content.scss']\n})\nexport class DbxFirebaseNotificationItemContentComponent {\n @Input()\n subject?: Maybe<string>;\n\n @Input()\n message?: Maybe<string>;\n\n @Input()\n date?: Maybe<Date>;\n}\n","<div class=\"dbx-firebase-notificationitem-content\">\n <div class=\"notificationitem-header dbx-pb2\">\n <div *ngIf=\"subject\" class=\"notificationitem-subject dbx-pb1\">{{ subject }}</div>\n <ng-content select=\"[header]\"></ng-content>\n <div *ngIf=\"date\" class=\"notificationitem-date dbx-label dbx-small\">{{ date | date: 'medium' }}</div>\n </div>\n <ng-content select=\"[premessage]\"></ng-content>\n <div class=\"notificationitem-message\">{{ message }}</div>\n <ng-content></ng-content>\n</div>\n","import { Component } from '@angular/core';\nimport { AbstractDbxFirebaseNotificationItemWidgetComponent } from './notificationitem.view.directive';\n\n@Component({\n selector: 'dbx-firebase-notificationitem-view-default',\n template: '<dbx-firebase-notificationitem-content [subject]=\"subject\" [message]=\"message\" [date]=\"date\"></dbx-firebase-notificationitem-content>'\n})\nexport class DbxFirebaseNotificationItemDefaultViewComponent extends AbstractDbxFirebaseNotificationItemWidgetComponent {\n get subject() {\n return this.notificationItem.s;\n }\n\n get message() {\n return this.notificationItem.g;\n }\n\n get date() {\n return this.notificationItem.cat;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractDbxFirebaseCollectionStore } from '../../../model/modules/store';\nimport { NotificationFirestoreCollections, NotificationSummary, NotificationSummaryDocument } from '@dereekb/firebase';\n\n@Injectable()\nexport class NotificationSummaryCollectionStore extends AbstractDbxFirebaseCollectionStore<NotificationSummary, NotificationSummaryDocument> {\n constructor(collections: NotificationFirestoreCollections) {\n super({ firestoreCollection: collections.notificationSummaryCollection });\n }\n}\n","import { Directive } from '@angular/core';\nimport { DbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionStoreDirective } from '../../../model/modules/store';\nimport { NotificationSummaryCollectionStore } from './notificationsummary.collection.store';\nimport { NotificationSummary, NotificationSummaryDocument } from '@dereekb/firebase';\n\n@Directive({\n selector: '[dbxFirebaseNotificationSummaryCollection]',\n providers: provideDbxFirebaseCollectionStoreDirective(DbxFirebaseNotificationSummaryCollectionStoreDirective, NotificationSummaryCollectionStore)\n})\nexport class DbxFirebaseNotificationSummaryCollectionStoreDirective extends DbxFirebaseCollectionStoreDirective<NotificationSummary, NotificationSummaryDocument, NotificationSummaryCollectionStore> {\n constructor(store: NotificationSummaryCollectionStore) {\n super(store);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { isSameDate } from '@dereekb/date';\nimport { AbstractDbxFirebaseDocumentStore, firebaseDocumentStoreUpdateFunction } from '../../../model/modules/store';\nimport { NotificationFirestoreCollections, NotificationFunctions, NotificationItem, NotificationItemMetadata, NotificationSummary, NotificationSummaryDocument, UnreadNotificationItemsResult, unreadNotificationItems } from '@dereekb/firebase';\nimport { LoadingState, ObservableOrValue, asObservable, mapLoadingStateValueWithOperator } from '@dereekb/rxjs';\nimport { Maybe } from '@dereekb/util';\nimport { map, shareReplay, distinctUntilChanged, Observable, combineLatest } from 'rxjs';\n\n@Injectable()\nexport class NotificationSummaryDocumentStore extends AbstractDbxFirebaseDocumentStore<NotificationSummary, NotificationSummaryDocument> {\n readonly notificationFunctions = inject(NotificationFunctions);\n\n constructor() {\n super({ firestoreCollection: inject(NotificationFirestoreCollections).notificationSummaryCollection });\n }\n\n readonly notificationItemsLoadingState$: Observable<LoadingState<NotificationItem<any>[]>> = this.dataLoadingState$.pipe(\n mapLoadingStateValueWithOperator(map((x) => [...x.n].reverse())), // n is sorted in ascending order\n shareReplay(1)\n );\n\n readonly createdAt$ = this.data$.pipe(\n map((x) => x.cat),\n distinctUntilChanged(isSameDate),\n shareReplay(1)\n );\n\n readonly lastReadAt$ = this.data$.pipe(\n map((x) => x.rat),\n distinctUntilChanged(isSameDate),\n shareReplay(1)\n );\n\n readonly lastUpdateAt$ = this.data$.pipe(\n map((x) => x.lat),\n distinctUntilChanged(isSameDate),\n shareReplay(1)\n );\n\n readonly notificationItems$ = this.data$.pipe(\n map((x) => [...x.n].reverse()), // n is sorted in ascending order\n shareReplay(1)\n );\n\n readonly needsSync$ = this.data$.pipe(\n map((x) => x.s),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n notificationItemsLoadingState<D extends NotificationItemMetadata = {}>(): Observable<LoadingState<NotificationItem<D>[]>> {\n return this.notificationItemsLoadingState$;\n }\n\n unreadNotificationItems<D extends NotificationItemMetadata = {}>(checkLastReadIfCreatedBeforeObs?: ObservableOrValue<Maybe<Date>>): Observable<UnreadNotificationItemsResult<D>> {\n return combineLatest([asObservable(checkLastReadIfCreatedBeforeObs), this.notificationItems$ as Observable<NotificationItem<D>[]>]).pipe(map(([c, items]) => unreadNotificationItems<D>(items, c)));\n }\n\n readonly updateNotificationSummary = firebaseDocumentStoreUpdateFunction(this, this.notificationFunctions.notificationSummary.updateNotificationSummary.update);\n}\n","import { Directive } from '@angular/core';\nimport { DbxFirebaseDocumentStoreDirective, provideDbxFirebaseDocumentStoreDirective } from '../../../model/modules/store';\nimport { NotificationSummaryDocumentStore } from './notificationsummary.document.store';\nimport { NotificationSummary, NotificationSummaryDocument } from '@dereekb/firebase';\n\n@Directive({\n selector: '[dbxFirebaseNotificationSummaryDocument]',\n providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseNotificationSummaryDocumentStoreDirective, NotificationSummaryDocumentStore)\n})\nexport class DbxFirebaseNotificationSummaryDocumentStoreDirective extends DbxFirebaseDocumentStoreDirective<NotificationSummary, NotificationSummaryDocument, NotificationSummaryDocumentStore> {\n constructor(store: NotificationSummaryDocumentStore) {\n super(store);\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { NotificationId, NotificationItem } from '@dereekb/firebase';\nimport { Maybe } from '@dereekb/util';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { combineLatest, distinctUntilChanged, map, shareReplay } from 'rxjs';\n\nexport interface DbxFirebaseNotificationItemStoreState {\n /**\n * The NotificationSummary to pull items from\n */\n readonly items: NotificationItem[];\n /**\n * The currently selected id\n */\n readonly selectedId: Maybe<NotificationId>;\n}\n\n/**\n * Store used for selecting a specific NotificationItem from a list of notification items.\n */\n@Injectable()\nexport class DbxFirebaseNotificationItemStore extends ComponentStore<DbxFirebaseNotificationItemStoreState> implements OnDestroy {\n constructor() {\n super({\n items: [],\n selectedId: undefined\n });\n }\n\n // MARK: Accessors\n readonly items$ = this.select((state) => state.items);\n\n readonly selectedId$ = this.select((state) => state.selectedId).pipe(distinctUntilChanged(), shareReplay(1));\n\n readonly selectedItem$ = combineLatest([this.items$, this.selectedId$]).pipe(\n map(([items, selectedId]) => {\n return items.find((item) => item.id === selectedId);\n }),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n // MARK: State Changes\n readonly setItems = this.updater((state, items: NotificationItem[]) => ({ ...state, items }));\n readonly setSelectedId = this.updater((state, selectedId: Maybe<NotificationId>) => ({ ...state, selectedId }));\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractDbxFirebaseCollectionStore } from '../../../model/modules/store';\nimport { NotificationFirestoreCollections, NotificationUser, NotificationUserDocument } from '@dereekb/firebase';\n\n@Injectable()\nexport class NotificationUserCollectionStore extends AbstractDbxFirebaseCollectionStore<NotificationUser, NotificationUserDocument> {\n constructor(collections: NotificationFirestoreCollections) {\n super({ firestoreCollection: collections.notificationUserCollection });\n }\n}\n","import { Directive } from '@angular/core';\nimport { DbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionStoreDirective } from '../../../model/modules/store';\nimport { NotificationUserCollectionStore } from './notificationuser.collection.store';\nimport { NotificationUser, NotificationUserDocument } from '@dereekb/firebase';\n\n@Directive({\n selector: '[dbxFirebaseNotificationUserCollection]',\n providers: provideDbxFirebaseCollectionStoreDirective(DbxFirebaseNotificationUserCollectionStoreDirective, NotificationUserCollectionStore)\n})\nexport class DbxFirebaseNotificationUserCollectionStoreDirective extends DbxFirebaseCollectionStoreDirective<NotificationUser, NotificationUserDocument, NotificationUserCollectionStore> {\n constructor(store: NotificationUserCollectionStore) {\n super(store);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { AbstractDbxFirebaseDocumentStore, firebaseDocumentStoreUpdateFunction } from '../../../model/modules/store';\nimport { NotificationFirestoreCollections, NotificationFunctions, NotificationUser, NotificationUserDocument } from '@dereekb/firebase';\n\n@Injectable()\nexport class NotificationUserDocumentStore extends AbstractDbxFirebaseDocumentStore<NotificationUser, NotificationUserDocument> {\n readonly notificationFunctions = inject(NotificationFunctions);\n\n constructor() {\n super({ firestoreCollection: inject(NotificationFirestoreCollections).notificationUserCollection });\n }\n\n readonly updateNotificationUser = firebaseDocumentStoreUpdateFunction(this, this.notificationFunctions.notificationUser.updateNotificationUser.update);\n readonly resyncNotificationUser = firebaseDocumentStoreUpdateFunction(this, this.notificationFunctions.notificationUser.updateNotificationUser.resync);\n}\n","import { Directive } from '@angular/core';\nimport { DbxFirebaseDocumentStoreDirective, provideDbxFirebaseDocumentStoreDirective } from '../../../model/modules/store';\nimport { NotificationUserDocumentStore } from './notificationuser.document.store';\nimport { NotificationUser, NotificationUserDocument } from '@dereekb/firebase';\n\n@Directive({\n selector: '[dbxFirebaseNotificationUserDocument]',\n providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseNotificationUserDocumentStoreDirective, NotificationUserDocumentStore)\n})\nexport class DbxFirebaseNotificationUserDocumentStoreDirective extends DbxFirebaseDocumentStoreDirective<NotificationUser, NotificationUserDocument, NotificationUserDocumentStore> {\n constructor(store: NotificationUserDocumentStore) {\n super(store);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { isSameDate } from '@dereekb/date';\nimport { AbstractDbxFirebaseDocumentStore, firebaseDocumentStoreUpdateFunction } from '../../../model/modules/store';\nimport { NotificationFirestoreCollections, NotificationFunctions, NotificationBox, NotificationBoxDocument } from '@dereekb/firebase';\nimport { distinctUntilChanged, map, shareReplay } from 'rxjs';\n\n@Injectable()\nexport class NotificationBoxDocumentStore extends AbstractDbxFirebaseDocumentStore<NotificationBox, NotificationBoxDocument> {\n readonly notificationFunctions = inject(NotificationFunctions);\n\n constructor() {\n super({ firestoreCollection: inject(NotificationFirestoreCollections).notificationBoxCollection });\n }\n\n readonly createdAt$ = this.data$.pipe(\n map((x) => x.cat),\n distinctUntilChanged(isSameDate),\n shareReplay(1)\n );\n\n readonly recipients$ = this.data$.pipe(\n map((x) => x.r),\n shareReplay(1)\n );\n\n readonly updateNotificationBox = firebaseDocumentStoreUpdateFunction(this, this.notificationFunctions.notificationBox.updateNotificationBox.update);\n readonly updateNotificationBoxRecipient = firebaseDocumentStoreUpdateFunction(this, this.notificationFunctions.notificationBox.updateNotificationBox.recipient);\n}\n","import { Directive } from '@angular/core';\nimport { DbxFirebaseDocumentStoreDirective, provideDbxFirebaseDocumentStoreDirective } from '../../../model/modules/store';\nimport { NotificationBoxDocumentStore } from './notificationbox.document.store';\nimport { NotificationBox, NotificationBoxDocument } from '@dereekb/firebase';\n\n@Directive({\n selector: '[dbxFirebaseNotificationBoxDocument]',\n providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseNotificationBoxDocumentStoreDirective, NotificationBoxDocumentStore)\n})\nexport class DbxFirebaseNotificationBoxDocumentStoreDirective extends DbxFirebaseDocumentStoreDirective<NotificationBox, NotificationBoxDocument, NotificationBoxDocumentStore> {\n constructor(store: NotificationBoxDocumentStore) {\n super(store);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractDbxFirebaseCollectionStore } from '../../../model/modules/store';\nimport { NotificationFirestoreCollections, NotificationBox, NotificationBoxDocument } from '@dereekb/firebase';\n\n@Injectable()\nexport class NotificationBoxCollectionStore extends AbstractDbxFirebaseCollectionStore<NotificationBox, NotificationBoxDocument> {\n constructor(collections: NotificationFirestoreCollections) {\n super({ firestoreCollection: collections.notificationBoxCollection });\n }\n}\n","import { Directive } from '@angular/core';\nimport { NotificationBoxCollectionStore } from './notificationbox.collection.store';\nimport { NotificationBox, NotificationBoxDocument } from '@dereekb/firebase';\nimport { DbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionStoreDirective } from '../../../model/modules/store';\n\n@Directive({\n selector: '[dbxFirebaseNotificationBoxCollection]',\n providers: provideDbxFirebaseCollectionStoreDirective(DbxFirebaseNotificationBoxCollectionStoreDirective, NotificationBoxCollectionStore)\n})\nexport class DbxFirebaseNotificationBoxCollectionStoreDirective extends DbxFirebaseCollectionStoreDirective<NotificationBox, NotificationBoxDocument, NotificationBoxCollectionStore> {\n constructor(store: NotificationBoxCollectionStore) {\n super(store);\n }\n}\n","import { Component, ElementRef } from '@angular/core';\nimport { NgPopoverRef } from 'ng-overlay-container';\nimport { AbstractPopoverDirective, AnchorForValueFunction, DbxPopoverKey, DbxPopoverService } from '@dereekb/dbx-web';\nimport { type Maybe } from '@dereekb/util';\nimport { NotificationItem } from '@dereekb/firebase';\nimport { Observable } from 'rxjs';\nimport { LoadingState } from '@dereekb/rxjs';\n\nexport interface DbxFirebaseNotificationItemStorePopoverParams {\n /**\n * Custom icon\n *\n * Defaults to \"history\"\n */\n readonly icon?: string;\n /**\n * Custom header text\n *\n * Defaults to \"History\"\n */\n readonly header?: string;\n /**\n * Custom empty text when no items exist.\n */\n readonly emptyText?: string;\n /**\n * Origin to add the popover to.\n */\n readonly origin: ElementRef;\n /**\n * Items loading state.\n */\n readonly notificationItemsLoadingState$: Observable<LoadingState<NotificationItem[]>>;\n /**\n * Anchor\n */\n readonly makeNotificationItemAnchor?: Maybe<AnchorForValueFunction<NotificationItem>>;\n}\n\nexport const DEFAULT_DBX_FIREBASE_NOTIFICATION_ITEM_STORE_POPOVER_KEY = 'notification-item-store-notifications';\n\n@Component({\n templateUrl: './notification.item.store.popover.component.html'\n})\nexport class DbxFirebaseNotificationItemStorePopoverComponent extends AbstractPopoverDirective<unknown, DbxFirebaseNotificationItemStorePopoverParams> {\n static openPopover(popupService: DbxPopoverService, { origin, header, icon, emptyText, makeNotificationItemAnchor, notificationItemsLoadingState$ }: DbxFirebaseNotificationItemStorePopoverParams, popoverKey?: DbxPopoverKey): NgPopoverRef {\n return popupService.open({\n key: popoverKey ?? DEFAULT_DBX_FIREBASE_NOTIFICATION_ITEM_STORE_POPOVER_KEY,\n origin,\n componentClass: DbxFirebaseNotificationItemStorePopoverComponent,\n data: {\n header,\n icon,\n emptyText,\n notificationItemsLoadingState$,\n makeNotificationItemAnchor\n }\n });\n }\n\n get params(): DbxFirebaseNotificationItemStorePopoverParams {\n return this.popover.data as DbxFirebaseNotificationItemStorePopoverParams;\n }\n\n get icon() {\n return this.params.icon ?? 'notifications';\n }\n\n get header() {\n return this.params.header ?? 'Notifications';\n }\n\n get emptyText() {\n return this.params.header ?? 'There are no notifications.';\n }\n\n get notificationItemsLoadingState$() {\n return this.params.notificationItemsLoadingState$;\n }\n\n get makeNotificationItemAnchor() {\n return this.params.makeNotificationItemAnchor;\n }\n}\n","<dbx-popover-content>\n <!-- Header -->\n <dbx-popover-header [icon]=\"icon\" [header]=\"header\"></dbx-popover-header>\n <!-- Content -->\n <dbx-popover-scroll-content>\n <dbx-firebase-notificationitem-list [state$]=\"notificationItemsLoadingState$\" [dbxListItemModifier] [dbxListItemAnchorModifier]=\"makeNotificationItemAnchor\">\n <dbx-list-empty-content empty>\n <p>{{ emptyText }}</p>\n </dbx-list-empty-content>\n </dbx-firebase-notificationitem-list>\n </dbx-popover-scroll-content>\n</dbx-popover-content>\n","import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild, inject } from '@angular/core';\nimport { AbstractPopoverRefDirective, DbxPopoverService } from '@dereekb/dbx-web';\nimport { NgPopoverRef } from 'ng-overlay-container';\nimport { DbxFirebaseNotificationItemStorePopoverComponent, DbxFirebaseNotificationItemStorePopoverParams } from './notification.item.store.popover.component';\nimport { DbxFirebaseNotificationItemStore } from '../store/notification.item.store';\nimport { loadingStateFromObs } from '@dereekb/rxjs';\nimport { Maybe } from '@dereekb/util';\n\nexport type DbxFirebaseNotificationItemStorePopoverButtonConfig = DbxFirebaseNotificationItemStorePopoverParams;\n\n@Component({\n selector: 'dbx-firebase-notification-item-store-popover-button',\n template: `\n <dbx-icon-button #button (buttonClick)=\"showNotificationsPopover()\" icon=\"notifications\"></dbx-icon-button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DbxFirebaseNotificationItemStorePopoverButtonComponent extends AbstractPopoverRefDirective<unknown, unknown> {\n private readonly _dbxPopoverService = inject(DbxPopoverService);\n private readonly _dbxFirebaseNotificationItemStore = inject(DbxFirebaseNotificationItemStore, { optional: true });\n\n @ViewChild('button', { read: ElementRef, static: false })\n buttonElement!: ElementRef;\n\n @Input()\n config?: Maybe<Partial<DbxFirebaseNotificationItemStorePopoverButtonConfig>>;\n\n protected override _makePopoverRef(origin?: ElementRef): NgPopoverRef<unknown, unknown> {\n const config = this.config;\n\n const notificationItemsLoadingState$ = config?.notificationItemsLoadingState$ ?? (this._dbxFirebaseNotificationItemStore != null ? loadingStateFromObs(this._dbxFirebaseNotificationItemStore.items$) : undefined);\n\n if (!origin) {\n throw new Error('Missing origin.');\n } else if (!notificationItemsLoadingState$) {\n throw new Error('Missing notificationItemsLoadingState$.');\n }\n\n return DbxFirebaseNotificationItemStorePopoverComponent.openPopover(this._dbxPopoverService, {\n origin,\n notificationItemsLoadingState$,\n ...config\n });\n }\n\n showNotificationsPopover(): void {\n const origin = this.buttonElement.nativeElement;\n this.showPopover(origin);\n }\n}\n","import { ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { AppNotificationTemplateTypeInfoRecordService } from '@dereekb/firebase';\nimport { DbxFirebaseNotificationTemplateService } from './service/notification.template.service';\nimport { DbxButtonModule, DbxListLayoutModule, DbxPopoverInteractionModule, DbxRouterListModule, DbxSectionLayoutModule, DbxWidgetModule } from '@dereekb/dbx-web';\nimport { DbxFirebaseNotificationItemListComponent, DbxFirebaseNotificationItemListViewComponent, DbxFirebaseNotificationItemListViewItemComponent } from './component/notificationitem.list.component';\nimport { CommonModule } from '@angular/common';\nimport { DbxFirebaseNotificationBoxDocumentStoreDirective } from './store/notificationbox.document.store.directive';\nimport { DbxFirebaseNotificationBoxCollectionStoreDirective } from './store/notificationbox.collection.store.directive';\nimport { DbxFirebaseNotificationSummaryCollectionStoreDirective, DbxFirebaseNotificationSummaryDocumentStoreDirective, DbxFirebaseNotificationUserCollectionStoreDirective, DbxFirebaseNotificationUserDocumentStoreDirective } from './store';\nimport { DbxFirebaseNotificationItemDefaultViewComponent } from './component/notificationitem.view.default.component';\nimport { DbxFirebaseNotificationItemViewComponent } from './component';\nimport { DbxValuePipeModule } from '@dereekb/dbx-core';\nimport { DbxFirebaseNotificationItemContentComponent } from './component/notificationitem.content.component';\nimport { DbxFirebaseNotificationItemStorePopoverButtonComponent, DbxFirebaseNotificationItemStorePopoverComponent } from './container';\n\nexport interface DbxFirebaseNotificationModuleConfig {\n readonly appNotificationTemplateTypeInfoRecordService: AppNotificationTemplateTypeInfoRecordService;\n}\n\nconst declarations = [\n // components\n DbxFirebaseNotificationItemListComponent,\n DbxFirebaseNotificationItemListViewComponent,\n DbxFirebaseNotificationItemListViewItemComponent,\n\n DbxFirebaseNotificationItemContentComponent,\n DbxFirebaseNotificationItemViewComponent,\n DbxFirebaseNotificationItemDefaultViewComponent,\n\n // container\n DbxFirebaseNotificationItemStorePopoverButtonComponent,\n DbxFirebaseNotificationItemStorePopoverComponent,\n\n // stores\n DbxFirebaseNotificationBoxCollectionStoreDirective,\n DbxFirebaseNotificationBoxDocumentStoreDirective,\n DbxFirebaseNotificationSummaryCollectionStoreDirective,\n DbxFirebaseNotificationSummaryDocumentStoreDirective,\n DbxFirebaseNotificationUserCollectionStoreDirective,\n DbxFirebaseNotificationUserDocumentStoreDirective\n];\n\n/**\n * Used to initialize the DbxFirebaseNotificationModule.\n */\n@NgModule({\n imports: [CommonModule, DbxButtonModule, DbxRouterListModule, DbxPopoverInteractionModule, DbxSectionLayoutModule, DbxListLayoutModule, DbxWidgetModule, DbxValuePipeModule],\n declarations,\n exports: declarations\n})\nexport class DbxFirebaseNotificationModule {\n static forRoot(config: DbxFirebaseNotificationModuleConfig): ModuleWithProviders<DbxFirebaseNotificationModule> {\n const { appNotificationTemplateTypeInfoRecordService } = config;\n\n const providers: Provider[] = [\n {\n provide: AppNotificationTemplateTypeInfoRecordService,\n useValue: appNotificationTemplateTypeInfoRecordService\n },\n {\n provide: DbxFirebaseNotificationTemplateService,\n useClass: DbxFirebaseNotificationTemplateService\n }\n ];\n\n return {\n ngModule: DbxFirebaseNotificationModule,\n providers\n };\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FirestoreModelKey, flatFirestoreModelKey, twoWayFlatFirestoreModelKey } from '@dereekb/firebase';\nimport { type Maybe } from '@dereekb/util';\n\n@Pipe({ name: 'flatFirestoreModelKey' })\nexport class FlatFirestoreModelKeyPipe implements PipeTransform {\n transform(input: Maybe<FirestoreModelKey>): string {\n if (input != null) {\n return flatFirestoreModelKey(input);\n } else {\n return '';\n }\n }\n}\n\n@Pipe({ name: 'twoWayFlatFirestoreModelKey' })\nexport class TwoWayFlatFirestoreModelKeyPipe implements PipeTransform {\n transform(input: Maybe<FirestoreModelKey>): string {\n if (input != null) {\n return twoWayFlatFirestoreModelKey(input);\n } else {\n return '';\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FlatFirestoreModelKeyPipe, TwoWayFlatFirestoreModelKeyPipe } from './key.pipe';\n\nconst declarations = [FlatFirestoreModelKeyPipe, TwoWayFlatFirestoreModelKeyPipe];\n\n@NgModule({\n declarations,\n exports: declarations\n})\nexport class DbxFirebasePipeModule {}\n","import { Observable, BehaviorSubject, map, shareReplay, of, switchMap } from 'rxjs';\nimport { DbxRouterService, DbxRouteParamDefaultRedirectInstance, DbxRouteParamReader, dbxRouteParamReaderInstance } from '@dereekb/dbx-core';\nimport { Destroyable, Initialized, Maybe, ModelKey } from '@dereekb/util';\nimport { MaybeObservableOrValueGetter, SwitchMapToDefaultFilterFunction } from '@dereekb/rxjs';\n\nexport const DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_ID_PARAM_KEY = 'id';\nexport const DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_KEY_PARAM_KEY = 'key';\nexport const DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_USE_PARAM_VALUE = '0';\n\n/**\n * Used to read an id with a specific key from the current route.\n *\n * Can be configured to redirect to a default route if a specific value is seen.\n */\nexport interface DbxFirebaseIdRouteParamRedirect extends DbxRouteParamReader<ModelKey> {\n /**\n * The id value as it is from the current state's params.\n */\n readonly idFromParams$: Observable<Maybe<ModelKey>>;\n /**\n * The id value as it is when considering the default value.\n */\n readonly id$: Observable<Maybe<ModelKey>>;\n setRedirectEnabled(redirect: Maybe<boolean>): void;\n setDecider(decider: string | SwitchMapToDefaultFilterFunction<ModelKey>): void;\n}\n\n/**\n * DbxFirebaseIdRouteParamRedirect instance\n */\nexport interface DbxFirebaseIdRouteParamRedirectInstance extends DbxFirebaseIdRouteParamRedirect, DbxRouteParamReader<ModelKey>, Initialized, Destroyable {\n readonly paramValue$: Observable<Maybe<string>>;\n readonly defaultValue$: Observable<Maybe<string>>;\n readonly value$: Observable<Maybe<string>>;\n\n readonly idFromParams$: Observable<Maybe<ModelKey>>;\n readonly id$: Observable<Maybe<ModelKey>>;\n\n setParamKey(paramKey: string): void;\n\n setDefaultValue(defaultValue: MaybeObservableOrValueGetter<string>): void;\n setRedirectEnabled(redirect: Maybe<boolean>): void;\n\n setDecider(decider: string | SwitchMapToDefaultFilterFunction<ModelKey>): void;\n setParamValue(value: MaybeObservableOrValueGetter<string>): void;\n}\n\nexport function dbxFirebaseKeyRouteParamRedirect(dbxRouterService: DbxRouterService, defaultParamKey: string = DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_KEY_PARAM_KEY): DbxFirebaseIdRouteParamRedirectInstance {\n return dbxFirebaseIdRouteParamRedirect(dbxRouterService, defaultParamKey);\n}\n\nexport function dbxFirebaseIdRouteParamRedirect(dbxRouterService: DbxRouterService, defaultParamKey: string = DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_ID_PARAM_KEY): DbxFirebaseIdRouteParamRedirectInstance {\n const _paramReader = dbxRouteParamReaderInstance<ModelKey>(dbxRouterService, defaultParamKey);\n const _paramRedirect = new DbxRouteParamDefaultRedirectInstance<ModelKey>(_paramReader);\n const _useDefaultParamDecider = new BehaviorSubject<string | SwitchMapToDefaultFilterFunction<ModelKey>>(DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_USE_PARAM_VALUE);\n\n const _useDefaultParam$: Observable<SwitchMapToDefaultFilterFunction<ModelKey>> = _useDefaultParamDecider.pipe(\n map((x) => {\n let result: SwitchMapToDefaultFilterFunction<ModelKey>;\n\n if (typeof x === 'string') {\n result = (value: Maybe<ModelKey>) => of(value === x);\n } else {\n result = x;\n }\n\n return result;\n }),\n shareReplay(1)\n );\n\n const setParamKey = (paramKey: Maybe<string>) => {\n _paramReader.setParamKey(paramKey || defaultParamKey);\n };\n\n const paramValue$ = _paramReader.paramValue$;\n const value$ = _paramReader.value$;\n\n const result: DbxFirebaseIdRouteParamRedirectInstance = {\n paramValue$,\n defaultValue$: _paramReader.defaultValue$,\n value$,\n idFromParams$: paramValue$,\n id$: value$,\n\n init(): void {\n _paramRedirect.setUseDefaultFilter((value: Maybe<string>) => {\n return _useDefaultParam$.pipe(switchMap((x) => x(value)));\n });\n\n _paramRedirect.init();\n },\n\n destroy(): void {\n _paramReader.destroy();\n _paramRedirect.destroy();\n _useDefaultParamDecider.complete();\n },\n\n getParamKey(): string {\n return _paramReader.getParamKey();\n },\n\n setParamKey,\n\n setDefaultValue(defaultValue: MaybeObservableOrValueGetter<string>): void {\n _paramReader.setDefaultValue(defaultValue);\n },\n\n setRedirectEnabled(redirect: Maybe<boolean>): void {\n _paramRedirect.enabled = redirect !== false;\n },\n\n setDecider(decider: string | SwitchMapToDefaultFilterFunction<ModelKey>): void {\n _useDefaultParamDecider.next(decider);\n },\n\n setParamValue(value: MaybeObservableOrValueGetter<string>): void {\n _paramReader.setParamValue(value);\n }\n };\n\n return result;\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * Token to access the FirebaseStorageContextConfig value.\n */\nexport const DBX_FIREBASE_STORAGE_CONTEXT_CONFIG_TOKEN = new InjectionToken('DBX_FIREBASE_STORAGE_CONTEXT_CONFIG_TOKEN');\n\n/**\n * Token to access the FirebaseStorageContext value.\n */\nexport const DBX_FIREBASE_STORAGE_CONTEXT_TOKEN = new InjectionToken('DBX_FIREBASE_STORAGE_CONTEXT_TOKEN');\n","import { Injectable, inject } from '@angular/core';\nimport { FirebaseStorageContext, FirebaseStorageAccessor, FirebaseStorageAccessorFile, FirebaseStorageAccessorFolder, StoragePathInput } from '@dereekb/firebase';\nimport { DBX_FIREBASE_STORAGE_CONTEXT_TOKEN } from './firebase.storage';\n\n/**\n * Service that provides access to the app's FirebaseStorageContext.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxFirebaseStorageService implements FirebaseStorageAccessor {\n readonly storageContext = inject<FirebaseStorageContext>(DBX_FIREBASE_STORAGE_CONTEXT_TOKEN);\n\n defaultBucket() {\n return this.storageContext.defaultBucket();\n }\n\n file(path: StoragePathInput): FirebaseStorageAccessorFile {\n return this.storageContext.file(path);\n }\n\n folder(path: StoragePathInput): FirebaseStorageAccessorFolder {\n return this.storageContext.folder(path);\n }\n}\n","import { Injector, ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { FirebaseApp } from '@angular/fire/app';\nimport { Storage } from '@angular/fire/storage';\nimport { clientFirebaseStorageContextFactory, FirebaseStorageContextFactoryConfig } from '@dereekb/firebase';\nimport { DBX_FIREBASE_STORAGE_CONTEXT_CONFIG_TOKEN, DBX_FIREBASE_STORAGE_CONTEXT_TOKEN } from './firebase.storage';\nimport { DbxFirebaseStorageService } from './firebase.storage.service';\n\nexport function dbxFirebaseStorageModuleContextConfigFactory(base?: FirebaseStorageContextFactoryConfig): DbxFirebaseStorageModuleContextConfigFactory {\n return (app: FirebaseApp, injector: Injector) => {\n return {\n defaultBucketId: base?.defaultBucketId || app.options.storageBucket,\n forceBucket: base?.forceBucket ?? false\n };\n };\n}\n\nexport type DbxFirebaseStorageModuleContextConfigFactory = (app: FirebaseApp, injector: Injector) => FirebaseStorageContextFactoryConfig;\n\nexport interface DbxFirebaseStorageModuleConfig {\n contextConfig?: FirebaseStorageContextFactoryConfig;\n contextConfigFactory?: DbxFirebaseStorageModuleContextConfigFactory;\n}\n\n@NgModule({})\nexport class DbxFirebaseStorageModule {\n static forRoot(config?: DbxFirebaseStorageModuleConfig): ModuleWithProviders<DbxFirebaseStorageModule> {\n const configFactory = config?.contextConfigFactory ?? dbxFirebaseStorageModuleContextConfigFactory(config?.contextConfig);\n\n const providers: Provider[] = [\n {\n provide: DBX_FIREBASE_STORAGE_CONTEXT_CONFIG_TOKEN,\n useFactory: configFactory,\n deps: [FirebaseApp, Injector]\n },\n {\n provide: DBX_FIREBASE_STORAGE_CONTEXT_TOKEN,\n useFactory: clientFirebaseStorageContextFactory,\n deps: [Storage, DBX_FIREBASE_STORAGE_CONTEXT_CONFIG_TOKEN]\n },\n DbxFirebaseStorageService\n ];\n\n return {\n ngModule: DbxFirebaseStorageModule,\n providers\n };\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DbxFirebaseModelModule } from './model/model.module';\n\n@NgModule({\n exports: [DbxFirebaseModelModule]\n})\nexport class DbxFirebaseModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i4","i1.DbxFirebaseLoginButtonComponent","i1.DbxFirebaseLoginButtonContainerComponent","i2","i2.DbxFirebaseLoginContextDirective","i3.DbxFirebaseLoginListComponent","i3","i5","i6.DbxFirebaseEmailFormComponent","i7.DbxFirebaseEmailRecoveryFormComponent","i1.DbxFirebaseLoginComponent","i1.DbxFirebaseDevelopmentSchedulerListComponent","i6.DbxFirebaseDevelopmentPopupContentFormComponent","i2.DbxFirebaseDevelopmentPopupContentComponent","i2.DbxFirebaseModelTypeInstanceComponent","i2.DbxFirebaseModelHistoryComponent","declarations","i1.SystemStateCollectionStore","i1.DbxFirebaseNotificationItemContentComponent","i1.NotificationSummaryCollectionStore","i1.NotificationSummaryDocumentStore","i1.NotificationUserCollectionStore","i1.NotificationUserDocumentStore","i1.NotificationBoxDocumentStore","i1.NotificationBoxCollectionStore","i2.DbxFirebaseNotificationItemListComponent"],"mappings":"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"}
|