@dereekb/dbx-firebase 13.4.1 → 13.5.0

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.
@@ -1,23 +1,23 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Injectable, provideAppInitializer, makeEnvironmentProviders, InjectionToken, Component, model, computed, ChangeDetectionStrategy, signal, Directive, EventEmitter, input, output, Injector, Optional, Inject, viewChild, HostListener, NgModule, ElementRef, forwardRef, effect, DestroyRef, Pipe } from '@angular/core';
2
+ import { inject, Injectable, provideAppInitializer, makeEnvironmentProviders, InjectionToken, Component, model, computed, ChangeDetectionStrategy, signal, Directive, EventEmitter, input, output, Injector, viewChild, HostListener, NgModule, ElementRef, forwardRef, effect, DestroyRef, Inject, Optional, Pipe } from '@angular/core';
3
3
  import { DbxAnalyticsService } from '@dereekb/dbx-analytics';
4
4
  import { asObservable, timeoutStartWith, filterMaybe, isNot, SubscriptionObject, lazyFrom, switchMapWhileTrue, loadingStateFromObs, distinctUntilKeysChange, cleanupDestroyable, iterationHasNextAndCanLoadMore, pageItemAccumulatorCurrentPage, accumulatorFlattenPageListLoadingState, useFirst, itemAccumulatorNextPageUntilResultsCount, iteratorNextPageUntilPage, iteratorNextPageUntilMaxPageLoadLimit, pageLoadingStateFromObs, useAsObservable, filterMaybeArray, mapEachAsync, invertObservableDecision, filterItemsWithObservableDecision, switchMapMaybe, beginLoading, mapLoadingStateValueWithOperator, valueFromFinishedLoadingState, skipInitialMaybe, distinctUntilModelKeyChange, successResult, errorResult, isLoadingStateLoading, cleanup, mapLoadingState, throwErrorFromLoadingStateError, maybeValueFromObservableOrValue, distinctUntilHasDifferentValues, MultiSubscriptionObject, startWithBeginLoading, skipAllInitialMaybe } from '@dereekb/rxjs';
5
5
  import { switchMap, of, shareReplay, map, distinctUntilChanged, EMPTY, catchError, firstValueFrom, BehaviorSubject, combineLatest, first, from, tap, interval, exhaustMap, filter, take, startWith, Subject, throttleTime, NEVER, defaultIfEmpty, combineLatestWith, mergeMap, Observable } from 'rxjs';
6
6
  import * as i2 from '@dereekb/dbx-core';
7
7
  import { loggedInObsFromIsLoggedIn, loggedOutObsFromIsLoggedIn, authUserIdentifier, DbxInjectionContext, DBX_INJECTION_COMPONENT_DATA, DbxInjectionComponent, AbstractForwardDbxInjectionContextDirective, DbxInjectionContextDirective, DbxAuthService, DbxActionButtonDirective, completeOnDestroy, cleanSubscription, DbxActionDirective, DbxActionEnforceModifiedDirective, DbxActionHandlerDirective, DbxActionAutoTriggerDirective, clean, cleanLoadingContext, provideDbxRouteModelIdDirectiveDelegate, provideDbxRouteModelKeyDirectiveDelegate, AbstractIfDirective, LockSetComponentStore, newWithInjector, CutTextPipe, DbxActionContextStoreSourceInstance, DbxActionHandlerInstance, cleanSubscriptionWithLockSet, SimpleStorageAccessorFactory, dbxRouteParamReaderInstance, DbxRouteParamDefaultRedirectInstance } from '@dereekb/dbx-core';
8
- import { Auth, authState, idToken, GoogleAuthProvider, FacebookAuthProvider, TwitterAuthProvider, GithubAuthProvider, signInWithPopup, createUserWithEmailAndPassword, signInWithEmailAndPassword, signInAnonymously, reauthenticateWithPopup, provideAuth, getAuth, connectAuthEmulator } from '@angular/fire/auth';
8
+ import { Auth, authState, idToken, signInWithPopup, linkWithPopup, linkWithCredential, unlink, createUserWithEmailAndPassword, signInWithEmailAndPassword, signInAnonymously, reauthenticateWithPopup, OAuthProvider, FacebookAuthProvider, GithubAuthProvider, GoogleAuthProvider, TwitterAuthProvider, provideAuth, getAuth, connectAuthEmulator } from '@angular/fire/auth';
9
9
  import { AUTH_ADMIN_ROLE, cachedGetter, urlWithoutParameters, addToSet, removeFromSet, filterMaybeArrayValues, mapIterable, asArray, excludeValuesFromArray, containsStringAnyCase, addToSetCopy, iterableToArray, runAsyncTasksForValues, pushArrayItemsIntoArray, forEachKeyValue, countAllInNestedArray, invertDecision, useIterableOrValue, filterUniqueValues, reverseCompareFn, sortByNumberFunction, separateValues, readableError, isMaybeSo, firstValue, splitJoinRemainder, MS_IN_HOUR, SECONDS_IN_MINUTE, MS_IN_DAY, unixDateTimeSecondsNumberForNow, MS_IN_MINUTE, addMilliseconds, unixDateTimeSecondsNumberFromDate, dateFromDateOrTimeSecondsNumber, MS_IN_SECOND, isPast } from '@dereekb/util';
10
10
  import { safeFormatToISO8601DateString, msToSeconds, isSameDate } from '@dereekb/date';
11
11
  import { sendPasswordResetEmail } from 'firebase/auth';
12
12
  import { getToken, initializeAppCheck, ReCaptchaV3Provider } from 'firebase/app-check';
13
13
  import { AppCheck, provideAppCheck } from '@angular/fire/app-check';
14
14
  import * as i1$1 from '@dereekb/dbx-web';
15
- import { DbxLinkComponent, DbxActionModule, DbxButtonModule, DbxErrorComponent, DbxActionErrorDirective, DbxButtonComponent, DbxButtonSpacerDirective, DbxRouterAnchorModule, DbxWidgetService, AbstractDbxSelectionListWrapperDirective, DbxListWrapperComponentImportsModule, provideDbxListViewWrapper, DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE, AbstractDbxSelectionListViewDirective, DbxSelectionValueListViewComponentImportsModule, provideDbxListView, DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE, AbstractDbxValueListViewItemComponent, TwoColumnsContextStore, DbxAnchorComponent, DbxTwoColumnFullLeftDirective, DbxWidgetViewComponent, DbxTwoColumnComponent, DbxTwoBlockComponent, DbxTwoColumnRightComponent, AbstractPopupDirective, DbxPopupService, DbxPopupContentComponent, DbxPopupControlsComponent, DbxModelTypesService, DbxModelTrackerService, allDbxModelViewTrackerEventModelKeys, DbxListItemAnchorModifierDirective, DbxValueListItemModifierDirective, AbstractPopoverDirective, DbxPopoverContentComponent, DbxPopoverHeaderComponent, DbxPopoverScrollContentDirective, DbxListEmptyContentComponent, AbstractPopoverRefDirective, DbxPopoverService, DbxIconButtonComponent, DbxLoadingComponent, DbxDetailBlockComponent, DbxClickToCopyTextComponent, DbxDownloadTextViewComponent, DbxModelObjectStateService, DbxListViewWrapper, AbstractDbxWidgetComponent, DbxPopoverInteractionModule, DbxListModifierModule, DbxWebFilePreviewService, DbxActionSnackbarErrorDirective, DbxActionDialogDirective, DbxFileUploadComponent, DbxActionLoadingContextDirective, DbxFileUploadActionSyncDirective } from '@dereekb/dbx-web';
15
+ import { DbxLinkComponent, DbxActionModule, DbxButtonModule, DbxErrorComponent, DbxActionErrorDirective, DbxButtonComponent, DbxButtonSpacerDirective, DbxRouterAnchorModule, DbxSectionComponent, DbxWidgetService, AbstractDbxSelectionListWrapperDirective, DbxListWrapperComponentImportsModule, provideDbxListViewWrapper, DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE, AbstractDbxSelectionListViewDirective, DbxSelectionValueListViewComponentImportsModule, provideDbxListView, DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE, AbstractDbxValueListViewItemComponent, TwoColumnsContextStore, DbxAnchorComponent, DbxTwoColumnFullLeftDirective, DbxWidgetViewComponent, DbxTwoColumnComponent, DbxTwoBlockComponent, DbxTwoColumnRightComponent, AbstractPopupDirective, DbxPopupService, DbxPopupContentComponent, DbxPopupControlsComponent, DbxModelTypesService, DbxModelTrackerService, allDbxModelViewTrackerEventModelKeys, DbxListItemAnchorModifierDirective, DbxValueListItemModifierDirective, AbstractPopoverDirective, DbxPopoverContentComponent, DbxPopoverHeaderComponent, DbxPopoverScrollContentDirective, DbxListEmptyContentComponent, AbstractPopoverRefDirective, DbxPopoverService, DbxIconButtonComponent, DbxLoadingComponent, DbxDetailBlockComponent, DbxClickToCopyTextComponent, DbxDownloadTextViewComponent, DbxModelObjectStateService, DbxListViewWrapper, AbstractDbxWidgetComponent, DbxPopoverInteractionModule, DbxListModifierModule, DbxWebFilePreviewService, DbxActionSnackbarErrorDirective, DbxActionDialogDirective, DbxFileUploadComponent, DbxActionLoadingContextDirective, DbxFileUploadActionSyncDirective } from '@dereekb/dbx-web';
16
16
  import * as i1 from '@angular/material/icon';
17
17
  import { MatIconModule, MatIcon } from '@angular/material/icon';
18
+ import { firebaseAuthErrorToReadableError, FirebaseDevelopmentFunctions, ScheduledFunctionDevelopmentFunctionTypeEnum, clientFirebaseFirestoreContextFactory, SystemStateFirestoreCollections, NotificationFirestoreCollections, StorageFileFirestoreCollections, FIREBASE_DEVELOPMENT_FUNCTIONS_MAP_KEY, iterationQueryDocChangeWatcher, firebaseQuerySnapshotAccumulator, firebaseQueryItemAccumulator, firestoreModelKeysFromDocuments, firestoreModelIdsFromDocuments, documentReferencesFromDocuments, getDocumentSnapshots, getDataFromDocumentSnapshots, latestSnapshotsFromDocuments, dataFromDocumentSnapshots, loadDocumentsForKeys, loadDocumentsForDocumentReferences, loadDocumentsForIds, firestoreModelKeyCollectionTypePair, buildFirebaseCollectionTypeModelTypeMap, firestoreModelId, flatFirestoreModelKey, twoWayFlatFirestoreModelKey, FirestoreAccessorStreamMode, firestoreModelIdsFromKey, firestoreModelKeyPartPairs, firestoreModelKeyPairObject, documentDataWithIdAndKey, isClientFirebaseError, FIRESTORE_PERMISSION_DENIED_ERROR_CODE, inferKeyFromTwoWayFlatFirestoreModelKey, firestoreModelKeyParentKey, AppNotificationTemplateTypeInfoRecordService, NotificationFunctions, unreadNotificationItems, StorageFileFunctions, firestoreModelKey, storageFileIdentity, clientFirebaseStorageContextFactory } from '@dereekb/firebase';
18
19
  import * as i1$2 from '@dereekb/dbx-form';
19
20
  import { AbstractSyncFormlyFormDirective, emailField, DbxFormlyFormComponentImportsModule, dbxFormlyFormComponentProviders, DBX_FORMLY_FORM_COMPONENT_TEMPLATE, AbstractConfigAsyncFormlyFormDirective, usernamePasswordLoginFields, DbxActionFormDirective, DbxFormSourceDirective, pickableItemChipField, filterPickableItemFieldValuesByLabel } from '@dereekb/dbx-form';
20
- import { firebaseAuthErrorToReadableError, FirebaseDevelopmentFunctions, ScheduledFunctionDevelopmentFunctionTypeEnum, clientFirebaseFirestoreContextFactory, SystemStateFirestoreCollections, NotificationFirestoreCollections, StorageFileFirestoreCollections, FIREBASE_DEVELOPMENT_FUNCTIONS_MAP_KEY, iterationQueryDocChangeWatcher, firebaseQuerySnapshotAccumulator, firebaseQueryItemAccumulator, firestoreModelKeysFromDocuments, firestoreModelIdsFromDocuments, documentReferencesFromDocuments, getDocumentSnapshots, getDataFromDocumentSnapshots, latestSnapshotsFromDocuments, dataFromDocumentSnapshots, loadDocumentsForKeys, loadDocumentsForDocumentReferences, loadDocumentsForIds, firestoreModelKeyCollectionTypePair, buildFirebaseCollectionTypeModelTypeMap, firestoreModelId, flatFirestoreModelKey, twoWayFlatFirestoreModelKey, FirestoreAccessorStreamMode, firestoreModelIdsFromKey, firestoreModelKeyPartPairs, firestoreModelKeyPairObject, documentDataWithIdAndKey, isClientFirebaseError, FIRESTORE_PERMISSION_DENIED_ERROR_CODE, inferKeyFromTwoWayFlatFirestoreModelKey, firestoreModelKeyParentKey, AppNotificationTemplateTypeInfoRecordService, NotificationFunctions, unreadNotificationItems, StorageFileFunctions, firestoreModelKey, storageFileIdentity, clientFirebaseStorageContextFactory } from '@dereekb/firebase';
21
21
  import { NgTemplateOutlet, DatePipe } from '@angular/common';
22
22
  import * as i1$3 from '@angular/material/button';
23
23
  import { MatButtonModule } from '@angular/material/button';
@@ -35,6 +35,12 @@ import { __decorate, __param } from 'tslib';
35
35
  import { MatDialog } from '@angular/material/dialog';
36
36
  import { BaseError } from 'make-error';
37
37
 
38
+ /**
39
+ * Converts a Firebase Auth {@link User} into an {@link AuthUserInfo} containing display name, email, phone, photo URL, UID, and metadata timestamps.
40
+ *
41
+ * @param user - The Firebase Auth user to convert.
42
+ * @returns An AuthUserInfo object with the user's profile and metadata.
43
+ */
38
44
  function authUserInfoFromAuthUser(user) {
39
45
  return {
40
46
  displayName: user?.displayName,
@@ -43,9 +49,16 @@ function authUserInfoFromAuthUser(user) {
43
49
  photoURL: user.photoURL,
44
50
  uid: user.uid,
45
51
  creationTime: safeFormatToISO8601DateString(user.metadata.creationTime),
46
- lastSignInTime: safeFormatToISO8601DateString(user.metadata.lastSignInTime)
52
+ lastSignInTime: safeFormatToISO8601DateString(user.metadata.lastSignInTime),
53
+ providerData: user.providerData
47
54
  };
48
55
  }
56
+ /**
57
+ * Extracts a {@link FirebaseAuthToken} from a Firebase Auth {@link User}, including email verification status and metadata timestamps.
58
+ *
59
+ * @param user - The Firebase Auth user to extract token info from.
60
+ * @returns A FirebaseAuthToken with the user's auth-related properties.
61
+ */
49
62
  function firebaseAuthTokenFromUser(user) {
50
63
  return {
51
64
  email: user.email,
@@ -76,6 +89,13 @@ function authUserStateFromFirebaseAuthServiceFunction(stateForLoggedInUser = ()
76
89
  }), shareReplay(1));
77
90
  };
78
91
  }
92
+ /**
93
+ * Creates an AuthUserStateObsFunction that derives the user state from the current ID token using the provided mapping function.
94
+ *
95
+ * @param stateFromToken - Function that maps an IdTokenResult to an AuthUserState.
96
+ * @param defaultState - The fallback state when no token is available. Defaults to 'user'.
97
+ * @returns An AuthUserStateObsFunction that reads state from the ID token.
98
+ */
79
99
  function stateFromTokenForLoggedInUserFunction(stateFromToken, defaultState = 'user') {
80
100
  return (dbxFirebaseAuthService) => {
81
101
  return readValueFromIdToken(dbxFirebaseAuthService, stateFromToken, defaultState);
@@ -128,6 +148,16 @@ class DbxFirebaseAuthService {
128
148
  hasAuthUser$ = this.currentAuthUser$.pipe(map((x) => Boolean(x)), distinctUntilChanged(), shareReplay(1));
129
149
  isAnonymousUser$ = this.authUser$.pipe(map((x) => x.isAnonymous), distinctUntilChanged(), shareReplay(1));
130
150
  isNotAnonymousUser$ = this.isAnonymousUser$.pipe(isNot(), distinctUntilChanged(), shareReplay(1));
151
+ /**
152
+ * Observable of provider IDs currently linked to the authenticated user.
153
+ *
154
+ * @example
155
+ * ```ts
156
+ * authService.currentLinkedProviderIds$.subscribe(ids => console.log(ids));
157
+ * // ['google.com', 'facebook.com']
158
+ * ```
159
+ */
160
+ currentLinkedProviderIds$ = this.currentAuthUser$.pipe(map((user) => (user ? user.providerData.map((p) => p.providerId) : [])), distinctUntilChanged((a, b) => a.length === b.length && a.every((v, i) => v === b[i])), shareReplay(1));
131
161
  isLoggedIn$ = this.hasAuthUser$;
132
162
  isNotLoggedIn$ = this.isLoggedIn$.pipe(isNot());
133
163
  onLogIn$ = loggedInObsFromIsLoggedIn(this.isLoggedIn$);
@@ -197,31 +227,73 @@ class DbxFirebaseAuthService {
197
227
  }
198
228
  return result;
199
229
  }
200
- logInWithGoogle() {
201
- return this.logInWithPopup(new GoogleAuthProvider());
202
- }
203
- logInWithFacebook() {
204
- return this.logInWithPopup(new FacebookAuthProvider());
205
- }
206
- logInWithTwitter() {
207
- return this.logInWithPopup(new TwitterAuthProvider());
208
- }
209
- logInWithGithub() {
210
- return this.logInWithPopup(new GithubAuthProvider());
211
- }
212
- logInWithApple() {
213
- throw new Error('todo');
230
+ logInWithPopup(provider, resolver) {
231
+ return signInWithPopup(this.firebaseAuth, provider, resolver);
214
232
  }
215
- logInWithMicrosoft() {
216
- // return this.logInWithPopup(new MicrosoftAuthProvider());
217
- throw new Error('todo');
233
+ /**
234
+ * Links an additional authentication provider to the current user via popup.
235
+ *
236
+ * @param provider - The auth provider to link.
237
+ * @param resolver - Optional popup redirect resolver.
238
+ * @returns A promise resolving to the user credential after linking.
239
+ *
240
+ * @example
241
+ * ```ts
242
+ * await authService.linkWithPopup(new GoogleAuthProvider());
243
+ * ```
244
+ */
245
+ linkWithPopup(provider, resolver) {
246
+ return firstValueFrom(this.currentAuthUser$.pipe(switchMap((x) => {
247
+ if (x) {
248
+ return linkWithPopup(x, provider, resolver);
249
+ }
250
+ else {
251
+ throw new Error('User is not logged in currently.');
252
+ }
253
+ })));
218
254
  }
219
- logInWithPhone() {
220
- throw new Error('todo');
221
- // return signInWithPhoneNumber(this.firebaseAuth, )
255
+ /**
256
+ * Links a credential to the current user. Useful for merging accounts
257
+ * when a credential-already-in-use error provides an {@link AuthCredential}.
258
+ *
259
+ * @param credential - The auth credential to link.
260
+ * @returns A promise resolving to the user credential after linking.
261
+ *
262
+ * @example
263
+ * ```ts
264
+ * await authService.linkWithCredential(credential);
265
+ * ```
266
+ */
267
+ linkWithCredential(credential) {
268
+ return firstValueFrom(this.currentAuthUser$.pipe(switchMap((x) => {
269
+ if (x) {
270
+ return linkWithCredential(x, credential);
271
+ }
272
+ else {
273
+ throw new Error('User is not logged in currently.');
274
+ }
275
+ })));
222
276
  }
223
- logInWithPopup(provider, resolver) {
224
- return signInWithPopup(this.firebaseAuth, provider, resolver);
277
+ /**
278
+ * Unlinks an authentication provider from the current user.
279
+ *
280
+ * @param providerId - The provider ID to unlink (e.g., 'google.com').
281
+ * @returns A promise resolving to the updated user.
282
+ *
283
+ * @example
284
+ * ```ts
285
+ * await authService.unlinkProvider('google.com');
286
+ * ```
287
+ */
288
+ unlinkProvider(providerId) {
289
+ return firstValueFrom(this.currentAuthUser$.pipe(switchMap((x) => {
290
+ if (x) {
291
+ return unlink(x, providerId);
292
+ }
293
+ else {
294
+ throw new Error('User is not logged in currently.');
295
+ }
296
+ })));
225
297
  }
226
298
  registerWithEmailAndPassword(email, password) {
227
299
  return createUserWithEmailAndPassword(this.firebaseAuth, email, password);
@@ -248,10 +320,10 @@ class DbxFirebaseAuthService {
248
320
  }
249
321
  })));
250
322
  }
251
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseAuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
252
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseAuthService });
323
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseAuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
324
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseAuthService });
253
325
  }
254
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseAuthService, decorators: [{
326
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseAuthService, decorators: [{
255
327
  type: Injectable
256
328
  }] });
257
329
  /**
@@ -283,6 +355,12 @@ function dbxFirebaseAuthContextInfo(service, user, jwtToken) {
283
355
  return result;
284
356
  }
285
357
 
358
+ /**
359
+ * Extracts analytics user properties (name, email, creation time) from an {@link AuthUserInfo} instance.
360
+ *
361
+ * @param user - The authenticated user info to extract properties from.
362
+ * @returns AnalyticsUserProperties populated from the user info.
363
+ */
286
364
  function readDbxAnalyticsUserPropertiesFromAuthUserInfo(user) {
287
365
  const properties = {
288
366
  name: user.displayName ?? '',
@@ -317,10 +395,10 @@ class DbxFirebaseAnalyticsUserSource {
317
395
  set userPropertiesFactory(userPropertiesFactory) {
318
396
  this._userPropertiesFactory.next(userPropertiesFactory);
319
397
  }
320
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseAnalyticsUserSource, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
321
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseAnalyticsUserSource, providedIn: 'root' });
398
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseAnalyticsUserSource, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
399
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseAnalyticsUserSource, providedIn: 'root' });
322
400
  }
323
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseAnalyticsUserSource, decorators: [{
401
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseAnalyticsUserSource, decorators: [{
324
402
  type: Injectable,
325
403
  args: [{
326
404
  providedIn: 'root'
@@ -350,10 +428,10 @@ class DbxFirebaseAnalyticsUserEventsListenerService {
350
428
  this._loginSub.destroy();
351
429
  this._logoutSub.destroy();
352
430
  }
353
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseAnalyticsUserEventsListenerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
354
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseAnalyticsUserEventsListenerService });
431
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseAnalyticsUserEventsListenerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
432
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseAnalyticsUserEventsListenerService });
355
433
  }
356
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseAnalyticsUserEventsListenerService, decorators: [{
434
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseAnalyticsUserEventsListenerService, decorators: [{
357
435
  type: Injectable
358
436
  }] });
359
437
 
@@ -449,10 +527,10 @@ class DbxFirebaseAppCheckHttpInterceptor {
449
527
  }
450
528
  return from(this._appCheckRoutes).pipe(first((route) => isEnabledRouteMatch(route), false), map((x) => Boolean(x)));
451
529
  }
452
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseAppCheckHttpInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
453
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseAppCheckHttpInterceptor });
530
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseAppCheckHttpInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
531
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseAppCheckHttpInterceptor });
454
532
  }
455
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseAppCheckHttpInterceptor, decorators: [{
533
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseAppCheckHttpInterceptor, decorators: [{
456
534
  type: Injectable
457
535
  }] });
458
536
 
@@ -461,7 +539,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
461
539
  */
462
540
  const DBX_FIREBASE_LOGIN_TERMS_OF_SERVICE_URLS_CONFIG = new InjectionToken('DBX_FIREBASE_LOGIN_TERMS_OF_SERVICE_URLS_CONFIG');
463
541
 
464
- /** Default terms of service display component with links to Terms and Privacy Policy URLs. */
542
+ /**
543
+ * Default terms of service display component with links to Terms and Privacy Policy URLs.
544
+ */
465
545
  class DbxFirebaseLoginTermsSimpleComponent {
466
546
  dbxFirebaseLoginTermsConfig = inject(DBX_FIREBASE_LOGIN_TERMS_OF_SERVICE_URLS_CONFIG);
467
547
  tosAnchor = {
@@ -472,8 +552,8 @@ class DbxFirebaseLoginTermsSimpleComponent {
472
552
  url: this.dbxFirebaseLoginTermsConfig.privacyUrl,
473
553
  target: '_blank'
474
554
  };
475
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginTermsSimpleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
476
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseLoginTermsSimpleComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
555
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginTermsSimpleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
556
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseLoginTermsSimpleComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
477
557
  <div class="dbx-firebase-login-terms-view">
478
558
  <dbx-link [anchor]="tosAnchor">Terms</dbx-link>
479
559
  <span class="dbx-link-spacer"></span>
@@ -481,7 +561,7 @@ class DbxFirebaseLoginTermsSimpleComponent {
481
561
  </div>
482
562
  `, isInline: true, dependencies: [{ kind: "component", type: DbxLinkComponent, selector: "dbx-link", inputs: ["ref", "href", "anchor"] }] });
483
563
  }
484
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginTermsSimpleComponent, decorators: [{
564
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginTermsSimpleComponent, decorators: [{
485
565
  type: Component,
486
566
  args: [{
487
567
  template: `
@@ -496,7 +576,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
496
576
  }]
497
577
  }] });
498
578
 
499
- /** Default password config requiring a minimum of 6 characters (Firebase Auth minimum). */
579
+ /**
580
+ * Default password config requiring a minimum of 6 characters (Firebase Auth minimum).
581
+ */
500
582
  const DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG = {
501
583
  minLength: 6
502
584
  };
@@ -530,8 +612,9 @@ class DbxFirebaseAuthLoginService {
530
612
  /**
531
613
  * Used to register a provider. If a provider is already registered, this will override it by default.
532
614
  *
533
- * @param provider
534
- * @param override
615
+ * @param provider - The login provider to register.
616
+ * @param override - Whether to override an existing provider of the same type. Defaults to true.
617
+ * @returns True if the provider was registered, false if it already existed and override was false.
535
618
  */
536
619
  register(provider, override = true) {
537
620
  if (override || !this._providers.has(provider.loginMethodType)) {
@@ -562,6 +645,8 @@ class DbxFirebaseAuthLoginService {
562
645
  // MARK: Enable/Disable
563
646
  /**
564
647
  * Enables all providers and any providers that will be registered.
648
+ *
649
+ * @param enableAll - Whether to enable all providers. Defaults to true.
565
650
  */
566
651
  setEnableAll(enableAll = true) {
567
652
  this._enableAll = enableAll;
@@ -582,10 +667,10 @@ class DbxFirebaseAuthLoginService {
582
667
  }
583
668
  // MARK: Get
584
669
  getRegisteredTypes() {
585
- return Array.from(this._providers.keys());
670
+ return [...this._providers.keys()];
586
671
  }
587
672
  getEnabledTypes() {
588
- return this._enableAll ? this.getRegisteredTypes() : Array.from(this._enabled);
673
+ return this._enableAll ? this.getRegisteredTypes() : [...this._enabled];
589
674
  }
590
675
  getLoginProvider(type) {
591
676
  return this._providers.get(type);
@@ -599,6 +684,17 @@ class DbxFirebaseAuthLoginService {
599
684
  getRegisterProviders(types) {
600
685
  return filterMaybeArrayValues(mapIterable(types ?? [], (x) => this._providers.get(x))).filter((x) => x.registrationComponentClass !== false);
601
686
  }
687
+ getLinkProviders(types) {
688
+ return filterMaybeArrayValues(mapIterable(types ?? [], (x) => this._providers.get(x))).filter((x) => x.allowLinking !== false);
689
+ }
690
+ /**
691
+ * Returns all registered provider assets.
692
+ *
693
+ * @returns A map of login method types to their asset configurations.
694
+ */
695
+ getAllProviderAssets() {
696
+ return new Map(this._assets);
697
+ }
602
698
  getProviderAssets(type) {
603
699
  return this._assets.get(type);
604
700
  }
@@ -608,16 +704,20 @@ class DbxFirebaseAuthLoginService {
608
704
  setPasswordConfig(passwordConfig) {
609
705
  this._passwordConfig = passwordConfig;
610
706
  }
611
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseAuthLoginService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
612
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseAuthLoginService });
707
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseAuthLoginService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
708
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseAuthLoginService });
613
709
  }
614
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseAuthLoginService, decorators: [{
710
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseAuthLoginService, decorators: [{
615
711
  type: Injectable
616
712
  }], ctorParameters: () => [] });
617
713
 
618
- /** Category for built-in login methods (email, phone, anonymous). */
714
+ /**
715
+ * Category for built-in login methods (email, phone, anonymous).
716
+ */
619
717
  const DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY = 'default';
620
- /** Category for OAuth-based login methods (Google, Facebook, etc.). */
718
+ /**
719
+ * Category for OAuth-based login methods (Google, Facebook, etc.).
720
+ */
621
721
  const OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY = 'oauth';
622
722
 
623
723
  /**
@@ -632,12 +732,13 @@ class DbxFirebaseLoginContext extends DbxInjectionContext {
632
732
  * Displays a logo image or icon alongside the login text with configurable colors.
633
733
  */
634
734
  class DbxFirebaseLoginButtonComponent {
635
- config = model(null, ...(ngDevMode ? [{ debugName: "config" }] : []));
636
- iconUrlSignal = computed(() => this.config()?.iconUrl, ...(ngDevMode ? [{ debugName: "iconUrlSignal" }] : []));
637
- iconSignal = computed(() => this.config()?.icon, ...(ngDevMode ? [{ debugName: "iconSignal" }] : []));
638
- textSignal = computed(() => this.config()?.text ?? '', ...(ngDevMode ? [{ debugName: "textSignal" }] : []));
639
- buttonColorSignal = computed(() => this.config()?.buttonColor ?? 'transparent', ...(ngDevMode ? [{ debugName: "buttonColorSignal" }] : []));
640
- buttonTextColorSignal = computed(() => this.config()?.buttonTextColor, ...(ngDevMode ? [{ debugName: "buttonTextColorSignal" }] : []));
735
+ config = model(null, ...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
736
+ iconUrlSignal = computed(() => this.config()?.iconUrl, ...(ngDevMode ? [{ debugName: "iconUrlSignal" }] : /* istanbul ignore next */ []));
737
+ iconSignal = computed(() => this.config()?.icon, ...(ngDevMode ? [{ debugName: "iconSignal" }] : /* istanbul ignore next */ []));
738
+ iconFilterSignal = computed(() => this.config()?.iconFilter, ...(ngDevMode ? [{ debugName: "iconFilterSignal" }] : /* istanbul ignore next */ []));
739
+ textSignal = computed(() => this.config()?.text ?? '', ...(ngDevMode ? [{ debugName: "textSignal" }] : /* istanbul ignore next */ []));
740
+ buttonColorSignal = computed(() => this.config()?.buttonColor ?? 'transparent', ...(ngDevMode ? [{ debugName: "buttonColorSignal" }] : /* istanbul ignore next */ []));
741
+ buttonTextColorSignal = computed(() => this.config()?.buttonTextColor, ...(ngDevMode ? [{ debugName: "buttonTextColorSignal" }] : /* istanbul ignore next */ []));
641
742
  setConfig(config) {
642
743
  this.config.set(config);
643
744
  }
@@ -654,14 +755,14 @@ class DbxFirebaseLoginButtonComponent {
654
755
  onActionSuccess = () => {
655
756
  // todo: show checkmark on success?
656
757
  };
657
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
658
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DbxFirebaseLoginButtonComponent, isStandalone: true, selector: "dbx-firebase-login-button", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { config: "configChange" }, host: { classAttribute: "dbx-firebase-login-button" }, ngImport: i0, template: `
758
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
759
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.3", type: DbxFirebaseLoginButtonComponent, isStandalone: true, selector: "dbx-firebase-login-button", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { config: "configChange" }, host: { classAttribute: "dbx-firebase-login-button" }, ngImport: i0, template: `
659
760
  <ng-container dbxAction [dbxActionHandler]="handleAction" dbxActionValue [dbxActionSuccessHandler]="onActionSuccess">
660
761
  <dbx-button dbxActionButton [customTextColor]="buttonTextColorSignal()" [customButtonColor]="buttonColorSignal()" [raised]="true">
661
762
  <div class="dbx-firebase-login-button-content">
662
763
  <span class="dbx-firebase-login-button-icon dbx-icon-spacer">
663
764
  @if (iconUrlSignal()) {
664
- <img [src]="iconUrlSignal()" />
765
+ <img [src]="iconUrlSignal()" alt="" [style.filter]="iconFilterSignal()" />
665
766
  }
666
767
  @if (iconSignal()) {
667
768
  <mat-icon>{{ iconSignal() }}</mat-icon>
@@ -671,9 +772,9 @@ class DbxFirebaseLoginButtonComponent {
671
772
  </div>
672
773
  </dbx-button>
673
774
  </ng-container>
674
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i2.DbxActionDirective, selector: "dbx-action,[dbxAction]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i2.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i2.DbxActionValueDirective, selector: "dbxActionValue,[dbxActionValue]", inputs: ["dbxActionValue"] }, { kind: "directive", type: i2.DbxActionSuccessHandlerDirective, selector: "[dbxActionSuccessHandler]", inputs: ["dbxActionSuccessHandler"] }, { kind: "directive", type: i2.DbxActionButtonDirective, selector: "[dbxActionButton]" }, { kind: "ngmodule", type: DbxButtonModule }, { kind: "component", type: i1$1.DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "mode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
775
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i2.DbxActionDirective, selector: "dbx-action,[dbxAction]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i2.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i2.DbxActionValueDirective, selector: "dbxActionValue,[dbxActionValue]", inputs: ["dbxActionValue"] }, { kind: "directive", type: i2.DbxActionSuccessHandlerDirective, selector: "[dbxActionSuccessHandler]", inputs: ["dbxActionSuccessHandler"] }, { kind: "directive", type: i2.DbxActionButtonDirective, selector: "[dbxActionButton]" }, { kind: "ngmodule", type: DbxButtonModule }, { kind: "component", type: i1$1.DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "allowClickPropagation", "mode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
675
776
  }
676
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginButtonComponent, decorators: [{
777
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginButtonComponent, decorators: [{
677
778
  type: Component,
678
779
  args: [{
679
780
  selector: 'dbx-firebase-login-button',
@@ -683,7 +784,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
683
784
  <div class="dbx-firebase-login-button-content">
684
785
  <span class="dbx-firebase-login-button-icon dbx-icon-spacer">
685
786
  @if (iconUrlSignal()) {
686
- <img [src]="iconUrlSignal()" />
787
+ <img [src]="iconUrlSignal()" alt="" [style.filter]="iconFilterSignal()" />
687
788
  }
688
789
  @if (iconSignal()) {
689
790
  <mat-icon>{{ iconSignal() }}</mat-icon>
@@ -702,16 +803,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
702
803
  changeDetection: ChangeDetectionStrategy.OnPush
703
804
  }]
704
805
  }], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }, { type: i0.Output, args: ["configChange"] }] } });
705
- /** Container component that wraps login button content with consistent spacing. */
806
+ /**
807
+ * Container component that wraps login button content with consistent spacing.
808
+ */
706
809
  class DbxFirebaseLoginButtonContainerComponent {
707
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginButtonContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
708
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseLoginButtonContainerComponent, isStandalone: true, selector: "dbx-firebase-login-button-container", ngImport: i0, template: `
810
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginButtonContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
811
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseLoginButtonContainerComponent, isStandalone: true, selector: "dbx-firebase-login-button-container", ngImport: i0, template: `
709
812
  <div class="dbx-firebase-login-button-container">
710
813
  <ng-content></ng-content>
711
814
  </div>
712
815
  `, isInline: true });
713
816
  }
714
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginButtonContainerComponent, decorators: [{
817
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginButtonContainerComponent, decorators: [{
715
818
  type: Component,
716
819
  args: [{
717
820
  selector: 'dbx-firebase-login-button-container',
@@ -723,13 +826,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
723
826
  standalone: true
724
827
  }]
725
828
  }] });
726
- /** Default template for configured login button components. */
829
+ /**
830
+ * Default template for configured login button components.
831
+ */
727
832
  const DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE = `
728
833
  <dbx-firebase-login-button-container>
729
834
  <dbx-firebase-login-button [config]="configSignal()"></dbx-firebase-login-button>
730
835
  </dbx-firebase-login-button-container>
731
836
  `;
732
- /** Shared component configuration for OAuth-style login button components. */
837
+ /**
838
+ * Shared component configuration for OAuth-style login button components.
839
+ */
733
840
  const DBX_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_COMPONENT_CONFIGURATION = {
734
841
  template: DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE,
735
842
  imports: [DbxFirebaseLoginButtonComponent, DbxFirebaseLoginButtonContainerComponent],
@@ -738,25 +845,56 @@ const DBX_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_COMPONENT_CONFIGURATION = {
738
845
  /**
739
846
  * Abstract base directive for login provider buttons that auto-configures appearance
740
847
  * from the registered provider assets and delegates login handling to subclasses.
848
+ *
849
+ * Supports login, register, and link modes. In link mode, the button text is derived from
850
+ * the provider's `linkText` or defaults to "Connect " + `providerName`.
851
+ *
852
+ * @example
853
+ * ```typescript
854
+ * export class MyProviderComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {
855
+ * readonly loginProvider = 'myprovider';
856
+ * handleLogin() { return this.dbxFirebaseAuthService.logInWithPopup(new MyProvider()); }
857
+ * handleLink() { return this.dbxFirebaseAuthService.linkWithPopup(new MyProvider()); }
858
+ * }
859
+ * ```
741
860
  */
742
861
  class AbstractConfiguredDbxFirebaseLoginButtonDirective {
743
862
  dbxFirebaseAuthService = inject(DbxFirebaseAuthService);
744
863
  dbxFirebaseAuthLoginService = inject(DbxFirebaseAuthLoginService);
745
864
  dbxFirebaseLoginContext = inject(DbxFirebaseLoginContext);
746
- // TODO: Consider updating these signals, etc.
747
- _config = signal(null, ...(ngDevMode ? [{ debugName: "_config" }] : []));
748
- configSignal = computed(() => this._config(), ...(ngDevMode ? [{ debugName: "configSignal" }] : []));
865
+ _injectionData = inject(DBX_INJECTION_COMPONENT_DATA, { optional: true });
866
+ _config = signal(null, ...(ngDevMode ? [{ debugName: "_config" }] : /* istanbul ignore next */ []));
867
+ configSignal = computed(() => this._config(), ...(ngDevMode ? [{ debugName: "configSignal" }] : /* istanbul ignore next */ []));
868
+ /**
869
+ * The effective login mode, derived from injection data or defaulting to 'login'.
870
+ *
871
+ * @returns The login mode for this button instance.
872
+ */
873
+ get effectiveLoginMode() {
874
+ return this._injectionData?.loginMode ?? 'login';
875
+ }
749
876
  ngOnInit() {
750
877
  const assets = this.assetConfig;
878
+ const text = this._textForMode(assets);
751
879
  this._config.set({
752
- text: assets.loginText ?? `<loginText not configured>`,
880
+ text,
753
881
  icon: assets.loginIcon,
754
882
  iconUrl: assets.logoUrl,
883
+ iconFilter: assets.logoFilter,
755
884
  buttonColor: assets.backgroundColor,
756
885
  buttonTextColor: assets.textColor,
757
- handleLogin: () => this.handleLogin()
886
+ handleLogin: () => this._handleAction()
758
887
  });
759
888
  }
889
+ /**
890
+ * Handles the link action. Override in subclasses that support linking.
891
+ * Throws by default for providers that do not support linking.
892
+ *
893
+ * @returns A promise that resolves when the link action completes.
894
+ */
895
+ handleLink() {
896
+ throw new Error(`Linking is not supported for the "${this.loginProvider}" provider.`);
897
+ }
760
898
  get providerConfig() {
761
899
  return this.dbxFirebaseAuthLoginService.getLoginProvider(this.loginProvider);
762
900
  }
@@ -766,23 +904,47 @@ class AbstractConfiguredDbxFirebaseLoginButtonDirective {
766
904
  get config() {
767
905
  return this._config();
768
906
  }
769
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractConfiguredDbxFirebaseLoginButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
770
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: AbstractConfiguredDbxFirebaseLoginButtonDirective, isStandalone: true, ngImport: i0 });
907
+ _textForMode(assets) {
908
+ let text;
909
+ if (this.effectiveLoginMode === 'link') {
910
+ text = assets.linkText ?? (assets.providerName ? `Connect ${assets.providerName}` : '<linkText not configured>');
911
+ }
912
+ else {
913
+ text = assets.loginText ?? '<loginText not configured>';
914
+ }
915
+ return text;
916
+ }
917
+ _handleAction() {
918
+ let promise;
919
+ if (this.effectiveLoginMode === 'link') {
920
+ promise = this.handleLink();
921
+ }
922
+ else {
923
+ promise = this.handleLogin();
924
+ }
925
+ return promise.catch((error) => {
926
+ throw firebaseAuthErrorToReadableError(error);
927
+ });
928
+ }
929
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractConfiguredDbxFirebaseLoginButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
930
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: AbstractConfiguredDbxFirebaseLoginButtonDirective, isStandalone: true, ngImport: i0 });
771
931
  }
772
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractConfiguredDbxFirebaseLoginButtonDirective, decorators: [{
932
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractConfiguredDbxFirebaseLoginButtonDirective, decorators: [{
773
933
  type: Directive
774
934
  }] });
775
935
 
776
- /** Login button component for anonymous (guest) authentication. */
936
+ /**
937
+ * Login button component for anonymous (guest) authentication.
938
+ */
777
939
  class DbxFirebaseLoginAnonymousComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {
778
940
  loginProvider = 'anonymous';
779
941
  handleLogin() {
780
942
  return this.dbxFirebaseAuthService.logInAsAnonymous();
781
943
  }
782
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginAnonymousComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
783
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseLoginAnonymousComponent, isStandalone: true, selector: "dbx-firebase-login-anonymous", usesInheritance: true, ngImport: i0, template: "\n <dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"configSignal()\"></dbx-firebase-login-button>\n </dbx-firebase-login-button-container>\n", isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseLoginButtonComponent, selector: "dbx-firebase-login-button", inputs: ["config"], outputs: ["configChange"] }, { kind: "component", type: DbxFirebaseLoginButtonContainerComponent, selector: "dbx-firebase-login-button-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
944
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginAnonymousComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
945
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseLoginAnonymousComponent, isStandalone: true, selector: "dbx-firebase-login-anonymous", usesInheritance: true, ngImport: i0, template: "\n <dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"configSignal()\"></dbx-firebase-login-button>\n </dbx-firebase-login-button-container>\n", isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseLoginButtonComponent, selector: "dbx-firebase-login-button", inputs: ["config"], outputs: ["configChange"] }, { kind: "component", type: DbxFirebaseLoginButtonContainerComponent, selector: "dbx-firebase-login-button-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
784
946
  }
785
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginAnonymousComponent, decorators: [{
947
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginAnonymousComponent, decorators: [{
786
948
  type: Component,
787
949
  args: [{
788
950
  selector: 'dbx-firebase-login-anonymous',
@@ -793,13 +955,51 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
793
955
  }]
794
956
  }] });
795
957
 
796
- /** Formly-based form component for password recovery, containing a single email field. */
958
+ /**
959
+ * Creates an Apple OAuthProvider configured with email and name scopes.
960
+ *
961
+ * @returns A configured {@link OAuthProvider} for Apple sign-in.
962
+ */
963
+ function createAppleAuthProvider() {
964
+ const provider = new OAuthProvider('apple.com');
965
+ provider.addScope('email');
966
+ provider.addScope('name');
967
+ return provider;
968
+ }
969
+ /**
970
+ * Login button component for Apple OAuth authentication.
971
+ */
972
+ class DbxFirebaseLoginAppleComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {
973
+ loginProvider = 'apple';
974
+ handleLogin() {
975
+ return this.dbxFirebaseAuthService.logInWithPopup(createAppleAuthProvider());
976
+ }
977
+ handleLink() {
978
+ return this.dbxFirebaseAuthService.linkWithPopup(createAppleAuthProvider());
979
+ }
980
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginAppleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
981
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseLoginAppleComponent, isStandalone: true, selector: "dbx-firebase-login-apple", usesInheritance: true, ngImport: i0, template: "\n <dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"configSignal()\"></dbx-firebase-login-button>\n </dbx-firebase-login-button-container>\n", isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseLoginButtonComponent, selector: "dbx-firebase-login-button", inputs: ["config"], outputs: ["configChange"] }, { kind: "component", type: DbxFirebaseLoginButtonContainerComponent, selector: "dbx-firebase-login-button-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
982
+ }
983
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginAppleComponent, decorators: [{
984
+ type: Component,
985
+ args: [{
986
+ selector: 'dbx-firebase-login-apple',
987
+ imports: DBX_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_COMPONENT_CONFIGURATION.imports,
988
+ template: DBX_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_COMPONENT_CONFIGURATION.template,
989
+ changeDetection: DBX_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_COMPONENT_CONFIGURATION.changeDetection,
990
+ standalone: true
991
+ }]
992
+ }] });
993
+
994
+ /**
995
+ * Formly-based form component for password recovery, containing a single email field.
996
+ */
797
997
  class DbxFirebaseEmailRecoveryFormComponent extends AbstractSyncFormlyFormDirective {
798
998
  fields = [emailField({ required: true })];
799
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseEmailRecoveryFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
800
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseEmailRecoveryFormComponent, isStandalone: true, selector: "dbx-firebase-email-recovery-form", providers: dbxFormlyFormComponentProviders(), usesInheritance: true, ngImport: i0, template: "<dbx-formly></dbx-formly>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxFormlyFormComponentImportsModule }, { kind: "component", type: i1$2.DbxFormlyComponent, selector: "dbx-formly", exportAs: ["formly"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
999
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseEmailRecoveryFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1000
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseEmailRecoveryFormComponent, isStandalone: true, selector: "dbx-firebase-email-recovery-form", providers: dbxFormlyFormComponentProviders(), usesInheritance: true, ngImport: i0, template: "<dbx-formly></dbx-formly>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxFormlyFormComponentImportsModule }, { kind: "component", type: i1$2.DbxFormlyComponent, selector: "dbx-formly", exportAs: ["formly"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
801
1001
  }
802
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseEmailRecoveryFormComponent, decorators: [{
1002
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseEmailRecoveryFormComponent, decorators: [{
803
1003
  type: Component,
804
1004
  args: [{
805
1005
  selector: 'dbx-firebase-email-recovery-form',
@@ -823,10 +1023,10 @@ class DbxFirebaseEmailFormComponent extends AbstractConfigAsyncFormlyFormDirecti
823
1023
  const fields = usernamePasswordLoginFields({ username: 'email', password: passwordConfig, verifyPassword: loginMode === 'register' });
824
1024
  return fields;
825
1025
  }));
826
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseEmailFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
827
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseEmailFormComponent, isStandalone: true, selector: "dbx-firebase-email-form", providers: dbxFormlyFormComponentProviders(), usesInheritance: true, ngImport: i0, template: "<dbx-formly></dbx-formly>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxFormlyFormComponentImportsModule }, { kind: "component", type: i1$2.DbxFormlyComponent, selector: "dbx-formly", exportAs: ["formly"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1026
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseEmailFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1027
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseEmailFormComponent, isStandalone: true, selector: "dbx-firebase-email-form", providers: dbxFormlyFormComponentProviders(), usesInheritance: true, ngImport: i0, template: "<dbx-formly></dbx-formly>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxFormlyFormComponentImportsModule }, { kind: "component", type: i1$2.DbxFormlyComponent, selector: "dbx-formly", exportAs: ["formly"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
828
1028
  }
829
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseEmailFormComponent, decorators: [{
1029
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseEmailFormComponent, decorators: [{
830
1030
  type: Component,
831
1031
  args: [{
832
1032
  selector: 'dbx-firebase-email-form',
@@ -850,9 +1050,9 @@ class DbxFirebaseLoginEmailContentComponent {
850
1050
  loginMode: this.config.loginMode,
851
1051
  passwordConfig: this.config.passwordConfig
852
1052
  };
853
- _emailFormValueSignal = signal(undefined, ...(ngDevMode ? [{ debugName: "_emailFormValueSignal" }] : []));
854
- _recoveryFormValueSignal = signal(undefined, ...(ngDevMode ? [{ debugName: "_recoveryFormValueSignal" }] : []));
855
- _emailModeSignal = signal('login', ...(ngDevMode ? [{ debugName: "_emailModeSignal" }] : []));
1053
+ _emailFormValueSignal = signal(undefined, ...(ngDevMode ? [{ debugName: "_emailFormValueSignal" }] : /* istanbul ignore next */ []));
1054
+ _recoveryFormValueSignal = signal(undefined, ...(ngDevMode ? [{ debugName: "_recoveryFormValueSignal" }] : /* istanbul ignore next */ []));
1055
+ _emailModeSignal = signal('login', ...(ngDevMode ? [{ debugName: "_emailModeSignal" }] : /* istanbul ignore next */ []));
856
1056
  emailFormValueSignal = this._emailFormValueSignal.asReadonly();
857
1057
  recoveryFormValueSignal = this._recoveryFormValueSignal.asReadonly();
858
1058
  emailModeSignal = this._emailModeSignal.asReadonly();
@@ -910,7 +1110,7 @@ class DbxFirebaseLoginEmailContentComponent {
910
1110
  context.startWorkingWithPromise(this.dbxFirebaseAuthService.sendPasswordResetEmail(value.email));
911
1111
  };
912
1112
  // MARK: Recovering
913
- handleRecoverySuccess = (x) => {
1113
+ handleRecoverySuccess = (_x) => {
914
1114
  this._emailModeSignal.set('recoversent');
915
1115
  };
916
1116
  clickedRecoveryAcknowledged() {
@@ -923,24 +1123,26 @@ class DbxFirebaseLoginEmailContentComponent {
923
1123
  onCancelReset() {
924
1124
  this.doneOrCancelled.next(false);
925
1125
  }
926
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginEmailContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
927
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DbxFirebaseLoginEmailContentComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div class=\"dbx-firebase-login-email-content\">\n @switch (emailModeSignal()) {\n @case ('login') {\n <ng-container *ngTemplateOutlet=\"loginView\"></ng-container>\n }\n @case ('recover') {\n <ng-container *ngTemplateOutlet=\"resetPassword\"></ng-container>\n }\n @case ('recoversent') {\n <ng-container *ngTemplateOutlet=\"resetPasswordSent\"></ng-container>\n }\n }\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]=\"emailFormValueSignal()\"></dbx-firebase-email-form>\n @if (isLoginMode) {\n <div class=\"dbx-firebase-login-email-forgot-prompt\">\n <dbx-link [anchor]=\"forgotAnchor\">Forgot Password?</dbx-link>\n </div>\n }\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]=\"recoveryFormValueSignal()\"></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", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DbxErrorComponent, selector: "dbx-error", inputs: ["error", "iconOnly"], outputs: ["popoverOpened"] }, { kind: "component", type: DbxLinkComponent, selector: "dbx-link", inputs: ["ref", "href", "anchor"] }, { kind: "directive", type: DbxActionErrorDirective, selector: "[dbxActionError]" }, { kind: "directive", type: DbxActionFormDirective, selector: "[dbxActionForm]", inputs: ["dbxActionFormDisabledOnWorking", "dbxActionFormIsValid", "dbxActionFormIsEqual", "dbxActionFormIsModified", "dbxActionFormMapValue"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i2.DbxActionDirective, selector: "dbx-action,[dbxAction]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i2.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i2.DbxActionSuccessHandlerDirective, selector: "[dbxActionSuccessHandler]", inputs: ["dbxActionSuccessHandler"] }, { kind: "directive", type: i2.DbxActionButtonDirective, selector: "[dbxActionButton]" }, { kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "mode"] }, { kind: "directive", type: DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "component", type: DbxFirebaseEmailFormComponent, selector: "dbx-firebase-email-form" }, { kind: "component", type: DbxFirebaseEmailRecoveryFormComponent, selector: "dbx-firebase-email-recovery-form" }, { kind: "directive", type: DbxFormSourceDirective, selector: "[dbxFormSource]", inputs: ["dbxFormSourceMode", "dbxFormSource"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1126
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginEmailContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1127
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.3", type: DbxFirebaseLoginEmailContentComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div class=\"dbx-firebase-login-email-content\">\n @switch (emailModeSignal()) {\n @case ('login') {\n <ng-container *ngTemplateOutlet=\"loginView\"></ng-container>\n }\n @case ('recover') {\n <ng-container *ngTemplateOutlet=\"resetPassword\"></ng-container>\n }\n @case ('recoversent') {\n <ng-container *ngTemplateOutlet=\"resetPasswordSent\"></ng-container>\n }\n }\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]=\"emailFormValueSignal()\"></dbx-firebase-email-form>\n @if (isLoginMode) {\n <div class=\"dbx-firebase-login-email-forgot-prompt\">\n <dbx-link [anchor]=\"forgotAnchor\">Forgot Password?</dbx-link>\n </div>\n }\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]=\"recoveryFormValueSignal()\"></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", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DbxErrorComponent, selector: "dbx-error", inputs: ["error", "iconOnly"], outputs: ["popoverOpened"] }, { kind: "component", type: DbxLinkComponent, selector: "dbx-link", inputs: ["ref", "href", "anchor"] }, { kind: "directive", type: DbxActionErrorDirective, selector: "[dbxActionError]" }, { kind: "directive", type: DbxActionFormDirective, selector: "[dbxActionForm]", inputs: ["dbxActionFormDisabledOnWorking", "dbxActionFormIsValid", "dbxActionFormIsEqual", "dbxActionFormIsModified", "dbxActionFormMapValue"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i2.DbxActionDirective, selector: "dbx-action,[dbxAction]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i2.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i2.DbxActionSuccessHandlerDirective, selector: "[dbxActionSuccessHandler]", inputs: ["dbxActionSuccessHandler"] }, { kind: "directive", type: i2.DbxActionButtonDirective, selector: "[dbxActionButton]" }, { kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "allowClickPropagation", "mode"] }, { kind: "directive", type: DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "component", type: DbxFirebaseEmailFormComponent, selector: "dbx-firebase-email-form" }, { kind: "component", type: DbxFirebaseEmailRecoveryFormComponent, selector: "dbx-firebase-email-recovery-form" }, { kind: "directive", type: DbxFormSourceDirective, selector: "[dbxFormSource]", inputs: ["dbxFormSourceMode", "dbxFormSource"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
928
1128
  }
929
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginEmailContentComponent, decorators: [{
1129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginEmailContentComponent, decorators: [{
930
1130
  type: Component,
931
1131
  args: [{ imports: [NgTemplateOutlet, DbxErrorComponent, DbxLinkComponent, DbxActionErrorDirective, DbxActionFormDirective, MatButtonModule, DbxActionModule, DbxButtonComponent, DbxButtonSpacerDirective, DbxFirebaseEmailFormComponent, DbxFirebaseEmailRecoveryFormComponent, DbxFormSourceDirective], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div class=\"dbx-firebase-login-email-content\">\n @switch (emailModeSignal()) {\n @case ('login') {\n <ng-container *ngTemplateOutlet=\"loginView\"></ng-container>\n }\n @case ('recover') {\n <ng-container *ngTemplateOutlet=\"resetPassword\"></ng-container>\n }\n @case ('recoversent') {\n <ng-container *ngTemplateOutlet=\"resetPasswordSent\"></ng-container>\n }\n }\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]=\"emailFormValueSignal()\"></dbx-firebase-email-form>\n @if (isLoginMode) {\n <div class=\"dbx-firebase-login-email-forgot-prompt\">\n <dbx-link [anchor]=\"forgotAnchor\">Forgot Password?</dbx-link>\n </div>\n }\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]=\"recoveryFormValueSignal()\"></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" }]
932
1132
  }] });
933
1133
 
934
- /** Login button component for email/password authentication. Opens the email login context on click. */
1134
+ /**
1135
+ * Login button component for email/password authentication. Opens the email login context on click.
1136
+ */
935
1137
  class DbxFirebaseLoginEmailComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {
936
1138
  loginProvider = 'email';
937
1139
  handleLogin() {
938
1140
  return DbxFirebaseLoginEmailContentComponent.openEmailLoginContext(this.dbxFirebaseLoginContext, { loginMode: 'login', passwordConfig: this.dbxFirebaseAuthLoginService.getPasswordConfig() });
939
1141
  }
940
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginEmailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
941
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseLoginEmailComponent, isStandalone: true, selector: "dbx-firebase-login-email", usesInheritance: true, ngImport: i0, template: "\n <dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"configSignal()\"></dbx-firebase-login-button>\n </dbx-firebase-login-button-container>\n", isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseLoginButtonComponent, selector: "dbx-firebase-login-button", inputs: ["config"], outputs: ["configChange"] }, { kind: "component", type: DbxFirebaseLoginButtonContainerComponent, selector: "dbx-firebase-login-button-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1142
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginEmailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1143
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseLoginEmailComponent, isStandalone: true, selector: "dbx-firebase-login-email", usesInheritance: true, ngImport: i0, template: "\n <dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"configSignal()\"></dbx-firebase-login-button>\n </dbx-firebase-login-button-container>\n", isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseLoginButtonComponent, selector: "dbx-firebase-login-button", inputs: ["config"], outputs: ["configChange"] }, { kind: "component", type: DbxFirebaseLoginButtonContainerComponent, selector: "dbx-firebase-login-button-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
942
1144
  }
943
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginEmailComponent, decorators: [{
1145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginEmailComponent, decorators: [{
944
1146
  type: Component,
945
1147
  args: [{
946
1148
  selector: 'dbx-firebase-login-email',
@@ -951,16 +1153,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
951
1153
  }]
952
1154
  }] });
953
1155
 
954
- /** Login button component for Facebook OAuth authentication. */
1156
+ /**
1157
+ * Login button component for Facebook OAuth authentication.
1158
+ */
955
1159
  class DbxFirebaseLoginFacebookComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {
956
1160
  loginProvider = 'facebook';
957
1161
  handleLogin() {
958
- return this.dbxFirebaseAuthService.logInWithFacebook();
1162
+ return this.dbxFirebaseAuthService.logInWithPopup(new FacebookAuthProvider());
959
1163
  }
960
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginFacebookComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
961
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseLoginFacebookComponent, isStandalone: true, selector: "dbx-firebase-login-facebook", usesInheritance: true, ngImport: i0, template: "\n <dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"configSignal()\"></dbx-firebase-login-button>\n </dbx-firebase-login-button-container>\n", isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseLoginButtonComponent, selector: "dbx-firebase-login-button", inputs: ["config"], outputs: ["configChange"] }, { kind: "component", type: DbxFirebaseLoginButtonContainerComponent, selector: "dbx-firebase-login-button-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1164
+ handleLink() {
1165
+ return this.dbxFirebaseAuthService.linkWithPopup(new FacebookAuthProvider());
1166
+ }
1167
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginFacebookComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1168
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseLoginFacebookComponent, isStandalone: true, selector: "dbx-firebase-login-facebook", usesInheritance: true, ngImport: i0, template: "\n <dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"configSignal()\"></dbx-firebase-login-button>\n </dbx-firebase-login-button-container>\n", isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseLoginButtonComponent, selector: "dbx-firebase-login-button", inputs: ["config"], outputs: ["configChange"] }, { kind: "component", type: DbxFirebaseLoginButtonContainerComponent, selector: "dbx-firebase-login-button-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
962
1169
  }
963
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginFacebookComponent, decorators: [{
1170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginFacebookComponent, decorators: [{
964
1171
  type: Component,
965
1172
  args: [{
966
1173
  selector: 'dbx-firebase-login-facebook',
@@ -971,16 +1178,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
971
1178
  }]
972
1179
  }] });
973
1180
 
974
- /** Login button component for GitHub OAuth authentication. */
1181
+ /**
1182
+ * Login button component for GitHub OAuth authentication.
1183
+ */
975
1184
  class DbxFirebaseLoginGitHubComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {
976
1185
  loginProvider = 'github';
977
1186
  handleLogin() {
978
- return this.dbxFirebaseAuthService.logInWithGithub();
1187
+ return this.dbxFirebaseAuthService.logInWithPopup(new GithubAuthProvider());
1188
+ }
1189
+ handleLink() {
1190
+ return this.dbxFirebaseAuthService.linkWithPopup(new GithubAuthProvider());
979
1191
  }
980
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginGitHubComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
981
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseLoginGitHubComponent, isStandalone: true, selector: "dbx-firebase-login-github", usesInheritance: true, ngImport: i0, template: "\n <dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"configSignal()\"></dbx-firebase-login-button>\n </dbx-firebase-login-button-container>\n", isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseLoginButtonComponent, selector: "dbx-firebase-login-button", inputs: ["config"], outputs: ["configChange"] }, { kind: "component", type: DbxFirebaseLoginButtonContainerComponent, selector: "dbx-firebase-login-button-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1192
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginGitHubComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1193
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseLoginGitHubComponent, isStandalone: true, selector: "dbx-firebase-login-github", usesInheritance: true, ngImport: i0, template: "\n <dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"configSignal()\"></dbx-firebase-login-button>\n </dbx-firebase-login-button-container>\n", isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseLoginButtonComponent, selector: "dbx-firebase-login-button", inputs: ["config"], outputs: ["configChange"] }, { kind: "component", type: DbxFirebaseLoginButtonContainerComponent, selector: "dbx-firebase-login-button-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
982
1194
  }
983
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginGitHubComponent, decorators: [{
1195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginGitHubComponent, decorators: [{
984
1196
  type: Component,
985
1197
  args: [{
986
1198
  selector: 'dbx-firebase-login-github',
@@ -991,16 +1203,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
991
1203
  }]
992
1204
  }] });
993
1205
 
994
- /** Login button component for Google OAuth authentication. */
1206
+ /**
1207
+ * Login button component for Google OAuth authentication.
1208
+ */
995
1209
  class DbxFirebaseLoginGoogleComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {
996
1210
  loginProvider = 'google';
997
1211
  handleLogin() {
998
- return this.dbxFirebaseAuthService.logInWithGoogle();
1212
+ return this.dbxFirebaseAuthService.logInWithPopup(new GoogleAuthProvider());
1213
+ }
1214
+ handleLink() {
1215
+ return this.dbxFirebaseAuthService.linkWithPopup(new GoogleAuthProvider());
999
1216
  }
1000
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginGoogleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1001
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseLoginGoogleComponent, isStandalone: true, selector: "dbx-firebase-login-google", usesInheritance: true, ngImport: i0, template: "\n <dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"configSignal()\"></dbx-firebase-login-button>\n </dbx-firebase-login-button-container>\n", isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseLoginButtonComponent, selector: "dbx-firebase-login-button", inputs: ["config"], outputs: ["configChange"] }, { kind: "component", type: DbxFirebaseLoginButtonContainerComponent, selector: "dbx-firebase-login-button-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1217
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginGoogleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1218
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseLoginGoogleComponent, isStandalone: true, selector: "dbx-firebase-login-google", usesInheritance: true, ngImport: i0, template: "\n <dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"configSignal()\"></dbx-firebase-login-button>\n </dbx-firebase-login-button-container>\n", isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseLoginButtonComponent, selector: "dbx-firebase-login-button", inputs: ["config"], outputs: ["configChange"] }, { kind: "component", type: DbxFirebaseLoginButtonContainerComponent, selector: "dbx-firebase-login-button-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1002
1219
  }
1003
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginGoogleComponent, decorators: [{
1220
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginGoogleComponent, decorators: [{
1004
1221
  type: Component,
1005
1222
  args: [{
1006
1223
  selector: 'dbx-firebase-login-google',
@@ -1011,16 +1228,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1011
1228
  }]
1012
1229
  }] });
1013
1230
 
1014
- /** Login button component for Twitter OAuth authentication. */
1231
+ /**
1232
+ * Login button component for X (formerly Twitter) OAuth authentication.
1233
+ */
1015
1234
  class DbxFirebaseLoginTwitterComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {
1016
1235
  loginProvider = 'twitter';
1017
1236
  handleLogin() {
1018
- return this.dbxFirebaseAuthService.logInWithTwitter();
1237
+ return this.dbxFirebaseAuthService.logInWithPopup(new TwitterAuthProvider());
1238
+ }
1239
+ handleLink() {
1240
+ return this.dbxFirebaseAuthService.linkWithPopup(new TwitterAuthProvider());
1019
1241
  }
1020
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginTwitterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1021
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseLoginTwitterComponent, isStandalone: true, selector: "dbx-firebase-login-twitter", usesInheritance: true, ngImport: i0, template: "\n <dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"configSignal()\"></dbx-firebase-login-button>\n </dbx-firebase-login-button-container>\n", isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseLoginButtonComponent, selector: "dbx-firebase-login-button", inputs: ["config"], outputs: ["configChange"] }, { kind: "component", type: DbxFirebaseLoginButtonContainerComponent, selector: "dbx-firebase-login-button-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1242
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginTwitterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1243
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseLoginTwitterComponent, isStandalone: true, selector: "dbx-firebase-login-twitter", usesInheritance: true, ngImport: i0, template: "\n <dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"configSignal()\"></dbx-firebase-login-button>\n </dbx-firebase-login-button-container>\n", isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseLoginButtonComponent, selector: "dbx-firebase-login-button", inputs: ["config"], outputs: ["configChange"] }, { kind: "component", type: DbxFirebaseLoginButtonContainerComponent, selector: "dbx-firebase-login-button-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1022
1244
  }
1023
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginTwitterComponent, decorators: [{
1245
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginTwitterComponent, decorators: [{
1024
1246
  type: Component,
1025
1247
  args: [{
1026
1248
  selector: 'dbx-firebase-login-twitter',
@@ -1031,16 +1253,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1031
1253
  }]
1032
1254
  }] });
1033
1255
 
1034
- /** Registration button component for email/password. Opens the email login context in register mode. */
1256
+ /**
1257
+ * Registration button component for email/password. Opens the email login context in register mode.
1258
+ */
1035
1259
  class DbxFirebaseRegisterEmailComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {
1036
1260
  loginProvider = 'email';
1037
1261
  handleLogin() {
1038
1262
  return DbxFirebaseLoginEmailContentComponent.openEmailLoginContext(this.dbxFirebaseLoginContext, { loginMode: 'register', passwordConfig: this.dbxFirebaseAuthLoginService.getPasswordConfig() });
1039
1263
  }
1040
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseRegisterEmailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1041
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseRegisterEmailComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "\n <dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"configSignal()\"></dbx-firebase-login-button>\n </dbx-firebase-login-button-container>\n", isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseLoginButtonComponent, selector: "dbx-firebase-login-button", inputs: ["config"], outputs: ["configChange"] }, { kind: "component", type: DbxFirebaseLoginButtonContainerComponent, selector: "dbx-firebase-login-button-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1264
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseRegisterEmailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1265
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseRegisterEmailComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "\n <dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"configSignal()\"></dbx-firebase-login-button>\n </dbx-firebase-login-button-container>\n", isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseLoginButtonComponent, selector: "dbx-firebase-login-button", inputs: ["config"], outputs: ["configChange"] }, { kind: "component", type: DbxFirebaseLoginButtonContainerComponent, selector: "dbx-firebase-login-button-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1042
1266
  }
1043
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseRegisterEmailComponent, decorators: [{
1267
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseRegisterEmailComponent, decorators: [{
1044
1268
  type: Component,
1045
1269
  args: [{
1046
1270
  imports: DBX_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_COMPONENT_CONFIGURATION.imports,
@@ -1056,9 +1280,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1056
1280
  * @returns Array of DbxFirebaseAuthLoginProvider
1057
1281
  */
1058
1282
  function defaultFirebaseAuthLoginProvidersFactory() {
1059
- // NOTE: Asset URLS are from Firebase.
1060
- // https://firebase.google.com/docs/auth/web/firebaseui
1061
- const baseFirebaseJSUrl = `https://www.gstatic.com/firebasejs/ui/2.0.0/images/auth`;
1283
+ // Brand logos from @firebase-oss/ui-core via jsdelivr CDN.
1284
+ // https://github.com/firebase/firebaseui-web/tree/master/packages/core/brands
1285
+ const brandLogoBaseUrl = `https://cdn.jsdelivr.net/npm/@firebase-oss/ui-core/brands`;
1062
1286
  // NOTE: Colors are from https://brandcolors.net/
1063
1287
  return [
1064
1288
  {
@@ -1066,8 +1290,10 @@ function defaultFirebaseAuthLoginProvidersFactory() {
1066
1290
  loginMethodType: 'email',
1067
1291
  componentClass: DbxFirebaseLoginEmailComponent,
1068
1292
  registrationComponentClass: DbxFirebaseRegisterEmailComponent,
1293
+ allowLinking: false,
1069
1294
  assets: {
1070
- logoUrl: `${baseFirebaseJSUrl}/mail.svg`,
1295
+ providerName: 'Email',
1296
+ loginIcon: 'mail',
1071
1297
  loginText: 'Continue with Email',
1072
1298
  backgroundColor: '#ea4335', // gmail red color
1073
1299
  textColor: '#FFF'
@@ -1078,7 +1304,8 @@ function defaultFirebaseAuthLoginProvidersFactory() {
1078
1304
  loginMethodType: 'google',
1079
1305
  componentClass: DbxFirebaseLoginGoogleComponent,
1080
1306
  assets: {
1081
- logoUrl: `${baseFirebaseJSUrl}/google.svg`,
1307
+ providerName: 'Google',
1308
+ logoUrl: `${brandLogoBaseUrl}/google/logo.svg`,
1082
1309
  loginText: 'Continue with Google',
1083
1310
  backgroundColor: '#FFF',
1084
1311
  textColor: '#757575'
@@ -1089,9 +1316,11 @@ function defaultFirebaseAuthLoginProvidersFactory() {
1089
1316
  loginMethodType: 'facebook',
1090
1317
  componentClass: DbxFirebaseLoginFacebookComponent,
1091
1318
  assets: {
1092
- logoUrl: `${baseFirebaseJSUrl}/facebook.svg`,
1319
+ providerName: 'Facebook',
1320
+ logoUrl: `${brandLogoBaseUrl}/facebook/logo.svg`,
1321
+ logoFilter: 'brightness(0) invert(1)',
1093
1322
  loginText: 'Continue with Facebook',
1094
- backgroundColor: '#4267B2',
1323
+ backgroundColor: '#1877F2',
1095
1324
  textColor: '#FFF'
1096
1325
  }
1097
1326
  },
@@ -1100,10 +1329,11 @@ function defaultFirebaseAuthLoginProvidersFactory() {
1100
1329
  loginMethodType: 'twitter',
1101
1330
  componentClass: DbxFirebaseLoginTwitterComponent,
1102
1331
  assets: {
1103
- logoUrl: `${baseFirebaseJSUrl}/twitter.svg`,
1104
- loginText: 'Continue with Twitter',
1105
- backgroundColor: '#1da1f2',
1106
- textColor: '#FFF'
1332
+ providerName: 'X',
1333
+ logoUrl: `${brandLogoBaseUrl}/twitter/logo.svg`,
1334
+ loginText: 'Continue with X',
1335
+ backgroundColor: '#FFF',
1336
+ textColor: '#000'
1107
1337
  }
1108
1338
  },
1109
1339
  {
@@ -1111,37 +1341,33 @@ function defaultFirebaseAuthLoginProvidersFactory() {
1111
1341
  loginMethodType: 'github',
1112
1342
  componentClass: DbxFirebaseLoginGitHubComponent,
1113
1343
  assets: {
1114
- logoUrl: `${baseFirebaseJSUrl}/github.svg`,
1115
- loginText: 'Continue with Github',
1344
+ providerName: 'GitHub',
1345
+ logoUrl: `${brandLogoBaseUrl}/github/logo.svg`,
1346
+ logoFilter: 'brightness(0) invert(1)',
1347
+ loginText: 'Continue with GitHub',
1116
1348
  backgroundColor: '#333',
1117
1349
  textColor: '#FFF'
1118
1350
  }
1119
1351
  },
1120
- /*{
1121
- category: OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY,
1122
- loginMethodType: 'apple' as KnownFirebaseLoginMethodType,
1123
- componentClass: DbxFirebaseLoginGitHubComponent,
1124
- assets: {
1125
- logoUrl: `${baseFirebaseJSUrl}/apple.svg`,
1126
- loginText: 'Continue with Apple',
1127
- backgroundColor: '#333',
1128
- textColor: '#FFF'
1129
- }
1130
- }, {
1131
- category: OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY,
1132
- loginMethodType: 'microsoft' as KnownFirebaseLoginMethodType,
1133
- componentClass: DbxFirebaseLoginGitHubComponent,
1134
- assets: {
1135
- logoUrl: `${baseFirebaseJSUrl}/microsoft.svg`,
1136
- loginText: 'Continue with Microsoft',
1137
- backgroundColor: '#ea3e23',
1138
- textColor: '#FFF'
1139
- }
1140
- },*/ {
1352
+ {
1353
+ category: OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY,
1354
+ loginMethodType: 'apple',
1355
+ componentClass: DbxFirebaseLoginAppleComponent,
1356
+ assets: {
1357
+ providerName: 'Apple',
1358
+ logoUrl: `${brandLogoBaseUrl}/apple/logo.svg`,
1359
+ loginText: 'Continue with Apple',
1360
+ backgroundColor: '#FFF',
1361
+ textColor: '#000'
1362
+ }
1363
+ },
1364
+ {
1141
1365
  category: DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY,
1142
1366
  loginMethodType: 'anonymous',
1143
1367
  componentClass: DbxFirebaseLoginAnonymousComponent,
1368
+ allowLinking: false,
1144
1369
  assets: {
1370
+ providerName: 'Guest',
1145
1371
  loginIcon: 'account_circle',
1146
1372
  loginText: 'Continue as Guest',
1147
1373
  backgroundColor: '#000',
@@ -1199,26 +1425,6 @@ function provideDbxFirebaseLogin(config) {
1199
1425
  return makeEnvironmentProviders(providers);
1200
1426
  }
1201
1427
 
1202
- /** Login button component for Apple OAuth authentication. */
1203
- class DbxFirebaseLoginAppleComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {
1204
- loginProvider = 'apple';
1205
- handleLogin() {
1206
- return this.dbxFirebaseAuthService.logInWithApple();
1207
- }
1208
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginAppleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1209
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseLoginAppleComponent, isStandalone: true, selector: "dbx-firebase-login-apple", usesInheritance: true, ngImport: i0, template: "\n <dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"configSignal()\"></dbx-firebase-login-button>\n </dbx-firebase-login-button-container>\n", isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseLoginButtonComponent, selector: "dbx-firebase-login-button", inputs: ["config"], outputs: ["configChange"] }, { kind: "component", type: DbxFirebaseLoginButtonContainerComponent, selector: "dbx-firebase-login-button-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1210
- }
1211
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginAppleComponent, decorators: [{
1212
- type: Component,
1213
- args: [{
1214
- selector: 'dbx-firebase-login-apple',
1215
- imports: DBX_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_COMPONENT_CONFIGURATION.imports,
1216
- template: DBX_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_COMPONENT_CONFIGURATION.template,
1217
- changeDetection: DBX_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_COMPONENT_CONFIGURATION.changeDetection,
1218
- standalone: true
1219
- }]
1220
- }] });
1221
-
1222
1428
  /**
1223
1429
  * Renders a list of login provider buttons, filtered by enabled types and categories.
1224
1430
  *
@@ -1226,17 +1432,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1226
1432
  */
1227
1433
  class DbxFirebaseLoginListComponent {
1228
1434
  dbxFirebaseAuthLoginService = inject(DbxFirebaseAuthLoginService);
1229
- loginMode = input('login', ...(ngDevMode ? [{ debugName: "loginMode" }] : []));
1230
- providerTypes = input(...(ngDevMode ? [undefined, { debugName: "providerTypes" }] : []));
1231
- omitProviderTypes = input(...(ngDevMode ? [undefined, { debugName: "omitProviderTypes" }] : []));
1232
- providerCategories = input(...(ngDevMode ? [undefined, { debugName: "providerCategories" }] : []));
1435
+ loginMode = input('login', ...(ngDevMode ? [{ debugName: "loginMode" }] : /* istanbul ignore next */ []));
1436
+ providerTypes = input(...(ngDevMode ? [undefined, { debugName: "providerTypes" }] : /* istanbul ignore next */ []));
1437
+ omitProviderTypes = input(...(ngDevMode ? [undefined, { debugName: "omitProviderTypes" }] : /* istanbul ignore next */ []));
1438
+ providerCategories = input(...(ngDevMode ? [undefined, { debugName: "providerCategories" }] : /* istanbul ignore next */ []));
1233
1439
  providerTypesSignal = computed(() => {
1234
1440
  const providerTypes = this.providerTypes();
1235
1441
  const omitProviderTypes = this.omitProviderTypes();
1236
1442
  const baseTypes = providerTypes ? asArray(providerTypes) : this.dbxFirebaseAuthLoginService.getEnabledTypes();
1237
- const types = omitProviderTypes ? excludeValuesFromArray(baseTypes, asArray(omitProviderTypes)) : baseTypes;
1238
- return types;
1239
- }, ...(ngDevMode ? [{ debugName: "providerTypesSignal" }] : []));
1443
+ return omitProviderTypes ? excludeValuesFromArray(baseTypes, asArray(omitProviderTypes)) : baseTypes;
1444
+ }, ...(ngDevMode ? [{ debugName: "providerTypesSignal" }] : /* istanbul ignore next */ []));
1240
1445
  providersSignal = computed(() => {
1241
1446
  const providerCategories = asArray(this.providerCategories());
1242
1447
  let providers = this.dbxFirebaseAuthLoginService.getLoginProviders(this.providerTypesSignal());
@@ -1245,22 +1450,28 @@ class DbxFirebaseLoginListComponent {
1245
1450
  providers = providers.filter((x) => containsStringAnyCase(categories, x.category ?? ''));
1246
1451
  }
1247
1452
  return providers;
1248
- }, ...(ngDevMode ? [{ debugName: "providersSignal" }] : []));
1453
+ }, ...(ngDevMode ? [{ debugName: "providersSignal" }] : /* istanbul ignore next */ []));
1249
1454
  providersInjectionConfigsSignal = computed(() => {
1250
1455
  let providers = this.providersSignal();
1456
+ const loginMode = this.loginMode();
1251
1457
  let mapFn;
1252
- if (this.loginMode() === 'register') {
1253
- providers = providers.filter((x) => x.registrationComponentClass !== false); // providers with "registrationComponentClass" set to false are not available for registration
1254
- mapFn = (x) => ({ componentClass: (x.registrationComponentClass ?? x.componentClass), loginMethodType: x.loginMethodType });
1255
- }
1256
- else {
1257
- mapFn = (x) => ({ componentClass: x.componentClass, loginMethodType: x.loginMethodType });
1258
- }
1259
- const configs = providers.map(mapFn);
1260
- return configs;
1261
- }, ...(ngDevMode ? [{ debugName: "providersInjectionConfigsSignal" }] : []));
1262
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1263
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DbxFirebaseLoginListComponent, isStandalone: true, selector: "dbx-firebase-login-list", inputs: { loginMode: { classPropertyName: "loginMode", publicName: "loginMode", isSignal: true, isRequired: false, transformFunction: null }, providerTypes: { classPropertyName: "providerTypes", publicName: "providerTypes", isSignal: true, isRequired: false, transformFunction: null }, omitProviderTypes: { classPropertyName: "omitProviderTypes", publicName: "omitProviderTypes", isSignal: true, isRequired: false, transformFunction: null }, providerCategories: { classPropertyName: "providerCategories", publicName: "providerCategories", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "dbx-firebase-login-list" }, ngImport: i0, template: `
1458
+ switch (loginMode) {
1459
+ case 'register':
1460
+ providers = providers.filter((x) => x.registrationComponentClass !== false);
1461
+ mapFn = (x) => ({ componentClass: (x.registrationComponentClass ?? x.componentClass), loginMethodType: x.loginMethodType, data: { loginMode } });
1462
+ break;
1463
+ case 'link':
1464
+ providers = providers.filter((x) => x.allowLinking !== false);
1465
+ mapFn = (x) => ({ componentClass: x.componentClass, loginMethodType: x.loginMethodType, data: { loginMode } });
1466
+ break;
1467
+ default:
1468
+ mapFn = (x) => ({ componentClass: x.componentClass, loginMethodType: x.loginMethodType, data: { loginMode } });
1469
+ break;
1470
+ }
1471
+ return providers.map(mapFn);
1472
+ }, ...(ngDevMode ? [{ debugName: "providersInjectionConfigsSignal" }] : /* istanbul ignore next */ []));
1473
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1474
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.3", type: DbxFirebaseLoginListComponent, isStandalone: true, selector: "dbx-firebase-login-list", inputs: { loginMode: { classPropertyName: "loginMode", publicName: "loginMode", isSignal: true, isRequired: false, transformFunction: null }, providerTypes: { classPropertyName: "providerTypes", publicName: "providerTypes", isSignal: true, isRequired: false, transformFunction: null }, omitProviderTypes: { classPropertyName: "omitProviderTypes", publicName: "omitProviderTypes", isSignal: true, isRequired: false, transformFunction: null }, providerCategories: { classPropertyName: "providerCategories", publicName: "providerCategories", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "dbx-firebase-login-list" }, ngImport: i0, template: `
1264
1475
  @for (config of providersInjectionConfigsSignal(); track config.loginMethodType) {
1265
1476
  <div class="dbx-firebase-login-item">
1266
1477
  <dbx-injection [config]="config"></dbx-injection>
@@ -1268,7 +1479,7 @@ class DbxFirebaseLoginListComponent {
1268
1479
  }
1269
1480
  `, isInline: true, dependencies: [{ kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }] });
1270
1481
  }
1271
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginListComponent, decorators: [{
1482
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginListComponent, decorators: [{
1272
1483
  type: Component,
1273
1484
  args: [{
1274
1485
  selector: 'dbx-firebase-login-list',
@@ -1293,15 +1504,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1293
1504
  * Apply to a host element to establish a login context scope for child login components.
1294
1505
  */
1295
1506
  class DbxFirebaseLoginContextDirective extends AbstractForwardDbxInjectionContextDirective {
1296
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginContextDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1297
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseLoginContextDirective, isStandalone: true, selector: "[dbxFirebaseLoginContext]", providers: [
1507
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginContextDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1508
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseLoginContextDirective, isStandalone: true, selector: "[dbxFirebaseLoginContext]", providers: [
1298
1509
  {
1299
1510
  provide: DbxFirebaseLoginContext,
1300
1511
  useExisting: DbxFirebaseLoginContextDirective
1301
1512
  }
1302
1513
  ], usesInheritance: true, ngImport: i0 });
1303
1514
  }
1304
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginContextDirective, decorators: [{
1515
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginContextDirective, decorators: [{
1305
1516
  type: Directive,
1306
1517
  args: [{
1307
1518
  selector: '[dbxFirebaseLoginContext]',
@@ -1319,18 +1530,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1319
1530
  * Pre-configured login component that displays all configured login types.
1320
1531
  */
1321
1532
  class DbxFirebaseLoginComponent {
1322
- loginMode = input('login', ...(ngDevMode ? [{ debugName: "loginMode" }] : []));
1323
- providerTypes = input(...(ngDevMode ? [undefined, { debugName: "providerTypes" }] : []));
1324
- omitProviderTypes = input(...(ngDevMode ? [undefined, { debugName: "omitProviderTypes" }] : []));
1325
- providerCategories = input(...(ngDevMode ? [undefined, { debugName: "providerCategories" }] : []));
1326
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1327
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: DbxFirebaseLoginComponent, isStandalone: true, selector: "dbx-firebase-login", inputs: { loginMode: { classPropertyName: "loginMode", publicName: "loginMode", isSignal: true, isRequired: false, transformFunction: null }, providerTypes: { classPropertyName: "providerTypes", publicName: "providerTypes", isSignal: true, isRequired: false, transformFunction: null }, omitProviderTypes: { classPropertyName: "omitProviderTypes", publicName: "omitProviderTypes", isSignal: true, isRequired: false, transformFunction: null }, providerCategories: { classPropertyName: "providerCategories", publicName: "providerCategories", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "{ \"dbx-firebase-register\": loginMode() === \"register\" }" }, classAttribute: "d-block dbx-firebase-login" }, ngImport: i0, template: `
1533
+ loginMode = input('login', ...(ngDevMode ? [{ debugName: "loginMode" }] : /* istanbul ignore next */ []));
1534
+ providerTypes = input(...(ngDevMode ? [undefined, { debugName: "providerTypes" }] : /* istanbul ignore next */ []));
1535
+ omitProviderTypes = input(...(ngDevMode ? [undefined, { debugName: "omitProviderTypes" }] : /* istanbul ignore next */ []));
1536
+ providerCategories = input(...(ngDevMode ? [undefined, { debugName: "providerCategories" }] : /* istanbul ignore next */ []));
1537
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1538
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.3", type: DbxFirebaseLoginComponent, isStandalone: true, selector: "dbx-firebase-login", inputs: { loginMode: { classPropertyName: "loginMode", publicName: "loginMode", isSignal: true, isRequired: false, transformFunction: null }, providerTypes: { classPropertyName: "providerTypes", publicName: "providerTypes", isSignal: true, isRequired: false, transformFunction: null }, omitProviderTypes: { classPropertyName: "omitProviderTypes", publicName: "omitProviderTypes", isSignal: true, isRequired: false, transformFunction: null }, providerCategories: { classPropertyName: "providerCategories", publicName: "providerCategories", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "{ \"dbx-firebase-register\": loginMode() === \"register\", \"dbx-firebase-link\": loginMode() === \"link\" }" }, classAttribute: "d-block dbx-firebase-login" }, ngImport: i0, template: `
1328
1539
  <ng-container *dbxInjectionContext dbxFirebaseLoginContext>
1329
1540
  <dbx-firebase-login-list [providerTypes]="providerTypes()" [omitProviderTypes]="omitProviderTypes()" [providerCategories]="providerCategories()" [loginMode]="loginMode()"></dbx-firebase-login-list>
1330
1541
  </ng-container>
1331
1542
  `, isInline: true, dependencies: [{ kind: "directive", type: DbxInjectionContextDirective, selector: "[dbxInjectionContext]", inputs: ["config"] }, { kind: "directive", type: DbxFirebaseLoginContextDirective, selector: "[dbxFirebaseLoginContext]" }, { kind: "component", type: DbxFirebaseLoginListComponent, selector: "dbx-firebase-login-list", inputs: ["loginMode", "providerTypes", "omitProviderTypes", "providerCategories"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1332
1543
  }
1333
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginComponent, decorators: [{
1544
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginComponent, decorators: [{
1334
1545
  type: Component,
1335
1546
  args: [{
1336
1547
  selector: 'dbx-firebase-login',
@@ -1343,24 +1554,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1343
1554
  `,
1344
1555
  host: {
1345
1556
  class: 'd-block dbx-firebase-login',
1346
- '[class]': '{ "dbx-firebase-register": loginMode() === "register" }'
1557
+ '[class]': '{ "dbx-firebase-register": loginMode() === "register", "dbx-firebase-link": loginMode() === "link" }'
1347
1558
  },
1348
1559
  changeDetection: ChangeDetectionStrategy.OnPush
1349
1560
  }]
1350
1561
  }], propDecorators: { loginMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "loginMode", required: false }] }], providerTypes: [{ type: i0.Input, args: [{ isSignal: true, alias: "providerTypes", required: false }] }], omitProviderTypes: [{ type: i0.Input, args: [{ isSignal: true, alias: "omitProviderTypes", required: false }] }], providerCategories: [{ type: i0.Input, args: [{ isSignal: true, alias: "providerCategories", required: false }] }] } });
1351
1562
 
1352
- /** Navigation component that allows users to return to the login method selection list. */
1563
+ /**
1564
+ * Navigation component that allows users to return to the login method selection list.
1565
+ */
1353
1566
  class DbxFirebaseLoginContextBackButtonComponent {
1354
1567
  cancelLogin = output();
1355
1568
  anchor = {
1356
1569
  onClick: () => this.cancelLogin.emit()
1357
1570
  };
1358
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginContextBackButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1359
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseLoginContextBackButtonComponent, isStandalone: true, selector: "dbx-firebase-login-context-back-button", outputs: { cancelLogin: "cancelLogin" }, ngImport: i0, template: `
1571
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginContextBackButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1572
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseLoginContextBackButtonComponent, isStandalone: true, selector: "dbx-firebase-login-context-back-button", outputs: { cancelLogin: "cancelLogin" }, ngImport: i0, template: `
1360
1573
  <dbx-link [anchor]="anchor">Choose other login method.</dbx-link>
1361
1574
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: DbxRouterAnchorModule }, { kind: "component", type: i1$1.DbxLinkComponent, selector: "dbx-link", inputs: ["ref", "href", "anchor"] }] });
1362
1575
  }
1363
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginContextBackButtonComponent, decorators: [{
1576
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginContextBackButtonComponent, decorators: [{
1364
1577
  type: Component,
1365
1578
  args: [{
1366
1579
  selector: 'dbx-firebase-login-context-back-button',
@@ -1372,16 +1585,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1372
1585
  }]
1373
1586
  }], propDecorators: { cancelLogin: [{ type: i0.Output, args: ["cancelLogin"] }] } });
1374
1587
 
1375
- /** Login button component for Microsoft OAuth authentication. */
1588
+ /**
1589
+ * Login button component for Microsoft OAuth authentication.
1590
+ */
1376
1591
  class DbxFirebaseLoginMicrosoftComponent extends AbstractConfiguredDbxFirebaseLoginButtonDirective {
1377
1592
  loginProvider = 'microsoft';
1378
1593
  handleLogin() {
1379
- return this.dbxFirebaseAuthService.logInWithMicrosoft();
1594
+ return this.dbxFirebaseAuthService.logInWithPopup(new OAuthProvider('microsoft.com'));
1595
+ }
1596
+ handleLink() {
1597
+ return this.dbxFirebaseAuthService.linkWithPopup(new OAuthProvider('microsoft.com'));
1380
1598
  }
1381
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginMicrosoftComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1382
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseLoginMicrosoftComponent, isStandalone: true, selector: "dbx-firebase-login-microsoft", usesInheritance: true, ngImport: i0, template: "\n <dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"configSignal()\"></dbx-firebase-login-button>\n </dbx-firebase-login-button-container>\n", isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseLoginButtonComponent, selector: "dbx-firebase-login-button", inputs: ["config"], outputs: ["configChange"] }, { kind: "component", type: DbxFirebaseLoginButtonContainerComponent, selector: "dbx-firebase-login-button-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1599
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginMicrosoftComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1600
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseLoginMicrosoftComponent, isStandalone: true, selector: "dbx-firebase-login-microsoft", usesInheritance: true, ngImport: i0, template: "\n <dbx-firebase-login-button-container>\n <dbx-firebase-login-button [config]=\"configSignal()\"></dbx-firebase-login-button>\n </dbx-firebase-login-button-container>\n", isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseLoginButtonComponent, selector: "dbx-firebase-login-button", inputs: ["config"], outputs: ["configChange"] }, { kind: "component", type: DbxFirebaseLoginButtonContainerComponent, selector: "dbx-firebase-login-button-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1383
1601
  }
1384
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginMicrosoftComponent, decorators: [{
1602
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginMicrosoftComponent, decorators: [{
1385
1603
  type: Component,
1386
1604
  args: [{
1387
1605
  selector: 'dbx-firebase-login-microsoft',
@@ -1392,18 +1610,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1392
1610
  }]
1393
1611
  }] });
1394
1612
 
1395
- /** Renders the configured terms of service component via dynamic injection from the login service. */
1613
+ /**
1614
+ * Renders the configured terms of service component via dynamic injection from the login service.
1615
+ */
1396
1616
  class DbxFirebaseLoginTermsComponent {
1397
1617
  dbxFirebaseAuthLoginService = inject(DbxFirebaseAuthLoginService);
1398
1618
  config = {
1399
1619
  componentClass: this.dbxFirebaseAuthLoginService.loginTermsComponentClass
1400
1620
  };
1401
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginTermsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1402
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseLoginTermsComponent, isStandalone: true, selector: "dbx-firebase-login-terms", host: { classAttribute: "dbx-firebase-login-terms d-block" }, ngImport: i0, template: `
1621
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginTermsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1622
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseLoginTermsComponent, isStandalone: true, selector: "dbx-firebase-login-terms", host: { classAttribute: "dbx-firebase-login-terms d-block" }, ngImport: i0, template: `
1403
1623
  <dbx-injection [config]="config"></dbx-injection>
1404
1624
  `, isInline: true, dependencies: [{ kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }] });
1405
1625
  }
1406
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseLoginTermsComponent, decorators: [{
1626
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseLoginTermsComponent, decorators: [{
1407
1627
  type: Component,
1408
1628
  args: [{
1409
1629
  selector: 'dbx-firebase-login-terms',
@@ -1418,19 +1638,183 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1418
1638
  }]
1419
1639
  }] });
1420
1640
 
1641
+ /**
1642
+ * Map of Firebase provider IDs to known login method types.
1643
+ *
1644
+ * @example
1645
+ * ```ts
1646
+ * FIREBASE_PROVIDER_ID_TO_LOGIN_METHOD_TYPE_MAP['google.com']; // 'google'
1647
+ * ```
1648
+ */
1649
+ const FIREBASE_PROVIDER_ID_TO_LOGIN_METHOD_TYPE_MAP = {
1650
+ 'google.com': 'google',
1651
+ 'facebook.com': 'facebook',
1652
+ 'github.com': 'github',
1653
+ 'twitter.com': 'twitter',
1654
+ 'apple.com': 'apple',
1655
+ 'microsoft.com': 'microsoft',
1656
+ phone: 'phone',
1657
+ password: 'email'
1658
+ };
1659
+ /**
1660
+ * Map of known login method types to Firebase provider IDs.
1661
+ *
1662
+ * @example
1663
+ * ```ts
1664
+ * LOGIN_METHOD_TYPE_TO_FIREBASE_PROVIDER_ID_MAP['google']; // 'google.com'
1665
+ * ```
1666
+ */
1667
+ const LOGIN_METHOD_TYPE_TO_FIREBASE_PROVIDER_ID_MAP = {
1668
+ google: 'google.com',
1669
+ facebook: 'facebook.com',
1670
+ github: 'github.com',
1671
+ twitter: 'twitter.com',
1672
+ apple: 'apple.com',
1673
+ microsoft: 'microsoft.com',
1674
+ phone: 'phone',
1675
+ email: 'password'
1676
+ };
1677
+ /**
1678
+ * Converts a Firebase provider ID (e.g., 'google.com') to its corresponding login method type (e.g., 'google').
1679
+ *
1680
+ * @param providerId - The Firebase provider ID.
1681
+ * @returns The matching login method type, or undefined if unknown.
1682
+ *
1683
+ * @example
1684
+ * ```ts
1685
+ * firebaseProviderIdToLoginMethodType('google.com'); // 'google'
1686
+ * firebaseProviderIdToLoginMethodType('unknown.com'); // undefined
1687
+ * ```
1688
+ */
1689
+ function firebaseProviderIdToLoginMethodType(providerId) {
1690
+ return FIREBASE_PROVIDER_ID_TO_LOGIN_METHOD_TYPE_MAP[providerId];
1691
+ }
1692
+ /**
1693
+ * Converts a login method type (e.g., 'google') to its corresponding Firebase provider ID (e.g., 'google.com').
1694
+ *
1695
+ * @param type - The login method type.
1696
+ * @returns The matching Firebase provider ID, or undefined if unknown.
1697
+ *
1698
+ * @example
1699
+ * ```ts
1700
+ * loginMethodTypeToFirebaseProviderId('google'); // 'google.com'
1701
+ * loginMethodTypeToFirebaseProviderId('unknown'); // undefined
1702
+ * ```
1703
+ */
1704
+ function loginMethodTypeToFirebaseProviderId(type) {
1705
+ return LOGIN_METHOD_TYPE_TO_FIREBASE_PROVIDER_ID_MAP[type];
1706
+ }
1707
+
1708
+ /**
1709
+ * Component for managing linked authentication providers on a user account.
1710
+ *
1711
+ * Displays two sections:
1712
+ * - **Connected Providers**: Shows currently linked providers with disconnect buttons.
1713
+ * - **Connect Provider**: Shows available OAuth providers that can be linked.
1714
+ *
1715
+ * @example
1716
+ * ```html
1717
+ * <dbx-firebase-manage-auth-providers></dbx-firebase-manage-auth-providers>
1718
+ * ```
1719
+ */
1720
+ class DbxFirebaseManageAuthProvidersComponent {
1721
+ dbxFirebaseAuthService = inject(DbxFirebaseAuthService);
1722
+ dbxFirebaseAuthLoginService = inject(DbxFirebaseAuthLoginService);
1723
+ _linkedProviderIds = toSignal(this.dbxFirebaseAuthService.currentLinkedProviderIds$, { initialValue: [] });
1724
+ linkedProvidersSignal = computed(() => {
1725
+ const providerIds = this._linkedProviderIds();
1726
+ return providerIds.map((providerId) => {
1727
+ const loginMethodType = firebaseProviderIdToLoginMethodType(providerId);
1728
+ const assets = loginMethodType ? this.dbxFirebaseAuthLoginService.getProviderAssets(loginMethodType) : undefined;
1729
+ const providerName = assets?.providerName ?? providerId;
1730
+ const unlinkText = assets?.unlinkText ?? `Disconnect ${providerName}`;
1731
+ return { providerId, loginMethodType, providerName, unlinkText, assets };
1732
+ });
1733
+ }, ...(ngDevMode ? [{ debugName: "linkedProvidersSignal" }] : /* istanbul ignore next */ []));
1734
+ linkedMethodTypesSignal = computed(() => {
1735
+ return filterMaybeArrayValues(this.linkedProvidersSignal().map((p) => p.loginMethodType));
1736
+ }, ...(ngDevMode ? [{ debugName: "linkedMethodTypesSignal" }] : /* istanbul ignore next */ []));
1737
+ showLinkSectionSignal = computed(() => {
1738
+ const linkedTypes = new Set(this.linkedMethodTypesSignal());
1739
+ const oauthProviders = this.dbxFirebaseAuthLoginService.getLinkProviders(this.dbxFirebaseAuthLoginService.getEnabledTypes());
1740
+ return oauthProviders.some((p) => p.category === OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY && !linkedTypes.has(p.loginMethodType));
1741
+ }, ...(ngDevMode ? [{ debugName: "showLinkSectionSignal" }] : /* istanbul ignore next */ []));
1742
+ /**
1743
+ * Creates a work handler for unlinking a specific provider.
1744
+ *
1745
+ * @param providerId - The Firebase provider ID to unlink (e.g., 'google.com').
1746
+ * @returns A {@link WorkUsingContext} handler that unlinking the provider on execution.
1747
+ */
1748
+ makeUnlinkHandler(providerId) {
1749
+ return (_, context) => {
1750
+ const promise = this.dbxFirebaseAuthService.unlinkProvider(providerId);
1751
+ context.startWorkingWithPromise(promise);
1752
+ };
1753
+ }
1754
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseManageAuthProvidersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1755
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.3", type: DbxFirebaseManageAuthProvidersComponent, isStandalone: true, selector: "dbx-firebase-manage-auth-providers", host: { classAttribute: "d-block dbx-firebase-manage-auth-providers" }, ngImport: i0, template: `
1756
+ @if (linkedProvidersSignal().length) {
1757
+ <dbx-section header="Connected Providers">
1758
+ @for (provider of linkedProvidersSignal(); track provider.providerId) {
1759
+ <div class="dbx-firebase-manage-provider-item">
1760
+ <ng-container dbxAction [dbxActionHandler]="makeUnlinkHandler(provider.providerId)" dbxActionValue>
1761
+ <dbx-button dbxActionButton [text]="provider.unlinkText" icon="link_off" color="warn"></dbx-button>
1762
+ </ng-container>
1763
+ </div>
1764
+ }
1765
+ </dbx-section>
1766
+ }
1767
+ @if (showLinkSectionSignal()) {
1768
+ <dbx-section header="Connect Provider">
1769
+ <dbx-firebase-login loginMode="link" [omitProviderTypes]="linkedMethodTypesSignal()" providerCategories="oauth"></dbx-firebase-login>
1770
+ </dbx-section>
1771
+ }
1772
+ `, isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseLoginComponent, selector: "dbx-firebase-login", inputs: ["loginMode", "providerTypes", "omitProviderTypes", "providerCategories"] }, { kind: "component", type: DbxSectionComponent, selector: "dbx-section", inputs: ["elevate"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i2.DbxActionDirective, selector: "dbx-action,[dbxAction]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i2.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i2.DbxActionValueDirective, selector: "dbxActionValue,[dbxActionValue]", inputs: ["dbxActionValue"] }, { kind: "directive", type: i2.DbxActionButtonDirective, selector: "[dbxActionButton]" }, { kind: "ngmodule", type: DbxButtonModule }, { kind: "component", type: i1$1.DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "allowClickPropagation", "mode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1773
+ }
1774
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseManageAuthProvidersComponent, decorators: [{
1775
+ type: Component,
1776
+ args: [{
1777
+ selector: 'dbx-firebase-manage-auth-providers',
1778
+ standalone: true,
1779
+ imports: [DbxFirebaseLoginComponent, DbxSectionComponent, MatIconModule, DbxActionModule, DbxButtonModule],
1780
+ template: `
1781
+ @if (linkedProvidersSignal().length) {
1782
+ <dbx-section header="Connected Providers">
1783
+ @for (provider of linkedProvidersSignal(); track provider.providerId) {
1784
+ <div class="dbx-firebase-manage-provider-item">
1785
+ <ng-container dbxAction [dbxActionHandler]="makeUnlinkHandler(provider.providerId)" dbxActionValue>
1786
+ <dbx-button dbxActionButton [text]="provider.unlinkText" icon="link_off" color="warn"></dbx-button>
1787
+ </ng-container>
1788
+ </div>
1789
+ }
1790
+ </dbx-section>
1791
+ }
1792
+ @if (showLinkSectionSignal()) {
1793
+ <dbx-section header="Connect Provider">
1794
+ <dbx-firebase-login loginMode="link" [omitProviderTypes]="linkedMethodTypesSignal()" providerCategories="oauth"></dbx-firebase-login>
1795
+ </dbx-section>
1796
+ }
1797
+ `,
1798
+ host: {
1799
+ class: 'd-block dbx-firebase-manage-auth-providers'
1800
+ },
1801
+ changeDetection: ChangeDetectionStrategy.OnPush
1802
+ }]
1803
+ }] });
1804
+
1421
1805
  /**
1422
1806
  * Pre-configured register component that displays all configured login types and their registration components.
1423
1807
  */
1424
1808
  class DbxFirebaseRegisterComponent {
1425
- providerTypes = input(...(ngDevMode ? [undefined, { debugName: "providerTypes" }] : []));
1426
- omitProviderTypes = input(...(ngDevMode ? [undefined, { debugName: "omitProviderTypes" }] : []));
1427
- providerCategories = input(...(ngDevMode ? [undefined, { debugName: "providerCategories" }] : []));
1428
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseRegisterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1429
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: DbxFirebaseRegisterComponent, isStandalone: true, selector: "dbx-firebase-register", inputs: { providerTypes: { classPropertyName: "providerTypes", publicName: "providerTypes", isSignal: true, isRequired: false, transformFunction: null }, omitProviderTypes: { classPropertyName: "omitProviderTypes", publicName: "omitProviderTypes", isSignal: true, isRequired: false, transformFunction: null }, providerCategories: { classPropertyName: "providerCategories", publicName: "providerCategories", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
1809
+ providerTypes = input(...(ngDevMode ? [undefined, { debugName: "providerTypes" }] : /* istanbul ignore next */ []));
1810
+ omitProviderTypes = input(...(ngDevMode ? [undefined, { debugName: "omitProviderTypes" }] : /* istanbul ignore next */ []));
1811
+ providerCategories = input(...(ngDevMode ? [undefined, { debugName: "providerCategories" }] : /* istanbul ignore next */ []));
1812
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseRegisterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1813
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.3", type: DbxFirebaseRegisterComponent, isStandalone: true, selector: "dbx-firebase-register", inputs: { providerTypes: { classPropertyName: "providerTypes", publicName: "providerTypes", isSignal: true, isRequired: false, transformFunction: null }, omitProviderTypes: { classPropertyName: "omitProviderTypes", publicName: "omitProviderTypes", isSignal: true, isRequired: false, transformFunction: null }, providerCategories: { classPropertyName: "providerCategories", publicName: "providerCategories", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
1430
1814
  <dbx-firebase-login loginMode="register" [providerTypes]="providerTypes()" [omitProviderTypes]="omitProviderTypes()" [providerCategories]="providerCategories()"></dbx-firebase-login>
1431
1815
  `, isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseLoginComponent, selector: "dbx-firebase-login", inputs: ["loginMode", "providerTypes", "omitProviderTypes", "providerCategories"] }] });
1432
1816
  }
1433
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseRegisterComponent, decorators: [{
1817
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseRegisterComponent, decorators: [{
1434
1818
  type: Component,
1435
1819
  args: [{
1436
1820
  selector: 'dbx-firebase-register',
@@ -1442,6 +1826,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1442
1826
  }]
1443
1827
  }], propDecorators: { providerTypes: [{ type: i0.Input, args: [{ isSignal: true, alias: "providerTypes", required: false }] }], omitProviderTypes: [{ type: i0.Input, args: [{ isSignal: true, alias: "omitProviderTypes", required: false }] }], providerCategories: [{ type: i0.Input, args: [{ isSignal: true, alias: "providerCategories", required: false }] }] } });
1444
1828
 
1829
+ /**
1830
+ * Creates a function that derives an {@link AuthRoleSet} observable from the current user's ID token claims using the configured claims service.
1831
+ *
1832
+ * Optionally adds the current AuthUserState to the role set.
1833
+ *
1834
+ * @param config - Configuration specifying the claims service and optional auth user state inclusion.
1835
+ * @returns A function that, given a DbxFirebaseAuthService, returns an Observable of the decoded AuthRoleSet.
1836
+ */
1445
1837
  function authRolesObsWithClaimsService(config) {
1446
1838
  const { addAuthUserStateToRoles: addAuthUserState, claimsService } = config;
1447
1839
  return (dbxFirebaseAuthService) => {
@@ -1452,6 +1844,14 @@ function authRolesObsWithClaimsService(config) {
1452
1844
  return obs;
1453
1845
  };
1454
1846
  }
1847
+ /**
1848
+ * Creates a {@link DbxFirebaseAuthServiceDelegate} that derives auth roles and user state from the given claims service configuration.
1849
+ *
1850
+ * Only one of `stateForLoggedInUser`, `stateForLoggedInUserToken`, or `authUserStateObs` may be specified.
1851
+ *
1852
+ * @param config - Configuration with the claims service and optional auth state customization.
1853
+ * @returns A DbxFirebaseAuthServiceDelegate configured for claims-based auth.
1854
+ */
1455
1855
  function defaultDbxFirebaseAuthServiceDelegateWithClaimsService(config) {
1456
1856
  if (filterMaybeArrayValues([config.stateForLoggedInUser, config.stateForLoggedInUserToken, config.authUserStateObs]).length > 1) {
1457
1857
  throw new Error('Cannot specify a combination of "stateForLoggedInUserToken", "stateForLoggedInUser" and "authUserStateObs". Must specify one at max.');
@@ -1502,16 +1902,18 @@ const DEFAULT_FIREBASE_DEVELOPMENT_WIDGET_PROVIDERS_TOKEN = new InjectionToken('
1502
1902
  class DbxFirebaseDevelopmentWidgetService {
1503
1903
  dbxWidgetService = inject(DbxWidgetService);
1504
1904
  _entries = new Map();
1505
- constructor(defaultEntries) {
1506
- if (defaultEntries) {
1507
- defaultEntries.forEach((x) => this.register(x, false));
1905
+ _defaultEntries = inject(DEFAULT_FIREBASE_DEVELOPMENT_WIDGET_PROVIDERS_TOKEN, { optional: true });
1906
+ constructor() {
1907
+ if (this._defaultEntries) {
1908
+ this._defaultEntries.forEach((x) => this.register(x, false));
1508
1909
  }
1509
1910
  }
1510
1911
  /**
1511
1912
  * Used to register a provider. If a provider is already registered, this will override it by default.
1512
1913
  *
1513
- * @param provider
1514
- * @param override
1914
+ * @param provider - The development widget entry to register.
1915
+ * @param override - Whether to override an existing entry of the same type. Defaults to true.
1916
+ * @returns True if the entry was registered, false if it already existed and override was false.
1515
1917
  */
1516
1918
  register(provider, override = true) {
1517
1919
  const type = provider.widget.type;
@@ -1525,22 +1927,17 @@ class DbxFirebaseDevelopmentWidgetService {
1525
1927
  }
1526
1928
  }
1527
1929
  getEntryWidgetIdentifiers() {
1528
- return Array.from(this._entries.keys());
1930
+ return [...this._entries.keys()];
1529
1931
  }
1530
1932
  getEntries() {
1531
1933
  return iterableToArray(this._entries.values());
1532
1934
  }
1533
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentWidgetService, deps: [{ token: DEFAULT_FIREBASE_DEVELOPMENT_WIDGET_PROVIDERS_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
1534
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentWidgetService });
1935
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentWidgetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1936
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentWidgetService });
1535
1937
  }
1536
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentWidgetService, decorators: [{
1938
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentWidgetService, decorators: [{
1537
1939
  type: Injectable
1538
- }], ctorParameters: () => [{ type: undefined, decorators: [{
1539
- type: Optional
1540
- }, {
1541
- type: Inject,
1542
- args: [DEFAULT_FIREBASE_DEVELOPMENT_WIDGET_PROVIDERS_TOKEN]
1543
- }] }] });
1940
+ }], ctorParameters: () => [] });
1544
1941
 
1545
1942
  /**
1546
1943
  * Whether or not the scheduler should be enabled.
@@ -1606,10 +2003,10 @@ class DbxFirebaseDevelopmentSchedulerService {
1606
2003
  setTimer(timerInterval) {
1607
2004
  this._timerInterval.next(timerInterval);
1608
2005
  }
1609
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1610
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerService });
2006
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2007
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerService });
1611
2008
  }
1612
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerService, decorators: [{
2009
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerService, decorators: [{
1613
2010
  type: Injectable
1614
2011
  }] });
1615
2012
 
@@ -1632,10 +2029,10 @@ class DbxFirebaseDevelopmentPopupContentFormComponent extends AbstractConfigAsyn
1632
2029
  })
1633
2030
  ];
1634
2031
  }));
1635
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentPopupContentFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1636
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseDevelopmentPopupContentFormComponent, isStandalone: true, selector: "dbx-firebase-development-popup-content-form", providers: dbxFormlyFormComponentProviders(), usesInheritance: true, ngImport: i0, template: "<dbx-formly></dbx-formly>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxFormlyFormComponentImportsModule }, { kind: "component", type: i1$2.DbxFormlyComponent, selector: "dbx-formly", exportAs: ["formly"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2032
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentPopupContentFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2033
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseDevelopmentPopupContentFormComponent, isStandalone: true, selector: "dbx-firebase-development-popup-content-form", providers: dbxFormlyFormComponentProviders(), usesInheritance: true, ngImport: i0, template: "<dbx-formly></dbx-formly>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxFormlyFormComponentImportsModule }, { kind: "component", type: i1$2.DbxFormlyComponent, selector: "dbx-formly", exportAs: ["formly"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1637
2034
  }
1638
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentPopupContentFormComponent, decorators: [{
2035
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentPopupContentFormComponent, decorators: [{
1639
2036
  type: Component,
1640
2037
  args: [{
1641
2038
  selector: 'dbx-firebase-development-popup-content-form',
@@ -1654,10 +2051,10 @@ class DbxFirebaseDevelopmentSchedulerListComponent extends AbstractDbxSelectionL
1654
2051
  defaultSelectionMode: 'view'
1655
2052
  });
1656
2053
  }
1657
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1658
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseDevelopmentSchedulerListComponent, isStandalone: true, selector: "dbx-firebase-development-scheduler-list", providers: provideDbxListViewWrapper(DbxFirebaseDevelopmentSchedulerListComponent), usesInheritance: true, ngImport: i0, template: "\n <dbx-list [state]=\"currentState$\" [config]=\"configSignal()\" [hasMore]=\"hasMore()\" [disabled]=\"disabled()\" [selectionMode]=\"selectionModeSignal()\">\n <ng-content top select=\"[top]\"></ng-content>\n <ng-content bottom select=\"[bottom]\"></ng-content>\n <ng-content empty select=\"[empty]\"></ng-content>\n <ng-content emptyLoading select=\"[emptyLoading]\"></ng-content>\n <ng-content end select=\"[end]\"></ng-content>\n </dbx-list>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxListWrapperComponentImportsModule }, { kind: "component", type: i1$1.DbxListComponent, selector: "dbx-list", inputs: ["padded", "state", "config", "disabled", "selectionMode", "hasMore"], outputs: ["contentScrolled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2054
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2055
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseDevelopmentSchedulerListComponent, isStandalone: true, selector: "dbx-firebase-development-scheduler-list", providers: provideDbxListViewWrapper(DbxFirebaseDevelopmentSchedulerListComponent), usesInheritance: true, ngImport: i0, template: "\n <dbx-list [state]=\"currentState$\" [config]=\"configSignal()\" [hasMore]=\"hasMore()\" [disabled]=\"disabled()\" [selectionMode]=\"selectionModeSignal()\">\n <ng-content top select=\"[top]\"></ng-content>\n <ng-content bottom select=\"[bottom]\"></ng-content>\n <ng-content empty select=\"[empty]\"></ng-content>\n <ng-content emptyLoading select=\"[emptyLoading]\"></ng-content>\n <ng-content end select=\"[end]\"></ng-content>\n </dbx-list>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxListWrapperComponentImportsModule }, { kind: "component", type: i1$1.DbxListComponent, selector: "dbx-list", inputs: ["padded", "state", "config", "disabled", "selectionMode", "hasMore"], outputs: ["contentScrolled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1659
2056
  }
1660
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerListComponent, decorators: [{
2057
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerListComponent, decorators: [{
1661
2058
  type: Component,
1662
2059
  args: [{
1663
2060
  selector: 'dbx-firebase-development-scheduler-list',
@@ -1673,10 +2070,10 @@ class DbxFirebaseDevelopmentSchedulerListViewComponent extends AbstractDbxSelect
1673
2070
  componentClass: DbxFirebaseDevelopmentSchedulerListViewItemComponent,
1674
2071
  mapValuesToItemValues: (x) => of(x.map((y) => ({ ...y, icon: y.icon, itemValue: y })))
1675
2072
  };
1676
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerListViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1677
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseDevelopmentSchedulerListViewComponent, isStandalone: true, selector: "dbx-firebase-development-scheduler-list-view", providers: provideDbxListView(DbxFirebaseDevelopmentSchedulerListViewComponent), usesInheritance: true, ngImport: i0, template: "<dbx-selection-list-view [config]=\"config\"></dbx-selection-list-view>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxSelectionValueListViewComponentImportsModule }, { kind: "component", type: i1$1.DbxSelectionValueListViewComponent, selector: "dbx-selection-list-view" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2073
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerListViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2074
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseDevelopmentSchedulerListViewComponent, isStandalone: true, selector: "dbx-firebase-development-scheduler-list-view", providers: provideDbxListView(DbxFirebaseDevelopmentSchedulerListViewComponent), usesInheritance: true, ngImport: i0, template: "<dbx-selection-list-view [config]=\"config\"></dbx-selection-list-view>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxSelectionValueListViewComponentImportsModule }, { kind: "component", type: i1$1.DbxSelectionValueListViewComponent, selector: "dbx-selection-list-view" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1678
2075
  }
1679
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerListViewComponent, decorators: [{
2076
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerListViewComponent, decorators: [{
1680
2077
  type: Component,
1681
2078
  args: [{
1682
2079
  selector: 'dbx-firebase-development-scheduler-list-view',
@@ -1695,15 +2092,15 @@ class DbxFirebaseDevelopmentSchedulerListViewItemComponent extends AbstractDbxVa
1695
2092
  handleRun = (value, context) => {
1696
2093
  context.startWorkingWithObservable(from(this.dbxFirebaseDevelopmentSchedulerService.runScheduledFunction(this.name)));
1697
2094
  };
1698
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerListViewItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1699
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseDevelopmentSchedulerListViewItemComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
2095
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerListViewItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2096
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseDevelopmentSchedulerListViewItemComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
1700
2097
  <div dbxAction dbxActionValue useFastTriggerPreset [dbxActionHandler]="handleRun">
1701
2098
  <dbx-button dbxActionButton [text]="'Run ' + name"></dbx-button>
1702
2099
  <div *dbxActionHasSuccess="3000" class="dbx-success">Success</div>
1703
2100
  </div>
1704
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i2.DbxActionDirective, selector: "dbx-action,[dbxAction]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i2.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i2.DbxActionValueDirective, selector: "dbxActionValue,[dbxActionValue]", inputs: ["dbxActionValue"] }, { kind: "directive", type: i2.DbxActionHasSuccessDirective, selector: "[dbxActionHasSuccess]", inputs: ["dbxActionHasSuccess"] }, { kind: "directive", type: i2.DbxActionButtonDirective, selector: "[dbxActionButton]" }, { kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "mode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2101
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i2.DbxActionDirective, selector: "dbx-action,[dbxAction]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i2.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i2.DbxActionValueDirective, selector: "dbxActionValue,[dbxActionValue]", inputs: ["dbxActionValue"] }, { kind: "directive", type: i2.DbxActionHasSuccessDirective, selector: "[dbxActionHasSuccess]", inputs: ["dbxActionHasSuccess"] }, { kind: "directive", type: i2.DbxActionButtonDirective, selector: "[dbxActionButton]" }, { kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "allowClickPropagation", "mode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1705
2102
  }
1706
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerListViewItemComponent, decorators: [{
2103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerListViewItemComponent, decorators: [{
1707
2104
  type: Component,
1708
2105
  args: [{
1709
2106
  template: `
@@ -1719,6 +2116,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1719
2116
  }] });
1720
2117
 
1721
2118
  const DEVELOPMENT_FIREBASE_SERVER_SCHEDULER_WIDGET_KEY = 'DEVELOPMENT_FIREBASE_SERVER_SCHEDULER_WIDGET';
2119
+ /**
2120
+ * Creates a development widget entry for the Firebase server scheduler, allowing scheduled tasks to be triggered from the development UI.
2121
+ *
2122
+ * @returns A DbxFirebaseDevelopmentWidgetEntry for the scheduler widget.
2123
+ */
1722
2124
  function developmentFirebaseServerSchedulerWidgetEntry() {
1723
2125
  return {
1724
2126
  label: 'Run Scheduled Task',
@@ -1732,14 +2134,14 @@ class DbxFirebaseDevelopmentSchedulerWidgetComponent {
1732
2134
  dbxFirebaseDevelopmentSchedulerService = inject(DbxFirebaseDevelopmentSchedulerService);
1733
2135
  entries$ = this.dbxFirebaseDevelopmentSchedulerService.schedulerList$;
1734
2136
  state$ = loadingStateFromObs(this.entries$);
1735
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1736
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseDevelopmentSchedulerWidgetComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
2137
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2138
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseDevelopmentSchedulerWidgetComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
1737
2139
  <div>
1738
2140
  <dbx-firebase-development-scheduler-list [state]="state$"></dbx-firebase-development-scheduler-list>
1739
2141
  </div>
1740
2142
  `, isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseDevelopmentSchedulerListComponent, selector: "dbx-firebase-development-scheduler-list" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1741
2143
  }
1742
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerWidgetComponent, decorators: [{
2144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerWidgetComponent, decorators: [{
1743
2145
  type: Component,
1744
2146
  args: [{
1745
2147
  template: `
@@ -1786,10 +2188,10 @@ class DbxFirebaseEmulatorService {
1786
2188
  }
1787
2189
  : undefined;
1788
2190
  }
1789
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseEmulatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1790
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseEmulatorService });
2191
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseEmulatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2192
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseEmulatorService });
1791
2193
  }
1792
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseEmulatorService, decorators: [{
2194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseEmulatorService, decorators: [{
1793
2195
  type: Injectable
1794
2196
  }] });
1795
2197
 
@@ -1804,7 +2206,7 @@ class DbxFirebaseDevelopmentPopupContentComponent {
1804
2206
  entries = this.dbxFirebaseDevelopmentWidgetService.getEntries();
1805
2207
  _activeEntrySelector = completeOnDestroy(new BehaviorSubject(DEVELOPMENT_FIREBASE_SERVER_SCHEDULER_WIDGET_KEY));
1806
2208
  isLoggedIn$ = this.dbxAuthService.isLoggedIn$;
1807
- entries$ = this.isLoggedIn$.pipe(distinctUntilChanged(), map((isLoggedIn) => this.entries), shareReplay(1));
2209
+ entries$ = this.isLoggedIn$.pipe(distinctUntilChanged(), map((_isLoggedIn) => this.entries), shareReplay(1));
1808
2210
  formConfig$ = this.entries$.pipe(map((entries) => ({ entries })));
1809
2211
  activeEntrySelector$ = this._activeEntrySelector.pipe(distinctUntilChanged());
1810
2212
  currentActiveEntry$ = combineLatest([this.entries$, this.activeEntrySelector$]).pipe(map(([entries, selector]) => (selector ? entries.find((e) => e.widget.type === selector) : undefined)), shareReplay(1));
@@ -1818,7 +2220,7 @@ class DbxFirebaseDevelopmentPopupContentComponent {
1818
2220
  schedulerIntervalSignal = toSignal(this.schedulerInterval$);
1819
2221
  schedulerErrorSignal = toSignal(this.schedulerError$);
1820
2222
  activeEntrySignal = toSignal(this.activeEntry$);
1821
- rightTitleSignal = computed(() => this.activeEntrySignal()?.label, ...(ngDevMode ? [{ debugName: "rightTitleSignal" }] : []));
2223
+ rightTitleSignal = computed(() => this.activeEntrySignal()?.label, ...(ngDevMode ? [{ debugName: "rightTitleSignal" }] : /* istanbul ignore next */ []));
1822
2224
  widgetConfigSignal = computed(() => {
1823
2225
  const widget = this.activeEntrySignal()?.widget;
1824
2226
  let widgetConfig = undefined;
@@ -1826,7 +2228,7 @@ class DbxFirebaseDevelopmentPopupContentComponent {
1826
2228
  widgetConfig = { type: widget.type, data: undefined };
1827
2229
  }
1828
2230
  return widgetConfig;
1829
- }, ...(ngDevMode ? [{ debugName: "widgetConfigSignal" }] : []));
2231
+ }, ...(ngDevMode ? [{ debugName: "widgetConfigSignal" }] : /* istanbul ignore next */ []));
1830
2232
  constructor() {
1831
2233
  this.twoColumnsContextStore.setShowRight(this.showRight$);
1832
2234
  cleanSubscription(this.twoColumnsContextStore.back$.subscribe(() => {
@@ -1843,10 +2245,10 @@ class DbxFirebaseDevelopmentPopupContentComponent {
1843
2245
  clearSelection() {
1844
2246
  this._activeEntrySelector.next(undefined);
1845
2247
  }
1846
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentPopupContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1847
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DbxFirebaseDevelopmentPopupContentComponent, isStandalone: true, selector: "dbx-firebase-development-popup-content", providers: [TwoColumnsContextStore], ngImport: i0, template: "<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): {{ schedulerRunningSignal() }} : {{ schedulerIntervalSignal() }}s : {{ schedulerErrorSignal() }}</p>\n <div>\n @if (showEmulatorButton) {\n <dbx-anchor [anchor]=\"emulatorUIAnchor\">\n <button mat-flat-button color=\"accent\">Emulator Enabled</button>\n </dbx-anchor>\n }\n </div>\n </div>\n <div>\n <h4>Tools</h4>\n <div dbxAction dbxActionEnforceModified dbxActionAutoTrigger useInstantTriggerPreset [dbxActionHandler]=\"handleFormUpdate\">\n <dbx-firebase-development-popup-content-form [config]=\"formConfig$\" dbxActionForm [dbxActionFormIsModified]=\"isFormModified\" [dbxFormSource]=\"formData$\" dbxFormSourceMode=\"always\"></dbx-firebase-development-popup-content-form>\n </div>\n </div>\n </dbx-two-block>\n <dbx-two-column-right right [header]=\"rightTitleSignal()\">\n <dbx-widget-view [config]=\"widgetConfigSignal()\"></dbx-widget-view>\n </dbx-two-column-right>\n</dbx-two-column>\n", styles: [".dbx-firebase-development-popup-content{height:400px;overflow:hidden}\n"], dependencies: [{ kind: "component", type: DbxAnchorComponent, selector: "dbx-anchor, [dbx-anchor]", inputs: ["block"] }, { kind: "directive", type: DbxTwoColumnFullLeftDirective, selector: "[dbxTwoColumnFullLeft]", inputs: ["dbxTwoColumnFullLeft"] }, { kind: "component", type: DbxWidgetViewComponent, selector: "dbx-widget-view", inputs: ["config"] }, { kind: "component", type: DbxTwoColumnComponent, selector: "dbx-two-column", inputs: ["reverseSizing", "inSectionPage", "hasRightContent"], exportAs: ["columns"] }, { kind: "component", type: DbxTwoBlockComponent, selector: "dbx-two-block", inputs: ["fixedTop"] }, { kind: "component", type: DbxTwoColumnRightComponent, selector: "dbx-two-column-right", inputs: ["full", "header", "block", "showBack", "minRightWidth"] }, { kind: "component", type: DbxFirebaseDevelopmentPopupContentFormComponent, selector: "dbx-firebase-development-popup-content-form" }, { kind: "directive", type: DbxActionDirective, selector: "dbx-action,[dbxAction]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: DbxActionEnforceModifiedDirective, selector: "[dbxActionEnforceModified]", inputs: ["dbxActionEnforceModified"] }, { kind: "directive", type: DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: DbxActionFormDirective, selector: "[dbxActionForm]", inputs: ["dbxActionFormDisabledOnWorking", "dbxActionFormIsValid", "dbxActionFormIsEqual", "dbxActionFormIsModified", "dbxActionFormMapValue"] }, { kind: "directive", type: DbxFormSourceDirective, selector: "[dbxFormSource]", inputs: ["dbxFormSourceMode", "dbxFormSource"] }, { kind: "directive", type: DbxActionAutoTriggerDirective, selector: "dbxActionAutoTrigger,[dbxActionAutoTrigger]", inputs: ["triggerDebounce", "triggerThrottle", "triggerErrorThrottle", "maxErrorsForThrottle", "triggerLimit", "dbxActionAutoTrigger", "useFastTriggerPreset", "useInstantTriggerPreset"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }] });
2248
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentPopupContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2249
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.3", type: DbxFirebaseDevelopmentPopupContentComponent, isStandalone: true, selector: "dbx-firebase-development-popup-content", providers: [TwoColumnsContextStore], ngImport: i0, template: "<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): {{ schedulerRunningSignal() }} : {{ schedulerIntervalSignal() }}s : {{ schedulerErrorSignal() }}</p>\n <div>\n @if (showEmulatorButton) {\n <dbx-anchor [anchor]=\"emulatorUIAnchor\">\n <button mat-flat-button color=\"accent\">Emulator Enabled</button>\n </dbx-anchor>\n }\n </div>\n </div>\n <div>\n <h4>Tools</h4>\n <div dbxAction dbxActionEnforceModified dbxActionAutoTrigger useInstantTriggerPreset [dbxActionHandler]=\"handleFormUpdate\">\n <dbx-firebase-development-popup-content-form [config]=\"formConfig$\" dbxActionForm [dbxActionFormIsModified]=\"isFormModified\" [dbxFormSource]=\"formData$\" dbxFormSourceMode=\"always\"></dbx-firebase-development-popup-content-form>\n </div>\n </div>\n </dbx-two-block>\n <dbx-two-column-right right [header]=\"rightTitleSignal()\">\n <dbx-widget-view [config]=\"widgetConfigSignal()\"></dbx-widget-view>\n </dbx-two-column-right>\n</dbx-two-column>\n", styles: [".dbx-firebase-development-popup-content{height:400px;overflow:hidden}\n"], dependencies: [{ kind: "component", type: DbxAnchorComponent, selector: "dbx-anchor, [dbx-anchor]", inputs: ["block"] }, { kind: "directive", type: DbxTwoColumnFullLeftDirective, selector: "[dbxTwoColumnFullLeft]", inputs: ["dbxTwoColumnFullLeft"] }, { kind: "component", type: DbxWidgetViewComponent, selector: "dbx-widget-view", inputs: ["config"] }, { kind: "component", type: DbxTwoColumnComponent, selector: "dbx-two-column", inputs: ["reverseSizing", "inSectionPage", "hasRightContent"], exportAs: ["columns"] }, { kind: "component", type: DbxTwoBlockComponent, selector: "dbx-two-block", inputs: ["fixedTop"] }, { kind: "component", type: DbxTwoColumnRightComponent, selector: "dbx-two-column-right", inputs: ["full", "header", "block", "showBack", "minRightWidth"] }, { kind: "component", type: DbxFirebaseDevelopmentPopupContentFormComponent, selector: "dbx-firebase-development-popup-content-form" }, { kind: "directive", type: DbxActionDirective, selector: "dbx-action,[dbxAction]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: DbxActionEnforceModifiedDirective, selector: "[dbxActionEnforceModified]", inputs: ["dbxActionEnforceModified"] }, { kind: "directive", type: DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: DbxActionFormDirective, selector: "[dbxActionForm]", inputs: ["dbxActionFormDisabledOnWorking", "dbxActionFormIsValid", "dbxActionFormIsEqual", "dbxActionFormIsModified", "dbxActionFormMapValue"] }, { kind: "directive", type: DbxFormSourceDirective, selector: "[dbxFormSource]", inputs: ["dbxFormSourceMode", "dbxFormSource"] }, { kind: "directive", type: DbxActionAutoTriggerDirective, selector: "dbxActionAutoTrigger,[dbxActionAutoTrigger]", inputs: ["triggerDebounce", "triggerThrottle", "triggerErrorThrottle", "maxErrorsForThrottle", "triggerLimit", "dbxActionAutoTrigger", "useFastTriggerPreset", "useInstantTriggerPreset"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }] });
1848
2250
  }
1849
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentPopupContentComponent, decorators: [{
2251
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentPopupContentComponent, decorators: [{
1850
2252
  type: Component,
1851
2253
  args: [{ selector: 'dbx-firebase-development-popup-content', imports: [DbxAnchorComponent, DbxTwoColumnFullLeftDirective, DbxWidgetViewComponent, DbxTwoColumnComponent, DbxTwoBlockComponent, DbxTwoColumnRightComponent, DbxWidgetViewComponent, DbxFirebaseDevelopmentPopupContentFormComponent, DbxActionDirective, DbxActionEnforceModifiedDirective, DbxActionHandlerDirective, DbxActionFormDirective, DbxFormSourceDirective, DbxActionAutoTriggerDirective, MatButtonModule], providers: [TwoColumnsContextStore], standalone: true, template: "<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): {{ schedulerRunningSignal() }} : {{ schedulerIntervalSignal() }}s : {{ schedulerErrorSignal() }}</p>\n <div>\n @if (showEmulatorButton) {\n <dbx-anchor [anchor]=\"emulatorUIAnchor\">\n <button mat-flat-button color=\"accent\">Emulator Enabled</button>\n </dbx-anchor>\n }\n </div>\n </div>\n <div>\n <h4>Tools</h4>\n <div dbxAction dbxActionEnforceModified dbxActionAutoTrigger useInstantTriggerPreset [dbxActionHandler]=\"handleFormUpdate\">\n <dbx-firebase-development-popup-content-form [config]=\"formConfig$\" dbxActionForm [dbxActionFormIsModified]=\"isFormModified\" [dbxFormSource]=\"formData$\" dbxFormSourceMode=\"always\"></dbx-firebase-development-popup-content-form>\n </div>\n </div>\n </dbx-two-block>\n <dbx-two-column-right right [header]=\"rightTitleSignal()\">\n <dbx-widget-view [config]=\"widgetConfigSignal()\"></dbx-widget-view>\n </dbx-two-column-right>\n</dbx-two-column>\n", styles: [".dbx-firebase-development-popup-content{height:400px;overflow:hidden}\n"] }]
1852
2254
  }], ctorParameters: () => [] });
@@ -1868,15 +2270,15 @@ class DbxFirebaseDevelopmentPopupComponent extends AbstractPopupDirective {
1868
2270
  reopen = () => {
1869
2271
  DbxFirebaseDevelopmentPopupComponent.openPopup(this.popupService, this.popup.key);
1870
2272
  };
1871
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1872
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: DbxFirebaseDevelopmentPopupComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "content", first: true, predicate: DbxFirebaseDevelopmentPopupContentComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
2273
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2274
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.3", type: DbxFirebaseDevelopmentPopupComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "content", first: true, predicate: DbxFirebaseDevelopmentPopupContentComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
1873
2275
  <dbx-popup-content>
1874
2276
  <dbx-popup-controls [header]="header" controls></dbx-popup-controls>
1875
2277
  <dbx-firebase-development-popup-content (shouldClose)="closePopup()"></dbx-firebase-development-popup-content>
1876
2278
  </dbx-popup-content>
1877
2279
  `, isInline: true, dependencies: [{ kind: "component", type: DbxPopupContentComponent, selector: "dbx-popup-content" }, { kind: "component", type: DbxPopupControlsComponent, selector: "dbx-popup-controls", inputs: ["header"] }, { kind: "component", type: DbxFirebaseDevelopmentPopupContentComponent, selector: "dbx-firebase-development-popup-content" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1878
2280
  }
1879
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentPopupComponent, decorators: [{
2281
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentPopupComponent, decorators: [{
1880
2282
  type: Component,
1881
2283
  args: [{
1882
2284
  template: `
@@ -1902,10 +2304,10 @@ const DEFAULT_FIREBASE_DEVELOPMENT_ENABLED_TOKEN = new InjectionToken('DefaultDb
1902
2304
  */
1903
2305
  class DbxFirebaseDevelopmentService {
1904
2306
  enabled = inject(DEFAULT_FIREBASE_DEVELOPMENT_ENABLED_TOKEN, { optional: true }) ?? false;
1905
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1906
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentService });
2307
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2308
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentService });
1907
2309
  }
1908
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentService, decorators: [{
2310
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentService, decorators: [{
1909
2311
  type: Injectable
1910
2312
  }] });
1911
2313
 
@@ -1967,10 +2369,10 @@ class DbxFirebaseDevelopmentDirective {
1967
2369
  });
1968
2370
  }
1969
2371
  }
1970
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1971
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseDevelopmentDirective, isStandalone: true, selector: "[dbxFirebaseDevelopment]", host: { listeners: { "window:keydown": "handleKeyboardEvent($event)" } }, ngImport: i0 });
2372
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2373
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseDevelopmentDirective, isStandalone: true, selector: "[dbxFirebaseDevelopment]", host: { listeners: { "window:keydown": "handleKeyboardEvent($event)" } }, ngImport: i0 });
1972
2374
  }
1973
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentDirective, decorators: [{
2375
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentDirective, decorators: [{
1974
2376
  type: Directive,
1975
2377
  args: [{
1976
2378
  selector: '[dbxFirebaseDevelopment]',
@@ -1981,7 +2383,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1981
2383
  args: ['window:keydown', ['$event']]
1982
2384
  }] } });
1983
2385
 
1984
- const importsAndExports$2 = [
2386
+ const importsAndExports$1 = [
1985
2387
  //
1986
2388
  DbxFirebaseDevelopmentPopupContentFormComponent,
1987
2389
  DbxFirebaseDevelopmentDirective,
@@ -1996,8 +2398,8 @@ const importsAndExports$2 = [
1996
2398
  * Contains components related to logging in.
1997
2399
  */
1998
2400
  class DbxFirebaseDevelopmentModule {
1999
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2000
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentModule, imports: [
2401
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2402
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentModule, imports: [
2001
2403
  //
2002
2404
  DbxFirebaseDevelopmentPopupContentFormComponent,
2003
2405
  DbxFirebaseDevelopmentDirective,
@@ -2016,7 +2418,7 @@ class DbxFirebaseDevelopmentModule {
2016
2418
  DbxFirebaseDevelopmentSchedulerListComponent,
2017
2419
  DbxFirebaseDevelopmentSchedulerListViewComponent,
2018
2420
  DbxFirebaseDevelopmentSchedulerListViewItemComponent] });
2019
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentModule, imports: [
2421
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentModule, imports: [
2020
2422
  //
2021
2423
  DbxFirebaseDevelopmentPopupContentFormComponent,
2022
2424
  DbxFirebaseDevelopmentPopupComponent,
@@ -2026,11 +2428,11 @@ class DbxFirebaseDevelopmentModule {
2026
2428
  DbxFirebaseDevelopmentSchedulerListViewComponent,
2027
2429
  DbxFirebaseDevelopmentSchedulerListViewItemComponent] });
2028
2430
  }
2029
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDevelopmentModule, decorators: [{
2431
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDevelopmentModule, decorators: [{
2030
2432
  type: NgModule,
2031
2433
  args: [{
2032
- imports: importsAndExports$2,
2033
- exports: importsAndExports$2
2434
+ imports: importsAndExports$1,
2435
+ exports: importsAndExports$1
2034
2436
  }]
2035
2437
  }] });
2036
2438
 
@@ -2326,10 +2728,10 @@ function provideDbxFirestoreCollection(config) {
2326
2728
  */
2327
2729
  class DbxFirestoreContextService {
2328
2730
  firestoreContext = inject(DBX_FIRESTORE_CONTEXT_TOKEN);
2329
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirestoreContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2330
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirestoreContextService, providedIn: 'root' });
2731
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirestoreContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2732
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirestoreContextService, providedIn: 'root' });
2331
2733
  }
2332
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirestoreContextService, decorators: [{
2734
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirestoreContextService, decorators: [{
2333
2735
  type: Injectable,
2334
2736
  args: [{
2335
2737
  providedIn: 'root'
@@ -2386,6 +2788,13 @@ function provideDbxFirebaseFunctions(config) {
2386
2788
  return makeEnvironmentProviders(providers);
2387
2789
  }
2388
2790
 
2791
+ /**
2792
+ * Creates a {@link DbxFirebaseCollectionChangeWatcherInstance} that monitors a store's query for document changes and can trigger actions based on those changes.
2793
+ *
2794
+ * @param store - The collection loader accessor to watch for changes.
2795
+ * @param initialMode - The initial trigger mode ('auto' or 'off'). Defaults to 'off'.
2796
+ * @returns A new change watcher instance with observable change state and configurable trigger mode.
2797
+ */
2389
2798
  function dbxFirebaseCollectionChangeWatcher(store, initialMode) {
2390
2799
  const _mode = new BehaviorSubject(initialMode ?? 'off');
2391
2800
  const _sub = new SubscriptionObject();
@@ -2485,6 +2894,13 @@ function dbxFirebaseCollectionChangeTriggerForStore(store, triggerFunction) {
2485
2894
  })
2486
2895
  });
2487
2896
  }
2897
+ /**
2898
+ * Creates a {@link DbxFirebaseCollectionChangeTriggerInstance} for an existing watcher without taking ownership of its lifecycle.
2899
+ *
2900
+ * @param watcher - The collection change watcher to attach the trigger to.
2901
+ * @param triggerFunction - Optional custom trigger function. Defaults to restarting the store.
2902
+ * @returns A new trigger instance bound to the given watcher.
2903
+ */
2488
2904
  function dbxFirebaseCollectionChangeTriggerForWatcher(watcher, triggerFunction) {
2489
2905
  return dbxFirebaseCollectionChangeTrigger({
2490
2906
  watcher,
@@ -2492,6 +2908,12 @@ function dbxFirebaseCollectionChangeTriggerForWatcher(watcher, triggerFunction)
2492
2908
  triggerFunction
2493
2909
  });
2494
2910
  }
2911
+ /**
2912
+ * Creates a new {@link DbxFirebaseCollectionChangeTriggerInstance} from the provided configuration.
2913
+ *
2914
+ * @param config - Configuration specifying the watcher, lifecycle options, and trigger function.
2915
+ * @returns A new trigger instance ready to be initialized.
2916
+ */
2495
2917
  function dbxFirebaseCollectionChangeTrigger(config) {
2496
2918
  return new DbxFirebaseCollectionChangeTriggerInstance(config);
2497
2919
  }
@@ -2712,9 +3134,21 @@ class DbxFirebaseCollectionLoaderInstance {
2712
3134
  return this.accumulator$.pipe(switchMap((accumulator) => iteratorNextPageUntilMaxPageLoadLimit(accumulator.itemIteration)));
2713
3135
  }
2714
3136
  }
3137
+ /**
3138
+ * Creates a new {@link DbxFirebaseCollectionLoaderInstance} from the given configuration.
3139
+ *
3140
+ * @param config - Initial configuration including collection, constraints, pagination, and mode settings.
3141
+ * @returns A new collection loader instance.
3142
+ */
2715
3143
  function dbxFirebaseCollectionLoaderInstance(config) {
2716
3144
  return new DbxFirebaseCollectionLoaderInstance(config);
2717
3145
  }
3146
+ /**
3147
+ * Convenience function that creates a {@link DbxFirebaseCollectionLoaderInstance} initialized with the given Firestore collection.
3148
+ *
3149
+ * @param collection - The Firestore collection to load from.
3150
+ * @returns A new collection loader instance using the specified collection.
3151
+ */
2718
3152
  function dbxFirebaseCollectionLoaderInstanceWithCollection(collection) {
2719
3153
  return new DbxFirebaseCollectionLoaderInstance({ collection });
2720
3154
  }
@@ -2764,9 +3198,21 @@ class DbxLimitedFirebaseDocumentLoaderInstance {
2764
3198
  this._sub.subscription = useAsObservable(docs, (x) => this._documents.next(asArray(x)));
2765
3199
  }
2766
3200
  }
3201
+ /**
3202
+ * Creates a new {@link DbxLimitedFirebaseDocumentLoaderInstance} from the given configuration.
3203
+ *
3204
+ * @param config - Configuration providing the limited document accessor.
3205
+ * @returns A new limited document loader instance.
3206
+ */
2767
3207
  function dbxLimitedFirebaseDocumentLoaderInstance(config) {
2768
3208
  return new DbxLimitedFirebaseDocumentLoaderInstance(config);
2769
3209
  }
3210
+ /**
3211
+ * Convenience function that creates a {@link DbxLimitedFirebaseDocumentLoaderInstance} initialized with the given accessor.
3212
+ *
3213
+ * @param accessor - The limited Firestore document accessor to use.
3214
+ * @returns A new limited document loader instance.
3215
+ */
2770
3216
  function dbxLimitedFirebaseDocumentLoaderInstanceWithAccessor(accessor) {
2771
3217
  return new DbxLimitedFirebaseDocumentLoaderInstance({ accessor });
2772
3218
  }
@@ -2776,13 +3222,31 @@ class DbxFirebaseDocumentLoaderInstance extends DbxLimitedFirebaseDocumentLoader
2776
3222
  this.setDocuments(asObservable(ids).pipe(map((x) => loadDocumentsForIds(this.accessor, asArray(x)))));
2777
3223
  }
2778
3224
  }
3225
+ /**
3226
+ * Creates a new {@link DbxFirebaseDocumentLoaderInstance} from the given configuration.
3227
+ *
3228
+ * @param config - Configuration providing the full document accessor.
3229
+ * @returns A new document loader instance with full accessor capabilities.
3230
+ */
2779
3231
  function dbxFirebaseDocumentLoaderInstance(config) {
2780
3232
  return new DbxFirebaseDocumentLoaderInstance(config);
2781
3233
  }
3234
+ /**
3235
+ * Convenience function that creates a {@link DbxFirebaseDocumentLoaderInstance} initialized with the given accessor.
3236
+ *
3237
+ * @param accessor - The full Firestore document accessor to use.
3238
+ * @returns A new document loader instance.
3239
+ */
2782
3240
  function dbxFirebaseDocumentLoaderInstanceWithAccessor(accessor) {
2783
3241
  return new DbxFirebaseDocumentLoaderInstance({ accessor });
2784
3242
  }
2785
3243
 
3244
+ /**
3245
+ * Factory function that creates typed model service instance accessors from an observable context.
3246
+ *
3247
+ * @param context$ - Observable of the in-context Firebase models service.
3248
+ * @returns A factory function for creating model service instances by type and key.
3249
+ */
2786
3250
  function dbxFirebaseInContextFirebaseModelServiceInstanceFactory(context$) {
2787
3251
  return (type, keyObs) => {
2788
3252
  const key$ = asObservable(keyObs);
@@ -2794,6 +3258,9 @@ function dbxFirebaseInContextFirebaseModelServiceInstanceFactory(context$) {
2794
3258
  * Creates a new DbxFirebaseInContextFirebaseModelServiceInstance.
2795
3259
  *
2796
3260
  * Wraps an InModelContextFirebaseModelService observable and provides different piped observables.
3261
+ *
3262
+ * @param modelService$ - Observable of the in-model-context Firebase model service to wrap.
3263
+ * @returns A DbxFirebaseInContextFirebaseModelServiceInstance with derived observables for model data, roles, and permissions.
2797
3264
  */
2798
3265
  function dbxFirebaseInContextFirebaseModelServiceInstance(modelService$) {
2799
3266
  const key$ = modelService$.pipe(map((x) => x.model.key));
@@ -2804,7 +3271,7 @@ function dbxFirebaseInContextFirebaseModelServiceInstance(modelService$) {
2804
3271
  function snapshotStream(mode) {
2805
3272
  return model$.pipe(switchMap((x) => x.snapshotStream(mode)), shareReplay(1));
2806
3273
  }
2807
- function snapshotDataStream(mode, options) {
3274
+ function snapshotDataStream(mode, _options) {
2808
3275
  return model$.pipe(switchMap((x) => x.snapshotDataStream(mode)), shareReplay(1));
2809
3276
  }
2810
3277
  // MARK: Roles
@@ -2859,6 +3326,12 @@ function dbxFirebaseInContextFirebaseModelServiceInstance(modelService$) {
2859
3326
  */
2860
3327
  class DbxFirebaseModelContextService {
2861
3328
  }
3329
+ /**
3330
+ * Creates a factory that resolves model info instances by looking up the collection type from a model key and delegating to the model service.
3331
+ *
3332
+ * @param config - Configuration providing the model service factory and entity map observable.
3333
+ * @returns A factory function that creates model info instances from observable model keys.
3334
+ */
2862
3335
  function dbxFirebaseModelContextServiceInfoInstanceFactory(config) {
2863
3336
  const { modelService, entityMap$ } = config;
2864
3337
  return (keyObs) => {
@@ -2932,9 +3405,10 @@ class DbxFirebaseModelTypesServiceConfig {
2932
3405
  class DbxFirebaseModelTypesService {
2933
3406
  dbxFirebaseModelContextService = inject(DbxFirebaseModelContextService);
2934
3407
  dbxModelTypesService = inject((DbxModelTypesService));
2935
- constructor(initialConfig) {
2936
- if (initialConfig.entries) {
2937
- this.register(initialConfig.entries);
3408
+ _initialConfig = inject(DbxFirebaseModelTypesServiceConfig);
3409
+ constructor() {
3410
+ if (this._initialConfig.entries) {
3411
+ this.register(this._initialConfig.entries);
2938
3412
  }
2939
3413
  }
2940
3414
  getDisplayInfo(typeInfo, data) {
@@ -2979,21 +3453,31 @@ class DbxFirebaseModelTypesService {
2979
3453
  instancePairsForKeys(keys) {
2980
3454
  return dbxFirebaseModelTypesServiceInstancePairForKeysFactory(this)(keys);
2981
3455
  }
2982
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelTypesService, deps: [{ token: DbxFirebaseModelTypesServiceConfig }], target: i0.ɵɵFactoryTarget.Injectable });
2983
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelTypesService });
3456
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelTypesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3457
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelTypesService });
2984
3458
  }
2985
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelTypesService, decorators: [{
3459
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelTypesService, decorators: [{
2986
3460
  type: Injectable
2987
- }], ctorParameters: () => [{ type: DbxFirebaseModelTypesServiceConfig, decorators: [{
2988
- type: Inject,
2989
- args: [DbxFirebaseModelTypesServiceConfig]
2990
- }] }] });
3461
+ }], ctorParameters: () => [] });
3462
+ /**
3463
+ * Creates a factory function that produces an observable of instance pairs for the given model keys.
3464
+ *
3465
+ * @param service - The model types service used to resolve type info and instances.
3466
+ * @returns A factory that accepts model keys and returns an Observable of instance pairs with display info and segue refs.
3467
+ */
2991
3468
  function dbxFirebaseModelTypesServiceInstancePairForKeysFactory(service) {
2992
3469
  return (keys) => {
2993
3470
  const instances = asArray(keys).map((x) => service.instanceForKey(x).safeInstancePair$);
2994
3471
  return instances.length ? combineLatest(instances).pipe(filterMaybeArray(), shareReplay(1)) : of([]);
2995
3472
  };
2996
3473
  }
3474
+ /**
3475
+ * Creates a {@link DbxFirebaseModelTypesServiceInstance} that provides observables for type info, display info, segue refs, and instance pairs for a single model.
3476
+ *
3477
+ * @param modelInfoInstance$ - Observable of the model info service instance providing data and role access.
3478
+ * @param dbxFirebaseModelTypesService - The model types service for resolving type configurations and display info.
3479
+ * @returns A DbxFirebaseModelTypesServiceInstance with derived observables.
3480
+ */
2997
3481
  function dbxFirebaseModelTypesServiceInstance(modelInfoInstance$, dbxFirebaseModelTypesService) {
2998
3482
  const key$ = modelInfoInstance$.pipe(switchMap((x) => x.key$));
2999
3483
  const modelType$ = modelInfoInstance$.pipe(switchMap((x) => x.modelType$));
@@ -3075,10 +3559,10 @@ class DbxFirebaseModelTrackerService {
3075
3559
  const historyKeys$ = this.loadHistoryKeys();
3076
3560
  return historyKeys$.pipe(switchMap((x) => this.dbxFirebaseModelTypesService.instancePairsForKeys(x)));
3077
3561
  }
3078
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelTrackerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3079
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelTrackerService, providedIn: 'root' });
3562
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelTrackerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3563
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelTrackerService, providedIn: 'root' });
3080
3564
  }
3081
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelTrackerService, decorators: [{
3565
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelTrackerService, decorators: [{
3082
3566
  type: Injectable,
3083
3567
  args: [{
3084
3568
  providedIn: 'root'
@@ -3095,10 +3579,10 @@ class DbxFirebaseModelTypeInstanceListComponent extends AbstractDbxSelectionList
3095
3579
  defaultSelectionMode: 'view'
3096
3580
  });
3097
3581
  }
3098
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelTypeInstanceListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3099
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseModelTypeInstanceListComponent, isStandalone: true, selector: "dbx-firebase-model-type-instance-list", providers: provideDbxListViewWrapper(DbxFirebaseModelTypeInstanceListComponent), usesInheritance: true, ngImport: i0, template: "\n <dbx-list [state]=\"currentState$\" [config]=\"configSignal()\" [hasMore]=\"hasMore()\" [disabled]=\"disabled()\" [selectionMode]=\"selectionModeSignal()\">\n <ng-content top select=\"[top]\"></ng-content>\n <ng-content bottom select=\"[bottom]\"></ng-content>\n <ng-content empty select=\"[empty]\"></ng-content>\n <ng-content emptyLoading select=\"[emptyLoading]\"></ng-content>\n <ng-content end select=\"[end]\"></ng-content>\n </dbx-list>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxListWrapperComponentImportsModule }, { kind: "component", type: i1$1.DbxListComponent, selector: "dbx-list", inputs: ["padded", "state", "config", "disabled", "selectionMode", "hasMore"], outputs: ["contentScrolled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3582
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelTypeInstanceListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3583
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseModelTypeInstanceListComponent, isStandalone: true, selector: "dbx-firebase-model-type-instance-list", providers: provideDbxListViewWrapper(DbxFirebaseModelTypeInstanceListComponent), usesInheritance: true, ngImport: i0, template: "\n <dbx-list [state]=\"currentState$\" [config]=\"configSignal()\" [hasMore]=\"hasMore()\" [disabled]=\"disabled()\" [selectionMode]=\"selectionModeSignal()\">\n <ng-content top select=\"[top]\"></ng-content>\n <ng-content bottom select=\"[bottom]\"></ng-content>\n <ng-content empty select=\"[empty]\"></ng-content>\n <ng-content emptyLoading select=\"[emptyLoading]\"></ng-content>\n <ng-content end select=\"[end]\"></ng-content>\n </dbx-list>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxListWrapperComponentImportsModule }, { kind: "component", type: i1$1.DbxListComponent, selector: "dbx-list", inputs: ["padded", "state", "config", "disabled", "selectionMode", "hasMore"], outputs: ["contentScrolled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3100
3584
  }
3101
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelTypeInstanceListComponent, decorators: [{
3585
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelTypeInstanceListComponent, decorators: [{
3102
3586
  type: Component,
3103
3587
  args: [{
3104
3588
  selector: 'dbx-firebase-model-type-instance-list',
@@ -3114,10 +3598,10 @@ class DbxFirebaseModelTypeInstanceListViewComponent extends AbstractDbxSelection
3114
3598
  componentClass: DbxFirebaseModelTypeInstanceListViewItemComponent,
3115
3599
  mapValuesToItemValues: (x) => of(x.map((y) => ({ itemValue: y, icon: y.displayInfo.icon ?? y.icon, anchor: y.segueRef })))
3116
3600
  };
3117
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelTypeInstanceListViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3118
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseModelTypeInstanceListViewComponent, isStandalone: true, selector: "dbx-firebase-model-type-instance-list-view", providers: provideDbxListView(DbxFirebaseModelTypeInstanceListViewComponent), usesInheritance: true, ngImport: i0, template: "<dbx-selection-list-view [config]=\"config\"></dbx-selection-list-view>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxSelectionValueListViewComponentImportsModule }, { kind: "component", type: i1$1.DbxSelectionValueListViewComponent, selector: "dbx-selection-list-view" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3601
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelTypeInstanceListViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3602
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseModelTypeInstanceListViewComponent, isStandalone: true, selector: "dbx-firebase-model-type-instance-list-view", providers: provideDbxListView(DbxFirebaseModelTypeInstanceListViewComponent), usesInheritance: true, ngImport: i0, template: "<dbx-selection-list-view [config]=\"config\"></dbx-selection-list-view>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxSelectionValueListViewComponentImportsModule }, { kind: "component", type: i1$1.DbxSelectionValueListViewComponent, selector: "dbx-selection-list-view" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3119
3603
  }
3120
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelTypeInstanceListViewComponent, decorators: [{
3604
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelTypeInstanceListViewComponent, decorators: [{
3121
3605
  type: Component,
3122
3606
  args: [{
3123
3607
  selector: 'dbx-firebase-model-type-instance-list-view',
@@ -3130,12 +3614,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
3130
3614
  }] });
3131
3615
  class DbxFirebaseModelTypeInstanceListViewItemComponent extends AbstractDbxValueListViewItemComponent {
3132
3616
  title = this.itemValue.displayInfo.title;
3133
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelTypeInstanceListViewItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3134
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseModelTypeInstanceListViewItemComponent, isStandalone: true, selector: "dbx-firebase-model-type-instance-list-view-item", usesInheritance: true, ngImport: i0, template: `
3617
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelTypeInstanceListViewItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3618
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseModelTypeInstanceListViewItemComponent, isStandalone: true, selector: "dbx-firebase-model-type-instance-list-view-item", usesInheritance: true, ngImport: i0, template: `
3135
3619
  <span>{{ title }}</span>
3136
3620
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
3137
3621
  }
3138
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelTypeInstanceListViewItemComponent, decorators: [{
3622
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelTypeInstanceListViewItemComponent, decorators: [{
3139
3623
  type: Component,
3140
3624
  args: [{
3141
3625
  selector: 'dbx-firebase-model-type-instance-list-view-item',
@@ -3149,18 +3633,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
3149
3633
 
3150
3634
  class DbxFirebaseModelHistoryComponent {
3151
3635
  dbxFirebaseModelTrackerService = inject(DbxFirebaseModelTrackerService);
3152
- anchorForItem = input(...(ngDevMode ? [undefined, { debugName: "anchorForItem" }] : []));
3153
- historyFilter = input(...(ngDevMode ? [undefined, { debugName: "historyFilter" }] : []));
3636
+ anchorForItem = input(...(ngDevMode ? [undefined, { debugName: "anchorForItem" }] : /* istanbul ignore next */ []));
3637
+ historyFilter = input(...(ngDevMode ? [undefined, { debugName: "historyFilter" }] : /* istanbul ignore next */ []));
3154
3638
  historyPairs$ = toObservable(this.historyFilter).pipe(switchMap((x) => this.dbxFirebaseModelTrackerService.filterHistoryPairs(x)), shareReplay(1));
3155
3639
  state = loadingStateFromObs(this.historyPairs$);
3156
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelHistoryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3157
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: DbxFirebaseModelHistoryComponent, isStandalone: true, selector: "dbx-firebase-model-history", inputs: { anchorForItem: { classPropertyName: "anchorForItem", publicName: "anchorForItem", isSignal: true, isRequired: false, transformFunction: null }, historyFilter: { classPropertyName: "historyFilter", publicName: "historyFilter", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
3640
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelHistoryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3641
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.3", type: DbxFirebaseModelHistoryComponent, isStandalone: true, selector: "dbx-firebase-model-history", inputs: { anchorForItem: { classPropertyName: "anchorForItem", publicName: "anchorForItem", isSignal: true, isRequired: false, transformFunction: null }, historyFilter: { classPropertyName: "historyFilter", publicName: "historyFilter", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
3158
3642
  <dbx-firebase-model-type-instance-list [state]="state" dbxListItemModifier [dbxListItemAnchorModifier]="anchorForItem()">
3159
3643
  <ng-content empty select="[empty]"></ng-content>
3160
3644
  </dbx-firebase-model-type-instance-list>
3161
3645
  `, isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseModelTypeInstanceListComponent, selector: "dbx-firebase-model-type-instance-list" }, { kind: "directive", type: DbxListItemAnchorModifierDirective, selector: "[dbxListItemAnchorModifier]", inputs: ["dbxListItemAnchorModifier"] }, { kind: "directive", type: DbxValueListItemModifierDirective, selector: "dbxListItemModifier,[dbxListItemModifier]", inputs: ["dbxListItemModifier"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3162
3646
  }
3163
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelHistoryComponent, decorators: [{
3647
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelHistoryComponent, decorators: [{
3164
3648
  type: Component,
3165
3649
  args: [{
3166
3650
  selector: 'dbx-firebase-model-history',
@@ -3199,10 +3683,10 @@ class DbxFirebaseModelHistoryPopoverComponent extends AbstractPopoverDirective {
3199
3683
  emptyText = this.config.emptyText ?? 'History is empty.';
3200
3684
  historyFilter = this.config.historyFilter;
3201
3685
  anchorForItem = this.config.anchorForItem;
3202
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelHistoryPopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3203
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseModelHistoryPopoverComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<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", dependencies: [{ kind: "component", type: DbxPopoverContentComponent, selector: "dbx-popover-content" }, { kind: "component", type: DbxPopoverHeaderComponent, selector: "dbx-popover-header", inputs: ["header", "icon"] }, { kind: "directive", type: DbxPopoverScrollContentDirective, selector: "dbx-popover-scroll-content,[dbxPopoverScrollContent],.dbx-popover-scroll-content" }, { kind: "component", type: DbxFirebaseModelHistoryComponent, selector: "dbx-firebase-model-history", inputs: ["anchorForItem", "historyFilter"] }, { kind: "component", type: DbxListEmptyContentComponent, selector: "dbx-list-empty-content" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3686
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelHistoryPopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3687
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseModelHistoryPopoverComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<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", dependencies: [{ kind: "component", type: DbxPopoverContentComponent, selector: "dbx-popover-content" }, { kind: "component", type: DbxPopoverHeaderComponent, selector: "dbx-popover-header", inputs: ["header", "icon"] }, { kind: "directive", type: DbxPopoverScrollContentDirective, selector: "dbx-popover-scroll-content,[dbxPopoverScrollContent],.dbx-popover-scroll-content" }, { kind: "component", type: DbxFirebaseModelHistoryComponent, selector: "dbx-firebase-model-history", inputs: ["anchorForItem", "historyFilter"] }, { kind: "component", type: DbxListEmptyContentComponent, selector: "dbx-list-empty-content" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3204
3688
  }
3205
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelHistoryPopoverComponent, decorators: [{
3689
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelHistoryPopoverComponent, decorators: [{
3206
3690
  type: Component,
3207
3691
  args: [{ imports: [DbxPopoverContentComponent, DbxPopoverHeaderComponent, DbxPopoverScrollContentDirective, DbxFirebaseModelHistoryComponent, DbxListEmptyContentComponent], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<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" }]
3208
3692
  }] });
@@ -3210,7 +3694,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
3210
3694
  class DbxFirebaseModelHistoryPopoverButtonComponent extends AbstractPopoverRefDirective {
3211
3695
  _dbxPopoverService = inject(DbxPopoverService);
3212
3696
  buttonElement = viewChild.required('button', { read: ElementRef });
3213
- config = input(...(ngDevMode ? [undefined, { debugName: "config" }] : []));
3697
+ config = input(...(ngDevMode ? [undefined, { debugName: "config" }] : /* istanbul ignore next */ []));
3214
3698
  _makePopoverRef(origin) {
3215
3699
  const config = this.config();
3216
3700
  if (!origin) {
@@ -3225,12 +3709,12 @@ class DbxFirebaseModelHistoryPopoverButtonComponent extends AbstractPopoverRefDi
3225
3709
  const origin = this.buttonElement();
3226
3710
  this.showPopover(origin);
3227
3711
  }
3228
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelHistoryPopoverButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3229
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: DbxFirebaseModelHistoryPopoverButtonComponent, isStandalone: true, selector: "dbx-firebase-model-history-popover-button", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "buttonElement", first: true, predicate: ["button"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
3712
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelHistoryPopoverButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3713
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.3", type: DbxFirebaseModelHistoryPopoverButtonComponent, isStandalone: true, selector: "dbx-firebase-model-history-popover-button", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "buttonElement", first: true, predicate: ["button"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
3230
3714
  <dbx-icon-button #button (buttonClick)="showHistoryPopover()" icon="history"></dbx-icon-button>
3231
3715
  `, isInline: true, dependencies: [{ kind: "component", type: DbxIconButtonComponent, selector: "dbx-icon-button" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3232
3716
  }
3233
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelHistoryPopoverButtonComponent, decorators: [{
3717
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelHistoryPopoverButtonComponent, decorators: [{
3234
3718
  type: Component,
3235
3719
  args: [{
3236
3720
  selector: 'dbx-firebase-model-history-popover-button',
@@ -3329,7 +3813,7 @@ class DbxFirebaseModelEntitiesWidgetService {
3329
3813
  }
3330
3814
  // MARK: Get
3331
3815
  getAllRegisteredWidgetIdentities() {
3332
- return Array.from(this._entries.keys());
3816
+ return [...this._entries.keys()];
3333
3817
  }
3334
3818
  getWidgetEntry(identity) {
3335
3819
  const entry = this._entries.get(identity);
@@ -3351,10 +3835,10 @@ class DbxFirebaseModelEntitiesWidgetService {
3351
3835
  getSortPriorityMap() {
3352
3836
  return this._sortPriorityMap();
3353
3837
  }
3354
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelEntitiesWidgetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3355
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelEntitiesWidgetService });
3838
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelEntitiesWidgetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3839
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelEntitiesWidgetService });
3356
3840
  }
3357
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelEntitiesWidgetService, decorators: [{
3841
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelEntitiesWidgetService, decorators: [{
3358
3842
  type: Injectable
3359
3843
  }], ctorParameters: () => [] });
3360
3844
 
@@ -3416,7 +3900,7 @@ class DbxFirebaseModelEntitiesEntityComponent {
3416
3900
  widgetInjectionConfigFactory = dbxFirebaseModelEntityWidgetInjectionConfigFactory();
3417
3901
  entitiesWidgetService = inject(DbxFirebaseModelEntitiesWidgetService);
3418
3902
  dbxFirebaseModelTypesService = inject(DbxFirebaseModelTypesService);
3419
- entity = input.required(...(ngDevMode ? [{ debugName: "entity" }] : []));
3903
+ entity = input.required(...(ngDevMode ? [{ debugName: "entity" }] : /* istanbul ignore next */ []));
3420
3904
  entity$ = toObservable(this.entity);
3421
3905
  currentEntityWithStore$ = this.entity$.pipe(map((x) => {
3422
3906
  let result;
@@ -3460,16 +3944,16 @@ class DbxFirebaseModelEntitiesEntityComponent {
3460
3944
  displayNameSignal = toSignal(this.displayName$);
3461
3945
  displayInfoSignal = toSignal(this.displayInfo$);
3462
3946
  modelIdentitySignal = toSignal(this.modelIdentity$);
3463
- modelTypeSignal = computed(() => this.modelIdentitySignal()?.modelType, ...(ngDevMode ? [{ debugName: "modelTypeSignal" }] : []));
3947
+ modelTypeSignal = computed(() => this.modelIdentitySignal()?.modelType, ...(ngDevMode ? [{ debugName: "modelTypeSignal" }] : /* istanbul ignore next */ []));
3464
3948
  widgetInjectionConfigSignal = toSignal(this.widgetInjectionConfig$);
3465
- entityWidgetConfigSignal = computed(() => this.widgetInjectionConfigSignal()?.entityComponentConfig, ...(ngDevMode ? [{ debugName: "entityWidgetConfigSignal" }] : []));
3466
- commonWidgetConfigSignal = computed(() => this.widgetInjectionConfigSignal()?.commonComponentConfig, ...(ngDevMode ? [{ debugName: "commonWidgetConfigSignal" }] : []));
3467
- debugWidgetConfigSignal = computed(() => this.widgetInjectionConfigSignal()?.debugComponentConfig, ...(ngDevMode ? [{ debugName: "debugWidgetConfigSignal" }] : []));
3949
+ entityWidgetConfigSignal = computed(() => this.widgetInjectionConfigSignal()?.entityComponentConfig, ...(ngDevMode ? [{ debugName: "entityWidgetConfigSignal" }] : /* istanbul ignore next */ []));
3950
+ commonWidgetConfigSignal = computed(() => this.widgetInjectionConfigSignal()?.commonComponentConfig, ...(ngDevMode ? [{ debugName: "commonWidgetConfigSignal" }] : /* istanbul ignore next */ []));
3951
+ debugWidgetConfigSignal = computed(() => this.widgetInjectionConfigSignal()?.debugComponentConfig, ...(ngDevMode ? [{ debugName: "debugWidgetConfigSignal" }] : /* istanbul ignore next */ []));
3468
3952
  loadingContext = cleanLoadingContext({ obs: this.loadingState$ });
3469
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelEntitiesEntityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3470
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DbxFirebaseModelEntitiesEntityComponent, isStandalone: true, selector: "dbx-firebase-model-entities-entity", inputs: { entity: { classPropertyName: "entity", publicName: "entity", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title>\n @if (displayInfoSignal(); as displayInfo) {\n <div class=\"dbx-list-two-line-item\">\n <div class=\"item-left\">\n <span class=\"dbx-pb2 dbx-flex-bar\">\n @if (displayInfo.icon) {\n <mat-icon class=\"dbx-button-spacer\">{{ displayInfo.icon }}</mat-icon>\n }\n <span>{{ displayInfo.title }}</span>\n </span>\n <span>\n <span class=\"dbx-hint dbx-small\">{{ modelTypeSignal() }}</span>\n @if (displayNameSignal(); as displayName) {\n <span class=\"dbx-small dbx-u dbx-pl2\">{{ displayName }}</span>\n }\n </span>\n </div>\n </div>\n }\n </mat-panel-title>\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <div class=\"dbx-firebase-model-entities-entity-panel-content\">\n <dbx-loading [context]=\"loadingContext\">\n @if (entityWidgetConfigSignal(); as config) {\n <div class=\"dbx-pb3 dbx-firebase-model-entities-entity-content\">\n <dbx-injection [config]=\"config\"></dbx-injection>\n </div>\n }\n @if (commonWidgetConfigSignal(); as config) {\n <div class=\"dbx-pb3 dbx-firebase-model-entities-common-content\">\n <dbx-injection [config]=\"config\"></dbx-injection>\n </div>\n }\n @if (debugWidgetConfigSignal(); as config) {\n <div class=\"dbx-pb3 dbx-firebase-model-entities-debug-content\">\n <dbx-injection [config]=\"config\"></dbx-injection>\n </div>\n }\n </dbx-loading>\n </div>\n </ng-template>\n</mat-expansion-panel>\n", dependencies: [{ kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }, { kind: "component", type: DbxLoadingComponent, selector: "dbx-loading", inputs: ["padding", "show", "text", "mode", "color", "diameter", "linear", "loading", "error", "context"] }, { kind: "component", type: MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3953
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelEntitiesEntityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3954
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.3", type: DbxFirebaseModelEntitiesEntityComponent, isStandalone: true, selector: "dbx-firebase-model-entities-entity", inputs: { entity: { classPropertyName: "entity", publicName: "entity", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title>\n @if (displayInfoSignal(); as displayInfo) {\n <div class=\"dbx-list-two-line-item\">\n <div class=\"item-left\">\n <span class=\"dbx-pb2 dbx-flex-bar\">\n @if (displayInfo.icon) {\n <mat-icon class=\"dbx-button-spacer\">{{ displayInfo.icon }}</mat-icon>\n }\n <span>{{ displayInfo.title }}</span>\n </span>\n <span>\n <span class=\"dbx-hint dbx-small\">{{ modelTypeSignal() }}</span>\n @if (displayNameSignal(); as displayName) {\n <span class=\"dbx-small dbx-u dbx-pl2\">{{ displayName }}</span>\n }\n </span>\n </div>\n </div>\n }\n </mat-panel-title>\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <div class=\"dbx-firebase-model-entities-entity-panel-content\">\n <dbx-loading [context]=\"loadingContext\">\n @if (entityWidgetConfigSignal(); as config) {\n <div class=\"dbx-pb3 dbx-firebase-model-entities-entity-content\">\n <dbx-injection [config]=\"config\"></dbx-injection>\n </div>\n }\n @if (commonWidgetConfigSignal(); as config) {\n <div class=\"dbx-pb3 dbx-firebase-model-entities-common-content\">\n <dbx-injection [config]=\"config\"></dbx-injection>\n </div>\n }\n @if (debugWidgetConfigSignal(); as config) {\n <div class=\"dbx-pb3 dbx-firebase-model-entities-debug-content\">\n <dbx-injection [config]=\"config\"></dbx-injection>\n </div>\n }\n </dbx-loading>\n </div>\n </ng-template>\n</mat-expansion-panel>\n", dependencies: [{ kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }, { kind: "component", type: DbxLoadingComponent, selector: "dbx-loading", inputs: ["padding", "show", "text", "mode", "color", "diameter", "linear", "loading", "error", "context"] }, { kind: "component", type: MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3471
3955
  }
3472
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelEntitiesEntityComponent, decorators: [{
3956
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelEntitiesEntityComponent, decorators: [{
3473
3957
  type: Component,
3474
3958
  args: [{ selector: 'dbx-firebase-model-entities-entity', imports: [DbxInjectionComponent, DbxLoadingComponent, MatExpansionPanel, MatExpansionPanelHeader, MatExpansionPanelTitle, MatExpansionPanelContent, MatIcon], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title>\n @if (displayInfoSignal(); as displayInfo) {\n <div class=\"dbx-list-two-line-item\">\n <div class=\"item-left\">\n <span class=\"dbx-pb2 dbx-flex-bar\">\n @if (displayInfo.icon) {\n <mat-icon class=\"dbx-button-spacer\">{{ displayInfo.icon }}</mat-icon>\n }\n <span>{{ displayInfo.title }}</span>\n </span>\n <span>\n <span class=\"dbx-hint dbx-small\">{{ modelTypeSignal() }}</span>\n @if (displayNameSignal(); as displayName) {\n <span class=\"dbx-small dbx-u dbx-pl2\">{{ displayName }}</span>\n }\n </span>\n </div>\n </div>\n }\n </mat-panel-title>\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <div class=\"dbx-firebase-model-entities-entity-panel-content\">\n <dbx-loading [context]=\"loadingContext\">\n @if (entityWidgetConfigSignal(); as config) {\n <div class=\"dbx-pb3 dbx-firebase-model-entities-entity-content\">\n <dbx-injection [config]=\"config\"></dbx-injection>\n </div>\n }\n @if (commonWidgetConfigSignal(); as config) {\n <div class=\"dbx-pb3 dbx-firebase-model-entities-common-content\">\n <dbx-injection [config]=\"config\"></dbx-injection>\n </div>\n }\n @if (debugWidgetConfigSignal(); as config) {\n <div class=\"dbx-pb3 dbx-firebase-model-entities-debug-content\">\n <dbx-injection [config]=\"config\"></dbx-injection>\n </div>\n }\n </dbx-loading>\n </div>\n </ng-template>\n</mat-expansion-panel>\n" }]
3475
3959
  }], propDecorators: { entity: [{ type: i0.Input, args: [{ isSignal: true, alias: "entity", required: true }] }] } });
@@ -3485,24 +3969,24 @@ class DbxFirebaseModelEntitiesComponent {
3485
3969
  /**
3486
3970
  * Whether the accordion should allow multiple expanded panels.
3487
3971
  */
3488
- multi = input(true, ...(ngDevMode ? [{ debugName: "multi" }] : []));
3972
+ multi = input(true, ...(ngDevMode ? [{ debugName: "multi" }] : /* istanbul ignore next */ []));
3489
3973
  /**
3490
3974
  * If true, will only show entities that have a registered widget entry.
3491
3975
  *
3492
3976
  * Defaults to true.
3493
3977
  */
3494
- onlyShowRegisteredTypes = input(true, ...(ngDevMode ? [{ debugName: "onlyShowRegisteredTypes" }] : []));
3978
+ onlyShowRegisteredTypes = input(true, ...(ngDevMode ? [{ debugName: "onlyShowRegisteredTypes" }] : /* istanbul ignore next */ []));
3495
3979
  /**
3496
3980
  * If true, will show unregistered entities, even if onlyShowRegisteredTypes is true.
3497
3981
  */
3498
- showUnregisteredTypesSignal = signal(undefined, ...(ngDevMode ? [{ debugName: "showUnregisteredTypesSignal" }] : []));
3982
+ showUnregisteredTypesSignal = signal(undefined, ...(ngDevMode ? [{ debugName: "showUnregisteredTypesSignal" }] : /* istanbul ignore next */ []));
3499
3983
  onlyShowRegisteredTypesSignal = computed(() => {
3500
3984
  const onlyShowRegisteredTypes = this.onlyShowRegisteredTypes();
3501
3985
  const showUnregisteredTypes = this.showUnregisteredTypesSignal();
3502
3986
  return !showUnregisteredTypes && onlyShowRegisteredTypes;
3503
- }, ...(ngDevMode ? [{ debugName: "onlyShowRegisteredTypesSignal" }] : []));
3987
+ }, ...(ngDevMode ? [{ debugName: "onlyShowRegisteredTypesSignal" }] : /* istanbul ignore next */ []));
3504
3988
  onlyShowRegisteredTypes$ = toObservable(this.onlyShowRegisteredTypesSignal).pipe(distinctUntilChanged(), shareReplay(1));
3505
- entities = input(...(ngDevMode ? [undefined, { debugName: "entities" }] : []));
3989
+ entities = input(...(ngDevMode ? [undefined, { debugName: "entities" }] : /* istanbul ignore next */ []));
3506
3990
  entities$ = toObservable(this.entities).pipe(switchMapMaybe(), map((x) => x ?? beginLoading()), shareReplay(1));
3507
3991
  allEntitiesState$ = this.entities$.pipe(mapLoadingStateValueWithOperator(switchMap((entities) => {
3508
3992
  const sortPriorityMap = this.entitiesWidgetService.getSortPriorityMap();
@@ -3528,19 +4012,19 @@ class DbxFirebaseModelEntitiesComponent {
3528
4012
  })), shareReplay(1));
3529
4013
  allEntities$ = this.allEntitiesState$.pipe(valueFromFinishedLoadingState(), shareReplay(1));
3530
4014
  allEntitiesSignal = toSignal(this.allEntities$, { initialValue: { entities: [], registeredEntities: [], unregisteredEntities: [], onlyShowRegisteredTypes: false } });
3531
- entitiesWithKeysSignal = computed(() => this.allEntitiesSignal()?.entities, ...(ngDevMode ? [{ debugName: "entitiesWithKeysSignal" }] : []));
3532
- unregisteredEntitiesCountSignal = computed(() => this.allEntitiesSignal()?.unregisteredEntities?.length ?? 0, ...(ngDevMode ? [{ debugName: "unregisteredEntitiesCountSignal" }] : []));
4015
+ entitiesWithKeysSignal = computed(() => this.allEntitiesSignal()?.entities, ...(ngDevMode ? [{ debugName: "entitiesWithKeysSignal" }] : /* istanbul ignore next */ []));
4016
+ unregisteredEntitiesCountSignal = computed(() => this.allEntitiesSignal()?.unregisteredEntities?.length ?? 0, ...(ngDevMode ? [{ debugName: "unregisteredEntitiesCountSignal" }] : /* istanbul ignore next */ []));
3533
4017
  showViewUnregisteredEntitiesButtonSignal = computed(() => {
3534
4018
  const { onlyShowRegisteredTypes, unregisteredEntities } = this.allEntitiesSignal() ?? {};
3535
4019
  return onlyShowRegisteredTypes && Boolean(unregisteredEntities?.length);
3536
- }, ...(ngDevMode ? [{ debugName: "showViewUnregisteredEntitiesButtonSignal" }] : []));
3537
- hasNoEntitiesSignal = computed(() => !this.entitiesWithKeysSignal()?.length, ...(ngDevMode ? [{ debugName: "hasNoEntitiesSignal" }] : []));
4020
+ }, ...(ngDevMode ? [{ debugName: "showViewUnregisteredEntitiesButtonSignal" }] : /* istanbul ignore next */ []));
4021
+ hasNoEntitiesSignal = computed(() => !this.entitiesWithKeysSignal()?.length, ...(ngDevMode ? [{ debugName: "hasNoEntitiesSignal" }] : /* istanbul ignore next */ []));
3538
4022
  context = cleanLoadingContext({ obs: this.allEntitiesState$ });
3539
4023
  clickShowUnregisteredEntities() {
3540
4024
  this.showUnregisteredTypesSignal.set(true);
3541
4025
  }
3542
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelEntitiesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3543
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DbxFirebaseModelEntitiesComponent, isStandalone: true, selector: "dbx-firebase-model-entities", inputs: { multi: { classPropertyName: "multi", publicName: "multi", isSignal: true, isRequired: false, transformFunction: null }, onlyShowRegisteredTypes: { classPropertyName: "onlyShowRegisteredTypes", publicName: "onlyShowRegisteredTypes", isSignal: true, isRequired: false, transformFunction: null }, entities: { classPropertyName: "entities", publicName: "entities", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
4026
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelEntitiesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4027
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.3", type: DbxFirebaseModelEntitiesComponent, isStandalone: true, selector: "dbx-firebase-model-entities", inputs: { multi: { classPropertyName: "multi", publicName: "multi", isSignal: true, isRequired: false, transformFunction: null }, onlyShowRegisteredTypes: { classPropertyName: "onlyShowRegisteredTypes", publicName: "onlyShowRegisteredTypes", isSignal: true, isRequired: false, transformFunction: null }, entities: { classPropertyName: "entities", publicName: "entities", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
3544
4028
  <dbx-loading [linear]="true" [context]="context">
3545
4029
  <mat-accordion class="dbx-firebase-model-entities-accordion" [multi]="multi()">
3546
4030
  @for (entity of entitiesWithKeysSignal(); track entity.key) {
@@ -3560,7 +4044,7 @@ class DbxFirebaseModelEntitiesComponent {
3560
4044
  </dbx-loading>
3561
4045
  `, isInline: true, dependencies: [{ kind: "directive", type: MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: DbxLoadingComponent, selector: "dbx-loading", inputs: ["padding", "show", "text", "mode", "color", "diameter", "linear", "loading", "error", "context"] }, { kind: "component", type: DbxFirebaseModelEntitiesEntityComponent, selector: "dbx-firebase-model-entities-entity", inputs: ["entity"] }, { kind: "component", type: DbxListEmptyContentComponent, selector: "dbx-list-empty-content" }, { kind: "component", type: DbxIconButtonComponent, selector: "dbx-icon-button" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3562
4046
  }
3563
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelEntitiesComponent, decorators: [{
4047
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelEntitiesComponent, decorators: [{
3564
4048
  type: Component,
3565
4049
  args: [{
3566
4050
  selector: 'dbx-firebase-model-entities',
@@ -3590,7 +4074,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
3590
4074
  }], propDecorators: { multi: [{ type: i0.Input, args: [{ isSignal: true, alias: "multi", required: false }] }], onlyShowRegisteredTypes: [{ type: i0.Input, args: [{ isSignal: true, alias: "onlyShowRegisteredTypes", required: false }] }], entities: [{ type: i0.Input, args: [{ isSignal: true, alias: "entities", required: false }] }] } });
3591
4075
 
3592
4076
  const DEFAULT_DBX_FIREBASE_MODEL_ENTITIES_COMPONENT_POPOVER_KEY = 'entities';
3593
- /** Popover component that displays model entities in a scrollable panel with configurable header and empty text. */
4077
+ /**
4078
+ * Popover component that displays model entities in a scrollable panel with configurable header and empty text.
4079
+ */
3594
4080
  class DbxFirebaseModelEntitiesPopoverComponent extends AbstractPopoverDirective {
3595
4081
  entities$ = this.popover.data?.entities$;
3596
4082
  static openPopover(popupService, config, popoverKey) {
@@ -3620,25 +4106,27 @@ class DbxFirebaseModelEntitiesPopoverComponent extends AbstractPopoverDirective
3620
4106
  header = this.config.header ?? 'Entities';
3621
4107
  emptyText = this.config.emptyText ?? 'No entities found in current context.';
3622
4108
  onlyShowRegisteredTypes = this.config.onlyShowRegisteredTypes;
3623
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelEntitiesPopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3624
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseModelEntitiesPopoverComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<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-entities [entities]=\"entities$\" [onlyShowRegisteredTypes]=\"onlyShowRegisteredTypes\">\n <p empty>{{ emptyText }}</p>\n </dbx-firebase-model-entities>\n </dbx-popover-scroll-content>\n</dbx-popover-content>\n", dependencies: [{ kind: "component", type: DbxPopoverContentComponent, selector: "dbx-popover-content" }, { kind: "component", type: DbxPopoverHeaderComponent, selector: "dbx-popover-header", inputs: ["header", "icon"] }, { kind: "directive", type: DbxPopoverScrollContentDirective, selector: "dbx-popover-scroll-content,[dbxPopoverScrollContent],.dbx-popover-scroll-content" }, { kind: "component", type: DbxFirebaseModelEntitiesComponent, selector: "dbx-firebase-model-entities", inputs: ["multi", "onlyShowRegisteredTypes", "entities"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4109
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelEntitiesPopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
4110
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseModelEntitiesPopoverComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<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-entities [entities]=\"entities$\" [onlyShowRegisteredTypes]=\"onlyShowRegisteredTypes\">\n <p empty>{{ emptyText }}</p>\n </dbx-firebase-model-entities>\n </dbx-popover-scroll-content>\n</dbx-popover-content>\n", dependencies: [{ kind: "component", type: DbxPopoverContentComponent, selector: "dbx-popover-content" }, { kind: "component", type: DbxPopoverHeaderComponent, selector: "dbx-popover-header", inputs: ["header", "icon"] }, { kind: "directive", type: DbxPopoverScrollContentDirective, selector: "dbx-popover-scroll-content,[dbxPopoverScrollContent],.dbx-popover-scroll-content" }, { kind: "component", type: DbxFirebaseModelEntitiesComponent, selector: "dbx-firebase-model-entities", inputs: ["multi", "onlyShowRegisteredTypes", "entities"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3625
4111
  }
3626
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelEntitiesPopoverComponent, decorators: [{
4112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelEntitiesPopoverComponent, decorators: [{
3627
4113
  type: Component,
3628
4114
  args: [{ imports: [DbxPopoverContentComponent, DbxPopoverHeaderComponent, DbxPopoverScrollContentDirective, DbxFirebaseModelEntitiesComponent], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<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-entities [entities]=\"entities$\" [onlyShowRegisteredTypes]=\"onlyShowRegisteredTypes\">\n <p empty>{{ emptyText }}</p>\n </dbx-firebase-model-entities>\n </dbx-popover-scroll-content>\n</dbx-popover-content>\n" }]
3629
4115
  }] });
3630
4116
 
3631
- /** Button component that opens an entities popover showing model entities from the injected source. */
4117
+ /**
4118
+ * Button component that opens an entities popover showing model entities from the injected source.
4119
+ */
3632
4120
  class DbxFirebaseModelEntitiesPopoverButtonComponent extends AbstractPopoverRefDirective {
3633
4121
  _dbxPopoverService = inject(DbxPopoverService);
3634
4122
  entitiesSource = inject(DbxFirebaseModelEntitiesSource);
3635
4123
  buttonElement = viewChild.required('button', { read: ElementRef });
3636
- config = input(...(ngDevMode ? [undefined, { debugName: "config" }] : []));
4124
+ config = input(...(ngDevMode ? [undefined, { debugName: "config" }] : /* istanbul ignore next */ []));
3637
4125
  buttonDisplaySignal = computed(() => {
3638
4126
  const config = this.config();
3639
4127
  return config?.buttonDisplay ?? { icon: config?.icon ?? 'data_object' };
3640
- }, ...(ngDevMode ? [{ debugName: "buttonDisplaySignal" }] : []));
3641
- buttonStyleSignal = computed(() => this.config()?.buttonStyle, ...(ngDevMode ? [{ debugName: "buttonStyleSignal" }] : []));
4128
+ }, ...(ngDevMode ? [{ debugName: "buttonDisplaySignal" }] : /* istanbul ignore next */ []));
4129
+ buttonStyleSignal = computed(() => this.config()?.buttonStyle, ...(ngDevMode ? [{ debugName: "buttonStyleSignal" }] : /* istanbul ignore next */ []));
3642
4130
  _makePopoverRef(origin) {
3643
4131
  if (!origin) {
3644
4132
  throw new Error('Missing origin.');
@@ -3655,12 +4143,12 @@ class DbxFirebaseModelEntitiesPopoverButtonComponent extends AbstractPopoverRefD
3655
4143
  const origin = this.buttonElement();
3656
4144
  this.showPopover(origin);
3657
4145
  }
3658
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelEntitiesPopoverButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3659
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: DbxFirebaseModelEntitiesPopoverButtonComponent, isStandalone: true, selector: "dbx-firebase-model-entities-popover-button", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "buttonElement", first: true, predicate: ["button"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
4146
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelEntitiesPopoverButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
4147
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.3", type: DbxFirebaseModelEntitiesPopoverButtonComponent, isStandalone: true, selector: "dbx-firebase-model-entities-popover-button", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "buttonElement", first: true, predicate: ["button"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
3660
4148
  <dbx-button #button (buttonClick)="showEntitiesPopover()" [buttonStyle]="buttonStyleSignal()" [buttonDisplay]="buttonDisplaySignal()"></dbx-button>
3661
- `, isInline: true, dependencies: [{ kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "mode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4149
+ `, isInline: true, dependencies: [{ kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "allowClickPropagation", "mode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3662
4150
  }
3663
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelEntitiesPopoverButtonComponent, decorators: [{
4151
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelEntitiesPopoverButtonComponent, decorators: [{
3664
4152
  type: Component,
3665
4153
  args: [{
3666
4154
  selector: 'dbx-firebase-model-entities-popover-button',
@@ -3708,7 +4196,7 @@ class DbxFirebaseDocumentStoreContextStore extends ComponentStore {
3708
4196
  lastStoresChangeAt$ = this.select((state) => state.lastStoresChangeAt).pipe(distinctUntilChanged(isSameDate), shareReplay(1));
3709
4197
  entriesGroupedByIdentity$ = this.stores$.pipe(switchMap((stores) => {
3710
4198
  let entriesObs;
3711
- const allEntries = Array.from(stores.values());
4199
+ const allEntries = [...stores.values()];
3712
4200
  const { included: hasIdentity, excluded: noIdentity } = separateValues(allEntries, (x) => x.modelIdentity != null);
3713
4201
  if (noIdentity.length > 0) {
3714
4202
  entriesObs = combineLatest(noIdentity.map((entryWithoutCachedIdentity) => entryWithoutCachedIdentity.store.modelIdentity$.pipe(first(), map((z) => {
@@ -3732,10 +4220,10 @@ class DbxFirebaseDocumentStoreContextStore extends ComponentStore {
3732
4220
  // MARK: State Changes
3733
4221
  addStore = this.updater(addStore);
3734
4222
  removeStore = this.updater(removeStore);
3735
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDocumentStoreContextStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3736
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDocumentStoreContextStore });
4223
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDocumentStoreContextStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4224
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDocumentStoreContextStore });
3737
4225
  }
3738
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDocumentStoreContextStore, decorators: [{
4226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDocumentStoreContextStore, decorators: [{
3739
4227
  type: Injectable
3740
4228
  }], ctorParameters: () => [] });
3741
4229
  function addStore(state, store) {
@@ -3774,6 +4262,9 @@ function removeStore(state, store) {
3774
4262
  /**
3775
4263
  * Factory that creates a {@link DbxFirebaseModelEntitiesSource} from a {@link DbxFirebaseDocumentStoreContextStore},
3776
4264
  * mapping its entries into model entities grouped by identity.
4265
+ *
4266
+ * @param storeContextStore - The document store context store providing entries grouped by identity.
4267
+ * @returns A DbxFirebaseModelEntitiesSource backed by the given store context.
3777
4268
  */
3778
4269
  const dbxFirebaseDocumentStoreContextModelEntitiesSourceFactory = (storeContextStore) => {
3779
4270
  const entities$ = storeContextStore.entriesGroupedByIdentity$.pipe(map((entries) => entries.map((entry) => ({ store: entry.store, modelIdentity: entry.modelIdentity }))));
@@ -3782,10 +4273,12 @@ const dbxFirebaseDocumentStoreContextModelEntitiesSourceFactory = (storeContextS
3782
4273
  };
3783
4274
  return source;
3784
4275
  };
3785
- /** Directive that provides a {@link DbxFirebaseModelEntitiesSource} from the current document store context. */
4276
+ /**
4277
+ * Directive that provides a {@link DbxFirebaseModelEntitiesSource} from the current document store context.
4278
+ */
3786
4279
  class DbxFirebaseDocumentStoreContextModelEntitiesSourceDirective {
3787
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDocumentStoreContextModelEntitiesSourceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3788
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseDocumentStoreContextModelEntitiesSourceDirective, isStandalone: true, selector: "[dbxFirebaseDocumentStoreContextModelEntitiesSource]", providers: [
4280
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDocumentStoreContextModelEntitiesSourceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4281
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseDocumentStoreContextModelEntitiesSourceDirective, isStandalone: true, selector: "[dbxFirebaseDocumentStoreContextModelEntitiesSource]", providers: [
3789
4282
  {
3790
4283
  provide: DbxFirebaseModelEntitiesSource,
3791
4284
  useFactory: dbxFirebaseDocumentStoreContextModelEntitiesSourceFactory,
@@ -3793,7 +4286,7 @@ class DbxFirebaseDocumentStoreContextModelEntitiesSourceDirective {
3793
4286
  }
3794
4287
  ], ngImport: i0 });
3795
4288
  }
3796
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDocumentStoreContextModelEntitiesSourceDirective, decorators: [{
4289
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDocumentStoreContextModelEntitiesSourceDirective, decorators: [{
3797
4290
  type: Directive,
3798
4291
  args: [{
3799
4292
  selector: '[dbxFirebaseDocumentStoreContextModelEntitiesSource]',
@@ -3815,10 +4308,10 @@ class AbstractDbxFirebaseModelEntityWidgetDirective {
3815
4308
  entityData = inject(DBX_FIREBASE_MODEL_ENTITY_WITH_STORE_TOKEN);
3816
4309
  store = this.entityData.store;
3817
4310
  data$ = this.store.data$;
3818
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractDbxFirebaseModelEntityWidgetDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3819
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: AbstractDbxFirebaseModelEntityWidgetDirective, isStandalone: true, ngImport: i0 });
4311
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractDbxFirebaseModelEntityWidgetDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4312
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: AbstractDbxFirebaseModelEntityWidgetDirective, isStandalone: true, ngImport: i0 });
3820
4313
  }
3821
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractDbxFirebaseModelEntityWidgetDirective, decorators: [{
4314
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractDbxFirebaseModelEntityWidgetDirective, decorators: [{
3822
4315
  type: Directive,
3823
4316
  args: [{}]
3824
4317
  }] });
@@ -3828,19 +4321,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
3828
4321
  */
3829
4322
  class DbxFirebaseModelKeyComponent {
3830
4323
  dbxFirebaseModelTypesService = inject(DbxFirebaseModelTypesService);
3831
- modelKey = input(...(ngDevMode ? [undefined, { debugName: "modelKey" }] : []));
4324
+ modelKey = input(...(ngDevMode ? [undefined, { debugName: "modelKey" }] : /* istanbul ignore next */ []));
3832
4325
  modelKeyIdSignal = computed(() => {
3833
4326
  const modelKey = this.modelKey();
3834
4327
  return modelKey ? firestoreModelId(modelKey) : undefined;
3835
- }, ...(ngDevMode ? [{ debugName: "modelKeyIdSignal" }] : []));
4328
+ }, ...(ngDevMode ? [{ debugName: "modelKeyIdSignal" }] : /* istanbul ignore next */ []));
3836
4329
  oneWayFlatModelKeySignal = computed(() => {
3837
4330
  const modelKey = this.modelKey();
3838
4331
  return modelKey ? flatFirestoreModelKey(modelKey) : undefined;
3839
- }, ...(ngDevMode ? [{ debugName: "oneWayFlatModelKeySignal" }] : []));
4332
+ }, ...(ngDevMode ? [{ debugName: "oneWayFlatModelKeySignal" }] : /* istanbul ignore next */ []));
3840
4333
  twoWayFlatModelKeySignal = computed(() => {
3841
4334
  const modelKey = this.modelKey();
3842
4335
  return modelKey ? twoWayFlatFirestoreModelKey(modelKey) : undefined;
3843
- }, ...(ngDevMode ? [{ debugName: "twoWayFlatModelKeySignal" }] : []));
4336
+ }, ...(ngDevMode ? [{ debugName: "twoWayFlatModelKeySignal" }] : /* istanbul ignore next */ []));
3844
4337
  // Convert signal to observable for types service
3845
4338
  modelKey$ = toObservable(this.modelKey);
3846
4339
  modelTypeInstance$ = this.modelKey$.pipe(switchMap((key) => {
@@ -3855,13 +4348,13 @@ class DbxFirebaseModelKeyComponent {
3855
4348
  modelTypeInstanceSignal = toSignal(this.modelTypeInstance$);
3856
4349
  modelIdentitySignal = toSignal(this.modelIdentity$);
3857
4350
  typeInfoSignal = toSignal(this.typeInfo$);
3858
- typeCanSegueToView = computed(() => this.typeInfoSignal()?.canSegueToView ?? false, ...(ngDevMode ? [{ debugName: "typeCanSegueToView" }] : []));
4351
+ typeCanSegueToView = computed(() => this.typeInfoSignal()?.canSegueToView ?? false, ...(ngDevMode ? [{ debugName: "typeCanSegueToView" }] : /* istanbul ignore next */ []));
3859
4352
  sref$ = this.modelTypeInstance$.pipe(switchMap((x) => x?.segueRef$ ?? of(undefined)));
3860
4353
  srefSignal = toSignal(this.sref$);
3861
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelKeyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3862
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DbxFirebaseModelKeyComponent, isStandalone: true, selector: "dbx-firebase-model-key", inputs: { modelKey: { classPropertyName: "modelKey", publicName: "modelKey", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"dbx-firebase-model-key\">\n @if (modelKey(); as key) {\n <!-- Key Data -->\n <dbx-detail-block icon=\"key\" header=\"Model Key\">\n <dbx-click-to-copy-text [highlighted]=\"true\" class=\"dbx-block\">{{ key }}</dbx-click-to-copy-text>\n <dbx-click-to-copy-text [highlighted]=\"true\" class=\"dbx-block\">{{ modelKeyIdSignal() }}</dbx-click-to-copy-text>\n <dbx-click-to-copy-text [highlighted]=\"true\" class=\"dbx-block\" [copyText]=\"oneWayFlatModelKeySignal()\">(Flat) {{ oneWayFlatModelKeySignal() }}</dbx-click-to-copy-text>\n <dbx-click-to-copy-text [highlighted]=\"true\" class=\"dbx-block\" [copyText]=\"twoWayFlatModelKeySignal()\">(Encoded Flat) {{ twoWayFlatModelKeySignal() }}</dbx-click-to-copy-text>\n </dbx-detail-block>\n\n <!-- Type Info -->\n @if (typeInfoSignal(); as typeInfo) {\n <!-- Model Meta Data -->\n <div>\n <dbx-detail-block [icon]=\"typeInfo.icon\" header=\"Model Type\">\n <dbx-click-to-copy-text class=\"dbx-block\">{{ typeInfo.modelType }}</dbx-click-to-copy-text>\n @if (typeInfo.icon) {\n <dbx-click-to-copy-text [copyText]=\"typeInfo.icon\" class=\"dbx-block\">\n Icon:\n <span class=\"dbx-u\">{{ typeInfo.icon }}</span>\n </dbx-click-to-copy-text>\n } @else {\n <span class=\"dbx-notice\">No Icon For Type</span>\n }\n </dbx-detail-block>\n <dbx-detail-block icon=\"dataset\" header=\"Collection Name\">\n <dbx-click-to-copy-text class=\"dbx-block\">{{ typeInfo.identity.collectionName }}</dbx-click-to-copy-text>\n </dbx-detail-block>\n </div>\n\n <!-- Segue Info -->\n @if (typeCanSegueToView()) {\n <dbx-detail-block icon=\"arrow_forward\" header=\"Segue To View\">\n <div class=\"dbx-hint dbx-small\">This model has a unique view within the app.</div>\n <dbx-anchor [anchor]=\"srefSignal()\"><dbx-button text=\"Go To View\"></dbx-button></dbx-anchor>\n </dbx-detail-block>\n } @else {\n <dbx-detail-block class=\"dbx-warn\" icon=\"warning\" header=\"No Segue View\">\n <span>This type provides no information for segue directly.</span>\n </dbx-detail-block>\n }\n } @else {\n <dbx-detail-block class=\"dbx-warn\" icon=\"warning\" header=\"No Type Info\">\n <span>There is no type info registered for this model type.</span>\n </dbx-detail-block>\n }\n } @else {\n <div class=\"dbx-firebase-model-key-empty\">No model key provided</div>\n }\n</div>\n", dependencies: [{ kind: "component", type: DbxDetailBlockComponent, selector: "dbx-detail-block", inputs: ["icon", "header", "alignHeader", "bigHeader"] }, { kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "mode"] }, { kind: "component", type: DbxClickToCopyTextComponent, selector: "dbx-click-to-copy-text", inputs: ["copyText", "showIcon", "highlighted", "clipboardSnackbarMessagesConfig", "clipboardSnackbarMessagesEnabled", "clickToCopyIcon", "clickIconToCopyOnly"] }, { kind: "component", type: DbxAnchorComponent, selector: "dbx-anchor, [dbx-anchor]", inputs: ["block"] }] });
4354
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelKeyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4355
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.3", type: DbxFirebaseModelKeyComponent, isStandalone: true, selector: "dbx-firebase-model-key", inputs: { modelKey: { classPropertyName: "modelKey", publicName: "modelKey", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"dbx-firebase-model-key\">\n @if (modelKey(); as key) {\n <!-- Key Data -->\n <dbx-detail-block icon=\"key\" header=\"Model Key\">\n <dbx-click-to-copy-text [highlighted]=\"true\" class=\"dbx-block\">{{ key }}</dbx-click-to-copy-text>\n <dbx-click-to-copy-text [highlighted]=\"true\" class=\"dbx-block\">{{ modelKeyIdSignal() }}</dbx-click-to-copy-text>\n <dbx-click-to-copy-text [highlighted]=\"true\" class=\"dbx-block\" [copyText]=\"oneWayFlatModelKeySignal()\">(Flat) {{ oneWayFlatModelKeySignal() }}</dbx-click-to-copy-text>\n <dbx-click-to-copy-text [highlighted]=\"true\" class=\"dbx-block\" [copyText]=\"twoWayFlatModelKeySignal()\">(Encoded Flat) {{ twoWayFlatModelKeySignal() }}</dbx-click-to-copy-text>\n </dbx-detail-block>\n\n <!-- Type Info -->\n @if (typeInfoSignal(); as typeInfo) {\n <!-- Model Meta Data -->\n <div>\n <dbx-detail-block [icon]=\"typeInfo.icon\" header=\"Model Type\">\n <dbx-click-to-copy-text class=\"dbx-block\">{{ typeInfo.modelType }}</dbx-click-to-copy-text>\n @if (typeInfo.icon) {\n <dbx-click-to-copy-text [copyText]=\"typeInfo.icon\" class=\"dbx-block\">\n Icon:\n <span class=\"dbx-u\">{{ typeInfo.icon }}</span>\n </dbx-click-to-copy-text>\n } @else {\n <span class=\"dbx-notice\">No Icon For Type</span>\n }\n </dbx-detail-block>\n <dbx-detail-block icon=\"dataset\" header=\"Collection Name\">\n <dbx-click-to-copy-text class=\"dbx-block\">{{ typeInfo.identity.collectionName }}</dbx-click-to-copy-text>\n </dbx-detail-block>\n </div>\n\n <!-- Segue Info -->\n @if (typeCanSegueToView()) {\n <dbx-detail-block icon=\"arrow_forward\" header=\"Segue To View\">\n <div class=\"dbx-hint dbx-small\">This model has a unique view within the app.</div>\n <dbx-anchor [anchor]=\"srefSignal()\"><dbx-button text=\"Go To View\"></dbx-button></dbx-anchor>\n </dbx-detail-block>\n } @else {\n <dbx-detail-block class=\"dbx-warn\" icon=\"warning\" header=\"No Segue View\">\n <span>This type provides no information for segue directly.</span>\n </dbx-detail-block>\n }\n } @else {\n <dbx-detail-block class=\"dbx-warn\" icon=\"warning\" header=\"No Type Info\">\n <span>There is no type info registered for this model type.</span>\n </dbx-detail-block>\n }\n } @else {\n <div class=\"dbx-firebase-model-key-empty\">No model key provided</div>\n }\n</div>\n", dependencies: [{ kind: "component", type: DbxDetailBlockComponent, selector: "dbx-detail-block", inputs: ["icon", "header", "alignHeader", "bigHeader"] }, { kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "allowClickPropagation", "mode"] }, { kind: "component", type: DbxClickToCopyTextComponent, selector: "dbx-click-to-copy-text", inputs: ["copyText", "showIcon", "highlighted", "clipboardSnackbarMessagesConfig", "clipboardSnackbarMessagesEnabled", "clickToCopyIcon", "clickIconToCopyOnly"] }, { kind: "component", type: DbxAnchorComponent, selector: "dbx-anchor, [dbx-anchor]", inputs: ["block"] }] });
3863
4356
  }
3864
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelKeyComponent, decorators: [{
4357
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelKeyComponent, decorators: [{
3865
4358
  type: Component,
3866
4359
  args: [{ selector: 'dbx-firebase-model-key', standalone: true, imports: [DbxDetailBlockComponent, DbxButtonComponent, DbxClickToCopyTextComponent, DbxAnchorComponent], template: "<div class=\"dbx-firebase-model-key\">\n @if (modelKey(); as key) {\n <!-- Key Data -->\n <dbx-detail-block icon=\"key\" header=\"Model Key\">\n <dbx-click-to-copy-text [highlighted]=\"true\" class=\"dbx-block\">{{ key }}</dbx-click-to-copy-text>\n <dbx-click-to-copy-text [highlighted]=\"true\" class=\"dbx-block\">{{ modelKeyIdSignal() }}</dbx-click-to-copy-text>\n <dbx-click-to-copy-text [highlighted]=\"true\" class=\"dbx-block\" [copyText]=\"oneWayFlatModelKeySignal()\">(Flat) {{ oneWayFlatModelKeySignal() }}</dbx-click-to-copy-text>\n <dbx-click-to-copy-text [highlighted]=\"true\" class=\"dbx-block\" [copyText]=\"twoWayFlatModelKeySignal()\">(Encoded Flat) {{ twoWayFlatModelKeySignal() }}</dbx-click-to-copy-text>\n </dbx-detail-block>\n\n <!-- Type Info -->\n @if (typeInfoSignal(); as typeInfo) {\n <!-- Model Meta Data -->\n <div>\n <dbx-detail-block [icon]=\"typeInfo.icon\" header=\"Model Type\">\n <dbx-click-to-copy-text class=\"dbx-block\">{{ typeInfo.modelType }}</dbx-click-to-copy-text>\n @if (typeInfo.icon) {\n <dbx-click-to-copy-text [copyText]=\"typeInfo.icon\" class=\"dbx-block\">\n Icon:\n <span class=\"dbx-u\">{{ typeInfo.icon }}</span>\n </dbx-click-to-copy-text>\n } @else {\n <span class=\"dbx-notice\">No Icon For Type</span>\n }\n </dbx-detail-block>\n <dbx-detail-block icon=\"dataset\" header=\"Collection Name\">\n <dbx-click-to-copy-text class=\"dbx-block\">{{ typeInfo.identity.collectionName }}</dbx-click-to-copy-text>\n </dbx-detail-block>\n </div>\n\n <!-- Segue Info -->\n @if (typeCanSegueToView()) {\n <dbx-detail-block icon=\"arrow_forward\" header=\"Segue To View\">\n <div class=\"dbx-hint dbx-small\">This model has a unique view within the app.</div>\n <dbx-anchor [anchor]=\"srefSignal()\"><dbx-button text=\"Go To View\"></dbx-button></dbx-anchor>\n </dbx-detail-block>\n } @else {\n <dbx-detail-block class=\"dbx-warn\" icon=\"warning\" header=\"No Segue View\">\n <span>This type provides no information for segue directly.</span>\n </dbx-detail-block>\n }\n } @else {\n <dbx-detail-block class=\"dbx-warn\" icon=\"warning\" header=\"No Type Info\">\n <span>There is no type info registered for this model type.</span>\n </dbx-detail-block>\n }\n } @else {\n <div class=\"dbx-firebase-model-key-empty\">No model key provided</div>\n }\n</div>\n" }]
3867
4360
  }], propDecorators: { modelKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "modelKey", required: false }] }] } });
@@ -3885,12 +4378,12 @@ class DbxFirebaseModelEntitiesDebugWidgetComponent extends AbstractDbxFirebaseMo
3885
4378
  };
3886
4379
  }
3887
4380
  return content;
3888
- }, ...(ngDevMode ? [{ debugName: "contentSignal" }] : []));
4381
+ }, ...(ngDevMode ? [{ debugName: "contentSignal" }] : /* istanbul ignore next */ []));
3889
4382
  context = cleanLoadingContext(this.store.dataLoadingState$);
3890
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelEntitiesDebugWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3891
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DbxFirebaseModelEntitiesDebugWidgetComponent, isStandalone: true, selector: "dbx-firebase-model-entities-debug-widget", usesInheritance: true, ngImport: i0, template: "<div class=\"dbx-firebase-model-entities-debug-widget\">\n <!-- Model Key Section -->\n <div class=\"dbx-debug-section\">\n <h4>Model Key Information</h4>\n @if (currentKey(); as key) {\n <dbx-firebase-model-key [modelKey]=\"key\"></dbx-firebase-model-key>\n }\n </div>\n\n <!-- Document Data Section -->\n <div class=\"dbx-debug-section\">\n <h4>Document Data</h4>\n <dbx-loading [context]=\"context\">\n @if (currentData(); as data) {\n <dbx-download-text-view [showTitle]=\"false\" [content]=\"contentSignal()\"></dbx-download-text-view>\n } @else {\n <p class=\"dbx-empty\">No data available</p>\n }\n </dbx-loading>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: DbxFirebaseModelKeyComponent, selector: "dbx-firebase-model-key", inputs: ["modelKey"] }, { kind: "component", type: DbxDownloadTextViewComponent, selector: "dbx-download-text-view", inputs: ["showDownloadButton", "loadingText", "linear", "showTitle", "showPreview", "showExpandPreviewButton", "expandPreview", "content", "contentState"], outputs: ["expandPreviewChange"] }, { kind: "component", type: DbxLoadingComponent, selector: "dbx-loading", inputs: ["padding", "show", "text", "mode", "color", "diameter", "linear", "loading", "error", "context"] }] });
4383
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelEntitiesDebugWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
4384
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.3", type: DbxFirebaseModelEntitiesDebugWidgetComponent, isStandalone: true, selector: "dbx-firebase-model-entities-debug-widget", usesInheritance: true, ngImport: i0, template: "<div class=\"dbx-firebase-model-entities-debug-widget\">\n <!-- Model Key Section -->\n <div class=\"dbx-debug-section\">\n <h4>Model Key Information</h4>\n @if (currentKey(); as key) {\n <dbx-firebase-model-key [modelKey]=\"key\"></dbx-firebase-model-key>\n }\n </div>\n\n <!-- Document Data Section -->\n <div class=\"dbx-debug-section\">\n <h4>Document Data</h4>\n <dbx-loading [context]=\"context\">\n @if (currentData(); as data) {\n <dbx-download-text-view [showTitle]=\"false\" [content]=\"contentSignal()\"></dbx-download-text-view>\n } @else {\n <p class=\"dbx-empty\">No data available</p>\n }\n </dbx-loading>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: DbxFirebaseModelKeyComponent, selector: "dbx-firebase-model-key", inputs: ["modelKey"] }, { kind: "component", type: DbxDownloadTextViewComponent, selector: "dbx-download-text-view", inputs: ["showDownloadButton", "loadingText", "linear", "showTitle", "showPreview", "showExpandPreviewButton", "expandPreview", "content", "contentState"], outputs: ["expandPreviewChange"] }, { kind: "component", type: DbxLoadingComponent, selector: "dbx-loading", inputs: ["padding", "show", "text", "mode", "color", "diameter", "linear", "loading", "error", "context"] }] });
3892
4385
  }
3893
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelEntitiesDebugWidgetComponent, decorators: [{
4386
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelEntitiesDebugWidgetComponent, decorators: [{
3894
4387
  type: Component,
3895
4388
  args: [{ selector: 'dbx-firebase-model-entities-debug-widget', standalone: true, imports: [DbxFirebaseModelKeyComponent, DbxDownloadTextViewComponent, DbxLoadingComponent], template: "<div class=\"dbx-firebase-model-entities-debug-widget\">\n <!-- Model Key Section -->\n <div class=\"dbx-debug-section\">\n <h4>Model Key Information</h4>\n @if (currentKey(); as key) {\n <dbx-firebase-model-key [modelKey]=\"key\"></dbx-firebase-model-key>\n }\n </div>\n\n <!-- Document Data Section -->\n <div class=\"dbx-debug-section\">\n <h4>Document Data</h4>\n <dbx-loading [context]=\"context\">\n @if (currentData(); as data) {\n <dbx-download-text-view [showTitle]=\"false\" [content]=\"contentSignal()\"></dbx-download-text-view>\n } @else {\n <p class=\"dbx-empty\">No data available</p>\n }\n </dbx-loading>\n </div>\n</div>\n" }]
3896
4389
  }] });
@@ -3899,12 +4392,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
3899
4392
  * Abstract directive that contains a DbxFirebaseDocumentStore and provides an interface for communicating with other directives.
3900
4393
  */
3901
4394
  class DbxFirebaseDocumentStoreDirective {
3902
- storeName = model(undefined, ...(ngDevMode ? [{ debugName: "storeName" }] : []));
3903
- documentId = model(undefined, ...(ngDevMode ? [{ debugName: "documentId" }] : []));
3904
- key = model(undefined, ...(ngDevMode ? [{ debugName: "key" }] : []));
3905
- flatKey = model(undefined, ...(ngDevMode ? [{ debugName: "flatKey" }] : []));
3906
- ref = model(undefined, ...(ngDevMode ? [{ debugName: "ref" }] : []));
3907
- streamMode = model(FirestoreAccessorStreamMode.STREAM, ...(ngDevMode ? [{ debugName: "streamMode" }] : []));
4395
+ storeName = model(undefined, ...(ngDevMode ? [{ debugName: "storeName" }] : /* istanbul ignore next */ []));
4396
+ documentId = model(undefined, ...(ngDevMode ? [{ debugName: "documentId" }] : /* istanbul ignore next */ []));
4397
+ key = model(undefined, ...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
4398
+ flatKey = model(undefined, ...(ngDevMode ? [{ debugName: "flatKey" }] : /* istanbul ignore next */ []));
4399
+ ref = model(undefined, ...(ngDevMode ? [{ debugName: "ref" }] : /* istanbul ignore next */ []));
4400
+ streamMode = model(FirestoreAccessorStreamMode.STREAM, ...(ngDevMode ? [{ debugName: "streamMode" }] : /* istanbul ignore next */ []));
3908
4401
  _storeName$ = toObservable(this.storeName).pipe(skipInitialMaybe());
3909
4402
  _documentId$ = toObservable(this.documentId).pipe(skipInitialMaybe());
3910
4403
  _key$ = toObservable(this.key).pipe(skipInitialMaybe());
@@ -3925,6 +4418,7 @@ class DbxFirebaseDocumentStoreDirective {
3925
4418
  modelIdentity$ = this.store$.pipe(switchMap((x) => x.modelIdentity$));
3926
4419
  data$ = this.store$.pipe(switchMap((x) => x.data$));
3927
4420
  loadingState$ = this.store$.pipe(switchMap((x) => x.dataLoadingState$));
4421
+ // eslint-disable-next-line @angular-eslint/prefer-inject -- abstract class receives store from subclass constructors
3928
4422
  constructor(store) {
3929
4423
  this.replaceStore(store);
3930
4424
  // sync inputs to store any time the store changes
@@ -3963,6 +4457,8 @@ class DbxFirebaseDocumentStoreDirective {
3963
4457
  }
3964
4458
  /**
3965
4459
  * Replaces the internal store.
4460
+ *
4461
+ * @param store - The new document store to use.
3966
4462
  */
3967
4463
  replaceStore(store) {
3968
4464
  this._store.next(store);
@@ -3976,10 +4472,10 @@ class DbxFirebaseDocumentStoreDirective {
3976
4472
  // we assume that the input model key is a TwoWayFlatFirestoreModelKey, since the TwoWayFlatFirestoreModelKey is safe to encode in the url
3977
4473
  return keyFromParams.subscribe((x) => this.setFlatKey(x));
3978
4474
  }
3979
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDocumentStoreDirective, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
3980
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: DbxFirebaseDocumentStoreDirective, isStandalone: true, inputs: { storeName: { classPropertyName: "storeName", publicName: "storeName", isSignal: true, isRequired: false, transformFunction: null }, documentId: { classPropertyName: "documentId", publicName: "documentId", isSignal: true, isRequired: false, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: false, transformFunction: null }, flatKey: { classPropertyName: "flatKey", publicName: "flatKey", isSignal: true, isRequired: false, transformFunction: null }, ref: { classPropertyName: "ref", publicName: "ref", isSignal: true, isRequired: false, transformFunction: null }, streamMode: { classPropertyName: "streamMode", publicName: "streamMode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { storeName: "storeNameChange", documentId: "documentIdChange", key: "keyChange", flatKey: "flatKeyChange", ref: "refChange", streamMode: "streamModeChange" }, ngImport: i0 });
4475
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDocumentStoreDirective, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
4476
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.3", type: DbxFirebaseDocumentStoreDirective, isStandalone: true, inputs: { storeName: { classPropertyName: "storeName", publicName: "storeName", isSignal: true, isRequired: false, transformFunction: null }, documentId: { classPropertyName: "documentId", publicName: "documentId", isSignal: true, isRequired: false, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: false, transformFunction: null }, flatKey: { classPropertyName: "flatKey", publicName: "flatKey", isSignal: true, isRequired: false, transformFunction: null }, ref: { classPropertyName: "ref", publicName: "ref", isSignal: true, isRequired: false, transformFunction: null }, streamMode: { classPropertyName: "streamMode", publicName: "streamMode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { storeName: "storeNameChange", documentId: "documentIdChange", key: "keyChange", flatKey: "flatKeyChange", ref: "refChange", streamMode: "streamModeChange" }, ngImport: i0 });
3981
4477
  }
3982
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDocumentStoreDirective, decorators: [{
4478
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDocumentStoreDirective, decorators: [{
3983
4479
  type: Directive
3984
4480
  }], ctorParameters: () => [{ type: undefined }], propDecorators: { storeName: [{ type: i0.Input, args: [{ isSignal: true, alias: "storeName", required: false }] }, { type: i0.Output, args: ["storeNameChange"] }], documentId: [{ type: i0.Input, args: [{ isSignal: true, alias: "documentId", required: false }] }, { type: i0.Output, args: ["documentIdChange"] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: false }] }, { type: i0.Output, args: ["keyChange"] }], flatKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "flatKey", required: false }] }, { type: i0.Output, args: ["flatKeyChange"] }], ref: [{ type: i0.Input, args: [{ isSignal: true, alias: "ref", required: false }] }, { type: i0.Output, args: ["refChange"] }], streamMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "streamMode", required: false }] }, { type: i0.Output, args: ["streamModeChange"] }] } });
3985
4481
  function provideDbxFirebaseDocumentStoreDirective(sourceType, storeType) {
@@ -4004,7 +4500,7 @@ class DbxFirebaseModelViewedEventDirective {
4004
4500
  dbxFirebaseDocumentStoreDirective = inject(DbxFirebaseDocumentStoreDirective);
4005
4501
  dbxModelObjectStateService = inject(DbxModelObjectStateService);
4006
4502
  dbxFirebaseModelTypesService = inject(DbxFirebaseModelTypesService);
4007
- modelViewContext = input(undefined, { ...(ngDevMode ? { debugName: "modelViewContext" } : {}), alias: 'dbxFirebaseModelViewedEvent' });
4503
+ modelViewContext = input(undefined, { ...(ngDevMode ? { debugName: "modelViewContext" } : /* istanbul ignore next */ {}), alias: 'dbxFirebaseModelViewedEvent' });
4008
4504
  constructor() {
4009
4505
  cleanSubscription(this.dbxFirebaseDocumentStoreDirective.data$
4010
4506
  .pipe(
@@ -4023,10 +4519,10 @@ class DbxFirebaseModelViewedEventDirective {
4023
4519
  this.dbxModelObjectStateService.emitModelViewEvent({ modelKeyTypeNamePair, context });
4024
4520
  }));
4025
4521
  }
4026
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelViewedEventDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4027
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: DbxFirebaseModelViewedEventDirective, isStandalone: true, selector: "[dbxFirebaseModelViewedEvent]", inputs: { modelViewContext: { classPropertyName: "modelViewContext", publicName: "dbxFirebaseModelViewedEvent", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
4522
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelViewedEventDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4523
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.3", type: DbxFirebaseModelViewedEventDirective, isStandalone: true, selector: "[dbxFirebaseModelViewedEvent]", inputs: { modelViewContext: { classPropertyName: "modelViewContext", publicName: "dbxFirebaseModelViewedEvent", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
4028
4524
  }
4029
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelViewedEventDirective, decorators: [{
4525
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelViewedEventDirective, decorators: [{
4030
4526
  type: Directive,
4031
4527
  args: [{
4032
4528
  selector: '[dbxFirebaseModelViewedEvent]',
@@ -4038,13 +4534,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
4038
4534
  * Abstract directive that contains a DbxFirebaseCollectionStore and provides an interface for communicating with other directives.
4039
4535
  */
4040
4536
  class DbxFirebaseCollectionStoreDirective {
4041
- collectionMode = model('query', ...(ngDevMode ? [{ debugName: "collectionMode" }] : []));
4042
- collectionKeys = model(undefined, ...(ngDevMode ? [{ debugName: "collectionKeys" }] : []));
4043
- collectionRefs = model(undefined, ...(ngDevMode ? [{ debugName: "collectionRefs" }] : []));
4044
- maxPages = model(undefined, ...(ngDevMode ? [{ debugName: "maxPages" }] : []));
4045
- itemsPerPage = model(undefined, ...(ngDevMode ? [{ debugName: "itemsPerPage" }] : []));
4046
- constraints = model(undefined, ...(ngDevMode ? [{ debugName: "constraints" }] : []));
4047
- waitForNonNullConstraints = model(undefined, ...(ngDevMode ? [{ debugName: "waitForNonNullConstraints" }] : []));
4537
+ collectionMode = model('query', ...(ngDevMode ? [{ debugName: "collectionMode" }] : /* istanbul ignore next */ []));
4538
+ collectionKeys = model(undefined, ...(ngDevMode ? [{ debugName: "collectionKeys" }] : /* istanbul ignore next */ []));
4539
+ collectionRefs = model(undefined, ...(ngDevMode ? [{ debugName: "collectionRefs" }] : /* istanbul ignore next */ []));
4540
+ maxPages = model(undefined, ...(ngDevMode ? [{ debugName: "maxPages" }] : /* istanbul ignore next */ []));
4541
+ itemsPerPage = model(undefined, ...(ngDevMode ? [{ debugName: "itemsPerPage" }] : /* istanbul ignore next */ []));
4542
+ constraints = model(undefined, ...(ngDevMode ? [{ debugName: "constraints" }] : /* istanbul ignore next */ []));
4543
+ waitForNonNullConstraints = model(undefined, ...(ngDevMode ? [{ debugName: "waitForNonNullConstraints" }] : /* istanbul ignore next */ []));
4048
4544
  _collectionMode = toObservable(this.collectionMode).pipe(skipInitialMaybe());
4049
4545
  _collectionKeys = toObservable(this.collectionKeys).pipe(skipInitialMaybe());
4050
4546
  _collectionRefs = toObservable(this.collectionRefs).pipe(skipInitialMaybe());
@@ -4055,6 +4551,7 @@ class DbxFirebaseCollectionStoreDirective {
4055
4551
  _store = completeOnDestroy(new BehaviorSubject(undefined));
4056
4552
  store$ = this._store.pipe(filterMaybe(), shareReplay(1));
4057
4553
  pageLoadingState$ = this.store$.pipe(switchMap((x) => x.pageLoadingState$));
4554
+ // eslint-disable-next-line @angular-eslint/prefer-inject -- abstract class receives store from subclass constructors
4058
4555
  constructor(store) {
4059
4556
  this.replaceStore(store);
4060
4557
  // sync inputs to store any time the store changes
@@ -4073,6 +4570,8 @@ class DbxFirebaseCollectionStoreDirective {
4073
4570
  }
4074
4571
  /**
4075
4572
  * Replaces the internal store.
4573
+ *
4574
+ * @param store - The new collection store to use.
4076
4575
  */
4077
4576
  replaceStore(store) {
4078
4577
  this._store.next(store);
@@ -4104,10 +4603,10 @@ class DbxFirebaseCollectionStoreDirective {
4104
4603
  restart() {
4105
4604
  this.store.restart();
4106
4605
  }
4107
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseCollectionStoreDirective, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
4108
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: DbxFirebaseCollectionStoreDirective, isStandalone: true, inputs: { collectionMode: { classPropertyName: "collectionMode", publicName: "collectionMode", isSignal: true, isRequired: false, transformFunction: null }, collectionKeys: { classPropertyName: "collectionKeys", publicName: "collectionKeys", isSignal: true, isRequired: false, transformFunction: null }, collectionRefs: { classPropertyName: "collectionRefs", publicName: "collectionRefs", isSignal: true, isRequired: false, transformFunction: null }, maxPages: { classPropertyName: "maxPages", publicName: "maxPages", isSignal: true, isRequired: false, transformFunction: null }, itemsPerPage: { classPropertyName: "itemsPerPage", publicName: "itemsPerPage", isSignal: true, isRequired: false, transformFunction: null }, constraints: { classPropertyName: "constraints", publicName: "constraints", isSignal: true, isRequired: false, transformFunction: null }, waitForNonNullConstraints: { classPropertyName: "waitForNonNullConstraints", publicName: "waitForNonNullConstraints", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collectionMode: "collectionModeChange", collectionKeys: "collectionKeysChange", collectionRefs: "collectionRefsChange", maxPages: "maxPagesChange", itemsPerPage: "itemsPerPageChange", constraints: "constraintsChange", waitForNonNullConstraints: "waitForNonNullConstraintsChange" }, ngImport: i0 });
4606
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseCollectionStoreDirective, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
4607
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.3", type: DbxFirebaseCollectionStoreDirective, isStandalone: true, inputs: { collectionMode: { classPropertyName: "collectionMode", publicName: "collectionMode", isSignal: true, isRequired: false, transformFunction: null }, collectionKeys: { classPropertyName: "collectionKeys", publicName: "collectionKeys", isSignal: true, isRequired: false, transformFunction: null }, collectionRefs: { classPropertyName: "collectionRefs", publicName: "collectionRefs", isSignal: true, isRequired: false, transformFunction: null }, maxPages: { classPropertyName: "maxPages", publicName: "maxPages", isSignal: true, isRequired: false, transformFunction: null }, itemsPerPage: { classPropertyName: "itemsPerPage", publicName: "itemsPerPage", isSignal: true, isRequired: false, transformFunction: null }, constraints: { classPropertyName: "constraints", publicName: "constraints", isSignal: true, isRequired: false, transformFunction: null }, waitForNonNullConstraints: { classPropertyName: "waitForNonNullConstraints", publicName: "waitForNonNullConstraints", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collectionMode: "collectionModeChange", collectionKeys: "collectionKeysChange", collectionRefs: "collectionRefsChange", maxPages: "maxPagesChange", itemsPerPage: "itemsPerPageChange", constraints: "constraintsChange", waitForNonNullConstraints: "waitForNonNullConstraintsChange" }, ngImport: i0 });
4109
4608
  }
4110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseCollectionStoreDirective, decorators: [{
4609
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseCollectionStoreDirective, decorators: [{
4111
4610
  type: Directive
4112
4611
  }], ctorParameters: () => [{ type: undefined }], propDecorators: { collectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "collectionMode", required: false }] }, { type: i0.Output, args: ["collectionModeChange"] }], collectionKeys: [{ type: i0.Input, args: [{ isSignal: true, alias: "collectionKeys", required: false }] }, { type: i0.Output, args: ["collectionKeysChange"] }], collectionRefs: [{ type: i0.Input, args: [{ isSignal: true, alias: "collectionRefs", required: false }] }, { type: i0.Output, args: ["collectionRefsChange"] }], maxPages: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxPages", required: false }] }, { type: i0.Output, args: ["maxPagesChange"] }], itemsPerPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemsPerPage", required: false }] }, { type: i0.Output, args: ["itemsPerPageChange"] }], constraints: [{ type: i0.Input, args: [{ isSignal: true, alias: "constraints", required: false }] }, { type: i0.Output, args: ["constraintsChange"] }], waitForNonNullConstraints: [{ type: i0.Input, args: [{ isSignal: true, alias: "waitForNonNullConstraints", required: false }] }, { type: i0.Output, args: ["waitForNonNullConstraintsChange"] }] } });
4113
4612
  function provideDbxFirebaseCollectionStoreDirective(sourceType, storeType) {
@@ -4128,7 +4627,7 @@ function provideDbxFirebaseCollectionStoreDirective(sourceType, storeType) {
4128
4627
  */
4129
4628
  class DbxFirebaseCollectionChangeDirective {
4130
4629
  dbxFirebaseCollectionStoreDirective = inject((DbxFirebaseCollectionStoreDirective));
4131
- mode = input('off', { ...(ngDevMode ? { debugName: "mode" } : {}), alias: 'dbxFirebaseCollectionChange', transform: (x) => x || 'off' });
4630
+ mode = input('off', { ...(ngDevMode ? { debugName: "mode" } : /* istanbul ignore next */ {}), alias: 'dbxFirebaseCollectionChange', transform: (x) => x || 'off' });
4132
4631
  _watcher = clean(dbxFirebaseCollectionChangeWatcher(this.dbxFirebaseCollectionStoreDirective.store));
4133
4632
  _trigger = clean(dbxFirebaseCollectionChangeTriggerForWatcher(this._watcher, () => this.restart()));
4134
4633
  mode$ = this._watcher.mode$;
@@ -4138,7 +4637,7 @@ class DbxFirebaseCollectionChangeDirective {
4138
4637
  trigger$ = this._watcher.trigger$;
4139
4638
  modeEffect = effect(() => {
4140
4639
  this._watcher.setMode(this.mode());
4141
- }, ...(ngDevMode ? [{ debugName: "modeEffect" }] : []));
4640
+ }, ...(ngDevMode ? [{ debugName: "modeEffect" }] : /* istanbul ignore next */ []));
4142
4641
  get store() {
4143
4642
  return this._watcher.store;
4144
4643
  }
@@ -4148,10 +4647,10 @@ class DbxFirebaseCollectionChangeDirective {
4148
4647
  restart() {
4149
4648
  this.dbxFirebaseCollectionStoreDirective.store.restart();
4150
4649
  }
4151
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseCollectionChangeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4152
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: DbxFirebaseCollectionChangeDirective, isStandalone: true, selector: "[dbxFirebaseCollectionChange]", inputs: { mode: { classPropertyName: "mode", publicName: "dbxFirebaseCollectionChange", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
4650
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseCollectionChangeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4651
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.3", type: DbxFirebaseCollectionChangeDirective, isStandalone: true, selector: "[dbxFirebaseCollectionChange]", inputs: { mode: { classPropertyName: "mode", publicName: "dbxFirebaseCollectionChange", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
4153
4652
  }
4154
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseCollectionChangeDirective, decorators: [{
4653
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseCollectionChangeDirective, decorators: [{
4155
4654
  type: Directive,
4156
4655
  args: [{
4157
4656
  selector: '[dbxFirebaseCollectionChange]',
@@ -4166,7 +4665,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
4166
4665
  */
4167
4666
  class DbxFirebaseCollectionHasChangeDirective extends AbstractIfDirective {
4168
4667
  directive = inject(DbxFirebaseCollectionChangeDirective);
4169
- mode = input('addedAndRemoved', { ...(ngDevMode ? { debugName: "mode" } : {}), alias: 'dbxFirebaseCollectionHasChange', transform: (x) => x || 'addedAndRemoved' });
4668
+ mode = input('addedAndRemoved', { ...(ngDevMode ? { debugName: "mode" } : /* istanbul ignore next */ {}), alias: 'dbxFirebaseCollectionHasChange', transform: (x) => x || 'addedAndRemoved' });
4170
4669
  show$ = combineLatest([toObservable(this.mode), this.directive.event$]).pipe(map(([mode, event]) => {
4171
4670
  let show = false;
4172
4671
  if (event.type !== 'none') {
@@ -4184,10 +4683,10 @@ class DbxFirebaseCollectionHasChangeDirective extends AbstractIfDirective {
4184
4683
  }
4185
4684
  return show;
4186
4685
  }), shareReplay(1));
4187
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseCollectionHasChangeDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
4188
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: DbxFirebaseCollectionHasChangeDirective, isStandalone: true, selector: "[dbxFirebaseCollectionHasChange]", inputs: { mode: { classPropertyName: "mode", publicName: "dbxFirebaseCollectionHasChange", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
4686
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseCollectionHasChangeDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
4687
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.3", type: DbxFirebaseCollectionHasChangeDirective, isStandalone: true, selector: "[dbxFirebaseCollectionHasChange]", inputs: { mode: { classPropertyName: "mode", publicName: "dbxFirebaseCollectionHasChange", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
4189
4688
  }
4190
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseCollectionHasChangeDirective, decorators: [{
4689
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseCollectionHasChangeDirective, decorators: [{
4191
4690
  type: Directive,
4192
4691
  args: [{
4193
4692
  selector: '[dbxFirebaseCollectionHasChange]',
@@ -4209,10 +4708,10 @@ class DbxFirebaseCollectionListDirective {
4209
4708
  }));
4210
4709
  }
4211
4710
  }
4212
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseCollectionListDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4213
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseCollectionListDirective, isStandalone: true, selector: "[dbxFirebaseCollectionList]", ngImport: i0 });
4711
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseCollectionListDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4712
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseCollectionListDirective, isStandalone: true, selector: "[dbxFirebaseCollectionList]", ngImport: i0 });
4214
4713
  }
4215
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseCollectionListDirective, decorators: [{
4714
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseCollectionListDirective, decorators: [{
4216
4715
  type: Directive,
4217
4716
  args: [{
4218
4717
  selector: '[dbxFirebaseCollectionList]',
@@ -4224,6 +4723,9 @@ class DbxFirebaseDocumentStoreTwoWayKeyProvider {
4224
4723
  }
4225
4724
  /**
4226
4725
  * Configures Providers for a DbxFirebaseDocumentStoreTwoWayKeyProvider.
4726
+ *
4727
+ * @param sourceType - The type to register as the DbxFirebaseDocumentStoreTwoWayKeyProvider.
4728
+ * @returns Array of Angular providers for the two-way key provider.
4227
4729
  */
4228
4730
  function provideDbxFirebaseDocumentStoreTwoWayKeyProvider(sourceType) {
4229
4731
  const providers = [
@@ -4241,10 +4743,10 @@ function provideDbxFirebaseDocumentStoreTwoWayKeyProvider(sourceType) {
4241
4743
  class DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective {
4242
4744
  dbxFirebaseDocumentStoreDirective = inject(DbxFirebaseDocumentStoreDirective, { host: true });
4243
4745
  twoWayFlatKey$ = this.dbxFirebaseDocumentStoreDirective.twoWayFlatKey$;
4244
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4245
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, isStandalone: true, selector: "[dbxFirebaseDocumentStoreTwoWayModelKeySource]", providers: provideDbxFirebaseDocumentStoreTwoWayKeyProvider(DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective), ngImport: i0 });
4746
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4747
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, isStandalone: true, selector: "[dbxFirebaseDocumentStoreTwoWayModelKeySource]", providers: provideDbxFirebaseDocumentStoreTwoWayKeyProvider(DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective), ngImport: i0 });
4246
4748
  }
4247
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, decorators: [{
4749
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, decorators: [{
4248
4750
  type: Directive,
4249
4751
  args: [{
4250
4752
  selector: '[dbxFirebaseDocumentStoreTwoWayModelKeySource]',
@@ -4262,10 +4764,10 @@ class DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective {
4262
4764
  constructor() {
4263
4765
  cleanSubscription(this.dbxFirebaseDocumentStoreDirective.store.setId(this.dbxFirebaseDocumentStoreTwoWayKeyProvider.twoWayFlatKey$));
4264
4766
  }
4265
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4266
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective, isStandalone: true, selector: "[dbxFirebaseDocumentStoreIdFromTwoWayModelKey]", ngImport: i0 });
4767
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4768
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective, isStandalone: true, selector: "[dbxFirebaseDocumentStoreIdFromTwoWayModelKey]", ngImport: i0 });
4267
4769
  }
4268
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective, decorators: [{
4770
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective, decorators: [{
4269
4771
  type: Directive,
4270
4772
  args: [{
4271
4773
  selector: '[dbxFirebaseDocumentStoreIdFromTwoWayModelKey]',
@@ -4273,17 +4775,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
4273
4775
  }]
4274
4776
  }], ctorParameters: () => [] });
4275
4777
 
4276
- const importsAndExports$1 = [DbxFirebaseCollectionListDirective, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective];
4778
+ const importsAndExports = [DbxFirebaseCollectionListDirective, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective];
4277
4779
  class DbxFirebaseModelStoreModule {
4278
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelStoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4279
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelStoreModule, imports: [DbxFirebaseCollectionListDirective, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective], exports: [DbxFirebaseCollectionListDirective, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective] });
4280
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelStoreModule });
4780
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelStoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4781
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelStoreModule, imports: [DbxFirebaseCollectionListDirective, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective], exports: [DbxFirebaseCollectionListDirective, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective] });
4782
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelStoreModule });
4281
4783
  }
4282
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelStoreModule, decorators: [{
4784
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelStoreModule, decorators: [{
4283
4785
  type: NgModule,
4284
4786
  args: [{
4285
- imports: importsAndExports$1,
4286
- exports: importsAndExports$1
4787
+ imports: importsAndExports,
4788
+ exports: importsAndExports
4287
4789
  }]
4288
4790
  }] });
4289
4791
 
@@ -4353,10 +4855,10 @@ class AbstractDbxFirebaseCollectionStore extends LockSetComponentStore {
4353
4855
  loadAllResults() {
4354
4856
  return this.loader$.pipe(switchMap((x) => x.loadAllResults()));
4355
4857
  }
4356
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractDbxFirebaseCollectionStore, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
4357
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractDbxFirebaseCollectionStore });
4858
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractDbxFirebaseCollectionStore, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
4859
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractDbxFirebaseCollectionStore });
4358
4860
  }
4359
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractDbxFirebaseCollectionStore, decorators: [{
4861
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractDbxFirebaseCollectionStore, decorators: [{
4360
4862
  type: Injectable
4361
4863
  }] });
4362
4864
 
@@ -4386,6 +4888,11 @@ function firebaseCollectionStoreCrudFunction(fn) {
4386
4888
  }
4387
4889
 
4388
4890
  const DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR = 'DOES_NOT_EXIST';
4891
+ /**
4892
+ * Creates a readable error indicating that the requested Firebase model document does not exist.
4893
+ *
4894
+ * @returns A readable error with the 'DOES_NOT_EXIST' code and a descriptive message.
4895
+ */
4389
4896
  function modelDoesNotExistError() {
4390
4897
  return readableError(DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR, 'The document does not exist.');
4391
4898
  }
@@ -4396,6 +4903,8 @@ function modelDoesNotExistError() {
4396
4903
  const DBX_FIREBASE_DOCUMENT_STORE_CONTEXT_STORE_TOKEN = new InjectionToken('DBX_FIREBASE_DOCUMENT_STORE_CONTEXT_STORE_TOKEN');
4397
4904
  /**
4398
4905
  * Provides the DbxFirebaseDocumentStoreContextStore.
4906
+ *
4907
+ * @returns Array of Angular providers that create and register a DbxFirebaseDocumentStoreContextStore.
4399
4908
  */
4400
4909
  function provideDbxFirebaseDocumentStoreContextStore() {
4401
4910
  return [
@@ -4415,6 +4924,8 @@ function provideDbxFirebaseDocumentStoreContextStore() {
4415
4924
  * Links a DbxFirebaseDocumentStore to parent DbxFirebaseDocumentStoreContextStore instances.
4416
4925
  *
4417
4926
  * This should be called in an Angular injection context.
4927
+ *
4928
+ * @param store - The document store to register with all available parent context stores.
4418
4929
  */
4419
4930
  function linkDocumentStoreToParentContextStores(store) {
4420
4931
  const contextStores = inject(DBX_FIREBASE_DOCUMENT_STORE_CONTEXT_STORE_TOKEN, { optional: true });
@@ -4547,10 +5058,10 @@ class AbstractDbxFirebaseDocumentStore extends LockSetComponentStore {
4547
5058
  clearRefs = this.updater((state) => ({ ...state, id: undefined, key: undefined, ref: undefined }));
4548
5059
  setFirestoreCollection = this.updater((state, firestoreCollection) => ({ ...state, firestoreCollection }));
4549
5060
  setFirestoreCollectionLike = this.updater((state, firestoreCollectionLike) => ({ ...state, firestoreCollectionLike }));
4550
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractDbxFirebaseDocumentStore, deps: [{ token: null, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
4551
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractDbxFirebaseDocumentStore });
5061
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractDbxFirebaseDocumentStore, deps: [{ token: null, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
5062
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractDbxFirebaseDocumentStore });
4552
5063
  }
4553
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractDbxFirebaseDocumentStore, decorators: [{
5064
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractDbxFirebaseDocumentStore, decorators: [{
4554
5065
  type: Injectable
4555
5066
  }], ctorParameters: () => [{ type: undefined, decorators: [{
4556
5067
  type: Inject,
@@ -4596,19 +5107,19 @@ let AbstractRootSingleItemDbxFirebaseDocument = class AbstractRootSingleItemDbxF
4596
5107
  *
4597
5108
  * Ref is set with the FirestoreCollection
4598
5109
  */
4599
- setId = this.updater((state, id) => state);
5110
+ setId = this.updater((state, _id) => state);
4600
5111
  /**
4601
5112
  * Does nothing on a AbstractRootSingleItemDbxFirebaseDocument.
4602
5113
  *
4603
5114
  * Ref is set with the FirestoreCollection
4604
5115
  */
4605
- setKey = this.updater((state, key) => state);
5116
+ setKey = this.updater((state, _key) => state);
4606
5117
  /**
4607
5118
  * Does nothing on a AbstractRootSingleItemDbxFirebaseDocument.
4608
5119
  *
4609
5120
  * Ref is set with the FirestoreCollection
4610
5121
  */
4611
- setRef = this.updater((state, ref) => state);
5122
+ setRef = this.updater((state, _ref) => state);
4612
5123
  clearRefs = this.updater((state) => state);
4613
5124
  };
4614
5125
  AbstractRootSingleItemDbxFirebaseDocument = __decorate([
@@ -4619,10 +5130,10 @@ AbstractRootSingleItemDbxFirebaseDocument = __decorate([
4619
5130
  /**
4620
5131
  * Creates a function for a store that DbxFirebaseDocumentStore captures the ModelFirebaseCreateFunction result and sets the key of the created value.
4621
5132
  *
4622
- * @param store
4623
- * @param fn
5133
+ * @param store - The document store to capture the created model's key into.
5134
+ * @param fn - The Firebase create function to wrap.
4624
5135
  * @param config - Optional config with an `onResult` callback.
4625
- * @returns
5136
+ * @returns A function that executes the create and sets the resulting key on the store.
4626
5137
  */
4627
5138
  function firebaseDocumentStoreCreateFunction(store, fn, config) {
4628
5139
  return (params) => loadingStateFromObs(lazyFrom(() => fn(params).then((result) => {
@@ -4665,9 +5176,10 @@ function firebaseDocumentStoreReadFunction(store, fn) {
4665
5176
  *
4666
5177
  * The store's current key is always injected into the params of the request.
4667
5178
  *
4668
- * @param store
4669
- * @param fn
4670
- * @returns
5179
+ * @param store - The document store whose current key is injected into the request params.
5180
+ * @param fn - The Firebase update function to wrap.
5181
+ * @param config - Optional config with an `onResult` callback.
5182
+ * @returns A function that executes the update with the store's key injected.
4671
5183
  */
4672
5184
  function firebaseDocumentStoreUpdateFunction(store, fn, config) {
4673
5185
  return (params) => loadingStateFromObs(store.key$.pipe(first(), exhaustMap((key) => fn({
@@ -4698,6 +5210,12 @@ function firebaseDocumentStoreDeleteFunction(store, fn) {
4698
5210
  })), shareReplay(1)));
4699
5211
  }
4700
5212
 
5213
+ /**
5214
+ * Creates a component store effect that links a parent document store to a subcollection store, propagating the parent document and lock set.
5215
+ *
5216
+ * @param store - The subcollection component store to connect to a parent store.
5217
+ * @returns An effect function that accepts an observable parent document store and manages the subscription lifecycle.
5218
+ */
4701
5219
  function setParentStoreEffect(store) {
4702
5220
  return store.effect((input) => {
4703
5221
  return input.pipe(map((parentStore) => {
@@ -4777,10 +5295,10 @@ class AbstractDbxFirebaseCollectionWithParentStore extends AbstractDbxFirebaseCo
4777
5295
  */
4778
5296
  _setParentDocument = this.updater((state, parent) => ({ ...state, parent }));
4779
5297
  _setParent = this._setParentDocument;
4780
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractDbxFirebaseCollectionWithParentStore, deps: [{ token: null, optional: true }, { token: null, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
4781
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractDbxFirebaseCollectionWithParentStore });
5298
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractDbxFirebaseCollectionWithParentStore, deps: [{ token: null, optional: true }, { token: null, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
5299
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractDbxFirebaseCollectionWithParentStore });
4782
5300
  }
4783
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractDbxFirebaseCollectionWithParentStore, decorators: [{
5301
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractDbxFirebaseCollectionWithParentStore, decorators: [{
4784
5302
  type: Injectable
4785
5303
  }], ctorParameters: () => [{ type: undefined, decorators: [{
4786
5304
  type: Inject,
@@ -4838,10 +5356,10 @@ class AbstractDbxFirebaseDocumentWithParentStore extends AbstractDbxFirebaseDocu
4838
5356
  * Sets the parent on the current state.
4839
5357
  */
4840
5358
  _setParentDocument = this.updater((state, parent) => ({ ...state, parent }));
4841
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractDbxFirebaseDocumentWithParentStore, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
4842
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractDbxFirebaseDocumentWithParentStore });
5359
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractDbxFirebaseDocumentWithParentStore, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
5360
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractDbxFirebaseDocumentWithParentStore });
4843
5361
  }
4844
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractDbxFirebaseDocumentWithParentStore, decorators: [{
5362
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractDbxFirebaseDocumentWithParentStore, decorators: [{
4845
5363
  type: Injectable
4846
5364
  }] });
4847
5365
  /**
@@ -4870,19 +5388,19 @@ class AbstractSingleItemDbxFirebaseDocument extends AbstractDbxFirebaseDocumentW
4870
5388
  *
4871
5389
  * Ref is set with the FirestoreCollection
4872
5390
  */
4873
- setId = this.updater((state, id) => state);
5391
+ setId = this.updater((state, _id) => state);
4874
5392
  /**
4875
5393
  * Does nothing on a AbstractSingleItemDbxFirebaseDocument.
4876
5394
  *
4877
5395
  * Ref is set with the FirestoreCollection
4878
5396
  */
4879
- setKey = this.updater((state, key) => state);
5397
+ setKey = this.updater((state, _key) => state);
4880
5398
  /**
4881
5399
  * Does nothing on a AbstractSingleItemDbxFirebaseDocument.
4882
5400
  *
4883
5401
  * Ref is set with the FirestoreCollection
4884
5402
  */
4885
- setRef = this.updater((state, ref) => state);
5403
+ setRef = this.updater((state, _ref) => state);
4886
5404
  clearRefs = this.updater((state) => state);
4887
5405
  }
4888
5406
 
@@ -4890,8 +5408,9 @@ class AbstractSingleItemDbxFirebaseDocument extends AbstractDbxFirebaseDocumentW
4890
5408
  * Abstract directive that contains a DbxFirebaseCollectionWithParentStore and provides an interface for communicating with other directives.
4891
5409
  */
4892
5410
  class DbxFirebaseCollectionWithParentStoreDirective extends DbxFirebaseCollectionStoreDirective {
4893
- sourceMode = model(undefined, ...(ngDevMode ? [{ debugName: "sourceMode" }] : []));
5411
+ sourceMode = model(undefined, ...(ngDevMode ? [{ debugName: "sourceMode" }] : /* istanbul ignore next */ []));
4894
5412
  _sourceMode$ = toObservable(this.sourceMode).pipe(skipInitialMaybe());
5413
+ // eslint-disable-next-line @angular-eslint/prefer-inject -- abstract class receives store from subclass constructors
4895
5414
  constructor(store) {
4896
5415
  super(store);
4897
5416
  // sync inputs to store any time the store changes
@@ -4903,10 +5422,10 @@ class DbxFirebaseCollectionWithParentStoreDirective extends DbxFirebaseCollectio
4903
5422
  setSourceMode(sourceMode) {
4904
5423
  this.sourceMode.set(sourceMode);
4905
5424
  }
4906
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseCollectionWithParentStoreDirective, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
4907
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: DbxFirebaseCollectionWithParentStoreDirective, isStandalone: true, inputs: { sourceMode: { classPropertyName: "sourceMode", publicName: "sourceMode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sourceMode: "sourceModeChange" }, usesInheritance: true, ngImport: i0 });
5425
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseCollectionWithParentStoreDirective, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
5426
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.3", type: DbxFirebaseCollectionWithParentStoreDirective, isStandalone: true, inputs: { sourceMode: { classPropertyName: "sourceMode", publicName: "sourceMode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sourceMode: "sourceModeChange" }, usesInheritance: true, ngImport: i0 });
4908
5427
  }
4909
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseCollectionWithParentStoreDirective, decorators: [{
5428
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseCollectionWithParentStoreDirective, decorators: [{
4910
5429
  type: Directive
4911
5430
  }], ctorParameters: () => [{ type: undefined }], propDecorators: { sourceMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "sourceMode", required: false }] }, { type: i0.Output, args: ["sourceModeChange"] }] } });
4912
5431
  function provideDbxFirebaseCollectionWithParentStoreDirective(sourceType, storeType) {
@@ -4924,10 +5443,10 @@ function provideDbxFirebaseCollectionWithParentStoreDirective(sourceType, storeT
4924
5443
  * Directive that provides a DbxFirebaseDocumentStoreContextStore.
4925
5444
  */
4926
5445
  class DbxFirebaseDocumentStoreContextStoreDirective {
4927
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDocumentStoreContextStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4928
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseDocumentStoreContextStoreDirective, isStandalone: true, selector: "[dbxFirebaseDocumentStoreContextStore]", providers: provideDbxFirebaseDocumentStoreContextStore(), ngImport: i0 });
5446
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDocumentStoreContextStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5447
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseDocumentStoreContextStoreDirective, isStandalone: true, selector: "[dbxFirebaseDocumentStoreContextStore]", providers: provideDbxFirebaseDocumentStoreContextStore(), ngImport: i0 });
4929
5448
  }
4930
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseDocumentStoreContextStoreDirective, decorators: [{
5449
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseDocumentStoreContextStoreDirective, decorators: [{
4931
5450
  type: Directive,
4932
5451
  args: [{
4933
5452
  selector: '[dbxFirebaseDocumentStoreContextStore]',
@@ -4936,27 +5455,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
4936
5455
  }]
4937
5456
  }] });
4938
5457
 
4939
- /** Collection store for querying SystemState documents. */
5458
+ /**
5459
+ * Collection store for querying SystemState documents.
5460
+ */
4940
5461
  class SystemStateCollectionStore extends AbstractDbxFirebaseCollectionStore {
4941
5462
  constructor() {
4942
5463
  super({ firestoreCollection: inject(SystemStateFirestoreCollections).systemStateCollection });
4943
5464
  }
4944
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SystemStateCollectionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4945
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SystemStateCollectionStore });
5465
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: SystemStateCollectionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5466
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: SystemStateCollectionStore });
4946
5467
  }
4947
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SystemStateCollectionStore, decorators: [{
5468
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: SystemStateCollectionStore, decorators: [{
4948
5469
  type: Injectable
4949
5470
  }], ctorParameters: () => [] });
4950
5471
 
4951
- /** Directive providing a {@link SystemStateCollectionStore} for querying system state documents. */
5472
+ /**
5473
+ * Directive providing a {@link SystemStateCollectionStore} for querying system state documents.
5474
+ */
4952
5475
  class DbxFirebaseSystemStateCollectionStoreDirective extends DbxFirebaseCollectionStoreDirective {
4953
5476
  constructor() {
4954
5477
  super(inject(SystemStateCollectionStore));
4955
5478
  }
4956
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseSystemStateCollectionStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4957
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseSystemStateCollectionStoreDirective, isStandalone: true, selector: "[dbxFirebaseSystemStateCollection]", providers: provideDbxFirebaseCollectionStoreDirective(DbxFirebaseSystemStateCollectionStoreDirective, SystemStateCollectionStore), usesInheritance: true, ngImport: i0 });
5479
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseSystemStateCollectionStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5480
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseSystemStateCollectionStoreDirective, isStandalone: true, selector: "[dbxFirebaseSystemStateCollection]", providers: provideDbxFirebaseCollectionStoreDirective(DbxFirebaseSystemStateCollectionStoreDirective, SystemStateCollectionStore), usesInheritance: true, ngImport: i0 });
4958
5481
  }
4959
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseSystemStateCollectionStoreDirective, decorators: [{
5482
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseSystemStateCollectionStoreDirective, decorators: [{
4960
5483
  type: Directive,
4961
5484
  args: [{
4962
5485
  selector: '[dbxFirebaseSystemStateCollection]',
@@ -4964,15 +5487,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
4964
5487
  }]
4965
5488
  }], ctorParameters: () => [] });
4966
5489
 
4967
- /** Document store for a single typed SystemState document. */
5490
+ /**
5491
+ * Document store for a single typed SystemState document.
5492
+ */
4968
5493
  class SystemStateDocumentStore extends AbstractDbxFirebaseDocumentStore {
4969
5494
  constructor() {
4970
5495
  super({ firestoreCollection: inject(SystemStateFirestoreCollections).systemStateCollection });
4971
5496
  }
4972
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SystemStateDocumentStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4973
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SystemStateDocumentStore });
5497
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: SystemStateDocumentStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5498
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: SystemStateDocumentStore });
4974
5499
  }
4975
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SystemStateDocumentStore, decorators: [{
5500
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: SystemStateDocumentStore, decorators: [{
4976
5501
  type: Injectable
4977
5502
  }], ctorParameters: () => [] });
4978
5503
 
@@ -4987,30 +5512,28 @@ class AbstractSystemStateDocumentStoreAccessor {
4987
5512
  exists$ = this.systemStateDocumentStore.exists$;
4988
5513
  doesNotExist$ = this.systemStateDocumentStore.doesNotExist$;
4989
5514
  type$ = this.systemStateDocumentStore.id$;
5515
+ // eslint-disable-next-line @angular-eslint/prefer-inject -- abstract class receives type identifier from subclass constructors
4990
5516
  constructor(type) {
4991
5517
  this.systemStateDocumentStore.setId(type);
4992
5518
  }
4993
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractSystemStateDocumentStoreAccessor, deps: [{ token: null, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
4994
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractSystemStateDocumentStoreAccessor });
5519
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractSystemStateDocumentStoreAccessor, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
5520
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractSystemStateDocumentStoreAccessor });
4995
5521
  }
4996
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractSystemStateDocumentStoreAccessor, decorators: [{
5522
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractSystemStateDocumentStoreAccessor, decorators: [{
4997
5523
  type: Injectable
4998
- }], ctorParameters: () => [{ type: undefined, decorators: [{
4999
- type: Inject,
5000
- args: [null]
5001
- }, {
5002
- type: Optional
5003
- }] }] });
5524
+ }], ctorParameters: () => [{ type: undefined }] });
5004
5525
 
5005
- /** Directive providing a {@link SystemStateDocumentStore} for accessing a single system state document. */
5526
+ /**
5527
+ * Directive providing a {@link SystemStateDocumentStore} for accessing a single system state document.
5528
+ */
5006
5529
  class DbxFirebaseSystemStateDocumentStoreDirective extends DbxFirebaseDocumentStoreDirective {
5007
5530
  constructor() {
5008
5531
  super(inject((SystemStateDocumentStore)));
5009
5532
  }
5010
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseSystemStateDocumentStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5011
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseSystemStateDocumentStoreDirective, isStandalone: true, selector: "[dbxFirebaseSystemStateDocument]", providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseSystemStateDocumentStoreDirective, SystemStateDocumentStore), usesInheritance: true, ngImport: i0 });
5533
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseSystemStateDocumentStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5534
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseSystemStateDocumentStoreDirective, isStandalone: true, selector: "[dbxFirebaseSystemStateDocument]", providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseSystemStateDocumentStoreDirective, SystemStateDocumentStore), usesInheritance: true, ngImport: i0 });
5012
5535
  }
5013
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseSystemStateDocumentStoreDirective, decorators: [{
5536
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseSystemStateDocumentStoreDirective, decorators: [{
5014
5537
  type: Directive,
5015
5538
  args: [{
5016
5539
  selector: '[dbxFirebaseSystemStateDocument]',
@@ -5019,11 +5542,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
5019
5542
  }], ctorParameters: () => [] });
5020
5543
 
5021
5544
  class DbxFirebaseModelModule {
5022
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5023
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelModule, exports: [DbxFirebaseModelStoreModule] });
5024
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelModule, imports: [DbxFirebaseModelStoreModule] });
5545
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5546
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelModule, exports: [DbxFirebaseModelStoreModule] });
5547
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelModule, imports: [DbxFirebaseModelStoreModule] });
5025
5548
  }
5026
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModelModule, decorators: [{
5549
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModelModule, decorators: [{
5027
5550
  type: NgModule,
5028
5551
  args: [{
5029
5552
  exports: [DbxFirebaseModelStoreModule]
@@ -5048,14 +5571,16 @@ class DbxFirebaseNotificationTemplateService {
5048
5571
  date
5049
5572
  };
5050
5573
  }
5051
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationTemplateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5052
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationTemplateService });
5574
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationTemplateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5575
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationTemplateService });
5053
5576
  }
5054
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationTemplateService, decorators: [{
5577
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationTemplateService, decorators: [{
5055
5578
  type: Injectable
5056
5579
  }] });
5057
5580
 
5058
- /** Selection list wrapper for notification items with view-only default selection mode. */
5581
+ /**
5582
+ * Selection list wrapper for notification items with view-only default selection mode.
5583
+ */
5059
5584
  class DbxFirebaseNotificationItemListComponent extends AbstractDbxSelectionListWrapperDirective {
5060
5585
  constructor() {
5061
5586
  super({
@@ -5063,10 +5588,10 @@ class DbxFirebaseNotificationItemListComponent extends AbstractDbxSelectionListW
5063
5588
  defaultSelectionMode: 'view'
5064
5589
  });
5065
5590
  }
5066
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5067
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseNotificationItemListComponent, isStandalone: true, selector: "dbx-firebase-notificationitem-list", providers: provideDbxListViewWrapper(DbxFirebaseNotificationItemListComponent), usesInheritance: true, ngImport: i0, template: "\n <dbx-list [state]=\"currentState$\" [config]=\"configSignal()\" [hasMore]=\"hasMore()\" [disabled]=\"disabled()\" [selectionMode]=\"selectionModeSignal()\">\n <ng-content top select=\"[top]\"></ng-content>\n <ng-content bottom select=\"[bottom]\"></ng-content>\n <ng-content empty select=\"[empty]\"></ng-content>\n <ng-content emptyLoading select=\"[emptyLoading]\"></ng-content>\n <ng-content end select=\"[end]\"></ng-content>\n </dbx-list>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxListWrapperComponentImportsModule }, { kind: "component", type: i1$1.DbxListComponent, selector: "dbx-list", inputs: ["padded", "state", "config", "disabled", "selectionMode", "hasMore"], outputs: ["contentScrolled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5591
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5592
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseNotificationItemListComponent, isStandalone: true, selector: "dbx-firebase-notificationitem-list", providers: provideDbxListViewWrapper(DbxFirebaseNotificationItemListComponent), usesInheritance: true, ngImport: i0, template: "\n <dbx-list [state]=\"currentState$\" [config]=\"configSignal()\" [hasMore]=\"hasMore()\" [disabled]=\"disabled()\" [selectionMode]=\"selectionModeSignal()\">\n <ng-content top select=\"[top]\"></ng-content>\n <ng-content bottom select=\"[bottom]\"></ng-content>\n <ng-content empty select=\"[empty]\"></ng-content>\n <ng-content emptyLoading select=\"[emptyLoading]\"></ng-content>\n <ng-content end select=\"[end]\"></ng-content>\n </dbx-list>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxListWrapperComponentImportsModule }, { kind: "component", type: i1$1.DbxListComponent, selector: "dbx-list", inputs: ["padded", "state", "config", "disabled", "selectionMode", "hasMore"], outputs: ["contentScrolled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5068
5593
  }
5069
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemListComponent, decorators: [{
5594
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemListComponent, decorators: [{
5070
5595
  type: Component,
5071
5596
  args: [{
5072
5597
  selector: 'dbx-firebase-notificationitem-list',
@@ -5077,16 +5602,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
5077
5602
  standalone: true
5078
5603
  }]
5079
5604
  }], ctorParameters: () => [] });
5080
- /** List view component that renders notification items using the selection list pattern. */
5605
+ /**
5606
+ * List view component that renders notification items using the selection list pattern.
5607
+ */
5081
5608
  class DbxFirebaseNotificationItemListViewComponent extends AbstractDbxSelectionListViewDirective {
5082
5609
  config = {
5083
5610
  componentClass: DbxFirebaseNotificationItemListViewItemComponent,
5084
5611
  mapValuesToItemValues: (x) => of(x.map((y) => ({ ...y, icon: y.icon, itemValue: y })))
5085
5612
  };
5086
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemListViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
5087
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseNotificationItemListViewComponent, isStandalone: true, selector: "dbx-firebase-notificationitem-list-view", providers: provideDbxListView(DbxFirebaseNotificationItemListViewComponent), usesInheritance: true, ngImport: i0, template: "<dbx-selection-list-view [config]=\"config\"></dbx-selection-list-view>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxSelectionValueListViewComponentImportsModule }, { kind: "component", type: i1$1.DbxSelectionValueListViewComponent, selector: "dbx-selection-list-view" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5613
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemListViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
5614
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseNotificationItemListViewComponent, isStandalone: true, selector: "dbx-firebase-notificationitem-list-view", providers: provideDbxListView(DbxFirebaseNotificationItemListViewComponent), usesInheritance: true, ngImport: i0, template: "<dbx-selection-list-view [config]=\"config\"></dbx-selection-list-view>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxSelectionValueListViewComponentImportsModule }, { kind: "component", type: i1$1.DbxSelectionValueListViewComponent, selector: "dbx-selection-list-view" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5088
5615
  }
5089
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemListViewComponent, decorators: [{
5616
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemListViewComponent, decorators: [{
5090
5617
  type: Component,
5091
5618
  args: [{
5092
5619
  selector: 'dbx-firebase-notificationitem-list-view',
@@ -5097,7 +5624,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
5097
5624
  standalone: true
5098
5625
  }]
5099
5626
  }] });
5100
- /** Individual list view item component rendering a notification's subject, message, and date. */
5627
+ /**
5628
+ * Individual list view item component rendering a notification's subject, message, and date.
5629
+ */
5101
5630
  class DbxFirebaseNotificationItemListViewItemComponent extends AbstractDbxValueListViewItemComponent {
5102
5631
  dbxFirebaseNotificationTemplateService = inject(DbxFirebaseNotificationTemplateService);
5103
5632
  pairGetter = cachedGetter(() => this.dbxFirebaseNotificationTemplateService.notificationItemSubjectMessagePairForNotificationSummaryItem(this.itemValue));
@@ -5110,8 +5639,8 @@ class DbxFirebaseNotificationItemListViewItemComponent extends AbstractDbxValueL
5110
5639
  get date() {
5111
5640
  return this.pairGetter().date;
5112
5641
  }
5113
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemListViewItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
5114
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseNotificationItemListViewItemComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
5642
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemListViewItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
5643
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseNotificationItemListViewItemComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
5115
5644
  <div class="dbx-list-item-padded dbx-list-two-line-item dbx-firebase-notificationitem-list-view-item">
5116
5645
  <div class="item-left">
5117
5646
  <span class="notificationitem-subject">{{ subject }}</span>
@@ -5121,7 +5650,7 @@ class DbxFirebaseNotificationItemListViewItemComponent extends AbstractDbxValueL
5121
5650
  </div>
5122
5651
  `, isInline: true, dependencies: [{ kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: CutTextPipe, name: "cutText" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5123
5652
  }
5124
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemListViewItemComponent, decorators: [{
5653
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemListViewItemComponent, decorators: [{
5125
5654
  type: Component,
5126
5655
  args: [{
5127
5656
  template: `
@@ -5139,15 +5668,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
5139
5668
  }]
5140
5669
  }] });
5141
5670
 
5142
- /** Presentational component for notification item content, displaying subject, message, and date. */
5671
+ /**
5672
+ * Presentational component for notification item content, displaying subject, message, and date.
5673
+ */
5143
5674
  class DbxFirebaseNotificationItemContentComponent {
5144
- subject = input(...(ngDevMode ? [undefined, { debugName: "subject" }] : []));
5145
- message = input(...(ngDevMode ? [undefined, { debugName: "message" }] : []));
5146
- date = input(...(ngDevMode ? [undefined, { debugName: "date" }] : []));
5147
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5148
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DbxFirebaseNotificationItemContentComponent, isStandalone: true, selector: "dbx-firebase-notificationitem-content", inputs: { subject: { classPropertyName: "subject", publicName: "subject", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, date: { classPropertyName: "date", publicName: "date", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"dbx-firebase-notificationitem-content\">\n <div class=\"notificationitem-header dbx-pb2\">\n @if (subject()) {\n <div class=\"notificationitem-subject dbx-pb1\">{{ subject() }}</div>\n }\n <ng-content select=\"[header]\"></ng-content>\n @if (date()) {\n <div class=\"notificationitem-date dbx-label dbx-small\">{{ date() | date: 'medium' }}</div>\n }\n </div>\n <ng-content select=\"[premessage]\"></ng-content>\n <div class=\"notificationitem-message\">{{ message() }}</div>\n <ng-content></ng-content>\n</div>\n", styles: [".dbx-firebase-notificationitem-content .notificationitem-subject{font-size:1.25em}\n"], dependencies: [{ kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5675
+ subject = input(...(ngDevMode ? [undefined, { debugName: "subject" }] : /* istanbul ignore next */ []));
5676
+ message = input(...(ngDevMode ? [undefined, { debugName: "message" }] : /* istanbul ignore next */ []));
5677
+ date = input(...(ngDevMode ? [undefined, { debugName: "date" }] : /* istanbul ignore next */ []));
5678
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5679
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.3", type: DbxFirebaseNotificationItemContentComponent, isStandalone: true, selector: "dbx-firebase-notificationitem-content", inputs: { subject: { classPropertyName: "subject", publicName: "subject", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, date: { classPropertyName: "date", publicName: "date", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"dbx-firebase-notificationitem-content\">\n <div class=\"notificationitem-header dbx-pb2\">\n @if (subject()) {\n <div class=\"notificationitem-subject dbx-pb1\">{{ subject() }}</div>\n }\n <ng-content select=\"[header]\"></ng-content>\n @if (date()) {\n <div class=\"notificationitem-date dbx-label dbx-small\">{{ date() | date: 'medium' }}</div>\n }\n </div>\n <ng-content select=\"[premessage]\"></ng-content>\n <div class=\"notificationitem-message\">{{ message() }}</div>\n <ng-content></ng-content>\n</div>\n", styles: [".dbx-firebase-notificationitem-content .notificationitem-subject{font-size:1.25em}\n"], dependencies: [{ kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5149
5680
  }
5150
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemContentComponent, decorators: [{
5681
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemContentComponent, decorators: [{
5151
5682
  type: Component,
5152
5683
  args: [{ selector: 'dbx-firebase-notificationitem-content', imports: [DatePipe], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div class=\"dbx-firebase-notificationitem-content\">\n <div class=\"notificationitem-header dbx-pb2\">\n @if (subject()) {\n <div class=\"notificationitem-subject dbx-pb1\">{{ subject() }}</div>\n }\n <ng-content select=\"[header]\"></ng-content>\n @if (date()) {\n <div class=\"notificationitem-date dbx-label dbx-small\">{{ date() | date: 'medium' }}</div>\n }\n </div>\n <ng-content select=\"[premessage]\"></ng-content>\n <div class=\"notificationitem-message\">{{ message() }}</div>\n <ng-content></ng-content>\n</div>\n", styles: [".dbx-firebase-notificationitem-content .notificationitem-subject{font-size:1.25em}\n"] }]
5153
5684
  }], propDecorators: { subject: [{ type: i0.Input, args: [{ isSignal: true, alias: "subject", required: false }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }], date: [{ type: i0.Input, args: [{ isSignal: true, alias: "date", required: false }] }] } });
@@ -5159,6 +5690,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
5159
5690
  */
5160
5691
  const FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE_PREFIX = 'dbxFirebaseNotificationItem';
5161
5692
  const DEFAULT_FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE = `${FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE_PREFIX}Default`;
5693
+ /**
5694
+ * Derives the widget type string for a given notification template type by prepending the standard prefix.
5695
+ *
5696
+ * @param notificationTemplateType - The notification template type to generate a widget type for.
5697
+ * @returns The prefixed widget type string.
5698
+ */
5162
5699
  function dbxWidgetTypeForNotificationTemplateType(notificationTemplateType) {
5163
5700
  return `${FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE_PREFIX}-${notificationTemplateType}`;
5164
5701
  }
@@ -5173,8 +5710,9 @@ class DbxFirebaseNotificationItemWidgetService {
5173
5710
  /**
5174
5711
  * Used to register a item widget. If widget for the given type is already registered, this will override it by default.
5175
5712
  *
5176
- * @param provider
5177
- * @param override
5713
+ * @param provider - The notification item widget entry to register.
5714
+ * @param override - Whether to override an existing widget for the same notification template type. Defaults to true.
5715
+ * @returns True if the widget was registered, false if it already existed and override was false or the template type was unknown.
5178
5716
  */
5179
5717
  register(provider, override = true) {
5180
5718
  const { componentClass, notificationTemplateType } = provider;
@@ -5206,10 +5744,10 @@ class DbxFirebaseNotificationItemWidgetService {
5206
5744
  type: DEFAULT_FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE
5207
5745
  }, override);
5208
5746
  }
5209
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemWidgetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5210
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemWidgetService });
5747
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemWidgetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5748
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemWidgetService });
5211
5749
  }
5212
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemWidgetService, decorators: [{
5750
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemWidgetService, decorators: [{
5213
5751
  type: Injectable
5214
5752
  }] });
5215
5753
 
@@ -5218,7 +5756,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
5218
5756
  * display component based on the notification's template type.
5219
5757
  */
5220
5758
  class DbxFirebaseNotificationItemViewComponent {
5221
- item = input(...(ngDevMode ? [undefined, { debugName: "item" }] : []));
5759
+ item = input(...(ngDevMode ? [undefined, { debugName: "item" }] : /* istanbul ignore next */ []));
5222
5760
  configSignal = computed(() => {
5223
5761
  const data = this.item();
5224
5762
  let config = undefined;
@@ -5231,13 +5769,13 @@ class DbxFirebaseNotificationItemViewComponent {
5231
5769
  };
5232
5770
  }
5233
5771
  return config;
5234
- }, ...(ngDevMode ? [{ debugName: "configSignal" }] : []));
5235
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5236
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: DbxFirebaseNotificationItemViewComponent, isStandalone: true, selector: "dbx-firebase-notificationitem-view", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
5772
+ }, ...(ngDevMode ? [{ debugName: "configSignal" }] : /* istanbul ignore next */ []));
5773
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5774
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.3", type: DbxFirebaseNotificationItemViewComponent, isStandalone: true, selector: "dbx-firebase-notificationitem-view", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
5237
5775
  <dbx-widget-view [config]="configSignal()"></dbx-widget-view>
5238
5776
  `, isInline: true, dependencies: [{ kind: "component", type: DbxWidgetViewComponent, selector: "dbx-widget-view", inputs: ["config"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5239
5777
  }
5240
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemViewComponent, decorators: [{
5778
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemViewComponent, decorators: [{
5241
5779
  type: Component,
5242
5780
  args: [{
5243
5781
  selector: 'dbx-firebase-notificationitem-view',
@@ -5259,14 +5797,16 @@ class AbstractDbxFirebaseNotificationItemWidgetComponent extends AbstractDbxWidg
5259
5797
  get notificationItem() {
5260
5798
  return this.data;
5261
5799
  }
5262
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractDbxFirebaseNotificationItemWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
5263
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: AbstractDbxFirebaseNotificationItemWidgetComponent, isStandalone: true, usesInheritance: true, ngImport: i0 });
5800
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractDbxFirebaseNotificationItemWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
5801
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: AbstractDbxFirebaseNotificationItemWidgetComponent, isStandalone: true, usesInheritance: true, ngImport: i0 });
5264
5802
  }
5265
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AbstractDbxFirebaseNotificationItemWidgetComponent, decorators: [{
5803
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: AbstractDbxFirebaseNotificationItemWidgetComponent, decorators: [{
5266
5804
  type: Directive
5267
5805
  }] });
5268
5806
 
5269
- /** Default notification item view component that renders subject, message, and creation date. */
5807
+ /**
5808
+ * Default notification item view component that renders subject, message, and creation date.
5809
+ */
5270
5810
  class DbxFirebaseNotificationItemDefaultViewComponent extends AbstractDbxFirebaseNotificationItemWidgetComponent {
5271
5811
  get subject() {
5272
5812
  return this.notificationItem.s;
@@ -5277,10 +5817,10 @@ class DbxFirebaseNotificationItemDefaultViewComponent extends AbstractDbxFirebas
5277
5817
  get date() {
5278
5818
  return this.notificationItem.cat;
5279
5819
  }
5280
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemDefaultViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
5281
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseNotificationItemDefaultViewComponent, isStandalone: true, selector: "dbx-firebase-notificationitem-view-default", usesInheritance: true, ngImport: i0, template: '<dbx-firebase-notificationitem-content [subject]="subject" [message]="message" [date]="date"></dbx-firebase-notificationitem-content>', isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseNotificationItemContentComponent, selector: "dbx-firebase-notificationitem-content", inputs: ["subject", "message", "date"] }] });
5820
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemDefaultViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
5821
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseNotificationItemDefaultViewComponent, isStandalone: true, selector: "dbx-firebase-notificationitem-view-default", usesInheritance: true, ngImport: i0, template: '<dbx-firebase-notificationitem-content [subject]="subject" [message]="message" [date]="date"></dbx-firebase-notificationitem-content>', isInline: true, dependencies: [{ kind: "component", type: DbxFirebaseNotificationItemContentComponent, selector: "dbx-firebase-notificationitem-content", inputs: ["subject", "message", "date"] }] });
5282
5822
  }
5283
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemDefaultViewComponent, decorators: [{
5823
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemDefaultViewComponent, decorators: [{
5284
5824
  type: Component,
5285
5825
  args: [{
5286
5826
  selector: 'dbx-firebase-notificationitem-view-default',
@@ -5312,10 +5852,10 @@ class DbxFirebaseNotificationItemStorePopoverComponent extends AbstractPopoverDi
5312
5852
  emptyText = this.params.header ?? 'There are no notifications.';
5313
5853
  makeNotificationItemAnchor = this.params.makeNotificationItemAnchor;
5314
5854
  notificationItemsLoadingState$ = this.params.notificationItemsLoadingState$;
5315
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemStorePopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
5316
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseNotificationItemStorePopoverComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<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", dependencies: [{ kind: "ngmodule", type: DbxPopoverInteractionModule }, { kind: "component", type: i1$1.DbxPopoverContentComponent, selector: "dbx-popover-content" }, { kind: "component", type: i1$1.DbxPopoverHeaderComponent, selector: "dbx-popover-header", inputs: ["header", "icon"] }, { kind: "directive", type: i1$1.DbxPopoverScrollContentDirective, selector: "dbx-popover-scroll-content,[dbxPopoverScrollContent],.dbx-popover-scroll-content" }, { kind: "ngmodule", type: DbxListModifierModule }, { kind: "directive", type: i1$1.DbxValueListItemModifierDirective, selector: "dbxListItemModifier,[dbxListItemModifier]", inputs: ["dbxListItemModifier"] }, { kind: "component", type: DbxFirebaseNotificationItemListComponent, selector: "dbx-firebase-notificationitem-list" }, { kind: "component", type: DbxListEmptyContentComponent, selector: "dbx-list-empty-content" }, { kind: "directive", type: DbxListItemAnchorModifierDirective, selector: "[dbxListItemAnchorModifier]", inputs: ["dbxListItemAnchorModifier"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5855
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemStorePopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
5856
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseNotificationItemStorePopoverComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<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", dependencies: [{ kind: "ngmodule", type: DbxPopoverInteractionModule }, { kind: "component", type: i1$1.DbxPopoverContentComponent, selector: "dbx-popover-content" }, { kind: "component", type: i1$1.DbxPopoverHeaderComponent, selector: "dbx-popover-header", inputs: ["header", "icon"] }, { kind: "directive", type: i1$1.DbxPopoverScrollContentDirective, selector: "dbx-popover-scroll-content,[dbxPopoverScrollContent],.dbx-popover-scroll-content" }, { kind: "ngmodule", type: DbxListModifierModule }, { kind: "directive", type: i1$1.DbxValueListItemModifierDirective, selector: "dbxListItemModifier,[dbxListItemModifier]", inputs: ["dbxListItemModifier"] }, { kind: "component", type: DbxFirebaseNotificationItemListComponent, selector: "dbx-firebase-notificationitem-list" }, { kind: "component", type: DbxListEmptyContentComponent, selector: "dbx-list-empty-content" }, { kind: "directive", type: DbxListItemAnchorModifierDirective, selector: "[dbxListItemAnchorModifier]", inputs: ["dbxListItemAnchorModifier"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5317
5857
  }
5318
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemStorePopoverComponent, decorators: [{
5858
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemStorePopoverComponent, decorators: [{
5319
5859
  type: Component,
5320
5860
  args: [{ imports: [DbxPopoverInteractionModule, DbxListModifierModule, DbxFirebaseNotificationItemListComponent, DbxListEmptyContentComponent, DbxListItemAnchorModifierDirective], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<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" }]
5321
5861
  }] });
@@ -5339,18 +5879,18 @@ class DbxFirebaseNotificationItemStore extends ComponentStore {
5339
5879
  // MARK: State Changes
5340
5880
  setItems = this.updater((state, items) => ({ ...state, items }));
5341
5881
  setSelectedId = this.updater((state, selectedId) => ({ ...state, selectedId }));
5342
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5343
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemStore });
5882
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5883
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemStore });
5344
5884
  }
5345
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemStore, decorators: [{
5885
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemStore, decorators: [{
5346
5886
  type: Injectable
5347
5887
  }], ctorParameters: () => [] });
5348
5888
 
5349
5889
  class DbxFirebaseNotificationItemStorePopoverButtonComponent extends AbstractPopoverRefDirective {
5350
5890
  _dbxPopoverService = inject(DbxPopoverService);
5351
5891
  _dbxFirebaseNotificationItemStore = inject(DbxFirebaseNotificationItemStore, { optional: true });
5352
- buttonElement = viewChild('button', { ...(ngDevMode ? { debugName: "buttonElement" } : {}), read: ElementRef });
5353
- config = input(...(ngDevMode ? [undefined, { debugName: "config" }] : []));
5892
+ buttonElement = viewChild('button', { ...(ngDevMode ? { debugName: "buttonElement" } : /* istanbul ignore next */ {}), read: ElementRef });
5893
+ config = input(...(ngDevMode ? [undefined, { debugName: "config" }] : /* istanbul ignore next */ []));
5354
5894
  showNotificationsPopover() {
5355
5895
  const origin = this.buttonElement()?.nativeElement;
5356
5896
  this.showPopover(origin);
@@ -5370,12 +5910,12 @@ class DbxFirebaseNotificationItemStorePopoverButtonComponent extends AbstractPop
5370
5910
  ...config
5371
5911
  });
5372
5912
  }
5373
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemStorePopoverButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
5374
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: DbxFirebaseNotificationItemStorePopoverButtonComponent, isStandalone: true, selector: "dbx-firebase-notification-item-store-popover-button", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "buttonElement", first: true, predicate: ["button"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
5913
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemStorePopoverButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
5914
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.3", type: DbxFirebaseNotificationItemStorePopoverButtonComponent, isStandalone: true, selector: "dbx-firebase-notification-item-store-popover-button", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "buttonElement", first: true, predicate: ["button"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
5375
5915
  <dbx-icon-button #button (buttonClick)="showNotificationsPopover()" icon="notifications"></dbx-icon-button>
5376
5916
  `, isInline: true, dependencies: [{ kind: "component", type: DbxIconButtonComponent, selector: "dbx-icon-button" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5377
5917
  }
5378
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationItemStorePopoverButtonComponent, decorators: [{
5918
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationItemStorePopoverButtonComponent, decorators: [{
5379
5919
  type: Component,
5380
5920
  args: [{
5381
5921
  selector: 'dbx-firebase-notification-item-store-popover-button',
@@ -5388,7 +5928,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
5388
5928
  }]
5389
5929
  }], propDecorators: { buttonElement: [{ type: i0.ViewChild, args: ['button', { ...{ read: ElementRef }, isSignal: true }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }] } });
5390
5930
 
5391
- /** Document store for a single NotificationBox, providing derived observables for creation date, recipients, and update functions. */
5931
+ /**
5932
+ * Document store for a single NotificationBox, providing derived observables for creation date, recipients, and update functions.
5933
+ */
5392
5934
  class NotificationBoxDocumentStore extends AbstractDbxFirebaseDocumentStore {
5393
5935
  notificationFunctions = inject(NotificationFunctions);
5394
5936
  constructor() {
@@ -5398,14 +5940,16 @@ class NotificationBoxDocumentStore extends AbstractDbxFirebaseDocumentStore {
5398
5940
  recipients$ = this.data$.pipe(map((x) => x.r), shareReplay(1));
5399
5941
  updateNotificationBox = firebaseDocumentStoreUpdateFunction(this, this.notificationFunctions.notificationBox.updateNotificationBox.update);
5400
5942
  updateNotificationBoxRecipient = firebaseDocumentStoreUpdateFunction(this, this.notificationFunctions.notificationBox.updateNotificationBox.recipient);
5401
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationBoxDocumentStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5402
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationBoxDocumentStore });
5943
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationBoxDocumentStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5944
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationBoxDocumentStore });
5403
5945
  }
5404
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationBoxDocumentStore, decorators: [{
5946
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationBoxDocumentStore, decorators: [{
5405
5947
  type: Injectable
5406
5948
  }], ctorParameters: () => [] });
5407
5949
 
5408
- /** Document store for a single Notification, providing derived observables for creation date, send state, and update functions. */
5950
+ /**
5951
+ * Document store for a single Notification, providing derived observables for creation date, send state, and update functions.
5952
+ */
5409
5953
  class NotificationDocumentStore extends AbstractDbxFirebaseDocumentWithParentStore {
5410
5954
  notificationFunctions = inject(NotificationFunctions);
5411
5955
  constructor() {
@@ -5421,22 +5965,24 @@ class NotificationDocumentStore extends AbstractDbxFirebaseDocumentWithParentSto
5421
5965
  sendAttemptsCount$ = this.data$.pipe(map((x) => x.a), distinctUntilChanged(), shareReplay(1));
5422
5966
  isUnique$ = this.data$.pipe(map((x) => x.ut), distinctUntilChanged(), shareReplay(1));
5423
5967
  sendNotification = firebaseDocumentStoreUpdateFunction(this, this.notificationFunctions.notification.updateNotification.send);
5424
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationDocumentStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5425
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationDocumentStore });
5968
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationDocumentStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5969
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationDocumentStore });
5426
5970
  }
5427
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationDocumentStore, decorators: [{
5971
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationDocumentStore, decorators: [{
5428
5972
  type: Injectable
5429
5973
  }], ctorParameters: () => [] });
5430
5974
 
5431
- /** Directive providing a {@link NotificationDocumentStore} for accessing a single notification document. */
5975
+ /**
5976
+ * Directive providing a {@link NotificationDocumentStore} for accessing a single notification document.
5977
+ */
5432
5978
  class DbxFirebaseNotificationDocumentStoreDirective extends DbxFirebaseDocumentStoreDirective {
5433
5979
  constructor() {
5434
5980
  super(inject(NotificationDocumentStore));
5435
5981
  }
5436
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationDocumentStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5437
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseNotificationDocumentStoreDirective, isStandalone: true, selector: "[dbxFirebaseNotificationDocument]", providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseNotificationDocumentStoreDirective, NotificationDocumentStore), usesInheritance: true, ngImport: i0 });
5982
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationDocumentStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5983
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseNotificationDocumentStoreDirective, isStandalone: true, selector: "[dbxFirebaseNotificationDocument]", providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseNotificationDocumentStoreDirective, NotificationDocumentStore), usesInheritance: true, ngImport: i0 });
5438
5984
  }
5439
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationDocumentStoreDirective, decorators: [{
5985
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationDocumentStoreDirective, decorators: [{
5440
5986
  type: Directive,
5441
5987
  args: [{
5442
5988
  selector: '[dbxFirebaseNotificationDocument]',
@@ -5445,7 +5991,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
5445
5991
  }]
5446
5992
  }], ctorParameters: () => [] });
5447
5993
 
5448
- /** Collection store for Notification documents, scoped to a parent NotificationBox when available. */
5994
+ /**
5995
+ * Collection store for Notification documents, scoped to a parent NotificationBox when available.
5996
+ */
5449
5997
  class NotificationCollectionStore extends AbstractDbxFirebaseCollectionWithParentStore {
5450
5998
  constructor() {
5451
5999
  super({ collectionFactory: inject(NotificationFirestoreCollections).notificationCollectionFactory, collectionGroup: inject(NotificationFirestoreCollections).notificationCollectionGroup });
@@ -5454,22 +6002,24 @@ class NotificationCollectionStore extends AbstractDbxFirebaseCollectionWithParen
5454
6002
  this.setParentStore(parent);
5455
6003
  }
5456
6004
  }
5457
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationCollectionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5458
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationCollectionStore });
6005
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationCollectionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6006
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationCollectionStore });
5459
6007
  }
5460
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationCollectionStore, decorators: [{
6008
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationCollectionStore, decorators: [{
5461
6009
  type: Injectable
5462
6010
  }], ctorParameters: () => [] });
5463
6011
 
5464
- /** Directive providing a {@link NotificationCollectionStore} for querying notifications within a template. */
6012
+ /**
6013
+ * Directive providing a {@link NotificationCollectionStore} for querying notifications within a template.
6014
+ */
5465
6015
  class DbxFirebaseNotificationCollectionStoreDirective extends DbxFirebaseCollectionWithParentStoreDirective {
5466
6016
  constructor() {
5467
6017
  super(inject(NotificationCollectionStore));
5468
6018
  }
5469
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationCollectionStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5470
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseNotificationCollectionStoreDirective, isStandalone: true, selector: "[dbxFirebaseNotificationCollection]", providers: provideDbxFirebaseCollectionWithParentStoreDirective(DbxFirebaseNotificationCollectionStoreDirective, NotificationCollectionStore), usesInheritance: true, ngImport: i0 });
6019
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationCollectionStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6020
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseNotificationCollectionStoreDirective, isStandalone: true, selector: "[dbxFirebaseNotificationCollection]", providers: provideDbxFirebaseCollectionWithParentStoreDirective(DbxFirebaseNotificationCollectionStoreDirective, NotificationCollectionStore), usesInheritance: true, ngImport: i0 });
5471
6021
  }
5472
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationCollectionStoreDirective, decorators: [{
6022
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationCollectionStoreDirective, decorators: [{
5473
6023
  type: Directive,
5474
6024
  args: [{
5475
6025
  selector: '[dbxFirebaseNotificationCollection]',
@@ -5478,15 +6028,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
5478
6028
  }]
5479
6029
  }], ctorParameters: () => [] });
5480
6030
 
5481
- /** Directive providing a {@link NotificationBoxDocumentStore} for accessing a single notification box document. */
6031
+ /**
6032
+ * Directive providing a {@link NotificationBoxDocumentStore} for accessing a single notification box document.
6033
+ */
5482
6034
  class DbxFirebaseNotificationBoxDocumentStoreDirective extends DbxFirebaseDocumentStoreDirective {
5483
6035
  constructor() {
5484
6036
  super(inject(NotificationBoxDocumentStore));
5485
6037
  }
5486
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationBoxDocumentStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5487
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseNotificationBoxDocumentStoreDirective, isStandalone: true, selector: "[dbxFirebaseNotificationBoxDocument]", providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseNotificationBoxDocumentStoreDirective, NotificationBoxDocumentStore), usesInheritance: true, ngImport: i0 });
6038
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationBoxDocumentStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6039
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseNotificationBoxDocumentStoreDirective, isStandalone: true, selector: "[dbxFirebaseNotificationBoxDocument]", providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseNotificationBoxDocumentStoreDirective, NotificationBoxDocumentStore), usesInheritance: true, ngImport: i0 });
5488
6040
  }
5489
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationBoxDocumentStoreDirective, decorators: [{
6041
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationBoxDocumentStoreDirective, decorators: [{
5490
6042
  type: Directive,
5491
6043
  args: [{
5492
6044
  selector: '[dbxFirebaseNotificationBoxDocument]',
@@ -5495,27 +6047,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
5495
6047
  }]
5496
6048
  }], ctorParameters: () => [] });
5497
6049
 
5498
- /** Collection store for querying NotificationBox documents. */
6050
+ /**
6051
+ * Collection store for querying NotificationBox documents.
6052
+ */
5499
6053
  class NotificationBoxCollectionStore extends AbstractDbxFirebaseCollectionStore {
5500
6054
  constructor() {
5501
6055
  super({ firestoreCollection: inject(NotificationFirestoreCollections).notificationBoxCollection });
5502
6056
  }
5503
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationBoxCollectionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5504
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationBoxCollectionStore });
6057
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationBoxCollectionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6058
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationBoxCollectionStore });
5505
6059
  }
5506
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationBoxCollectionStore, decorators: [{
6060
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationBoxCollectionStore, decorators: [{
5507
6061
  type: Injectable
5508
6062
  }], ctorParameters: () => [] });
5509
6063
 
5510
- /** Directive providing a {@link NotificationBoxCollectionStore} for querying notification boxes. */
6064
+ /**
6065
+ * Directive providing a {@link NotificationBoxCollectionStore} for querying notification boxes.
6066
+ */
5511
6067
  class DbxFirebaseNotificationBoxCollectionStoreDirective extends DbxFirebaseCollectionStoreDirective {
5512
6068
  constructor() {
5513
6069
  super(inject(NotificationBoxCollectionStore));
5514
6070
  }
5515
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationBoxCollectionStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5516
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseNotificationBoxCollectionStoreDirective, isStandalone: true, selector: "[dbxFirebaseNotificationBoxCollection]", providers: provideDbxFirebaseCollectionStoreDirective(DbxFirebaseNotificationBoxCollectionStoreDirective, NotificationBoxCollectionStore), usesInheritance: true, ngImport: i0 });
6071
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationBoxCollectionStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6072
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseNotificationBoxCollectionStoreDirective, isStandalone: true, selector: "[dbxFirebaseNotificationBoxCollection]", providers: provideDbxFirebaseCollectionStoreDirective(DbxFirebaseNotificationBoxCollectionStoreDirective, NotificationBoxCollectionStore), usesInheritance: true, ngImport: i0 });
5517
6073
  }
5518
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationBoxCollectionStoreDirective, decorators: [{
6074
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationBoxCollectionStoreDirective, decorators: [{
5519
6075
  type: Directive,
5520
6076
  args: [{
5521
6077
  selector: '[dbxFirebaseNotificationBoxCollection]',
@@ -5524,27 +6080,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
5524
6080
  }]
5525
6081
  }], ctorParameters: () => [] });
5526
6082
 
5527
- /** Collection store for querying NotificationSummary documents. */
6083
+ /**
6084
+ * Collection store for querying NotificationSummary documents.
6085
+ */
5528
6086
  class NotificationSummaryCollectionStore extends AbstractDbxFirebaseCollectionStore {
5529
6087
  constructor() {
5530
6088
  super({ firestoreCollection: inject(NotificationFirestoreCollections).notificationSummaryCollection });
5531
6089
  }
5532
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationSummaryCollectionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5533
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationSummaryCollectionStore });
6090
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationSummaryCollectionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6091
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationSummaryCollectionStore });
5534
6092
  }
5535
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationSummaryCollectionStore, decorators: [{
6093
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationSummaryCollectionStore, decorators: [{
5536
6094
  type: Injectable
5537
6095
  }], ctorParameters: () => [] });
5538
6096
 
5539
- /** Directive providing a {@link NotificationSummaryCollectionStore} for querying notification summaries. */
6097
+ /**
6098
+ * Directive providing a {@link NotificationSummaryCollectionStore} for querying notification summaries.
6099
+ */
5540
6100
  class DbxFirebaseNotificationSummaryCollectionStoreDirective extends DbxFirebaseCollectionStoreDirective {
5541
6101
  constructor() {
5542
6102
  super(inject(NotificationSummaryCollectionStore));
5543
6103
  }
5544
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationSummaryCollectionStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5545
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseNotificationSummaryCollectionStoreDirective, isStandalone: true, selector: "[dbxFirebaseNotificationSummaryCollection]", providers: provideDbxFirebaseCollectionStoreDirective(DbxFirebaseNotificationSummaryCollectionStoreDirective, NotificationSummaryCollectionStore), usesInheritance: true, ngImport: i0 });
6104
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationSummaryCollectionStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6105
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseNotificationSummaryCollectionStoreDirective, isStandalone: true, selector: "[dbxFirebaseNotificationSummaryCollection]", providers: provideDbxFirebaseCollectionStoreDirective(DbxFirebaseNotificationSummaryCollectionStoreDirective, NotificationSummaryCollectionStore), usesInheritance: true, ngImport: i0 });
5546
6106
  }
5547
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationSummaryCollectionStoreDirective, decorators: [{
6107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationSummaryCollectionStoreDirective, decorators: [{
5548
6108
  type: Directive,
5549
6109
  args: [{
5550
6110
  selector: '[dbxFirebaseNotificationSummaryCollection]',
@@ -5553,7 +6113,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
5553
6113
  }]
5554
6114
  }], ctorParameters: () => [] });
5555
6115
 
5556
- /** Document store for a single NotificationSummary, providing derived observables for items, timestamps, sync state, and update functions. */
6116
+ /**
6117
+ * Document store for a single NotificationSummary, providing derived observables for items, timestamps, sync state, and update functions.
6118
+ */
5557
6119
  class NotificationSummaryDocumentStore extends AbstractDbxFirebaseDocumentStore {
5558
6120
  notificationFunctions = inject(NotificationFunctions);
5559
6121
  constructor() {
@@ -5574,22 +6136,24 @@ class NotificationSummaryDocumentStore extends AbstractDbxFirebaseDocumentStore
5574
6136
  return combineLatest([asObservable(checkLastReadIfCreatedBeforeObs), this.notificationItems$]).pipe(map(([c, items]) => unreadNotificationItems(items, c)));
5575
6137
  }
5576
6138
  updateNotificationSummary = firebaseDocumentStoreUpdateFunction(this, this.notificationFunctions.notificationSummary.updateNotificationSummary.update);
5577
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationSummaryDocumentStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5578
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationSummaryDocumentStore });
6139
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationSummaryDocumentStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6140
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationSummaryDocumentStore });
5579
6141
  }
5580
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationSummaryDocumentStore, decorators: [{
6142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationSummaryDocumentStore, decorators: [{
5581
6143
  type: Injectable
5582
6144
  }], ctorParameters: () => [] });
5583
6145
 
5584
- /** Directive providing a {@link NotificationSummaryDocumentStore} for accessing a single notification summary. */
6146
+ /**
6147
+ * Directive providing a {@link NotificationSummaryDocumentStore} for accessing a single notification summary.
6148
+ */
5585
6149
  class DbxFirebaseNotificationSummaryDocumentStoreDirective extends DbxFirebaseDocumentStoreDirective {
5586
6150
  constructor() {
5587
6151
  super(inject(NotificationSummaryDocumentStore));
5588
6152
  }
5589
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationSummaryDocumentStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5590
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseNotificationSummaryDocumentStoreDirective, isStandalone: true, selector: "[dbxFirebaseNotificationSummaryDocument]", providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseNotificationSummaryDocumentStoreDirective, NotificationSummaryDocumentStore), usesInheritance: true, ngImport: i0 });
6153
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationSummaryDocumentStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6154
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseNotificationSummaryDocumentStoreDirective, isStandalone: true, selector: "[dbxFirebaseNotificationSummaryDocument]", providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseNotificationSummaryDocumentStoreDirective, NotificationSummaryDocumentStore), usesInheritance: true, ngImport: i0 });
5591
6155
  }
5592
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationSummaryDocumentStoreDirective, decorators: [{
6156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationSummaryDocumentStoreDirective, decorators: [{
5593
6157
  type: Directive,
5594
6158
  args: [{
5595
6159
  selector: '[dbxFirebaseNotificationSummaryDocument]',
@@ -5598,27 +6162,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
5598
6162
  }]
5599
6163
  }], ctorParameters: () => [] });
5600
6164
 
5601
- /** Collection store for querying NotificationUser documents. */
6165
+ /**
6166
+ * Collection store for querying NotificationUser documents.
6167
+ */
5602
6168
  class NotificationUserCollectionStore extends AbstractDbxFirebaseCollectionStore {
5603
6169
  constructor() {
5604
6170
  super({ firestoreCollection: inject(NotificationFirestoreCollections).notificationUserCollection });
5605
6171
  }
5606
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationUserCollectionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5607
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationUserCollectionStore });
6172
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationUserCollectionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6173
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationUserCollectionStore });
5608
6174
  }
5609
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationUserCollectionStore, decorators: [{
6175
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationUserCollectionStore, decorators: [{
5610
6176
  type: Injectable
5611
6177
  }], ctorParameters: () => [] });
5612
6178
 
5613
- /** Directive providing a {@link NotificationUserCollectionStore} for querying notification user documents. */
6179
+ /**
6180
+ * Directive providing a {@link NotificationUserCollectionStore} for querying notification user documents.
6181
+ */
5614
6182
  class DbxFirebaseNotificationUserCollectionStoreDirective extends DbxFirebaseCollectionStoreDirective {
5615
6183
  constructor() {
5616
6184
  super(inject(NotificationUserCollectionStore));
5617
6185
  }
5618
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationUserCollectionStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5619
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseNotificationUserCollectionStoreDirective, isStandalone: true, selector: "[dbxFirebaseNotificationUserCollection]", providers: provideDbxFirebaseCollectionStoreDirective(DbxFirebaseNotificationUserCollectionStoreDirective, NotificationUserCollectionStore), usesInheritance: true, ngImport: i0 });
6186
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationUserCollectionStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6187
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseNotificationUserCollectionStoreDirective, isStandalone: true, selector: "[dbxFirebaseNotificationUserCollection]", providers: provideDbxFirebaseCollectionStoreDirective(DbxFirebaseNotificationUserCollectionStoreDirective, NotificationUserCollectionStore), usesInheritance: true, ngImport: i0 });
5620
6188
  }
5621
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationUserCollectionStoreDirective, decorators: [{
6189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationUserCollectionStoreDirective, decorators: [{
5622
6190
  type: Directive,
5623
6191
  args: [{
5624
6192
  selector: '[dbxFirebaseNotificationUserCollection]',
@@ -5627,7 +6195,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
5627
6195
  }]
5628
6196
  }], ctorParameters: () => [] });
5629
6197
 
5630
- /** Document store for a single NotificationUser with update and resync functions. */
6198
+ /**
6199
+ * Document store for a single NotificationUser with update and resync functions.
6200
+ */
5631
6201
  class NotificationUserDocumentStore extends AbstractDbxFirebaseDocumentStore {
5632
6202
  notificationFunctions = inject(NotificationFunctions);
5633
6203
  constructor() {
@@ -5635,22 +6205,24 @@ class NotificationUserDocumentStore extends AbstractDbxFirebaseDocumentStore {
5635
6205
  }
5636
6206
  updateNotificationUser = firebaseDocumentStoreUpdateFunction(this, this.notificationFunctions.notificationUser.updateNotificationUser.update);
5637
6207
  resyncNotificationUser = firebaseDocumentStoreUpdateFunction(this, this.notificationFunctions.notificationUser.updateNotificationUser.resync);
5638
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationUserDocumentStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5639
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationUserDocumentStore });
6208
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationUserDocumentStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6209
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationUserDocumentStore });
5640
6210
  }
5641
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: NotificationUserDocumentStore, decorators: [{
6211
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: NotificationUserDocumentStore, decorators: [{
5642
6212
  type: Injectable
5643
6213
  }], ctorParameters: () => [] });
5644
6214
 
5645
- /** Directive providing a {@link NotificationUserDocumentStore} for accessing a single notification user document. */
6215
+ /**
6216
+ * Directive providing a {@link NotificationUserDocumentStore} for accessing a single notification user document.
6217
+ */
5646
6218
  class DbxFirebaseNotificationUserDocumentStoreDirective extends DbxFirebaseDocumentStoreDirective {
5647
6219
  constructor() {
5648
6220
  super(inject(NotificationUserDocumentStore));
5649
6221
  }
5650
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationUserDocumentStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5651
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseNotificationUserDocumentStoreDirective, isStandalone: true, selector: "[dbxFirebaseNotificationUserDocument]", providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseNotificationUserDocumentStoreDirective, NotificationUserDocumentStore), usesInheritance: true, ngImport: i0 });
6222
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationUserDocumentStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6223
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseNotificationUserDocumentStoreDirective, isStandalone: true, selector: "[dbxFirebaseNotificationUserDocument]", providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseNotificationUserDocumentStoreDirective, NotificationUserDocumentStore), usesInheritance: true, ngImport: i0 });
5652
6224
  }
5653
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseNotificationUserDocumentStoreDirective, decorators: [{
6225
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseNotificationUserDocumentStoreDirective, decorators: [{
5654
6226
  type: Directive,
5655
6227
  args: [{
5656
6228
  selector: '[dbxFirebaseNotificationUserDocument]',
@@ -5725,8 +6297,8 @@ class DbxFirebaseStorageFileDownloadStorage {
5725
6297
  *
5726
6298
  * The pair may be expired.
5727
6299
  *
5728
- * @param key
5729
- * @returns
6300
+ * @param input - The Firestore model ID or key identifying the storage file.
6301
+ * @returns Observable that emits the cached download URL pair, or undefined if not found.
5730
6302
  */
5731
6303
  getDownloadUrlPair(input) {
5732
6304
  const id = firestoreModelId(input);
@@ -5765,21 +6337,26 @@ class DbxFirebaseStorageFileDownloadStorage {
5765
6337
  return this.storageAccessor.remove(storageKey);
5766
6338
  }
5767
6339
  _getUserDownloadCacheForStorageKey(storageKey, uid) {
5768
- return this.storageAccessor.get(storageKey).pipe(catchError((e) => {
6340
+ return this.storageAccessor.get(storageKey).pipe(catchError((_e) => {
5769
6341
  return of(undefined);
5770
6342
  }), map((result) => result ?? { uid, pairs: {} }));
5771
6343
  }
5772
6344
  getStorageKeyForUid(uid) {
5773
- const storageKey = `sf_dl_cache_${uid}`;
5774
- return storageKey;
6345
+ return `sf_dl_cache_${uid}`;
5775
6346
  }
5776
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileDownloadStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5777
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileDownloadStorage });
6347
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileDownloadStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6348
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileDownloadStorage });
5778
6349
  }
5779
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileDownloadStorage, decorators: [{
6350
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileDownloadStorage, decorators: [{
5780
6351
  type: Injectable
5781
6352
  }] });
5782
6353
 
6354
+ /**
6355
+ * Creates a {@link DbxFirebaseStorageFileDownloadServiceCustomSource} from a function that returns a LoadingState observable.
6356
+ *
6357
+ * @param obsForInput - Function that produces a LoadingState observable for the given download params and storage file ID.
6358
+ * @returns A custom source adapter that bridges observable-based downloads to the promise-based interface.
6359
+ */
5783
6360
  function dbxFirebaseStorageFileDownloadServiceCustomSourceFromObs(obsForInput) {
5784
6361
  return {
5785
6362
  downloadStorageFileResult: (params, storageFileId) => firstValueFrom(obsForInput(params, storageFileId).pipe(throwErrorFromLoadingStateError(), valueFromFinishedLoadingState()))
@@ -5866,8 +6443,9 @@ class DbxFirebaseStorageFileDownloadService {
5866
6443
  *
5867
6444
  * These URLs are cached locally to prevent extra/redundant calls to the server.
5868
6445
  *
5869
- * @param storageFileIdOrKey
5870
- * @returns
6446
+ * @param storageFileIdOrKey - The storage file ID or key to download.
6447
+ * @param source - Optional custom download source. Falls back to the default internal source if not provided.
6448
+ * @returns Observable that emits the cached or freshly downloaded URL pair.
5871
6449
  */
5872
6450
  downloadPairForStorageFileUsingSource(storageFileIdOrKey, source) {
5873
6451
  const storageFileId = firestoreModelId(storageFileIdOrKey);
@@ -5890,6 +6468,8 @@ class DbxFirebaseStorageFileDownloadService {
5890
6468
  }
5891
6469
  /**
5892
6470
  * Adds the given download URL pair to the cache.
6471
+ *
6472
+ * @param downloadUrlPair - The download URL pair to store in the local cache.
5893
6473
  */
5894
6474
  addPairForStorageFileToCache(downloadUrlPair) {
5895
6475
  this.storageFileDownloadStorage.addDownloadUrl(downloadUrlPair).pipe(first()).subscribe();
@@ -5924,10 +6504,10 @@ class DbxFirebaseStorageFileDownloadService {
5924
6504
  };
5925
6505
  });
5926
6506
  }
5927
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileDownloadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5928
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileDownloadService });
6507
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileDownloadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6508
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileDownloadService });
5929
6509
  }
5930
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileDownloadService, decorators: [{
6510
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileDownloadService, decorators: [{
5931
6511
  type: Injectable
5932
6512
  }] });
5933
6513
 
@@ -5938,31 +6518,31 @@ class DbxFirebaseStorageFileDownloadButtonComponent {
5938
6518
  /**
5939
6519
  * The StorageFileKey to set up the download button for.
5940
6520
  */
5941
- storageFileKey = input(...(ngDevMode ? [undefined, { debugName: "storageFileKey" }] : []));
6521
+ storageFileKey = input(...(ngDevMode ? [undefined, { debugName: "storageFileKey" }] : /* istanbul ignore next */ []));
5942
6522
  /**
5943
6523
  * The download URL to use for the download button.
5944
6524
  */
5945
- storageFileDownloadUrl = input(...(ngDevMode ? [undefined, { debugName: "storageFileDownloadUrl" }] : []));
6525
+ storageFileDownloadUrl = input(...(ngDevMode ? [undefined, { debugName: "storageFileDownloadUrl" }] : /* istanbul ignore next */ []));
5946
6526
  /**
5947
6527
  * The MIME type to use the embed component.
5948
6528
  */
5949
- embedMimeType = input(...(ngDevMode ? [undefined, { debugName: "embedMimeType" }] : []));
6529
+ embedMimeType = input(...(ngDevMode ? [undefined, { debugName: "embedMimeType" }] : /* istanbul ignore next */ []));
5950
6530
  /**
5951
6531
  * Whether or not to show a preview button.
5952
6532
  *
5953
6533
  * Defaults to true.
5954
6534
  */
5955
- showPreviewButton = input(true, ...(ngDevMode ? [{ debugName: "showPreviewButton" }] : []));
6535
+ showPreviewButton = input(true, ...(ngDevMode ? [{ debugName: "showPreviewButton" }] : /* istanbul ignore next */ []));
5956
6536
  /**
5957
6537
  * Whether or not to pre-load the download URL from the source.
5958
6538
  */
5959
- preload = input(undefined, ...(ngDevMode ? [{ debugName: "preload" }] : []));
6539
+ preload = input(undefined, ...(ngDevMode ? [{ debugName: "preload" }] : /* istanbul ignore next */ []));
5960
6540
  /**
5961
6541
  * Output event emitted when the download details change.
5962
6542
  */
5963
6543
  downloadDetailsChange = output();
5964
- config = input(...(ngDevMode ? [undefined, { debugName: "config" }] : []));
5965
- source = input(...(ngDevMode ? [undefined, { debugName: "source" }] : []));
6544
+ config = input(...(ngDevMode ? [undefined, { debugName: "config" }] : /* istanbul ignore next */ []));
6545
+ source = input(...(ngDevMode ? [undefined, { debugName: "source" }] : /* istanbul ignore next */ []));
5966
6546
  source$ = toObservable(this.source);
5967
6547
  configSignal = computed(() => {
5968
6548
  const config = this.config();
@@ -5977,22 +6557,22 @@ class DbxFirebaseStorageFileDownloadButtonComponent {
5977
6557
  previewText: config?.previewText ?? 'View File'
5978
6558
  };
5979
6559
  return result;
5980
- }, ...(ngDevMode ? [{ debugName: "configSignal" }] : []));
6560
+ }, ...(ngDevMode ? [{ debugName: "configSignal" }] : /* istanbul ignore next */ []));
5981
6561
  preloadSignal = computed(() => {
5982
6562
  const preload = this.preload();
5983
6563
  const source = this.source();
5984
6564
  return preload ?? source?.preload ?? false;
5985
- }, ...(ngDevMode ? [{ debugName: "preloadSignal" }] : []));
5986
- downloadUrlSignal = signal(undefined, ...(ngDevMode ? [{ debugName: "downloadUrlSignal" }] : []));
5987
- downloadMimeTypeSignal = signal(undefined, ...(ngDevMode ? [{ debugName: "downloadMimeTypeSignal" }] : []));
5988
- downloadUrlExpiresAtSignal = signal(undefined, ...(ngDevMode ? [{ debugName: "downloadUrlExpiresAtSignal" }] : []));
6565
+ }, ...(ngDevMode ? [{ debugName: "preloadSignal" }] : /* istanbul ignore next */ []));
6566
+ downloadUrlSignal = signal(undefined, ...(ngDevMode ? [{ debugName: "downloadUrlSignal" }] : /* istanbul ignore next */ []));
6567
+ downloadMimeTypeSignal = signal(undefined, ...(ngDevMode ? [{ debugName: "downloadMimeTypeSignal" }] : /* istanbul ignore next */ []));
6568
+ downloadUrlExpiresAtSignal = signal(undefined, ...(ngDevMode ? [{ debugName: "downloadUrlExpiresAtSignal" }] : /* istanbul ignore next */ []));
5989
6569
  storageFileKeyFromInput$ = toObservable(this.storageFileKey).pipe(distinctUntilChanged(), shareReplay(1));
5990
6570
  storageFileKeyFromSource$ = this.source$.pipe(map((source) => source?.storageFileKey), maybeValueFromObservableOrValue(), distinctUntilChanged(), shareReplay(1));
5991
6571
  storageFileKey$ = combineLatest([this.storageFileKeyFromInput$, this.storageFileKeyFromSource$]).pipe(map(([storageFileKeyFromInput, storageFileKeyFromSource]) => {
5992
6572
  return storageFileKeyFromInput ?? storageFileKeyFromSource;
5993
6573
  }), distinctUntilChanged(), shareReplay(1));
5994
6574
  storageFileKeySignal = toSignal(this.storageFileKey$);
5995
- hasDownloadUrlSignal = computed(() => Boolean(this.downloadUrlSignal()), ...(ngDevMode ? [{ debugName: "hasDownloadUrlSignal" }] : []));
6575
+ hasDownloadUrlSignal = computed(() => Boolean(this.downloadUrlSignal()), ...(ngDevMode ? [{ debugName: "hasDownloadUrlSignal" }] : /* istanbul ignore next */ []));
5996
6576
  buttonStyleSignal = computed(() => {
5997
6577
  const config = this.configSignal();
5998
6578
  const result = {
@@ -6000,7 +6580,7 @@ class DbxFirebaseStorageFileDownloadButtonComponent {
6000
6580
  ...config.buttonStyle
6001
6581
  };
6002
6582
  return result;
6003
- }, ...(ngDevMode ? [{ debugName: "buttonStyleSignal" }] : []));
6583
+ }, ...(ngDevMode ? [{ debugName: "buttonStyleSignal" }] : /* istanbul ignore next */ []));
6004
6584
  previewButtonStyleSignal = computed(() => {
6005
6585
  const config = this.configSignal();
6006
6586
  const result = {
@@ -6008,25 +6588,25 @@ class DbxFirebaseStorageFileDownloadButtonComponent {
6008
6588
  ...config.previewButtonStyle
6009
6589
  };
6010
6590
  return result;
6011
- }, ...(ngDevMode ? [{ debugName: "previewButtonStyleSignal" }] : []));
6591
+ }, ...(ngDevMode ? [{ debugName: "previewButtonStyleSignal" }] : /* istanbul ignore next */ []));
6012
6592
  iconSignal = computed(() => {
6013
6593
  const config = this.configSignal();
6014
6594
  const hasDownloadUrl = this.hasDownloadUrlSignal();
6015
6595
  return hasDownloadUrl ? (config.downloadReadyIcon ?? config.icon) : config.icon;
6016
- }, ...(ngDevMode ? [{ debugName: "iconSignal" }] : []));
6596
+ }, ...(ngDevMode ? [{ debugName: "iconSignal" }] : /* istanbul ignore next */ []));
6017
6597
  textSignal = computed(() => {
6018
6598
  const config = this.configSignal();
6019
6599
  const hasDownloadUrl = this.hasDownloadUrlSignal();
6020
6600
  return hasDownloadUrl ? (config.downloadReadyText ?? config.text) : config.text;
6021
- }, ...(ngDevMode ? [{ debugName: "textSignal" }] : []));
6601
+ }, ...(ngDevMode ? [{ debugName: "textSignal" }] : /* istanbul ignore next */ []));
6022
6602
  previewIconSignal = computed(() => {
6023
6603
  const config = this.configSignal();
6024
6604
  return config.previewIcon;
6025
- }, ...(ngDevMode ? [{ debugName: "previewIconSignal" }] : []));
6605
+ }, ...(ngDevMode ? [{ debugName: "previewIconSignal" }] : /* istanbul ignore next */ []));
6026
6606
  previewTextSignal = computed(() => {
6027
6607
  const config = this.configSignal();
6028
6608
  return config.previewText;
6029
- }, ...(ngDevMode ? [{ debugName: "previewTextSignal" }] : []));
6609
+ }, ...(ngDevMode ? [{ debugName: "previewTextSignal" }] : /* istanbul ignore next */ []));
6030
6610
  anchorSignal = computed(() => {
6031
6611
  const downloadUrl = this.downloadUrlSignal();
6032
6612
  let result;
@@ -6036,23 +6616,23 @@ class DbxFirebaseStorageFileDownloadButtonComponent {
6036
6616
  };
6037
6617
  }
6038
6618
  return result;
6039
- }, ...(ngDevMode ? [{ debugName: "anchorSignal" }] : []));
6619
+ }, ...(ngDevMode ? [{ debugName: "anchorSignal" }] : /* istanbul ignore next */ []));
6040
6620
  storageFileDownloadUrlEffect = effect(() => {
6041
6621
  const downloadUrl = this.storageFileDownloadUrl();
6042
6622
  if (downloadUrl || downloadUrl === null) {
6043
6623
  this.downloadUrlSignal.set(downloadUrl);
6044
6624
  }
6045
- }, { ...(ngDevMode ? { debugName: "storageFileDownloadUrlEffect" } : {}), allowSignalWrites: true });
6625
+ }, { ...(ngDevMode ? { debugName: "storageFileDownloadUrlEffect" } : /* istanbul ignore next */ {}), allowSignalWrites: true });
6046
6626
  // Preview
6047
6627
  showPreviewButtonSignal = computed(() => {
6048
6628
  const config = this.configSignal();
6049
6629
  const hasDownloadUrl = this.hasDownloadUrlSignal();
6050
6630
  return hasDownloadUrl && (config.showPreviewButton ?? true);
6051
- }, ...(ngDevMode ? [{ debugName: "showPreviewButtonSignal" }] : []));
6631
+ }, ...(ngDevMode ? [{ debugName: "showPreviewButtonSignal" }] : /* istanbul ignore next */ []));
6052
6632
  openCustomPreviewSignal = computed(() => {
6053
6633
  const config = this.configSignal();
6054
6634
  return config.openCustomPreview;
6055
- }, ...(ngDevMode ? [{ debugName: "openCustomPreviewSignal" }] : []));
6635
+ }, ...(ngDevMode ? [{ debugName: "openCustomPreviewSignal" }] : /* istanbul ignore next */ []));
6056
6636
  handleOpenPreviewDialog = () => {
6057
6637
  const openPreview = this.openCustomPreviewSignal();
6058
6638
  const srcUrl = this.downloadUrlSignal();
@@ -6076,7 +6656,7 @@ class DbxFirebaseStorageFileDownloadButtonComponent {
6076
6656
  this.downloadMimeTypeSignal.set(cachedPair.mimeType);
6077
6657
  this.downloadUrlExpiresAtSignal.set(cachedPair.expiresAt);
6078
6658
  }
6079
- }, { ...(ngDevMode ? { debugName: "cachedUrlEffect" } : {}), allowSignalWrites: true });
6659
+ }, { ...(ngDevMode ? { debugName: "cachedUrlEffect" } : /* istanbul ignore next */ {}), allowSignalWrites: true });
6080
6660
  // Expiration Effect
6081
6661
  downloadUrlExpiresAtDate$ = toObservable(this.downloadUrlExpiresAtSignal).pipe(map(dateFromDateOrTimeSecondsNumber), distinctUntilChanged(isSameDate), shareReplay(1));
6082
6662
  downloadUrlExpiresAtDateSignal = toSignal(this.downloadUrlExpiresAtDate$);
@@ -6098,7 +6678,7 @@ class DbxFirebaseStorageFileDownloadButtonComponent {
6098
6678
  this.downloadMimeTypeSignal.set(undefined);
6099
6679
  this.downloadUrlExpiresAtSignal.set(undefined);
6100
6680
  }
6101
- }, { ...(ngDevMode ? { debugName: "downloadUrlHasExpiredEffect" } : {}), allowSignalWrites: true });
6681
+ }, { ...(ngDevMode ? { debugName: "downloadUrlHasExpiredEffect" } : /* istanbul ignore next */ {}), allowSignalWrites: true });
6102
6682
  // Output Effect
6103
6683
  downloadDetailsSignal = computed(() => {
6104
6684
  const downloadUrl = this.downloadUrlSignal();
@@ -6112,18 +6692,18 @@ class DbxFirebaseStorageFileDownloadButtonComponent {
6112
6692
  }
6113
6693
  : undefined;
6114
6694
  return details;
6115
- }, ...(ngDevMode ? [{ debugName: "downloadDetailsSignal" }] : []));
6695
+ }, ...(ngDevMode ? [{ debugName: "downloadDetailsSignal" }] : /* istanbul ignore next */ []));
6116
6696
  downloadDetailsChangedEffect = effect(() => {
6117
6697
  const details = this.downloadDetailsSignal();
6118
6698
  this.downloadDetailsChange.emit(details);
6119
- }, ...(ngDevMode ? [{ debugName: "downloadDetailsChangedEffect" }] : []));
6699
+ }, ...(ngDevMode ? [{ debugName: "downloadDetailsChangedEffect" }] : /* istanbul ignore next */ []));
6120
6700
  sourceDownloadDetailsChangeCallbackEffect = effect(() => {
6121
6701
  const details = this.downloadDetailsSignal();
6122
6702
  const source = this.source();
6123
6703
  if (source?.downloadDetailsChangeCallback) {
6124
6704
  source.downloadDetailsChangeCallback(details);
6125
6705
  }
6126
- }, { ...(ngDevMode ? { debugName: "sourceDownloadDetailsChangeCallbackEffect" } : {}), allowSignalWrites: true });
6706
+ }, { ...(ngDevMode ? { debugName: "sourceDownloadDetailsChangeCallbackEffect" } : /* istanbul ignore next */ {}), allowSignalWrites: true });
6127
6707
  // Handlers
6128
6708
  handleGetDownloadUrl = (value, context) => {
6129
6709
  const source = this.source();
@@ -6155,8 +6735,8 @@ class DbxFirebaseStorageFileDownloadButtonComponent {
6155
6735
  handleGetDownloadUrlError(error);
6156
6736
  }
6157
6737
  };
6158
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileDownloadButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6159
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DbxFirebaseStorageFileDownloadButtonComponent, isStandalone: true, selector: "dbx-firebase-storagefile-download-button", inputs: { storageFileKey: { classPropertyName: "storageFileKey", publicName: "storageFileKey", isSignal: true, isRequired: false, transformFunction: null }, storageFileDownloadUrl: { classPropertyName: "storageFileDownloadUrl", publicName: "storageFileDownloadUrl", isSignal: true, isRequired: false, transformFunction: null }, embedMimeType: { classPropertyName: "embedMimeType", publicName: "embedMimeType", isSignal: true, isRequired: false, transformFunction: null }, showPreviewButton: { classPropertyName: "showPreviewButton", publicName: "showPreviewButton", isSignal: true, isRequired: false, transformFunction: null }, preload: { classPropertyName: "preload", publicName: "preload", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, source: { classPropertyName: "source", publicName: "source", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { downloadDetailsChange: "downloadDetailsChange" }, ngImport: i0, template: `
6738
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileDownloadButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6739
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.3", type: DbxFirebaseStorageFileDownloadButtonComponent, isStandalone: true, selector: "dbx-firebase-storagefile-download-button", inputs: { storageFileKey: { classPropertyName: "storageFileKey", publicName: "storageFileKey", isSignal: true, isRequired: false, transformFunction: null }, storageFileDownloadUrl: { classPropertyName: "storageFileDownloadUrl", publicName: "storageFileDownloadUrl", isSignal: true, isRequired: false, transformFunction: null }, embedMimeType: { classPropertyName: "embedMimeType", publicName: "embedMimeType", isSignal: true, isRequired: false, transformFunction: null }, showPreviewButton: { classPropertyName: "showPreviewButton", publicName: "showPreviewButton", isSignal: true, isRequired: false, transformFunction: null }, preload: { classPropertyName: "preload", publicName: "preload", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, source: { classPropertyName: "source", publicName: "source", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { downloadDetailsChange: "downloadDetailsChange" }, ngImport: i0, template: `
6160
6740
  <dbx-anchor dbxActionAnchor [anchor]="anchorSignal()" dbxAction [dbxActionAutoTrigger]="preloadSignal()" dbxActionSnackbarError [dbxActionDisabled]="!storageFileKeySignal()" [dbxActionValue]="storageFileKeySignal()" [dbxActionHandler]="handleGetDownloadUrl" [dbxActionSuccessHandler]="handleGetDownloadUrlSuccess" [dbxActionErrorHandler]="handleGetDownloadUrlError">
6161
6741
  <dbx-button dbxActionButton [buttonStyle]="buttonStyleSignal()" [icon]="iconSignal()" [text]="textSignal()"></dbx-button>
6162
6742
  </dbx-anchor>
@@ -6166,9 +6746,9 @@ class DbxFirebaseStorageFileDownloadButtonComponent {
6166
6746
  <dbx-button dbxActionButton [buttonStyle]="previewButtonStyleSignal()" [icon]="previewIconSignal()" [text]="previewTextSignal()"></dbx-button>
6167
6747
  </ng-container>
6168
6748
  }
6169
- `, isInline: true, dependencies: [{ kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "mode"] }, { kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i2.DbxActionDirective, selector: "dbx-action,[dbxAction]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i2.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i2.DbxActionHandlerValueDirective, selector: "[dbxActionHandlerValue]", inputs: ["dbxActionHandlerValue"] }, { kind: "directive", type: i2.DbxActionDisabledDirective, selector: "[dbxActionDisabled]", inputs: ["dbxActionDisabled"] }, { kind: "directive", type: i2.DbxActionAutoTriggerDirective, selector: "dbxActionAutoTrigger,[dbxActionAutoTrigger]", inputs: ["triggerDebounce", "triggerThrottle", "triggerErrorThrottle", "maxErrorsForThrottle", "triggerLimit", "dbxActionAutoTrigger", "useFastTriggerPreset", "useInstantTriggerPreset"] }, { kind: "directive", type: i2.DbxActionValueDirective, selector: "dbxActionValue,[dbxActionValue]", inputs: ["dbxActionValue"] }, { kind: "directive", type: i2.DbxActionSuccessHandlerDirective, selector: "[dbxActionSuccessHandler]", inputs: ["dbxActionSuccessHandler"] }, { kind: "directive", type: i2.DbxActionErrorHandlerDirective, selector: "[dbxActionErrorHandler]", inputs: ["dbxActionErrorHandler"] }, { kind: "directive", type: i2.DbxActionButtonDirective, selector: "[dbxActionButton]" }, { kind: "directive", type: DbxActionSnackbarErrorDirective, selector: "[dbxActionSnackbarError]", inputs: ["dbxActionSnackbarError"] }, { kind: "directive", type: DbxActionDialogDirective, selector: "[dbxActionDialog]", inputs: ["dbxActionDialog", "dbxActionDialogIsModified", "dbxActionDialogIsEqual"], exportAs: ["dbxActionDialog"] }, { kind: "component", type: DbxAnchorComponent, selector: "dbx-anchor, [dbx-anchor]", inputs: ["block"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6749
+ `, isInline: true, dependencies: [{ kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "allowClickPropagation", "mode"] }, { kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i2.DbxActionDirective, selector: "dbx-action,[dbxAction]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i2.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i2.DbxActionHandlerValueDirective, selector: "[dbxActionHandlerValue]", inputs: ["dbxActionHandlerValue"] }, { kind: "directive", type: i2.DbxActionDisabledDirective, selector: "[dbxActionDisabled]", inputs: ["dbxActionDisabled"] }, { kind: "directive", type: i2.DbxActionAutoTriggerDirective, selector: "dbxActionAutoTrigger,[dbxActionAutoTrigger]", inputs: ["triggerDebounce", "triggerThrottle", "triggerErrorThrottle", "maxErrorsForThrottle", "triggerLimit", "dbxActionAutoTrigger", "useFastTriggerPreset", "useInstantTriggerPreset"] }, { kind: "directive", type: i2.DbxActionValueDirective, selector: "dbxActionValue,[dbxActionValue]", inputs: ["dbxActionValue"] }, { kind: "directive", type: i2.DbxActionSuccessHandlerDirective, selector: "[dbxActionSuccessHandler]", inputs: ["dbxActionSuccessHandler"] }, { kind: "directive", type: i2.DbxActionErrorHandlerDirective, selector: "[dbxActionErrorHandler]", inputs: ["dbxActionErrorHandler"] }, { kind: "directive", type: i2.DbxActionButtonDirective, selector: "[dbxActionButton]" }, { kind: "directive", type: DbxActionSnackbarErrorDirective, selector: "[dbxActionSnackbarError]", inputs: ["dbxActionSnackbarError"] }, { kind: "directive", type: DbxActionDialogDirective, selector: "[dbxActionDialog]", inputs: ["dbxActionDialog", "dbxActionDialogIsModified", "dbxActionDialogIsEqual"], exportAs: ["dbxActionDialog"] }, { kind: "component", type: DbxAnchorComponent, selector: "dbx-anchor, [dbx-anchor]", inputs: ["block"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6170
6750
  }
6171
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileDownloadButtonComponent, decorators: [{
6751
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileDownloadButtonComponent, decorators: [{
6172
6752
  type: Component,
6173
6753
  args: [{
6174
6754
  selector: 'dbx-firebase-storagefile-download-button',
@@ -6239,15 +6819,18 @@ class DbxFirebaseStorageFileUploadStore extends ComponentStore {
6239
6819
  * Sets the upload result.
6240
6820
  */
6241
6821
  setUploadResult = this.updater((state, uploadResult) => ({ ...state, isUploadHandlerWorking: false, uploadProgress: undefined, uploadResult }));
6242
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileUploadStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6243
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileUploadStore });
6822
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileUploadStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6823
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileUploadStore });
6244
6824
  }
6245
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileUploadStore, decorators: [{
6825
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileUploadStore, decorators: [{
6246
6826
  type: Injectable
6247
6827
  }], ctorParameters: () => [] });
6248
6828
 
6249
6829
  /**
6250
6830
  * Default implementation of StorageFileUploadHandler.
6831
+ *
6832
+ * @param config - Configuration providing the storage service and file upload config factory.
6833
+ * @returns A StorageFileUploadHandler that manages resumable file uploads.
6251
6834
  */
6252
6835
  function storageFileUploadHandler(config) {
6253
6836
  const { storageService, storageFileUploadConfigFactory } = config;
@@ -6316,7 +6899,7 @@ function storageFileUploadFiles(input) {
6316
6899
  const maxParallelTasks = inputMaxParallelUploads ?? 3;
6317
6900
  const multiUploadsSubscriptionObject = new MultiSubscriptionObject();
6318
6901
  // begin the upload for each file
6319
- const allFiles = Array.from(files);
6902
+ const allFiles = [...files];
6320
6903
  // unsubscribe from all previous uploads
6321
6904
  multiUploadsSubscriptionObject.unsub();
6322
6905
  const allFilesAndLatestProgress = new Array(allFiles.length);
@@ -6488,7 +7071,7 @@ function storageFileUploadFiles(input) {
6488
7071
  }
6489
7072
  // run upload task for each file
6490
7073
  const fileTuples = allFiles.map((file, index) => [file, index]);
6491
- runAsyncTasksForValues(fileTuples, runUploadTaskForFile, {
7074
+ void runAsyncTasksForValues(fileTuples, runUploadTaskForFile, {
6492
7075
  maxParallelTasks,
6493
7076
  retriesAllowed: 0 // no retries allowed
6494
7077
  }).then(() => {
@@ -6526,7 +7109,7 @@ class DbxFirebaseStorageFileUploadActionHandlerDirective {
6526
7109
  *
6527
7110
  * Defaults to false.
6528
7111
  */
6529
- triggerOnFiles = input(false, ...(ngDevMode ? [{ debugName: "triggerOnFiles" }] : []));
7112
+ triggerOnFiles = input(false, ...(ngDevMode ? [{ debugName: "triggerOnFiles" }] : /* istanbul ignore next */ []));
6530
7113
  triggerOnFiles$ = toObservable(this.triggerOnFiles);
6531
7114
  /**
6532
7115
  * Uploading of all/any files should be cancelled if any file fails to upload.
@@ -6535,20 +7118,20 @@ class DbxFirebaseStorageFileUploadActionHandlerDirective {
6535
7118
  *
6536
7119
  * Defaults to false.
6537
7120
  */
6538
- cancelUploadsOnUploadError = input(false, ...(ngDevMode ? [{ debugName: "cancelUploadsOnUploadError" }] : []));
7121
+ cancelUploadsOnUploadError = input(false, ...(ngDevMode ? [{ debugName: "cancelUploadsOnUploadError" }] : /* istanbul ignore next */ []));
6539
7122
  /**
6540
7123
  * The upload should fail if any file fails to upload, rather than if all files fail to upload.
6541
7124
  *
6542
7125
  * Defaults to false.
6543
7126
  */
6544
- actionFailureOnUploadError = input(false, ...(ngDevMode ? [{ debugName: "actionFailureOnUploadError" }] : []));
6545
- uploadHandler = input.required({ ...(ngDevMode ? { debugName: "uploadHandler" } : {}), alias: 'dbxFirebaseStorageFileUploadActionHandler' });
7127
+ actionFailureOnUploadError = input(false, ...(ngDevMode ? [{ debugName: "actionFailureOnUploadError" }] : /* istanbul ignore next */ []));
7128
+ uploadHandler = input.required({ ...(ngDevMode ? { debugName: "uploadHandler" } : /* istanbul ignore next */ {}), alias: 'dbxFirebaseStorageFileUploadActionHandler' });
6546
7129
  _uploadHandlerEffect = effect(() => {
6547
7130
  const uploadHandler = this.uploadHandler();
6548
7131
  let handlerFunction;
6549
7132
  if (uploadHandler) {
6550
7133
  handlerFunction = (files, context) => {
6551
- const { upload, cancel } = storageFileUploadFiles({
7134
+ const { upload, cancel: _cancel } = storageFileUploadFiles({
6552
7135
  files,
6553
7136
  uploadHandler
6554
7137
  });
@@ -6576,7 +7159,7 @@ class DbxFirebaseStorageFileUploadActionHandlerDirective {
6576
7159
  handlerFunction = undefined;
6577
7160
  }
6578
7161
  this._dbxActionHandlerInstance.setHandlerFunction(handlerFunction);
6579
- }, ...(ngDevMode ? [{ debugName: "_uploadHandlerEffect" }] : []));
7162
+ }, ...(ngDevMode ? [{ debugName: "_uploadHandlerEffect" }] : /* istanbul ignore next */ []));
6580
7163
  files$ = this.uploadStore.files$;
6581
7164
  uploadHandler$ = toObservable(this.uploadHandler);
6582
7165
  constructor() {
@@ -6614,10 +7197,10 @@ class DbxFirebaseStorageFileUploadActionHandlerDirective {
6614
7197
  // sync progress amount
6615
7198
  this.source.setWorkProgress(this.uploadStore.latestProgressEvent$.pipe(throttleTime(100, undefined, { leading: true, trailing: true }), map((x) => x?.overallProgress), distinctUntilChanged()));
6616
7199
  }
6617
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileUploadActionHandlerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6618
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: DbxFirebaseStorageFileUploadActionHandlerDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileUploadActionHandler]", inputs: { triggerOnFiles: { classPropertyName: "triggerOnFiles", publicName: "triggerOnFiles", isSignal: true, isRequired: false, transformFunction: null }, cancelUploadsOnUploadError: { classPropertyName: "cancelUploadsOnUploadError", publicName: "cancelUploadsOnUploadError", isSignal: true, isRequired: false, transformFunction: null }, actionFailureOnUploadError: { classPropertyName: "actionFailureOnUploadError", publicName: "actionFailureOnUploadError", isSignal: true, isRequired: false, transformFunction: null }, uploadHandler: { classPropertyName: "uploadHandler", publicName: "dbxFirebaseStorageFileUploadActionHandler", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
7200
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileUploadActionHandlerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
7201
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.3", type: DbxFirebaseStorageFileUploadActionHandlerDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileUploadActionHandler]", inputs: { triggerOnFiles: { classPropertyName: "triggerOnFiles", publicName: "triggerOnFiles", isSignal: true, isRequired: false, transformFunction: null }, cancelUploadsOnUploadError: { classPropertyName: "cancelUploadsOnUploadError", publicName: "cancelUploadsOnUploadError", isSignal: true, isRequired: false, transformFunction: null }, actionFailureOnUploadError: { classPropertyName: "actionFailureOnUploadError", publicName: "actionFailureOnUploadError", isSignal: true, isRequired: false, transformFunction: null }, uploadHandler: { classPropertyName: "uploadHandler", publicName: "dbxFirebaseStorageFileUploadActionHandler", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
6619
7202
  }
6620
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileUploadActionHandlerDirective, decorators: [{
7203
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileUploadActionHandlerDirective, decorators: [{
6621
7204
  type: Directive,
6622
7205
  args: [{
6623
7206
  selector: '[dbxFirebaseStorageFileUploadActionHandler]',
@@ -6631,10 +7214,10 @@ class StorageFileCollectionStore extends AbstractDbxFirebaseCollectionStore {
6631
7214
  super({ firestoreCollection: inject(StorageFileFirestoreCollections).storageFileCollection });
6632
7215
  }
6633
7216
  initializeAllStorageFilesFromUpload = firebaseCollectionStoreCreateFunction(this, this.storageFileFunctions.storageFile.createStorageFile.allFromUpload);
6634
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StorageFileCollectionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6635
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StorageFileCollectionStore });
7217
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: StorageFileCollectionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7218
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: StorageFileCollectionStore });
6636
7219
  }
6637
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StorageFileCollectionStore, decorators: [{
7220
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: StorageFileCollectionStore, decorators: [{
6638
7221
  type: Injectable
6639
7222
  }], ctorParameters: () => [] });
6640
7223
 
@@ -6643,10 +7226,10 @@ class DbxFirebaseStorageFileCollectionStoreDirective extends DbxFirebaseCollecti
6643
7226
  super(inject(StorageFileCollectionStore));
6644
7227
  this.setConstraints([]);
6645
7228
  }
6646
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileCollectionStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6647
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseStorageFileCollectionStoreDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileCollection]", providers: provideDbxFirebaseCollectionStoreDirective(DbxFirebaseStorageFileCollectionStoreDirective, StorageFileCollectionStore), usesInheritance: true, ngImport: i0 });
7229
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileCollectionStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
7230
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseStorageFileCollectionStoreDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileCollection]", providers: provideDbxFirebaseCollectionStoreDirective(DbxFirebaseStorageFileCollectionStoreDirective, StorageFileCollectionStore), usesInheritance: true, ngImport: i0 });
6648
7231
  }
6649
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileCollectionStoreDirective, decorators: [{
7232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileCollectionStoreDirective, decorators: [{
6650
7233
  type: Directive,
6651
7234
  args: [{
6652
7235
  selector: '[dbxFirebaseStorageFileCollection]',
@@ -6667,10 +7250,10 @@ class StorageFileDocumentStore extends AbstractDbxFirebaseDocumentStore {
6667
7250
  processStorageFile = firebaseDocumentStoreUpdateFunction(this, this.storageFileFunctions.storageFile.updateStorageFile.process);
6668
7251
  deleteStorageFile = firebaseDocumentStoreDeleteFunction(this, this.storageFileFunctions.storageFile.deleteStorageFile.delete);
6669
7252
  downloadStorageFile = firebaseDocumentStoreReadFunction(this, this.storageFileFunctions.storageFile.readStorageFile.download);
6670
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StorageFileDocumentStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6671
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StorageFileDocumentStore });
7253
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: StorageFileDocumentStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7254
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: StorageFileDocumentStore });
6672
7255
  }
6673
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StorageFileDocumentStore, decorators: [{
7256
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: StorageFileDocumentStore, decorators: [{
6674
7257
  type: Injectable
6675
7258
  }], ctorParameters: () => [] });
6676
7259
 
@@ -6678,10 +7261,10 @@ class DbxFirebaseStorageFileDocumentStoreDirective extends DbxFirebaseDocumentSt
6678
7261
  constructor() {
6679
7262
  super(inject(StorageFileDocumentStore));
6680
7263
  }
6681
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileDocumentStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6682
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseStorageFileDocumentStoreDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileDocument]", providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseStorageFileDocumentStoreDirective, StorageFileDocumentStore), usesInheritance: true, ngImport: i0 });
7264
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileDocumentStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
7265
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseStorageFileDocumentStoreDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileDocument]", providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseStorageFileDocumentStoreDirective, StorageFileDocumentStore), usesInheritance: true, ngImport: i0 });
6683
7266
  }
6684
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileDocumentStoreDirective, decorators: [{
7267
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileDocumentStoreDirective, decorators: [{
6685
7268
  type: Directive,
6686
7269
  args: [{
6687
7270
  selector: '[dbxFirebaseStorageFileDocument]',
@@ -6697,10 +7280,10 @@ class StorageFileGroupDocumentStore extends AbstractDbxFirebaseDocumentStore {
6697
7280
  }
6698
7281
  updateStorageFileGroup = firebaseDocumentStoreUpdateFunction(this, this.storageFileFunctions.storageFileGroup.updateStorageFileGroup.update);
6699
7282
  regenerateStorageFileGroupContent = firebaseDocumentStoreCrudFunction(this.storageFileFunctions.storageFileGroup.updateStorageFileGroup.regenerateContent);
6700
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StorageFileGroupDocumentStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6701
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StorageFileGroupDocumentStore });
7283
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: StorageFileGroupDocumentStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7284
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: StorageFileGroupDocumentStore });
6702
7285
  }
6703
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StorageFileGroupDocumentStore, decorators: [{
7286
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: StorageFileGroupDocumentStore, decorators: [{
6704
7287
  type: Injectable
6705
7288
  }], ctorParameters: () => [] });
6706
7289
 
@@ -6708,10 +7291,10 @@ class DbxFirebaseStorageFileGroupDocumentStoreDirective extends DbxFirebaseDocum
6708
7291
  constructor() {
6709
7292
  super(inject(StorageFileGroupDocumentStore));
6710
7293
  }
6711
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileGroupDocumentStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6712
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseStorageFileGroupDocumentStoreDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileGroupDocument]", providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseStorageFileGroupDocumentStoreDirective, StorageFileGroupDocumentStore), usesInheritance: true, ngImport: i0 });
7294
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileGroupDocumentStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
7295
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseStorageFileGroupDocumentStoreDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileGroupDocument]", providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseStorageFileGroupDocumentStoreDirective, StorageFileGroupDocumentStore), usesInheritance: true, ngImport: i0 });
6713
7296
  }
6714
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileGroupDocumentStoreDirective, decorators: [{
7297
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileGroupDocumentStoreDirective, decorators: [{
6715
7298
  type: Directive,
6716
7299
  args: [{
6717
7300
  selector: '[dbxFirebaseStorageFileGroupDocument]',
@@ -6728,12 +7311,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
6728
7311
  class DbxFirebaseStorageFileUploadInitializeDocumentDirective {
6729
7312
  uploadStore = inject(DbxFirebaseStorageFileUploadStore);
6730
7313
  storageFileDocumentStore = inject(StorageFileDocumentStore);
6731
- initializeWithExpediteProcessing = input(...(ngDevMode ? [undefined, { debugName: "initializeWithExpediteProcessing" }] : []));
7314
+ initializeWithExpediteProcessing = input(...(ngDevMode ? [undefined, { debugName: "initializeWithExpediteProcessing" }] : /* istanbul ignore next */ []));
6732
7315
  source = inject((DbxActionContextStoreSourceInstance), { host: true });
6733
7316
  _dbxActionHandlerInstance = clean(new DbxActionHandlerInstance(this.source));
6734
7317
  constructor() {
6735
7318
  // set the trigger
6736
- cleanSubscription(this.uploadStore.uploadResult$.subscribe(async (result) => {
7319
+ cleanSubscription(this.uploadStore.uploadResult$.subscribe((result) => {
6737
7320
  const successFileResult = result.successFileResults.find((x) => x.fileRef != null);
6738
7321
  const fileRef = successFileResult?.fileRef;
6739
7322
  if (fileRef) {
@@ -6750,10 +7333,10 @@ class DbxFirebaseStorageFileUploadInitializeDocumentDirective {
6750
7333
  });
6751
7334
  this._dbxActionHandlerInstance.init();
6752
7335
  }
6753
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileUploadInitializeDocumentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6754
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: DbxFirebaseStorageFileUploadInitializeDocumentDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileUploadInitializeDocument]", inputs: { initializeWithExpediteProcessing: { classPropertyName: "initializeWithExpediteProcessing", publicName: "initializeWithExpediteProcessing", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["dbxFirebaseStorageFileUploadInitializeDocument"], ngImport: i0 });
7336
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileUploadInitializeDocumentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
7337
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.3", type: DbxFirebaseStorageFileUploadInitializeDocumentDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileUploadInitializeDocument]", inputs: { initializeWithExpediteProcessing: { classPropertyName: "initializeWithExpediteProcessing", publicName: "initializeWithExpediteProcessing", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["dbxFirebaseStorageFileUploadInitializeDocument"], ngImport: i0 });
6755
7338
  }
6756
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileUploadInitializeDocumentDirective, decorators: [{
7339
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileUploadInitializeDocumentDirective, decorators: [{
6757
7340
  type: Directive,
6758
7341
  args: [{
6759
7342
  selector: '[dbxFirebaseStorageFileUploadInitializeDocument]',
@@ -6767,18 +7350,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
6767
7350
  */
6768
7351
  class DbxFirebaseStorageFileUploadStoreDirective {
6769
7352
  uploadStore = inject(DbxFirebaseStorageFileUploadStore);
6770
- multipleUpload = input(...(ngDevMode ? [undefined, { debugName: "multipleUpload" }] : []));
6771
- fileTypesAccepted = input(...(ngDevMode ? [undefined, { debugName: "fileTypesAccepted" }] : []));
7353
+ multipleUpload = input(...(ngDevMode ? [undefined, { debugName: "multipleUpload" }] : /* istanbul ignore next */ []));
7354
+ fileTypesAccepted = input(...(ngDevMode ? [undefined, { debugName: "fileTypesAccepted" }] : /* istanbul ignore next */ []));
6772
7355
  fileTypesAccepted$ = toObservable(this.fileTypesAccepted).pipe(skipAllInitialMaybe(), shareReplay(1));
6773
7356
  isMultiUploadAllowed$ = toObservable(this.multipleUpload).pipe(skipAllInitialMaybe(), shareReplay(1));
6774
7357
  constructor() {
6775
7358
  cleanSubscription(this.fileTypesAccepted$.subscribe((x) => this.uploadStore.setFileTypesAccepted(x)));
6776
7359
  cleanSubscription(this.isMultiUploadAllowed$.subscribe((x) => this.uploadStore.setIsMultiUploadAllowed(x)));
6777
7360
  }
6778
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileUploadStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6779
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: DbxFirebaseStorageFileUploadStoreDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileUploadStore]", inputs: { multipleUpload: { classPropertyName: "multipleUpload", publicName: "multipleUpload", isSignal: true, isRequired: false, transformFunction: null }, fileTypesAccepted: { classPropertyName: "fileTypesAccepted", publicName: "fileTypesAccepted", isSignal: true, isRequired: false, transformFunction: null } }, providers: [DbxFirebaseStorageFileUploadStore], exportAs: ["dbxFirebaseStorageFileUploadStore"], ngImport: i0 });
7361
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileUploadStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
7362
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.3", type: DbxFirebaseStorageFileUploadStoreDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileUploadStore]", inputs: { multipleUpload: { classPropertyName: "multipleUpload", publicName: "multipleUpload", isSignal: true, isRequired: false, transformFunction: null }, fileTypesAccepted: { classPropertyName: "fileTypesAccepted", publicName: "fileTypesAccepted", isSignal: true, isRequired: false, transformFunction: null } }, providers: [DbxFirebaseStorageFileUploadStore], exportAs: ["dbxFirebaseStorageFileUploadStore"], ngImport: i0 });
6780
7363
  }
6781
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileUploadStoreDirective, decorators: [{
7364
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileUploadStoreDirective, decorators: [{
6782
7365
  type: Directive,
6783
7366
  args: [{
6784
7367
  selector: '[dbxFirebaseStorageFileUploadStore]',
@@ -6799,10 +7382,10 @@ class DbxFirebaseStorageFileUploadSyncDirective {
6799
7382
  cleanSubscription(this.uploadStore.isMultiUploadAllowed$.subscribe((x) => this.uploadComponent.setMultiple(x)));
6800
7383
  cleanSubscription(this.uploadComponent.filesChanged.subscribe((files) => this.uploadStore.setFiles(files.matchResult.accepted)));
6801
7384
  }
6802
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileUploadSyncDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6803
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxFirebaseStorageFileUploadSyncDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileUploadSync]", exportAs: ["dbxFirebaseStorageFileUploadSync"], ngImport: i0 });
7385
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileUploadSyncDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
7386
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxFirebaseStorageFileUploadSyncDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileUploadSync]", exportAs: ["dbxFirebaseStorageFileUploadSync"], ngImport: i0 });
6804
7387
  }
6805
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileUploadSyncDirective, decorators: [{
7388
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileUploadSyncDirective, decorators: [{
6806
7389
  type: Directive,
6807
7390
  args: [{
6808
7391
  selector: '[dbxFirebaseStorageFileUploadSync]',
@@ -6811,7 +7394,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
6811
7394
  }]
6812
7395
  }], ctorParameters: () => [] });
6813
7396
 
6814
- const importsAndExports = [
7397
+ const IMPORTS_AND_EXPORTS = [
6815
7398
  // dbx-core/dbx-web modules/components
6816
7399
  DbxActionModule,
6817
7400
  DbxLoadingComponent,
@@ -6840,8 +7423,8 @@ const importsAndExports = [
6840
7423
  * - DbxFirebaseStorageFileUploadStore
6841
7424
  */
6842
7425
  class DbxFirebaseStorageFileUploadModule {
6843
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6844
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileUploadModule, imports: [
7426
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7427
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileUploadModule, imports: [
6845
7428
  // dbx-core/dbx-web modules/components
6846
7429
  DbxActionModule,
6847
7430
  DbxLoadingComponent,
@@ -6872,7 +7455,7 @@ class DbxFirebaseStorageFileUploadModule {
6872
7455
  // stores
6873
7456
  DbxFirebaseStorageFileCollectionStoreDirective,
6874
7457
  DbxFirebaseStorageFileDocumentStoreDirective] });
6875
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileUploadModule, imports: [
7458
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileUploadModule, imports: [
6876
7459
  // dbx-core/dbx-web modules/components
6877
7460
  DbxActionModule,
6878
7461
  DbxLoadingComponent,
@@ -6880,27 +7463,29 @@ class DbxFirebaseStorageFileUploadModule {
6880
7463
  // dbx-core/dbx-web modules/components
6881
7464
  DbxActionModule] });
6882
7465
  }
6883
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageFileUploadModule, decorators: [{
7466
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageFileUploadModule, decorators: [{
6884
7467
  type: NgModule,
6885
7468
  args: [{
6886
- imports: importsAndExports,
6887
- exports: importsAndExports
7469
+ imports: IMPORTS_AND_EXPORTS,
7470
+ exports: IMPORTS_AND_EXPORTS
6888
7471
  }]
6889
7472
  }] });
6890
7473
 
6891
7474
  /**
6892
- * Factory function for creating a StorageAccessor for the model view tracker.
7475
+ * Factory function for creating a StorageAccessor for the storage file download cache.
7476
+ *
7477
+ * @param storageAccessorFactory - The factory used to create prefixed storage accessors.
7478
+ * @returns A StorageAccessor scoped to the storage file download cache.
6893
7479
  */
6894
7480
  function defaultDbxFirebaseStorageFileDownloadStorageAccessorFactory(storageAccessorFactory) {
6895
- const accessor = storageAccessorFactory.createStorageAccessor({
7481
+ return storageAccessorFactory.createStorageAccessor({
6896
7482
  prefix: 'sfds'
6897
7483
  });
6898
- return accessor;
6899
7484
  }
6900
7485
  /**
6901
- * Creates EnvironmentProviders for providing DbxModelTrackerService, DbxModelObjectStateService and sets up the NgRx store for DbxModelTrackerEffects.
7486
+ * Creates EnvironmentProviders for the storage file download service and its dependencies.
6902
7487
  *
6903
- * @returns EnvironmentProviders
7488
+ * @returns EnvironmentProviders that register the storage file download storage accessor, storage, and service.
6904
7489
  */
6905
7490
  function provideDbxFirebaseStorageFileService() {
6906
7491
  const providers = [
@@ -6936,10 +7521,10 @@ class FlatFirestoreModelKeyPipe {
6936
7521
  return '';
6937
7522
  }
6938
7523
  }
6939
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: FlatFirestoreModelKeyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
6940
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: FlatFirestoreModelKeyPipe, isStandalone: true, name: "flatFirestoreModelKey" });
7524
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: FlatFirestoreModelKeyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
7525
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.3", ngImport: i0, type: FlatFirestoreModelKeyPipe, isStandalone: true, name: "flatFirestoreModelKey" });
6941
7526
  }
6942
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: FlatFirestoreModelKeyPipe, decorators: [{
7527
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: FlatFirestoreModelKeyPipe, decorators: [{
6943
7528
  type: Pipe,
6944
7529
  args: [{ name: 'flatFirestoreModelKey', standalone: true }]
6945
7530
  }] });
@@ -6964,10 +7549,10 @@ class TwoWayFlatFirestoreModelKeyPipe {
6964
7549
  return '';
6965
7550
  }
6966
7551
  }
6967
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: TwoWayFlatFirestoreModelKeyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
6968
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: TwoWayFlatFirestoreModelKeyPipe, isStandalone: true, name: "twoWayFlatFirestoreModelKey" });
7552
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: TwoWayFlatFirestoreModelKeyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
7553
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.3", ngImport: i0, type: TwoWayFlatFirestoreModelKeyPipe, isStandalone: true, name: "twoWayFlatFirestoreModelKey" });
6969
7554
  }
6970
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: TwoWayFlatFirestoreModelKeyPipe, decorators: [{
7555
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: TwoWayFlatFirestoreModelKeyPipe, decorators: [{
6971
7556
  type: Pipe,
6972
7557
  args: [{ name: 'twoWayFlatFirestoreModelKey', standalone: true }]
6973
7558
  }] });
@@ -6975,9 +7560,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
6975
7560
  const DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_ID_PARAM_KEY = 'id';
6976
7561
  const DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_KEY_PARAM_KEY = 'key';
6977
7562
  const DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_USE_PARAM_VALUE = '0';
7563
+ /**
7564
+ * Creates a {@link DbxFirebaseIdRouteParamRedirectInstance} configured to read a model key from route params.
7565
+ *
7566
+ * @param dbxRouterService - The router service used to read route parameters.
7567
+ * @param defaultParamKey - The route parameter key to read. Defaults to 'key'.
7568
+ * @returns A new route param redirect instance for model keys.
7569
+ */
6978
7570
  function dbxFirebaseKeyRouteParamRedirect(dbxRouterService, defaultParamKey = DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_KEY_PARAM_KEY) {
6979
7571
  return dbxFirebaseIdRouteParamRedirect(dbxRouterService, defaultParamKey);
6980
7572
  }
7573
+ /**
7574
+ * Creates a {@link DbxFirebaseIdRouteParamRedirectInstance} that reads a model ID from route params and optionally redirects to a default value.
7575
+ *
7576
+ * @param dbxRouterService - The router service used to read route parameters.
7577
+ * @param defaultParamKey - The route parameter key to read. Defaults to 'id'.
7578
+ * @returns A new route param redirect instance for model IDs with configurable redirect behavior.
7579
+ */
6981
7580
  function dbxFirebaseIdRouteParamRedirect(dbxRouterService, defaultParamKey = DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_ID_PARAM_KEY) {
6982
7581
  const _paramReader = dbxRouteParamReaderInstance(dbxRouterService, defaultParamKey);
6983
7582
  const _paramRedirect = new DbxRouteParamDefaultRedirectInstance(_paramReader);
@@ -7057,10 +7656,10 @@ class DbxFirebaseStorageService {
7057
7656
  folder(path) {
7058
7657
  return this.storageContext.folder(path);
7059
7658
  }
7060
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7061
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageService, providedIn: 'root' });
7659
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7660
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageService, providedIn: 'root' });
7062
7661
  }
7063
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseStorageService, decorators: [{
7662
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseStorageService, decorators: [{
7064
7663
  type: Injectable,
7065
7664
  args: [{
7066
7665
  providedIn: 'root'
@@ -7106,11 +7705,11 @@ function providedDbxFirebaseStorage(config) {
7106
7705
  }
7107
7706
 
7108
7707
  class DbxFirebaseModule {
7109
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7110
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModule, exports: [DbxFirebaseModelModule] });
7111
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModule, imports: [DbxFirebaseModelModule] });
7708
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7709
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModule, exports: [DbxFirebaseModelModule] });
7710
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModule, imports: [DbxFirebaseModelModule] });
7112
7711
  }
7113
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFirebaseModule, decorators: [{
7712
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFirebaseModule, decorators: [{
7114
7713
  type: NgModule,
7115
7714
  args: [{
7116
7715
  exports: [DbxFirebaseModelModule]
@@ -7172,5 +7771,5 @@ function provideDbxFirebase(config) {
7172
7771
  * Generated bundle index. Do not edit.
7173
7772
  */
7174
7773
 
7175
- export { AbstractConfiguredDbxFirebaseLoginButtonDirective, AbstractDbxFirebaseCollectionStore, AbstractDbxFirebaseCollectionWithParentStore, AbstractDbxFirebaseDocumentStore, AbstractDbxFirebaseDocumentWithParentStore, AbstractDbxFirebaseModelEntityWidgetDirective, AbstractDbxFirebaseNotificationItemWidgetComponent, AbstractRootSingleItemDbxFirebaseDocument, AbstractSingleItemDbxFirebaseDocument, AbstractSystemStateDocumentStoreAccessor, DBX_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_COMPONENT_CONFIGURATION, DBX_FIREBASE_APP_OPTIONS_TOKEN, DBX_FIREBASE_DOCUMENT_STORE_CONTEXT_STORE_TOKEN, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_ID_PARAM_KEY, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_KEY_PARAM_KEY, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_USE_PARAM_VALUE, DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR, DBX_FIREBASE_MODEL_ENTITY_WITH_STORE_TOKEN, DBX_FIREBASE_STORAGEFILE_DOWNLOAD_STORAGE_ACCESSOR_TOKEN, DBX_FIREBASE_STORAGE_CONTEXT_CONFIG_TOKEN, DBX_FIREBASE_STORAGE_CONTEXT_TOKEN, DBX_FIRESTORE_CONTEXT_TOKEN, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE, DEFAULT_DBX_FIREBASE_ANALYTICS_USER_PROPERTIES_FACTORY, DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE, DEFAULT_DBX_FIREBASE_MODEL_ENTITIES_COMPONENT_POPOVER_KEY, DEFAULT_DBX_FIREBASE_MODEL_HISTORY_COMPONENT_POPOVER_KEY, DEFAULT_DBX_FIREBASE_NOTIFICATION_ITEM_STORE_POPOVER_KEY, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN, DEFAULT_FIREBASE_COLLECTION_CHANGE_TRIGGER_FUNCTION, DEFAULT_FIREBASE_DEVELOPMENT_ENABLED_TOKEN, DEFAULT_FIREBASE_DEVELOPMENT_POPUP_KEY, DEFAULT_FIREBASE_DEVELOPMENT_SCHEDULER_ENABLED_TOKEN, DEFAULT_FIREBASE_DEVELOPMENT_WIDGET_PROVIDERS_TOKEN, DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY, DEFAULT_FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE, DEVELOPMENT_FIREBASE_SERVER_SCHEDULER_WIDGET_KEY, DbxFirebaseAnalyticsUserEventsListenerService, DbxFirebaseAnalyticsUserSource, DbxFirebaseAppCheckHttpInterceptor, DbxFirebaseAuthLoginService, DbxFirebaseAuthService, DbxFirebaseAuthServiceDelegate, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionChangeTriggerInstance, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionLoaderInstance, DbxFirebaseCollectionStoreDirective, DbxFirebaseCollectionWithParentStoreDirective, DbxFirebaseDevelopmentDirective, DbxFirebaseDevelopmentModule, DbxFirebaseDevelopmentPopupComponent, DbxFirebaseDevelopmentPopupContentComponent, DbxFirebaseDevelopmentPopupContentFormComponent, DbxFirebaseDevelopmentSchedulerListComponent, DbxFirebaseDevelopmentSchedulerListViewComponent, DbxFirebaseDevelopmentSchedulerListViewItemComponent, DbxFirebaseDevelopmentSchedulerService, DbxFirebaseDevelopmentSchedulerWidgetComponent, DbxFirebaseDevelopmentService, DbxFirebaseDevelopmentWidgetService, DbxFirebaseDocumentLoaderInstance, DbxFirebaseDocumentStoreContextModelEntitiesSourceDirective, DbxFirebaseDocumentStoreContextStore, DbxFirebaseDocumentStoreContextStoreDirective, DbxFirebaseDocumentStoreDirective, DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective, DbxFirebaseDocumentStoreTwoWayKeyProvider, DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, DbxFirebaseEmailFormComponent, DbxFirebaseEmailRecoveryFormComponent, DbxFirebaseEmulatorService, DbxFirebaseLoginAnonymousComponent, DbxFirebaseLoginAppleComponent, DbxFirebaseLoginButtonComponent, DbxFirebaseLoginButtonContainerComponent, DbxFirebaseLoginComponent, DbxFirebaseLoginContext, DbxFirebaseLoginContextBackButtonComponent, DbxFirebaseLoginContextDirective, DbxFirebaseLoginEmailComponent, DbxFirebaseLoginEmailContentComponent, DbxFirebaseLoginFacebookComponent, DbxFirebaseLoginGitHubComponent, DbxFirebaseLoginGoogleComponent, DbxFirebaseLoginListComponent, DbxFirebaseLoginMicrosoftComponent, DbxFirebaseLoginTermsComponent, DbxFirebaseLoginTermsSimpleComponent, DbxFirebaseLoginTwitterComponent, DbxFirebaseModelContextService, DbxFirebaseModelEntitiesComponent, DbxFirebaseModelEntitiesDebugWidgetComponent, DbxFirebaseModelEntitiesPopoverButtonComponent, DbxFirebaseModelEntitiesPopoverComponent, DbxFirebaseModelEntitiesSource, DbxFirebaseModelEntitiesWidgetService, DbxFirebaseModelEntitiesWidgetServiceConfig, DbxFirebaseModelHistoryComponent, DbxFirebaseModelHistoryPopoverButtonComponent, DbxFirebaseModelHistoryPopoverComponent, DbxFirebaseModelKeyComponent, DbxFirebaseModelModule, DbxFirebaseModelStoreModule, DbxFirebaseModelTrackerService, DbxFirebaseModelTypeInstanceListComponent, DbxFirebaseModelTypeInstanceListViewComponent, DbxFirebaseModelTypeInstanceListViewItemComponent, DbxFirebaseModelTypesService, DbxFirebaseModelTypesServiceConfig, DbxFirebaseModelViewedEventDirective, DbxFirebaseModule, DbxFirebaseNotificationBoxCollectionStoreDirective, DbxFirebaseNotificationBoxDocumentStoreDirective, DbxFirebaseNotificationCollectionStoreDirective, DbxFirebaseNotificationDocumentStoreDirective, DbxFirebaseNotificationItemContentComponent, DbxFirebaseNotificationItemDefaultViewComponent, DbxFirebaseNotificationItemListComponent, DbxFirebaseNotificationItemListViewComponent, DbxFirebaseNotificationItemListViewItemComponent, DbxFirebaseNotificationItemStore, DbxFirebaseNotificationItemStorePopoverButtonComponent, DbxFirebaseNotificationItemStorePopoverComponent, DbxFirebaseNotificationItemViewComponent, DbxFirebaseNotificationItemWidgetService, DbxFirebaseNotificationSummaryCollectionStoreDirective, DbxFirebaseNotificationSummaryDocumentStoreDirective, DbxFirebaseNotificationTemplateService, DbxFirebaseNotificationUserCollectionStoreDirective, DbxFirebaseNotificationUserDocumentStoreDirective, DbxFirebaseParsedEmulatorsConfig, DbxFirebaseRegisterComponent, DbxFirebaseRegisterEmailComponent, DbxFirebaseStorageFileCollectionStoreDirective, DbxFirebaseStorageFileDocumentStoreDirective, DbxFirebaseStorageFileDownloadButtonComponent, DbxFirebaseStorageFileDownloadService, DbxFirebaseStorageFileDownloadStorage, DbxFirebaseStorageFileGroupDocumentStoreDirective, DbxFirebaseStorageFileUploadActionHandlerDirective, DbxFirebaseStorageFileUploadInitializeDocumentDirective, DbxFirebaseStorageFileUploadModule, DbxFirebaseStorageFileUploadStore, DbxFirebaseStorageFileUploadStoreDirective, DbxFirebaseStorageFileUploadSyncDirective, DbxFirebaseStorageService, DbxFirebaseSystemStateCollectionStoreDirective, DbxFirebaseSystemStateDocumentStoreDirective, DbxFirestoreContextService, DbxLimitedFirebaseDocumentLoaderInstance, FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE_PREFIX, FlatFirestoreModelKeyPipe, NotificationBoxCollectionStore, NotificationBoxDocumentStore, NotificationCollectionStore, NotificationDocumentStore, NotificationSummaryCollectionStore, NotificationSummaryDocumentStore, NotificationUserCollectionStore, NotificationUserDocumentStore, OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY, StorageFileCollectionStore, StorageFileDocumentStore, StorageFileGroupDocumentStore, StorageFileUploadFilesError, SystemStateCollectionStore, SystemStateDocumentStore, TwoWayFlatFirestoreModelKeyPipe, authRolesObsWithClaimsService, authUserInfoFromAuthUser, authUserStateFromFirebaseAuthServiceFunction, dbxFirebaseAuthContextInfo, dbxFirebaseCollectionChangeTrigger, dbxFirebaseCollectionChangeTriggerForStore, dbxFirebaseCollectionChangeTriggerForWatcher, dbxFirebaseCollectionChangeWatcher, dbxFirebaseCollectionLoaderInstance, dbxFirebaseCollectionLoaderInstanceWithCollection, dbxFirebaseDocumentLoaderInstance, dbxFirebaseDocumentLoaderInstanceWithAccessor, dbxFirebaseDocumentStoreContextModelEntitiesSourceFactory, dbxFirebaseIdRouteParamRedirect, dbxFirebaseInContextFirebaseModelServiceInstance, dbxFirebaseInContextFirebaseModelServiceInstanceFactory, dbxFirebaseKeyRouteParamRedirect, dbxFirebaseModelContextServiceInfoInstanceFactory, dbxFirebaseModelEntityWidgetInjectionConfigFactory, dbxFirebaseModelTypesServiceInstance, dbxFirebaseModelTypesServiceInstancePairForKeysFactory, dbxFirebaseSourceSelectLoadSource, dbxFirebaseStorageFileDownloadServiceCustomSourceFromObs, dbxFirebaseStorageProvidersContextConfigFactory, dbxLimitedFirebaseDocumentLoaderInstance, dbxLimitedFirebaseDocumentLoaderInstanceWithAccessor, dbxWidgetTypeForNotificationTemplateType, defaultDbxFirebaseAuthServiceDelegateWithClaimsService, defaultDbxFirebaseStorageFileDownloadStorageAccessorFactory, developmentFirebaseServerSchedulerWidgetEntry, enableAppCheckDebugTokenGeneration, firebaseAuthTokenFromUser, firebaseCollectionStoreCreateFunction, firebaseCollectionStoreCrudFunction, firebaseContextServiceEntityMap, firebaseDocumentStoreCreateFunction, firebaseDocumentStoreCrudFunction, firebaseDocumentStoreDeleteFunction, firebaseDocumentStoreReadFunction, firebaseDocumentStoreUpdateFunction, importsAndExports, isDbxFirebaseModelEntityWithStore, linkDocumentStoreToParentContextStores, modelDoesNotExistError, provideDbxFirebase, provideDbxFirebaseAnalyticsUserEventsListenerService, provideDbxFirebaseApp, provideDbxFirebaseAuth, provideDbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionWithParentStoreDirective, provideDbxFirebaseDevelopment, provideDbxFirebaseDocumentStoreContextStore, provideDbxFirebaseDocumentStoreDirective, provideDbxFirebaseDocumentStoreTwoWayKeyProvider, provideDbxFirebaseEmulator, provideDbxFirebaseFunctions, provideDbxFirebaseLogin, provideDbxFirebaseModelContextService, provideDbxFirebaseModelEntitiesWidgetService, provideDbxFirebaseNotifications, provideDbxFirebaseStorageFileService, provideDbxFirestoreCollection, provideNotificationFirestoreCollections, provideStorageFileFirestoreCollections, provideSystemStateFirestoreCollections, providedDbxFirebaseStorage, readDbxAnalyticsUserPropertiesFromAuthUserInfo, readValueFromIdToken, setParentStoreEffect, stateFromTokenForLoggedInUserFunction, storageFileUploadFiles, storageFileUploadHandler };
7774
+ export { AbstractConfiguredDbxFirebaseLoginButtonDirective, AbstractDbxFirebaseCollectionStore, AbstractDbxFirebaseCollectionWithParentStore, AbstractDbxFirebaseDocumentStore, AbstractDbxFirebaseDocumentWithParentStore, AbstractDbxFirebaseModelEntityWidgetDirective, AbstractDbxFirebaseNotificationItemWidgetComponent, AbstractRootSingleItemDbxFirebaseDocument, AbstractSingleItemDbxFirebaseDocument, AbstractSystemStateDocumentStoreAccessor, DBX_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_COMPONENT_CONFIGURATION, DBX_FIREBASE_APP_OPTIONS_TOKEN, DBX_FIREBASE_DOCUMENT_STORE_CONTEXT_STORE_TOKEN, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_ID_PARAM_KEY, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_KEY_PARAM_KEY, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_USE_PARAM_VALUE, DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR, DBX_FIREBASE_MODEL_ENTITY_WITH_STORE_TOKEN, DBX_FIREBASE_STORAGEFILE_DOWNLOAD_STORAGE_ACCESSOR_TOKEN, DBX_FIREBASE_STORAGE_CONTEXT_CONFIG_TOKEN, DBX_FIREBASE_STORAGE_CONTEXT_TOKEN, DBX_FIRESTORE_CONTEXT_TOKEN, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE, DEFAULT_DBX_FIREBASE_ANALYTICS_USER_PROPERTIES_FACTORY, DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE, DEFAULT_DBX_FIREBASE_MODEL_ENTITIES_COMPONENT_POPOVER_KEY, DEFAULT_DBX_FIREBASE_MODEL_HISTORY_COMPONENT_POPOVER_KEY, DEFAULT_DBX_FIREBASE_NOTIFICATION_ITEM_STORE_POPOVER_KEY, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN, DEFAULT_FIREBASE_COLLECTION_CHANGE_TRIGGER_FUNCTION, DEFAULT_FIREBASE_DEVELOPMENT_ENABLED_TOKEN, DEFAULT_FIREBASE_DEVELOPMENT_POPUP_KEY, DEFAULT_FIREBASE_DEVELOPMENT_SCHEDULER_ENABLED_TOKEN, DEFAULT_FIREBASE_DEVELOPMENT_WIDGET_PROVIDERS_TOKEN, DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY, DEFAULT_FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE, DEVELOPMENT_FIREBASE_SERVER_SCHEDULER_WIDGET_KEY, DbxFirebaseAnalyticsUserEventsListenerService, DbxFirebaseAnalyticsUserSource, DbxFirebaseAppCheckHttpInterceptor, DbxFirebaseAuthLoginService, DbxFirebaseAuthService, DbxFirebaseAuthServiceDelegate, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionChangeTriggerInstance, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionLoaderInstance, DbxFirebaseCollectionStoreDirective, DbxFirebaseCollectionWithParentStoreDirective, DbxFirebaseDevelopmentDirective, DbxFirebaseDevelopmentModule, DbxFirebaseDevelopmentPopupComponent, DbxFirebaseDevelopmentPopupContentComponent, DbxFirebaseDevelopmentPopupContentFormComponent, DbxFirebaseDevelopmentSchedulerListComponent, DbxFirebaseDevelopmentSchedulerListViewComponent, DbxFirebaseDevelopmentSchedulerListViewItemComponent, DbxFirebaseDevelopmentSchedulerService, DbxFirebaseDevelopmentSchedulerWidgetComponent, DbxFirebaseDevelopmentService, DbxFirebaseDevelopmentWidgetService, DbxFirebaseDocumentLoaderInstance, DbxFirebaseDocumentStoreContextModelEntitiesSourceDirective, DbxFirebaseDocumentStoreContextStore, DbxFirebaseDocumentStoreContextStoreDirective, DbxFirebaseDocumentStoreDirective, DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective, DbxFirebaseDocumentStoreTwoWayKeyProvider, DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, DbxFirebaseEmailFormComponent, DbxFirebaseEmailRecoveryFormComponent, DbxFirebaseEmulatorService, DbxFirebaseLoginAnonymousComponent, DbxFirebaseLoginAppleComponent, DbxFirebaseLoginButtonComponent, DbxFirebaseLoginButtonContainerComponent, DbxFirebaseLoginComponent, DbxFirebaseLoginContext, DbxFirebaseLoginContextBackButtonComponent, DbxFirebaseLoginContextDirective, DbxFirebaseLoginEmailComponent, DbxFirebaseLoginEmailContentComponent, DbxFirebaseLoginFacebookComponent, DbxFirebaseLoginGitHubComponent, DbxFirebaseLoginGoogleComponent, DbxFirebaseLoginListComponent, DbxFirebaseLoginMicrosoftComponent, DbxFirebaseLoginTermsComponent, DbxFirebaseLoginTermsSimpleComponent, DbxFirebaseLoginTwitterComponent, DbxFirebaseManageAuthProvidersComponent, DbxFirebaseModelContextService, DbxFirebaseModelEntitiesComponent, DbxFirebaseModelEntitiesDebugWidgetComponent, DbxFirebaseModelEntitiesPopoverButtonComponent, DbxFirebaseModelEntitiesPopoverComponent, DbxFirebaseModelEntitiesSource, DbxFirebaseModelEntitiesWidgetService, DbxFirebaseModelEntitiesWidgetServiceConfig, DbxFirebaseModelHistoryComponent, DbxFirebaseModelHistoryPopoverButtonComponent, DbxFirebaseModelHistoryPopoverComponent, DbxFirebaseModelKeyComponent, DbxFirebaseModelModule, DbxFirebaseModelStoreModule, DbxFirebaseModelTrackerService, DbxFirebaseModelTypeInstanceListComponent, DbxFirebaseModelTypeInstanceListViewComponent, DbxFirebaseModelTypeInstanceListViewItemComponent, DbxFirebaseModelTypesService, DbxFirebaseModelTypesServiceConfig, DbxFirebaseModelViewedEventDirective, DbxFirebaseModule, DbxFirebaseNotificationBoxCollectionStoreDirective, DbxFirebaseNotificationBoxDocumentStoreDirective, DbxFirebaseNotificationCollectionStoreDirective, DbxFirebaseNotificationDocumentStoreDirective, DbxFirebaseNotificationItemContentComponent, DbxFirebaseNotificationItemDefaultViewComponent, DbxFirebaseNotificationItemListComponent, DbxFirebaseNotificationItemListViewComponent, DbxFirebaseNotificationItemListViewItemComponent, DbxFirebaseNotificationItemStore, DbxFirebaseNotificationItemStorePopoverButtonComponent, DbxFirebaseNotificationItemStorePopoverComponent, DbxFirebaseNotificationItemViewComponent, DbxFirebaseNotificationItemWidgetService, DbxFirebaseNotificationSummaryCollectionStoreDirective, DbxFirebaseNotificationSummaryDocumentStoreDirective, DbxFirebaseNotificationTemplateService, DbxFirebaseNotificationUserCollectionStoreDirective, DbxFirebaseNotificationUserDocumentStoreDirective, DbxFirebaseParsedEmulatorsConfig, DbxFirebaseRegisterComponent, DbxFirebaseRegisterEmailComponent, DbxFirebaseStorageFileCollectionStoreDirective, DbxFirebaseStorageFileDocumentStoreDirective, DbxFirebaseStorageFileDownloadButtonComponent, DbxFirebaseStorageFileDownloadService, DbxFirebaseStorageFileDownloadStorage, DbxFirebaseStorageFileGroupDocumentStoreDirective, DbxFirebaseStorageFileUploadActionHandlerDirective, DbxFirebaseStorageFileUploadInitializeDocumentDirective, DbxFirebaseStorageFileUploadModule, DbxFirebaseStorageFileUploadStore, DbxFirebaseStorageFileUploadStoreDirective, DbxFirebaseStorageFileUploadSyncDirective, DbxFirebaseStorageService, DbxFirebaseSystemStateCollectionStoreDirective, DbxFirebaseSystemStateDocumentStoreDirective, DbxFirestoreContextService, DbxLimitedFirebaseDocumentLoaderInstance, FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE_PREFIX, FIREBASE_PROVIDER_ID_TO_LOGIN_METHOD_TYPE_MAP, FlatFirestoreModelKeyPipe, IMPORTS_AND_EXPORTS, LOGIN_METHOD_TYPE_TO_FIREBASE_PROVIDER_ID_MAP, NotificationBoxCollectionStore, NotificationBoxDocumentStore, NotificationCollectionStore, NotificationDocumentStore, NotificationSummaryCollectionStore, NotificationSummaryDocumentStore, NotificationUserCollectionStore, NotificationUserDocumentStore, OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY, StorageFileCollectionStore, StorageFileDocumentStore, StorageFileGroupDocumentStore, StorageFileUploadFilesError, SystemStateCollectionStore, SystemStateDocumentStore, TwoWayFlatFirestoreModelKeyPipe, authRolesObsWithClaimsService, authUserInfoFromAuthUser, authUserStateFromFirebaseAuthServiceFunction, dbxFirebaseAuthContextInfo, dbxFirebaseCollectionChangeTrigger, dbxFirebaseCollectionChangeTriggerForStore, dbxFirebaseCollectionChangeTriggerForWatcher, dbxFirebaseCollectionChangeWatcher, dbxFirebaseCollectionLoaderInstance, dbxFirebaseCollectionLoaderInstanceWithCollection, dbxFirebaseDocumentLoaderInstance, dbxFirebaseDocumentLoaderInstanceWithAccessor, dbxFirebaseDocumentStoreContextModelEntitiesSourceFactory, dbxFirebaseIdRouteParamRedirect, dbxFirebaseInContextFirebaseModelServiceInstance, dbxFirebaseInContextFirebaseModelServiceInstanceFactory, dbxFirebaseKeyRouteParamRedirect, dbxFirebaseModelContextServiceInfoInstanceFactory, dbxFirebaseModelEntityWidgetInjectionConfigFactory, dbxFirebaseModelTypesServiceInstance, dbxFirebaseModelTypesServiceInstancePairForKeysFactory, dbxFirebaseSourceSelectLoadSource, dbxFirebaseStorageFileDownloadServiceCustomSourceFromObs, dbxFirebaseStorageProvidersContextConfigFactory, dbxLimitedFirebaseDocumentLoaderInstance, dbxLimitedFirebaseDocumentLoaderInstanceWithAccessor, dbxWidgetTypeForNotificationTemplateType, defaultDbxFirebaseAuthServiceDelegateWithClaimsService, defaultDbxFirebaseStorageFileDownloadStorageAccessorFactory, developmentFirebaseServerSchedulerWidgetEntry, enableAppCheckDebugTokenGeneration, firebaseAuthTokenFromUser, firebaseCollectionStoreCreateFunction, firebaseCollectionStoreCrudFunction, firebaseContextServiceEntityMap, firebaseDocumentStoreCreateFunction, firebaseDocumentStoreCrudFunction, firebaseDocumentStoreDeleteFunction, firebaseDocumentStoreReadFunction, firebaseDocumentStoreUpdateFunction, firebaseProviderIdToLoginMethodType, isDbxFirebaseModelEntityWithStore, linkDocumentStoreToParentContextStores, loginMethodTypeToFirebaseProviderId, modelDoesNotExistError, provideDbxFirebase, provideDbxFirebaseAnalyticsUserEventsListenerService, provideDbxFirebaseApp, provideDbxFirebaseAuth, provideDbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionWithParentStoreDirective, provideDbxFirebaseDevelopment, provideDbxFirebaseDocumentStoreContextStore, provideDbxFirebaseDocumentStoreDirective, provideDbxFirebaseDocumentStoreTwoWayKeyProvider, provideDbxFirebaseEmulator, provideDbxFirebaseFunctions, provideDbxFirebaseLogin, provideDbxFirebaseModelContextService, provideDbxFirebaseModelEntitiesWidgetService, provideDbxFirebaseNotifications, provideDbxFirebaseStorageFileService, provideDbxFirestoreCollection, provideNotificationFirestoreCollections, provideStorageFileFirestoreCollections, provideSystemStateFirestoreCollections, providedDbxFirebaseStorage, readDbxAnalyticsUserPropertiesFromAuthUserInfo, readValueFromIdToken, setParentStoreEffect, stateFromTokenForLoggedInUserFunction, storageFileUploadFiles, storageFileUploadHandler };
7176
7775
  //# sourceMappingURL=dereekb-dbx-firebase.mjs.map