@dereekb/dbx-firebase 12.4.4 → 12.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.
- package/esm2022/lib/auth/login/login.button.component.mjs +1 -1
- package/esm2022/lib/auth/login/login.email.content.component.mjs +2 -2
- package/esm2022/lib/development/development.scheduler.list.component.mjs +1 -1
- package/esm2022/lib/firestore/firebase.firestore.providers.mjs +21 -2
- package/esm2022/lib/model/loader/collection.loader.instance.mjs +65 -5
- package/esm2022/lib/model/modules/store/index.mjs +2 -1
- package/esm2022/lib/model/modules/store/store.collection.crud.mjs +28 -0
- package/esm2022/lib/model/modules/store/store.collection.directive.mjs +20 -2
- package/esm2022/lib/model/modules/store/store.collection.mjs +14 -1
- package/esm2022/lib/modules/index.mjs +2 -1
- package/esm2022/lib/modules/storagefile/container/index.mjs +7 -0
- package/esm2022/lib/modules/storagefile/container/storagefile.upload.action.handler.directive.mjs +118 -0
- package/esm2022/lib/modules/storagefile/container/storagefile.upload.error.mjs +12 -0
- package/esm2022/lib/modules/storagefile/container/storagefile.upload.handler.mjs +254 -0
- package/esm2022/lib/modules/storagefile/container/storagefile.upload.initialize.document.directive.mjs +39 -0
- package/esm2022/lib/modules/storagefile/container/storagefile.upload.store.directive.mjs +38 -0
- package/esm2022/lib/modules/storagefile/container/storagefile.upload.sync.directive.mjs +36 -0
- package/esm2022/lib/modules/storagefile/index.mjs +4 -0
- package/esm2022/lib/modules/storagefile/storagefile.upload.module.mjs +83 -0
- package/esm2022/lib/modules/storagefile/store/index.mjs +6 -0
- package/esm2022/lib/modules/storagefile/store/storagefile.collection.store.directive.mjs +22 -0
- package/esm2022/lib/modules/storagefile/store/storagefile.collection.store.mjs +18 -0
- package/esm2022/lib/modules/storagefile/store/storagefile.document.store.directive.mjs +21 -0
- package/esm2022/lib/modules/storagefile/store/storagefile.document.store.mjs +22 -0
- package/esm2022/lib/modules/storagefile/store/storagefile.upload.store.mjs +63 -0
- package/esm2022/lib/storage/firebase.storage.module.mjs +2 -2
- package/fesm2022/dereekb-dbx-firebase.mjs +833 -30
- package/fesm2022/dereekb-dbx-firebase.mjs.map +1 -1
- package/lib/firestore/firebase.firestore.providers.d.ts +14 -1
- package/lib/model/loader/collection.loader.instance.d.ts +26 -1
- package/lib/model/modules/store/index.d.ts +1 -0
- package/lib/model/modules/store/store.collection.crud.d.ts +21 -0
- package/lib/model/modules/store/store.collection.d.ts +19 -2
- package/lib/model/modules/store/store.collection.directive.d.ts +12 -2
- package/lib/modules/index.d.ts +1 -0
- package/lib/modules/storagefile/container/index.d.ts +6 -0
- package/lib/modules/storagefile/container/storagefile.upload.action.handler.directive.d.ts +47 -0
- package/lib/modules/storagefile/container/storagefile.upload.error.d.ts +9 -0
- package/lib/modules/storagefile/container/storagefile.upload.handler.d.ts +183 -0
- package/lib/modules/storagefile/container/storagefile.upload.initialize.document.directive.d.ts +14 -0
- package/lib/modules/storagefile/container/storagefile.upload.store.directive.d.ts +20 -0
- package/lib/modules/storagefile/container/storagefile.upload.sync.directive.d.ts +18 -0
- package/lib/modules/storagefile/index.d.ts +3 -0
- package/lib/modules/storagefile/storagefile.upload.module.d.ts +29 -0
- package/lib/modules/storagefile/store/index.d.ts +5 -0
- package/lib/modules/storagefile/store/storagefile.collection.store.d.ts +10 -0
- package/lib/modules/storagefile/store/storagefile.collection.store.directive.d.ts +9 -0
- package/lib/modules/storagefile/store/storagefile.document.store.d.ts +15 -0
- package/lib/modules/storagefile/store/storagefile.document.store.directive.d.ts +9 -0
- package/lib/modules/storagefile/store/storagefile.upload.store.d.ts +166 -0
- package/lib/storage/firebase.storage.module.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, Injectable, APP_INITIALIZER, makeEnvironmentProviders, InjectionToken, Component, Optional, Inject, model, computed, ChangeDetectionStrategy, signal, Directive, input, EventEmitter, output, NgModule, Injector, viewChild, HostListener, ElementRef, forwardRef, effect, Pipe } from '@angular/core';
|
|
3
3
|
import { DbxAnalyticsService } from '@dereekb/dbx-analytics';
|
|
4
|
-
import { asObservable, timeoutStartWith, filterMaybe, isNot, SubscriptionObject, lazyFrom, switchMapWhileTrue, loadingStateFromObs, cleanupDestroyable, iterationHasNextAndCanLoadMore, pageItemAccumulatorCurrentPage, accumulatorFlattenPageListLoadingState, useFirst, itemAccumulatorNextPageUntilResultsCount, iteratorNextPageUntilPage, iteratorNextPageUntilMaxPageLoadLimit, pageLoadingStateFromObs, useAsObservable, filterMaybeArray, mapEachAsync, invertObservableDecision, filterItemsWithObservableDecision, skipInitialMaybe, distinctUntilModelKeyChange, successResult, beginLoading, errorResult, isLoadingStateLoading, cleanup, mapLoadingState, mapLoadingStateValueWithOperator } from '@dereekb/rxjs';
|
|
5
|
-
import { switchMap, of, shareReplay, map, distinctUntilChanged, EMPTY, catchError, firstValueFrom, BehaviorSubject, combineLatest, first, from, tap, interval, exhaustMap, filter, take, startWith, Subject, throttleTime, NEVER, combineLatestWith } from 'rxjs';
|
|
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, skipInitialMaybe, distinctUntilModelKeyChange, successResult, beginLoading, errorResult, isLoadingStateLoading, cleanup, mapLoadingState, mapLoadingStateValueWithOperator, distinctUntilHasDifferentValues, MultiSubscriptionObject, startWithBeginLoading, skipAllInitialMaybe } from '@dereekb/rxjs';
|
|
5
|
+
import { switchMap, of, shareReplay, map, distinctUntilChanged, EMPTY, catchError, firstValueFrom, BehaviorSubject, combineLatest, first, from, tap, interval, exhaustMap, filter, take, startWith, Subject, throttleTime, NEVER, combineLatestWith, Observable } from 'rxjs';
|
|
6
6
|
import * as i2 from '@dereekb/dbx-core';
|
|
7
|
-
import { loggedInObsFromIsLoggedIn, loggedOutObsFromIsLoggedIn, authUserIdentifier, DbxInjectionContext, DbxInjectionComponent, AbstractForwardDbxInjectionContextDirective, DbxInjectionContextDirective, DBX_INJECTION_COMPONENT_DATA, DbxAuthService, DbxActionButtonDirective, DbxActionDirective, DbxActionEnforceModifiedDirective, DbxActionHandlerDirective, DbxActionAutoTriggerDirective, provideDbxRouteModelIdDirectiveDelegate, provideDbxRouteModelKeyDirectiveDelegate, AbstractSubscriptionDirective, AbstractIfDirective, LockSetComponentStore, newWithInjector, CutTextPipe, dbxRouteParamReaderInstance, DbxRouteParamDefaultRedirectInstance } from '@dereekb/dbx-core';
|
|
7
|
+
import { loggedInObsFromIsLoggedIn, loggedOutObsFromIsLoggedIn, authUserIdentifier, DbxInjectionContext, DbxInjectionComponent, AbstractForwardDbxInjectionContextDirective, DbxInjectionContextDirective, DBX_INJECTION_COMPONENT_DATA, DbxAuthService, DbxActionButtonDirective, DbxActionDirective, DbxActionEnforceModifiedDirective, DbxActionHandlerDirective, DbxActionAutoTriggerDirective, provideDbxRouteModelIdDirectiveDelegate, provideDbxRouteModelKeyDirectiveDelegate, AbstractSubscriptionDirective, AbstractIfDirective, LockSetComponentStore, newWithInjector, CutTextPipe, DbxActionContextStoreSourceInstance, DbxActionHandlerInstance, dbxRouteParamReaderInstance, DbxRouteParamDefaultRedirectInstance } from '@dereekb/dbx-core';
|
|
8
8
|
import { Auth, authState, idToken, GoogleAuthProvider, FacebookAuthProvider, TwitterAuthProvider, GithubAuthProvider, signInWithPopup, createUserWithEmailAndPassword, signInWithEmailAndPassword, signInAnonymously, reauthenticateWithPopup, provideAuth, getAuth, connectAuthEmulator } from '@angular/fire/auth';
|
|
9
|
-
import { AUTH_ADMIN_ROLE, cachedGetter, urlWithoutParameters, addToSet, removeFromSet, filterMaybeArrayValues, mapIterable, asArray, excludeValuesFromArray, containsStringAnyCase, addToSetCopy, iterableToArray, runAsyncTasksForValues, pushArrayItemsIntoArray, forEachKeyValue, countAllInNestedArray, invertDecision, readableError, isMaybeSo, firstValue } from '@dereekb/util';
|
|
9
|
+
import { AUTH_ADMIN_ROLE, cachedGetter, urlWithoutParameters, addToSet, removeFromSet, filterMaybeArrayValues, mapIterable, asArray, excludeValuesFromArray, containsStringAnyCase, addToSetCopy, iterableToArray, runAsyncTasksForValues, pushArrayItemsIntoArray, forEachKeyValue, countAllInNestedArray, invertDecision, readableError, isMaybeSo, firstValue, separateValues } 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, provideDbxListViewWrapper, DbxListWrapperComponentImportsModule, DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE, AbstractDbxSelectionListViewDirective, provideDbxListView, DbxSelectionValueListViewComponentImportsModule, 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, DbxModelObjectStateService, DbxListViewWrapper, AbstractDbxWidgetComponent, DbxPopoverInteractionModule, DbxListModifierModule } from '@dereekb/dbx-web';
|
|
15
|
+
import { DbxLinkComponent, DbxActionModule, DbxButtonModule, DbxErrorComponent, DbxActionErrorDirective, DbxButtonComponent, DbxButtonSpacerDirective, DbxRouterAnchorModule, DbxWidgetService, AbstractDbxSelectionListWrapperDirective, provideDbxListViewWrapper, DbxListWrapperComponentImportsModule, DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE, AbstractDbxSelectionListViewDirective, provideDbxListView, DbxSelectionValueListViewComponentImportsModule, 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, DbxModelObjectStateService, DbxListViewWrapper, AbstractDbxWidgetComponent, DbxPopoverInteractionModule, DbxListModifierModule, DbxFileUploadComponent, DbxLoadingComponent, DbxActionLoadingContextDirective, DbxActionSnackbarErrorDirective, DbxFileUploadActionSyncDirective } from '@dereekb/dbx-web';
|
|
16
16
|
import * as i1 from '@angular/material/icon';
|
|
17
17
|
import { MatIconModule } from '@angular/material/icon';
|
|
18
18
|
import * as i1$2 from '@dereekb/dbx-form';
|
|
19
19
|
import { AbstractSyncFormlyFormDirective, emailField, dbxFormlyFormComponentProviders, DbxFormlyFormComponentImportsModule, DBX_FORMLY_FORM_COMPONENT_TEMPLATE, AbstractConfigAsyncFormlyFormDirective, usernamePasswordLoginFields, DbxActionFormDirective, DbxFormSourceDirective, pickableItemChipField, filterPickableItemFieldValuesByLabel } from '@dereekb/dbx-form';
|
|
20
20
|
import * as i1$4 from '@dereekb/firebase';
|
|
21
|
-
import { firebaseAuthErrorToReadableError, FirebaseDevelopmentFunctions, ScheduledFunctionDevelopmentFunctionTypeEnum, clientFirebaseFirestoreContextFactory, SystemStateFirestoreCollections, NotificationFirestoreCollections, FIREBASE_DEVELOPMENT_FUNCTIONS_MAP_KEY, iterationQueryDocChangeWatcher, firebaseQuerySnapshotAccumulator, firebaseQueryItemAccumulator, firestoreModelKeysFromDocuments, firestoreModelIdsFromDocuments, documentReferencesFromDocuments, getDocumentSnapshots, getDataFromDocumentSnapshots, latestSnapshotsFromDocuments, dataFromDocumentSnapshots, loadDocumentsForKeys, loadDocumentsForDocumentReferences, loadDocumentsForIds, firestoreModelKeyCollectionTypePair, buildFirebaseCollectionTypeModelTypeMap, FirestoreAccessorStreamMode, firestoreModelIdsFromKey, firestoreModelKeyPartPairs, firestoreModelKeyPairObject, flatFirestoreModelKey, twoWayFlatFirestoreModelKey, documentDataWithIdAndKey, isClientFirebaseError, FIRESTORE_PERMISSION_DENIED_ERROR_CODE, inferKeyFromTwoWayFlatFirestoreModelKey, firestoreModelKeyParentKey, AppNotificationTemplateTypeInfoRecordService, NotificationFunctions, unreadNotificationItems, clientFirebaseStorageContextFactory } from '@dereekb/firebase';
|
|
21
|
+
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, FirestoreAccessorStreamMode, firestoreModelIdsFromKey, firestoreModelKeyPartPairs, firestoreModelKeyPairObject, flatFirestoreModelKey, twoWayFlatFirestoreModelKey, documentDataWithIdAndKey, isClientFirebaseError, FIRESTORE_PERMISSION_DENIED_ERROR_CODE, inferKeyFromTwoWayFlatFirestoreModelKey, firestoreModelKeyParentKey, AppNotificationTemplateTypeInfoRecordService, NotificationFunctions, unreadNotificationItems, StorageFileFunctions, clientFirebaseStorageContextFactory } from '@dereekb/firebase';
|
|
22
22
|
import { NgTemplateOutlet, DatePipe } from '@angular/common';
|
|
23
23
|
import * as i1$3 from '@angular/material/button';
|
|
24
24
|
import { MatButtonModule } from '@angular/material/button';
|
|
@@ -32,6 +32,7 @@ import { provideFirestore, persistentMultipleTabManager, persistentSingleTabMana
|
|
|
32
32
|
import { HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
33
33
|
import { __decorate, __param, __metadata } from 'tslib';
|
|
34
34
|
import { ComponentStore } from '@ngrx/component-store';
|
|
35
|
+
import { BaseError } from 'make-error';
|
|
35
36
|
|
|
36
37
|
function authUserInfoFromAuthUser(user) {
|
|
37
38
|
return {
|
|
@@ -674,7 +675,7 @@ class DbxFirebaseLoginButtonComponent {
|
|
|
674
675
|
</div>
|
|
675
676
|
</dbx-button>
|
|
676
677
|
</ng-container>
|
|
677
|
-
`, 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],dbx-action-context,[dbxActionContext]", 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: ["type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "raised", "stroked", "flat", "iconOnly", "fab"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
678
|
+
`, 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],dbx-action-context,[dbxActionContext]", 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", "raised", "stroked", "flat", "iconOnly", "fab", "mode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
678
679
|
}
|
|
679
680
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseLoginButtonComponent, decorators: [{
|
|
680
681
|
type: Component,
|
|
@@ -1053,7 +1054,7 @@ class DbxFirebaseLoginEmailContentComponent {
|
|
|
1053
1054
|
this.doneOrCancelled.next(false);
|
|
1054
1055
|
}
|
|
1055
1056
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseLoginEmailContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1056
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", 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[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i2.DbxActionDirective, selector: "dbx-action,[dbxAction],dbx-action-context,[dbxActionContext]", 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: ["type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "raised", "stroked", "flat", "iconOnly", "fab"] }, { 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 });
|
|
1057
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", 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[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i2.DbxActionDirective, selector: "dbx-action,[dbxAction],dbx-action-context,[dbxActionContext]", 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", "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 });
|
|
1057
1058
|
}
|
|
1058
1059
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseLoginEmailContentComponent, decorators: [{
|
|
1059
1060
|
type: Component,
|
|
@@ -1802,7 +1803,7 @@ class DbxFirebaseDevelopmentSchedulerListViewItemComponent extends AbstractDbxVa
|
|
|
1802
1803
|
<dbx-button dbxActionButton [text]="'Run ' + name"></dbx-button>
|
|
1803
1804
|
<div *dbxActionHasSuccess="3000" class="dbx-success">Success</div>
|
|
1804
1805
|
</div>
|
|
1805
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i2.DbxActionDirective, selector: "dbx-action,[dbxAction],dbx-action-context,[dbxActionContext]", 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: ["type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "raised", "stroked", "flat", "iconOnly", "fab"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1806
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i2.DbxActionDirective, selector: "dbx-action,[dbxAction],dbx-action-context,[dbxActionContext]", 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", "raised", "stroked", "flat", "iconOnly", "fab", "mode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1806
1807
|
}
|
|
1807
1808
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseDevelopmentSchedulerListViewItemComponent, decorators: [{
|
|
1808
1809
|
type: Component,
|
|
@@ -2087,7 +2088,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
2087
2088
|
args: ['window:keydown', ['$event']]
|
|
2088
2089
|
}] } });
|
|
2089
2090
|
|
|
2090
|
-
const importsAndExports$
|
|
2091
|
+
const importsAndExports$6 = [
|
|
2091
2092
|
//
|
|
2092
2093
|
DbxFirebaseDevelopmentPopupContentFormComponent,
|
|
2093
2094
|
DbxFirebaseDevelopmentDirective,
|
|
@@ -2135,8 +2136,8 @@ class DbxFirebaseDevelopmentModule {
|
|
|
2135
2136
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseDevelopmentModule, decorators: [{
|
|
2136
2137
|
type: NgModule,
|
|
2137
2138
|
args: [{
|
|
2138
|
-
imports: importsAndExports$
|
|
2139
|
-
exports: importsAndExports$
|
|
2139
|
+
imports: importsAndExports$6,
|
|
2140
|
+
exports: importsAndExports$6
|
|
2140
2141
|
}]
|
|
2141
2142
|
}] });
|
|
2142
2143
|
|
|
@@ -2418,6 +2419,18 @@ function provideNotificationFirestoreCollections(appCollection) {
|
|
|
2418
2419
|
}
|
|
2419
2420
|
return appCollection;
|
|
2420
2421
|
}
|
|
2422
|
+
/**
|
|
2423
|
+
* Provider factory for the StorageFileFirestoreCollections.
|
|
2424
|
+
*
|
|
2425
|
+
* @param appCollection The app collection class to use.
|
|
2426
|
+
* @returns Provider factory for the StorageFileFirestoreCollections.
|
|
2427
|
+
*/
|
|
2428
|
+
function provideStorageFileFirestoreCollections(appCollection) {
|
|
2429
|
+
if (!appCollection.storageFileCollection) {
|
|
2430
|
+
throw new Error(`StorageFileFirestoreCollections could not be provided using the app's app collection. Set provideStorageFileFirestoreCollections to false in DbxFirebaseFirestoreCollectionModuleConfig to prevent auto-initialization, or update your app's collection class to implement StorageFileFirestoreCollections.`);
|
|
2431
|
+
}
|
|
2432
|
+
return appCollection;
|
|
2433
|
+
}
|
|
2421
2434
|
/**
|
|
2422
2435
|
* Creates EnvironmentProviders for the DBX_FIRESTORE_CONTEXT_TOKEN, appCollectionClass, and optionally the SystemStateFirestoreCollections and NotificationFirestoreCollections.
|
|
2423
2436
|
*
|
|
@@ -2454,6 +2467,13 @@ function provideDbxFirestoreCollection(config) {
|
|
|
2454
2467
|
deps: [config.appCollectionClass]
|
|
2455
2468
|
});
|
|
2456
2469
|
}
|
|
2470
|
+
if (config.provideStorageFileFirestoreCollections) {
|
|
2471
|
+
providers.push({
|
|
2472
|
+
provide: StorageFileFirestoreCollections,
|
|
2473
|
+
useFactory: provideStorageFileFirestoreCollections,
|
|
2474
|
+
deps: [config.appCollectionClass]
|
|
2475
|
+
});
|
|
2476
|
+
}
|
|
2457
2477
|
return makeEnvironmentProviders(providers);
|
|
2458
2478
|
}
|
|
2459
2479
|
|
|
@@ -2678,12 +2698,18 @@ function dbxFirebaseCollectionChangeTrigger(config) {
|
|
|
2678
2698
|
class DbxFirebaseCollectionLoaderInstance {
|
|
2679
2699
|
_maxPagesSub = new SubscriptionObject();
|
|
2680
2700
|
_collection = new BehaviorSubject(undefined);
|
|
2701
|
+
_collectionMode = new BehaviorSubject('query');
|
|
2702
|
+
_collectionRefs = new BehaviorSubject(undefined);
|
|
2681
2703
|
_maxPages = new BehaviorSubject(undefined);
|
|
2682
2704
|
_itemsPerPage = new BehaviorSubject(undefined);
|
|
2683
2705
|
_constraints = new BehaviorSubject(undefined);
|
|
2684
2706
|
_waitForNonNullConstraints = new BehaviorSubject(undefined);
|
|
2685
2707
|
_restart = new Subject();
|
|
2686
2708
|
collection$ = this._collection.pipe(distinctUntilChanged());
|
|
2709
|
+
collectionMode$ = this._collectionMode.pipe(distinctUntilChanged(), shareReplay(1));
|
|
2710
|
+
currentCollectionRefs$ = this._collectionRefs.pipe(distinctUntilChanged(), shareReplay(1));
|
|
2711
|
+
collectionRefs$ = this.currentCollectionRefs$.pipe(filterMaybe(), distinctUntilKeysChange((x) => x.path), shareReplay(1));
|
|
2712
|
+
collectionKeys$ = this.collectionRefs$.pipe(map((x) => x.map((y) => y.path)), shareReplay(1));
|
|
2687
2713
|
currentConstraints$ = this._constraints.pipe(distinctUntilChanged());
|
|
2688
2714
|
constraints$ = this._waitForNonNullConstraints.pipe(switchMap((waitForNonNullConstraints) => {
|
|
2689
2715
|
let obs = this.currentConstraints$;
|
|
@@ -2696,8 +2722,15 @@ class DbxFirebaseCollectionLoaderInstance {
|
|
|
2696
2722
|
iteratorFilter$ = combineLatest([this._itemsPerPage.pipe(distinctUntilChanged()), this.constraints$]).pipe(map(([limit, constraints]) => ({ limit, constraints, maxPageLoadLimit: this.maxPages })), shareReplay(1));
|
|
2697
2723
|
firestoreIteration$ = this.collection$.pipe(switchMap((collection) => {
|
|
2698
2724
|
if (collection) {
|
|
2699
|
-
return combineLatest([this.iteratorFilter$, this._restart.pipe(startWith(undefined))]).pipe(throttleTime(100, undefined, { trailing: true }), // prevent rapid changes and executing filters too quickly.
|
|
2700
|
-
|
|
2725
|
+
return combineLatest([this.collectionMode$, this.iteratorFilter$, this._restart.pipe(startWith(undefined))]).pipe(throttleTime(100, undefined, { trailing: true }), // prevent rapid changes and executing filters too quickly.
|
|
2726
|
+
switchMap(([mode, filter]) => {
|
|
2727
|
+
if (mode === 'query') {
|
|
2728
|
+
return of(collection.firestoreIteration(filter));
|
|
2729
|
+
}
|
|
2730
|
+
else {
|
|
2731
|
+
return this.collectionRefs$.pipe(map((refs) => collection.firestoreFixedIteration(refs, filter)));
|
|
2732
|
+
}
|
|
2733
|
+
}), cleanupDestroyable(), // cleanup the iteration
|
|
2701
2734
|
shareReplay(1));
|
|
2702
2735
|
}
|
|
2703
2736
|
else {
|
|
@@ -2734,6 +2767,13 @@ class DbxFirebaseCollectionLoaderInstance {
|
|
|
2734
2767
|
allDocumentData$ = this.accumulatorItems$.pipe(map((x) => x.flat()), shareReplay(1));
|
|
2735
2768
|
pageLoadingState$ = this.accumulator$.pipe(switchMap((x) => accumulatorFlattenPageListLoadingState(x)), shareReplay(1));
|
|
2736
2769
|
constructor(initConfig) {
|
|
2770
|
+
this._collectionMode.next(initConfig?.collectionMode ?? 'query');
|
|
2771
|
+
if (initConfig?.collectionKeys) {
|
|
2772
|
+
this.collectionKeys = initConfig?.collectionKeys;
|
|
2773
|
+
}
|
|
2774
|
+
else if (initConfig?.collectionRefs) {
|
|
2775
|
+
this.collectionRefs = initConfig?.collectionRefs;
|
|
2776
|
+
}
|
|
2737
2777
|
this._collection.next(initConfig?.collection);
|
|
2738
2778
|
this._maxPages.next(initConfig?.maxPages);
|
|
2739
2779
|
this._itemsPerPage.next(initConfig?.itemsPerPage);
|
|
@@ -2749,6 +2789,8 @@ class DbxFirebaseCollectionLoaderInstance {
|
|
|
2749
2789
|
.subscribe();
|
|
2750
2790
|
}
|
|
2751
2791
|
destroy() {
|
|
2792
|
+
this._collectionMode.complete();
|
|
2793
|
+
this._collectionRefs.complete();
|
|
2752
2794
|
this._maxPages.complete();
|
|
2753
2795
|
this._collection.complete();
|
|
2754
2796
|
this._constraints.complete();
|
|
@@ -2757,6 +2799,33 @@ class DbxFirebaseCollectionLoaderInstance {
|
|
|
2757
2799
|
this._maxPagesSub.destroy();
|
|
2758
2800
|
}
|
|
2759
2801
|
// MARK: Inputs
|
|
2802
|
+
get collectionMode() {
|
|
2803
|
+
return this._collectionMode.value;
|
|
2804
|
+
}
|
|
2805
|
+
set collectionMode(mode) {
|
|
2806
|
+
if (this.collectionMode != mode) {
|
|
2807
|
+
this._collectionMode.next(mode);
|
|
2808
|
+
}
|
|
2809
|
+
}
|
|
2810
|
+
get collectionKeys() {
|
|
2811
|
+
const refs = this.collectionRefs;
|
|
2812
|
+
return refs?.map((x) => x.path);
|
|
2813
|
+
}
|
|
2814
|
+
set collectionKeys(keys) {
|
|
2815
|
+
let refs = undefined;
|
|
2816
|
+
const { collection } = this;
|
|
2817
|
+
if (keys && collection) {
|
|
2818
|
+
const accessor = collection.documentAccessor();
|
|
2819
|
+
refs = keys.map((x) => accessor.documentRefForKey(x));
|
|
2820
|
+
}
|
|
2821
|
+
this.collectionRefs = refs;
|
|
2822
|
+
}
|
|
2823
|
+
get collectionRefs() {
|
|
2824
|
+
return this._collectionRefs.value;
|
|
2825
|
+
}
|
|
2826
|
+
set collectionRefs(refs) {
|
|
2827
|
+
this._collectionRefs.next(refs);
|
|
2828
|
+
}
|
|
2760
2829
|
get maxPages() {
|
|
2761
2830
|
return this._maxPages.value;
|
|
2762
2831
|
}
|
|
@@ -2798,6 +2867,17 @@ class DbxFirebaseCollectionLoaderInstance {
|
|
|
2798
2867
|
restart() {
|
|
2799
2868
|
this._restart.next();
|
|
2800
2869
|
}
|
|
2870
|
+
setCollectionMode(mode) {
|
|
2871
|
+
this.collectionMode = mode;
|
|
2872
|
+
}
|
|
2873
|
+
// References Mode
|
|
2874
|
+
setCollectionKeys(keys) {
|
|
2875
|
+
this.collectionKeys = keys;
|
|
2876
|
+
}
|
|
2877
|
+
setCollectionRefs(refs) {
|
|
2878
|
+
this.collectionRefs = refs;
|
|
2879
|
+
}
|
|
2880
|
+
// Query Mode
|
|
2801
2881
|
setMaxPages(maxPages) {
|
|
2802
2882
|
this.maxPages = maxPages;
|
|
2803
2883
|
}
|
|
@@ -3357,7 +3437,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3357
3437
|
}]
|
|
3358
3438
|
}] });
|
|
3359
3439
|
|
|
3360
|
-
const importsAndExports$
|
|
3440
|
+
const importsAndExports$5 = [DbxFirebaseModelHistoryComponent, DbxFirebaseModelHistoryPopoverButtonComponent, DbxFirebaseModelHistoryPopoverComponent];
|
|
3361
3441
|
/**
|
|
3362
3442
|
* @deprecated import standalone components individually instead.
|
|
3363
3443
|
*
|
|
@@ -3368,13 +3448,13 @@ const importsAndExports$4 = [DbxFirebaseModelHistoryComponent, DbxFirebaseModelH
|
|
|
3368
3448
|
class DbxFirebaseModelHistoryModule {
|
|
3369
3449
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelHistoryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
3370
3450
|
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelHistoryModule, imports: [DbxFirebaseModelHistoryComponent, DbxFirebaseModelHistoryPopoverButtonComponent, DbxFirebaseModelHistoryPopoverComponent], exports: [DbxFirebaseModelHistoryComponent, DbxFirebaseModelHistoryPopoverButtonComponent, DbxFirebaseModelHistoryPopoverComponent] });
|
|
3371
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelHistoryModule, imports: [importsAndExports$
|
|
3451
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelHistoryModule, imports: [importsAndExports$5] });
|
|
3372
3452
|
}
|
|
3373
3453
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelHistoryModule, decorators: [{
|
|
3374
3454
|
type: NgModule,
|
|
3375
3455
|
args: [{
|
|
3376
|
-
imports: importsAndExports$
|
|
3377
|
-
exports: importsAndExports$
|
|
3456
|
+
imports: importsAndExports$5,
|
|
3457
|
+
exports: importsAndExports$5
|
|
3378
3458
|
}]
|
|
3379
3459
|
}] });
|
|
3380
3460
|
|
|
@@ -3533,7 +3613,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3533
3613
|
}]
|
|
3534
3614
|
}] });
|
|
3535
3615
|
|
|
3536
|
-
const importsAndExports$
|
|
3616
|
+
const importsAndExports$4 = [DbxFirebaseModelViewedEventDirective, DbxFirebaseModelTypeInstanceListComponent, DbxFirebaseModelTypeInstanceListViewComponent, DbxFirebaseModelTypeInstanceListViewItemComponent];
|
|
3537
3617
|
/**
|
|
3538
3618
|
* @deprecated import independent components instead
|
|
3539
3619
|
*
|
|
@@ -3550,8 +3630,8 @@ class DbxFirebaseModelTypesModule {
|
|
|
3550
3630
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelTypesModule, decorators: [{
|
|
3551
3631
|
type: NgModule,
|
|
3552
3632
|
args: [{
|
|
3553
|
-
imports: importsAndExports$
|
|
3554
|
-
exports: importsAndExports$
|
|
3633
|
+
imports: importsAndExports$4,
|
|
3634
|
+
exports: importsAndExports$4
|
|
3555
3635
|
}]
|
|
3556
3636
|
}] });
|
|
3557
3637
|
|
|
@@ -3559,10 +3639,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3559
3639
|
* Abstract directive that contains a DbxFirebaseCollectionStore and provides an interface for communicating with other directives.
|
|
3560
3640
|
*/
|
|
3561
3641
|
class DbxFirebaseCollectionStoreDirective {
|
|
3642
|
+
collectionMode = model('query');
|
|
3643
|
+
collectionKeys = model(undefined);
|
|
3644
|
+
collectionRefs = model(undefined);
|
|
3562
3645
|
maxPages = model(undefined);
|
|
3563
3646
|
itemsPerPage = model(undefined);
|
|
3564
3647
|
constraints = model(undefined);
|
|
3565
3648
|
waitForNonNullConstraints = model(undefined);
|
|
3649
|
+
_collectionMode = toObservable(this.collectionMode).pipe(skipInitialMaybe());
|
|
3650
|
+
_collectionKeys = toObservable(this.collectionKeys).pipe(skipInitialMaybe());
|
|
3651
|
+
_collectionRefs = toObservable(this.collectionRefs).pipe(skipInitialMaybe());
|
|
3566
3652
|
_maxPages = toObservable(this.maxPages).pipe(skipInitialMaybe());
|
|
3567
3653
|
_itemsPerPage = toObservable(this.itemsPerPage).pipe(skipInitialMaybe());
|
|
3568
3654
|
_constraints = toObservable(this.constraints).pipe(skipInitialMaybe());
|
|
@@ -3575,6 +3661,9 @@ class DbxFirebaseCollectionStoreDirective {
|
|
|
3575
3661
|
this.replaceStore(store);
|
|
3576
3662
|
// sync inputs to store any time the store changes
|
|
3577
3663
|
this._storeSub.subscription = this.store$.subscribe((x) => {
|
|
3664
|
+
x.setCollectionMode(this._collectionMode);
|
|
3665
|
+
x.setCollectionKeys(this._collectionKeys);
|
|
3666
|
+
x.setCollectionRefs(this._collectionRefs);
|
|
3578
3667
|
x.setConstraints(this._constraints);
|
|
3579
3668
|
x.setMaxPages(this._maxPages);
|
|
3580
3669
|
x.setItemsPerPage(this._itemsPerPage);
|
|
@@ -3594,6 +3683,15 @@ class DbxFirebaseCollectionStoreDirective {
|
|
|
3594
3683
|
replaceStore(store) {
|
|
3595
3684
|
this._store.next(store);
|
|
3596
3685
|
}
|
|
3686
|
+
setCollectionMode(collectionMode) {
|
|
3687
|
+
this.collectionMode.set(collectionMode);
|
|
3688
|
+
}
|
|
3689
|
+
setCollectionKeys(collectionKeys) {
|
|
3690
|
+
this.collectionKeys.set(collectionKeys);
|
|
3691
|
+
}
|
|
3692
|
+
setCollectionRefs(collectionRefs) {
|
|
3693
|
+
this.collectionRefs.set(collectionRefs);
|
|
3694
|
+
}
|
|
3597
3695
|
setMaxPages(maxPages) {
|
|
3598
3696
|
this.maxPages.set(maxPages);
|
|
3599
3697
|
}
|
|
@@ -3613,7 +3711,7 @@ class DbxFirebaseCollectionStoreDirective {
|
|
|
3613
3711
|
this.store.restart();
|
|
3614
3712
|
}
|
|
3615
3713
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseCollectionStoreDirective, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
|
|
3616
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxFirebaseCollectionStoreDirective, inputs: { 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: { maxPages: "maxPagesChange", itemsPerPage: "itemsPerPageChange", constraints: "constraintsChange", waitForNonNullConstraints: "waitForNonNullConstraintsChange" }, ngImport: i0 });
|
|
3714
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxFirebaseCollectionStoreDirective, 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 });
|
|
3617
3715
|
}
|
|
3618
3716
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseCollectionStoreDirective, decorators: [{
|
|
3619
3717
|
type: Directive
|
|
@@ -3787,7 +3885,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3787
3885
|
}]
|
|
3788
3886
|
}], ctorParameters: () => [] });
|
|
3789
3887
|
|
|
3790
|
-
const importsAndExports$
|
|
3888
|
+
const importsAndExports$3 = [DbxFirebaseCollectionListDirective, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective];
|
|
3791
3889
|
class DbxFirebaseModelStoreModule {
|
|
3792
3890
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelStoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
3793
3891
|
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelStoreModule, imports: [DbxFirebaseCollectionListDirective, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective], exports: [DbxFirebaseCollectionListDirective, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective] });
|
|
@@ -3796,13 +3894,22 @@ class DbxFirebaseModelStoreModule {
|
|
|
3796
3894
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelStoreModule, decorators: [{
|
|
3797
3895
|
type: NgModule,
|
|
3798
3896
|
args: [{
|
|
3799
|
-
imports: importsAndExports$
|
|
3800
|
-
exports: importsAndExports$
|
|
3897
|
+
imports: importsAndExports$3,
|
|
3898
|
+
exports: importsAndExports$3
|
|
3801
3899
|
}]
|
|
3802
3900
|
}] });
|
|
3803
3901
|
|
|
3804
3902
|
class AbstractDbxFirebaseCollectionStore extends LockSetComponentStore {
|
|
3805
3903
|
// MARK: Effects
|
|
3904
|
+
setCollectionMode = this.effect((input) => {
|
|
3905
|
+
return input.pipe(switchMap((mode) => this.loader$.pipe(tap((x) => x.setCollectionMode(mode)))));
|
|
3906
|
+
});
|
|
3907
|
+
setCollectionKeys = this.effect((input) => {
|
|
3908
|
+
return input.pipe(switchMap((keys) => this.loader$.pipe(tap((x) => x.setCollectionKeys(keys)))));
|
|
3909
|
+
});
|
|
3910
|
+
setCollectionRefs = this.effect((input) => {
|
|
3911
|
+
return input.pipe(switchMap((refs) => this.loader$.pipe(tap((x) => x.setCollectionRefs(refs)))));
|
|
3912
|
+
});
|
|
3806
3913
|
setMaxPages = this.effect((input) => {
|
|
3807
3914
|
return input.pipe(switchMap((maxPages) => this.loader$.pipe(tap((x) => x.setMaxPages(maxPages)))));
|
|
3808
3915
|
});
|
|
@@ -3826,11 +3933,15 @@ class AbstractDbxFirebaseCollectionStore extends LockSetComponentStore {
|
|
|
3826
3933
|
firestoreCollection$ = this.currentFirestoreCollection$.pipe(filterMaybe());
|
|
3827
3934
|
loader$ = this.currentFirestoreCollection$.pipe(switchMap((collection) => this.state$.pipe(first(), map((x) => dbxFirebaseCollectionLoaderInstance({
|
|
3828
3935
|
collection,
|
|
3936
|
+
collectionMode: x.collectionMode,
|
|
3937
|
+
collectionKeys: x.collectionKeys,
|
|
3938
|
+
collectionRefs: x.collectionRefs,
|
|
3829
3939
|
maxPages: x.maxPages,
|
|
3830
3940
|
itemsPerPage: x.itemsPerPage,
|
|
3831
3941
|
constraints: x.constraints,
|
|
3832
3942
|
waitForNonNullConstraints: x.waitForNonNullConstraints
|
|
3833
3943
|
})))), cleanupDestroyable(), distinctUntilChanged(), shareReplay(1));
|
|
3944
|
+
collectionMode$ = this.loader$.pipe(switchMap((x) => x.collectionMode$));
|
|
3834
3945
|
constraints$ = this.loader$.pipe(switchMap((x) => x.constraints$));
|
|
3835
3946
|
firestoreIteration$ = this.loader$.pipe(switchMap((x) => x.firestoreIteration$));
|
|
3836
3947
|
queryChangeWatcher$ = this.loader$.pipe(switchMap((x) => x.queryChangeWatcher$));
|
|
@@ -3861,6 +3972,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3861
3972
|
type: Injectable
|
|
3862
3973
|
}] });
|
|
3863
3974
|
|
|
3975
|
+
/**
|
|
3976
|
+
* Creates a function for a store that DbxFirebaseDocumentStore captures the ModelFirebaseCreateFunction result and sets the key of the created value.
|
|
3977
|
+
*
|
|
3978
|
+
* @param store
|
|
3979
|
+
* @param fn
|
|
3980
|
+
* @returns
|
|
3981
|
+
*/
|
|
3982
|
+
function firebaseCollectionStoreCreateFunction(store, fn) {
|
|
3983
|
+
return (params) => loadingStateFromObs(lazyFrom(() => fn(params).then((result) => {
|
|
3984
|
+
const modelKeys = asArray(result.modelKeys);
|
|
3985
|
+
store.setCollectionKeys(modelKeys);
|
|
3986
|
+
store.setCollectionMode('references'); // switch mode to references if not yet set
|
|
3987
|
+
return result;
|
|
3988
|
+
})));
|
|
3989
|
+
}
|
|
3990
|
+
/**
|
|
3991
|
+
* Creates a DbxfirebaseDocumentStoreCrudFunction from the input ModelFirebaseCrudFunction.
|
|
3992
|
+
*
|
|
3993
|
+
* @param fn
|
|
3994
|
+
* @returns
|
|
3995
|
+
*/
|
|
3996
|
+
function firebaseCollectionStoreCrudFunction(fn) {
|
|
3997
|
+
return (params) => loadingStateFromObs(from(fn(params)).pipe(shareReplay(1)));
|
|
3998
|
+
}
|
|
3999
|
+
|
|
3864
4000
|
const DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR = 'DOES_NOT_EXIST';
|
|
3865
4001
|
function modelDoesNotExistError() {
|
|
3866
4002
|
return readableError(DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR, 'The document does not exist.');
|
|
@@ -5032,7 +5168,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
5032
5168
|
}]
|
|
5033
5169
|
}], ctorParameters: () => [{ type: NotificationUserDocumentStore }] });
|
|
5034
5170
|
|
|
5035
|
-
const importsAndExports$
|
|
5171
|
+
const importsAndExports$2 = [
|
|
5036
5172
|
// components
|
|
5037
5173
|
DbxFirebaseNotificationItemListComponent,
|
|
5038
5174
|
DbxFirebaseNotificationItemListViewComponent,
|
|
@@ -5120,8 +5256,8 @@ class DbxFirebaseNotificationModule {
|
|
|
5120
5256
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseNotificationModule, decorators: [{
|
|
5121
5257
|
type: NgModule,
|
|
5122
5258
|
args: [{
|
|
5123
|
-
imports: importsAndExports$
|
|
5124
|
-
exports: importsAndExports$
|
|
5259
|
+
imports: importsAndExports$2,
|
|
5260
|
+
exports: importsAndExports$2
|
|
5125
5261
|
}]
|
|
5126
5262
|
}] });
|
|
5127
5263
|
|
|
@@ -5167,6 +5303,673 @@ function provideDbxFirebaseNotifications(config) {
|
|
|
5167
5303
|
return makeEnvironmentProviders(providers);
|
|
5168
5304
|
}
|
|
5169
5305
|
|
|
5306
|
+
/**
|
|
5307
|
+
* Store used for selecting a specific NotificationItem from a list of notification items.
|
|
5308
|
+
*/
|
|
5309
|
+
class DbxFirebaseStorageFileUploadStore extends ComponentStore {
|
|
5310
|
+
constructor() {
|
|
5311
|
+
super({});
|
|
5312
|
+
}
|
|
5313
|
+
// MARK: Accessors
|
|
5314
|
+
componentFileTypesAccepted$ = this.select((state) => state.componentFileTypesAccepted);
|
|
5315
|
+
isComponentMultiUploadAllowed$ = this.select((state) => state.isComponentMultiUploadAllowed).pipe(distinctUntilChanged(), shareReplay(1));
|
|
5316
|
+
fileTypesAllowed$ = this.select((state) => state.fileTypesAccepted ?? state.componentFileTypesAccepted ?? []).pipe(distinctUntilHasDifferentValues(), shareReplay(1));
|
|
5317
|
+
fileTypesAcceptString$ = this.fileTypesAllowed$.pipe(map((x) => x.join(',')), distinctUntilChanged(), shareReplay(1));
|
|
5318
|
+
isMultiUploadAllowed$ = this.select((state) => state.isComponentMultiUploadAllowed !== false && state.isMultiUploadAllowed).pipe(distinctUntilChanged(), shareReplay(1));
|
|
5319
|
+
uploadPath$ = this.select((state) => state.uploadPath).pipe(distinctUntilChanged(), shareReplay(1));
|
|
5320
|
+
currentFiles$ = this.select((state) => state.files).pipe(distinctUntilChanged(), shareReplay(1));
|
|
5321
|
+
files$ = this.currentFiles$.pipe(filterMaybe());
|
|
5322
|
+
isUploadHandlerWorking$ = this.select((state) => state.isUploadHandlerWorking).pipe(distinctUntilChanged(), shareReplay(1));
|
|
5323
|
+
latestProgressEvent$ = this.select((state) => state.latestProgressEvent).pipe(distinctUntilChanged(), shareReplay(1));
|
|
5324
|
+
currentUploadResult$ = this.select((state) => state.uploadResult).pipe(distinctUntilChanged(), shareReplay(1));
|
|
5325
|
+
uploadResult$ = this.currentUploadResult$.pipe(filterMaybe());
|
|
5326
|
+
// MARK: State Changes
|
|
5327
|
+
setComponentFileTypesAccepted = this.updater((state, componentFileTypesAccepted) => ({ ...state, componentFileTypesAccepted }));
|
|
5328
|
+
setIsComponentMultiUploadAllowed = this.updater((state, isComponentMultiUploadAllowed) => ({ ...state, isComponentMultiUploadAllowed }));
|
|
5329
|
+
setUploadPath = this.updater((state, uploadPath) => ({ ...state, uploadPath }));
|
|
5330
|
+
setFileTypesAccepted = this.updater((state, fileTypesAccepted) => ({ ...state, fileTypesAccepted: fileTypesAccepted ? asArray(fileTypesAccepted) : undefined }));
|
|
5331
|
+
/**
|
|
5332
|
+
* Sets the file list to upload.
|
|
5333
|
+
*
|
|
5334
|
+
* If the upload handler is working, the file list cannot be changed.
|
|
5335
|
+
*/
|
|
5336
|
+
setFiles = this.updater((state, files) => ({ ...state, files: state.isUploadHandlerWorking ? state.files : files }));
|
|
5337
|
+
setIsMultiUploadAllowed = this.updater((state, isMultiUploadAllowed) => ({ ...state, isMultiUploadAllowed }));
|
|
5338
|
+
/**
|
|
5339
|
+
* Flags the upload handler to begin working.
|
|
5340
|
+
*
|
|
5341
|
+
* Once the upload handler is flagged, it cannot be unset until the upload handler has finished.
|
|
5342
|
+
*/
|
|
5343
|
+
setIsUploadHandlerWorking = this.updater((state, isUploadHandlerWorking) => ({ ...state, isUploadHandlerWorking }));
|
|
5344
|
+
/**
|
|
5345
|
+
* Sets the latest progress event.
|
|
5346
|
+
*/
|
|
5347
|
+
setLatestProgressEvent = this.updater((state, latestProgressEvent) => ({ ...state, latestProgressEvent }));
|
|
5348
|
+
/**
|
|
5349
|
+
* Updates the upload progress for one or more files.
|
|
5350
|
+
*/
|
|
5351
|
+
// readonly updateUploadProgress = this.updater((state, uploadProgress: ArrayOrValue<DbxFirebaseStorageFileUploadStoreFileProgress>) => updateUploadStorageFileStoreStateWithUploadProgress(state, uploadProgress));
|
|
5352
|
+
/**
|
|
5353
|
+
* Sets the upload result.
|
|
5354
|
+
*/
|
|
5355
|
+
setUploadResult = this.updater((state, uploadResult) => ({ ...state, isUploadHandlerWorking: false, uploadProgress: undefined, uploadResult }));
|
|
5356
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5357
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadStore });
|
|
5358
|
+
}
|
|
5359
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadStore, decorators: [{
|
|
5360
|
+
type: Injectable
|
|
5361
|
+
}], ctorParameters: () => [] });
|
|
5362
|
+
|
|
5363
|
+
/**
|
|
5364
|
+
* Default implementation of StorageFileUploadHandler.
|
|
5365
|
+
*/
|
|
5366
|
+
function storageFileUploadHandler(config) {
|
|
5367
|
+
const { storageService, storageFileUploadConfigFactory } = config;
|
|
5368
|
+
let resumable;
|
|
5369
|
+
return {
|
|
5370
|
+
uploadFile: async (file) => {
|
|
5371
|
+
const storageFileUploadConfig = await storageFileUploadConfigFactory(file);
|
|
5372
|
+
const { storagePath } = storageFileUploadConfig;
|
|
5373
|
+
const storageAccessorFile = storageService.file(storagePath);
|
|
5374
|
+
const upload = new Observable((x) => {
|
|
5375
|
+
if (storageAccessorFile.uploadResumable) {
|
|
5376
|
+
resumable = storageAccessorFile.uploadResumable(file);
|
|
5377
|
+
// subscribe to the event by piping this observable to it
|
|
5378
|
+
resumable
|
|
5379
|
+
.streamSnapshotEvents()
|
|
5380
|
+
.pipe(map((x) => {
|
|
5381
|
+
const { bytesTransferred, totalBytes } = x;
|
|
5382
|
+
const progress = {
|
|
5383
|
+
file,
|
|
5384
|
+
fileRef: storageAccessorFile,
|
|
5385
|
+
uploadRef: resumable,
|
|
5386
|
+
bytesTransferred,
|
|
5387
|
+
totalBytes,
|
|
5388
|
+
progress: bytesTransferred / totalBytes
|
|
5389
|
+
};
|
|
5390
|
+
return progress;
|
|
5391
|
+
}))
|
|
5392
|
+
.pipe(catchError((error) => {
|
|
5393
|
+
// if an error occurs, catch it and emit it as a progress
|
|
5394
|
+
const progress = {
|
|
5395
|
+
file,
|
|
5396
|
+
fileRef: storageAccessorFile,
|
|
5397
|
+
uploadRef: resumable,
|
|
5398
|
+
error,
|
|
5399
|
+
failed: true
|
|
5400
|
+
};
|
|
5401
|
+
return of(progress);
|
|
5402
|
+
}))
|
|
5403
|
+
.subscribe(x);
|
|
5404
|
+
}
|
|
5405
|
+
else {
|
|
5406
|
+
throw new Error('uploadResumable() function was unavailable.');
|
|
5407
|
+
}
|
|
5408
|
+
}).pipe(shareReplay(1));
|
|
5409
|
+
const instance = {
|
|
5410
|
+
upload,
|
|
5411
|
+
taskRef: storageAccessorFile,
|
|
5412
|
+
pause: () => resumable?.pause() ?? false,
|
|
5413
|
+
resume: () => resumable?.resume() ?? false,
|
|
5414
|
+
cancel: () => resumable?.cancel() ?? false
|
|
5415
|
+
};
|
|
5416
|
+
return instance;
|
|
5417
|
+
}
|
|
5418
|
+
};
|
|
5419
|
+
}
|
|
5420
|
+
/**
|
|
5421
|
+
* Uploads files using the provided upload handler and files.
|
|
5422
|
+
*
|
|
5423
|
+
* An observable is returned that emits the latest file events from any file that is being uploaded.
|
|
5424
|
+
*
|
|
5425
|
+
* @param input
|
|
5426
|
+
* @returns
|
|
5427
|
+
*/
|
|
5428
|
+
function storageFileUploadFiles(input) {
|
|
5429
|
+
const { uploadHandler, files, maxParallelUploads: inputMaxParallelUploads } = input;
|
|
5430
|
+
const maxParallelTasks = inputMaxParallelUploads ?? 3;
|
|
5431
|
+
const multiUploadsSubscriptionObject = new MultiSubscriptionObject();
|
|
5432
|
+
// begin the upload for each file
|
|
5433
|
+
const allFiles = Array.from(files);
|
|
5434
|
+
// unsubscribe from all previous uploads
|
|
5435
|
+
multiUploadsSubscriptionObject.unsub();
|
|
5436
|
+
const allFilesAndLatestProgress = new Array(allFiles.length);
|
|
5437
|
+
const allFilesAndDetails = allFiles.map((file) => ({ file }));
|
|
5438
|
+
const overallProgressPerCompletedFile = (1 / allFilesAndLatestProgress.length);
|
|
5439
|
+
/**
|
|
5440
|
+
* Once set, any new file upload task that hits this will return an cancel failure.
|
|
5441
|
+
*/
|
|
5442
|
+
let flaggedCancel = false;
|
|
5443
|
+
const cancel = () => {
|
|
5444
|
+
flaggedCancel = true;
|
|
5445
|
+
};
|
|
5446
|
+
const upload = new Observable((subscriber) => {
|
|
5447
|
+
const overallStartTime = new Date();
|
|
5448
|
+
const incompleteFileFileIndexes = new Set(allFiles.map((_, index) => index));
|
|
5449
|
+
const activeFileIndexes = new Set();
|
|
5450
|
+
const doneFileIndexes = new Set();
|
|
5451
|
+
let latestOverallProgress = 0;
|
|
5452
|
+
function onStartFileUpload(index, uploadInstance) {
|
|
5453
|
+
activeFileIndexes.add(index);
|
|
5454
|
+
allFilesAndDetails[index].startTime = new Date();
|
|
5455
|
+
allFilesAndDetails[index].uploadInstance = uploadInstance;
|
|
5456
|
+
allFilesAndDetails[index].fileRef = uploadInstance.taskRef;
|
|
5457
|
+
}
|
|
5458
|
+
function onStartFileUploadFlaggedCancelled(index) {
|
|
5459
|
+
allFilesAndDetails[index].startTime = new Date();
|
|
5460
|
+
// immediately mark it done
|
|
5461
|
+
_markFileUploadDone(index, true);
|
|
5462
|
+
// emit new progress event
|
|
5463
|
+
_emitEvent();
|
|
5464
|
+
}
|
|
5465
|
+
function _markFileUploadDone(fileIndex, error) {
|
|
5466
|
+
doneFileIndexes.add(fileIndex); // add to done file indexes
|
|
5467
|
+
activeFileIndexes.delete(fileIndex); // remove from active file indexes if it exists
|
|
5468
|
+
incompleteFileFileIndexes.delete(fileIndex); // remove from incomplete file indexes
|
|
5469
|
+
// update details
|
|
5470
|
+
allFilesAndDetails[fileIndex].endTime = new Date();
|
|
5471
|
+
allFilesAndDetails[fileIndex].success = !error;
|
|
5472
|
+
allFilesAndDetails[fileIndex].error = error;
|
|
5473
|
+
}
|
|
5474
|
+
function updateUploadProgress(input) {
|
|
5475
|
+
const { index: fileIndex, nextProgress, fileUploadTaskDone, error } = input;
|
|
5476
|
+
let nextOverallProgress = latestOverallProgress;
|
|
5477
|
+
const nextProgressPercent = fileUploadTaskDone ? 100 : (nextProgress?.progress ?? 0) * 100;
|
|
5478
|
+
// update the overall progress percentage
|
|
5479
|
+
if (nextProgressPercent) {
|
|
5480
|
+
// update the overall percentage
|
|
5481
|
+
const previousProgress = allFilesAndLatestProgress[fileIndex];
|
|
5482
|
+
const previousProgressPercent = previousProgress?.progress != null ? previousProgress.progress * 100 : 0;
|
|
5483
|
+
const progressPercentChange = nextProgressPercent - previousProgressPercent;
|
|
5484
|
+
// increase overall progress by the change
|
|
5485
|
+
nextOverallProgress += progressPercentChange * overallProgressPerCompletedFile;
|
|
5486
|
+
}
|
|
5487
|
+
// update the file progress
|
|
5488
|
+
if (nextProgress) {
|
|
5489
|
+
// update the latest FileProgress
|
|
5490
|
+
allFilesAndLatestProgress[fileIndex] = nextProgress;
|
|
5491
|
+
// only set fileRef once
|
|
5492
|
+
if (!allFilesAndDetails[fileIndex].fileRef) {
|
|
5493
|
+
allFilesAndDetails[fileIndex].fileRef = nextProgress.fileRef;
|
|
5494
|
+
}
|
|
5495
|
+
}
|
|
5496
|
+
// if complete, update the indexes and details
|
|
5497
|
+
if (fileUploadTaskDone) {
|
|
5498
|
+
_markFileUploadDone(fileIndex, error);
|
|
5499
|
+
}
|
|
5500
|
+
// update the overall progress
|
|
5501
|
+
latestOverallProgress = nextOverallProgress;
|
|
5502
|
+
// emit the event to send it
|
|
5503
|
+
_emitEvent(nextProgress);
|
|
5504
|
+
}
|
|
5505
|
+
function _emitEvent(nextProgress) {
|
|
5506
|
+
const isComplete = incompleteFileFileIndexes.size === 0;
|
|
5507
|
+
let overallProgress = latestOverallProgress;
|
|
5508
|
+
let result = undefined;
|
|
5509
|
+
if (isComplete) {
|
|
5510
|
+
overallProgress = 100; // set to 100%
|
|
5511
|
+
const overallEndTime = new Date();
|
|
5512
|
+
const fileResults = allFiles.map((file, index) => {
|
|
5513
|
+
const result = {
|
|
5514
|
+
startTime: allFilesAndDetails[index].startTime,
|
|
5515
|
+
endTime: allFilesAndDetails[index].endTime,
|
|
5516
|
+
file,
|
|
5517
|
+
fileRef: allFilesAndDetails[index].fileRef,
|
|
5518
|
+
success: !allFilesAndDetails[index].error,
|
|
5519
|
+
error: allFilesAndDetails[index].error
|
|
5520
|
+
};
|
|
5521
|
+
return result;
|
|
5522
|
+
});
|
|
5523
|
+
const { included: successFileResults, excluded: errorFileResults } = separateValues(fileResults, (x) => x.success);
|
|
5524
|
+
// all are done, set the result on the next event
|
|
5525
|
+
result = {
|
|
5526
|
+
startTime: overallStartTime,
|
|
5527
|
+
endTime: overallEndTime,
|
|
5528
|
+
successFileResults,
|
|
5529
|
+
errorFileResults,
|
|
5530
|
+
fileResults
|
|
5531
|
+
};
|
|
5532
|
+
}
|
|
5533
|
+
const nextEvent = {
|
|
5534
|
+
allFiles,
|
|
5535
|
+
isComplete,
|
|
5536
|
+
overallProgress,
|
|
5537
|
+
uploadProgress: nextProgress,
|
|
5538
|
+
incompleteFileCount: incompleteFileFileIndexes.size,
|
|
5539
|
+
activeFileCount: activeFileIndexes.size,
|
|
5540
|
+
doneFileCount: doneFileIndexes.size,
|
|
5541
|
+
result
|
|
5542
|
+
};
|
|
5543
|
+
subscriber.next(nextEvent);
|
|
5544
|
+
}
|
|
5545
|
+
async function runUploadTaskForFile([file, index]) {
|
|
5546
|
+
if (flaggedCancel) {
|
|
5547
|
+
onStartFileUploadFlaggedCancelled(index);
|
|
5548
|
+
return Promise.resolve();
|
|
5549
|
+
}
|
|
5550
|
+
return new Promise((resolve) => {
|
|
5551
|
+
const updateFileUploadProgress = (nextProgress) => {
|
|
5552
|
+
// update the progress
|
|
5553
|
+
updateUploadProgress({
|
|
5554
|
+
index,
|
|
5555
|
+
nextProgress
|
|
5556
|
+
});
|
|
5557
|
+
};
|
|
5558
|
+
const updateFileUploadProgressWithUncaughtError = (error) => {
|
|
5559
|
+
// error occurred, update the progress with the error
|
|
5560
|
+
updateUploadProgress({
|
|
5561
|
+
index,
|
|
5562
|
+
error,
|
|
5563
|
+
fileUploadTaskDone: true
|
|
5564
|
+
});
|
|
5565
|
+
// always resolve, never reject
|
|
5566
|
+
resolve();
|
|
5567
|
+
};
|
|
5568
|
+
const completeFileUploadProgress = () => {
|
|
5569
|
+
updateUploadProgress({
|
|
5570
|
+
index,
|
|
5571
|
+
fileUploadTaskDone: true
|
|
5572
|
+
});
|
|
5573
|
+
resolve();
|
|
5574
|
+
};
|
|
5575
|
+
// upload the file, subscribe to the progress
|
|
5576
|
+
try {
|
|
5577
|
+
uploadHandler
|
|
5578
|
+
.uploadFile(file)
|
|
5579
|
+
.then((uploadInstance) => {
|
|
5580
|
+
// add to active file indexes
|
|
5581
|
+
onStartFileUpload(index, uploadInstance);
|
|
5582
|
+
const uploadSubscription = uploadInstance.upload.subscribe({
|
|
5583
|
+
next: updateFileUploadProgress,
|
|
5584
|
+
error: updateFileUploadProgressWithUncaughtError,
|
|
5585
|
+
complete: completeFileUploadProgress
|
|
5586
|
+
});
|
|
5587
|
+
multiUploadsSubscriptionObject.addSubs(uploadSubscription);
|
|
5588
|
+
})
|
|
5589
|
+
.catch(updateFileUploadProgressWithUncaughtError);
|
|
5590
|
+
}
|
|
5591
|
+
catch (error) {
|
|
5592
|
+
updateFileUploadProgressWithUncaughtError(error);
|
|
5593
|
+
}
|
|
5594
|
+
});
|
|
5595
|
+
}
|
|
5596
|
+
// run upload task for each file
|
|
5597
|
+
const fileTuples = allFiles.map((file, index) => [file, index]);
|
|
5598
|
+
runAsyncTasksForValues(fileTuples, runUploadTaskForFile, {
|
|
5599
|
+
maxParallelTasks,
|
|
5600
|
+
retriesAllowed: 0 // no retries allowed
|
|
5601
|
+
}).then(() => {
|
|
5602
|
+
// all tasks are finished. Complete the subscriber.
|
|
5603
|
+
console.log('complete');
|
|
5604
|
+
subscriber.complete();
|
|
5605
|
+
});
|
|
5606
|
+
}).pipe(shareReplay(1));
|
|
5607
|
+
const instance = {
|
|
5608
|
+
cancel,
|
|
5609
|
+
upload
|
|
5610
|
+
};
|
|
5611
|
+
return instance;
|
|
5612
|
+
}
|
|
5613
|
+
|
|
5614
|
+
/**
|
|
5615
|
+
* Error that is thrown when a single file fails to upload.
|
|
5616
|
+
*/
|
|
5617
|
+
class StorageFileUploadFilesError extends BaseError {
|
|
5618
|
+
result;
|
|
5619
|
+
constructor(result) {
|
|
5620
|
+
super('Failed to upload all files.');
|
|
5621
|
+
this.result = result;
|
|
5622
|
+
}
|
|
5623
|
+
}
|
|
5624
|
+
|
|
5625
|
+
/**
|
|
5626
|
+
* Connects a DbxFirebaseStorageFileUploadStore to a DbxActionContext, and handles the upload action.
|
|
5627
|
+
*/
|
|
5628
|
+
class DbxFirebaseStorageFileUploadActionHandlerDirective {
|
|
5629
|
+
_triggerSub = new SubscriptionObject();
|
|
5630
|
+
_readySub = new SubscriptionObject();
|
|
5631
|
+
_isWorkingSub = new SubscriptionObject();
|
|
5632
|
+
_progressSub = new SubscriptionObject();
|
|
5633
|
+
source = inject((DbxActionContextStoreSourceInstance));
|
|
5634
|
+
uploadStore = inject(DbxFirebaseStorageFileUploadStore);
|
|
5635
|
+
_dbxActionHandlerInstance = new DbxActionHandlerInstance(this.source);
|
|
5636
|
+
/**
|
|
5637
|
+
* If true, the action will be triggered when files are set.
|
|
5638
|
+
*
|
|
5639
|
+
* Defaults to false.
|
|
5640
|
+
*/
|
|
5641
|
+
triggerOnFiles = input(false);
|
|
5642
|
+
triggerOnFiles$ = toObservable(this.triggerOnFiles);
|
|
5643
|
+
/**
|
|
5644
|
+
* Uploading of all/any files should be cancelled if any file fails to upload.
|
|
5645
|
+
*
|
|
5646
|
+
* Any file that was successfully uploaded will not be reverted.
|
|
5647
|
+
*
|
|
5648
|
+
* Defaults to false.
|
|
5649
|
+
*/
|
|
5650
|
+
cancelUploadsOnUploadError = input(false);
|
|
5651
|
+
/**
|
|
5652
|
+
* The upload should fail if any file fails to upload, rather than if all files fail to upload.
|
|
5653
|
+
*
|
|
5654
|
+
* Defaults to false.
|
|
5655
|
+
*/
|
|
5656
|
+
actionFailureOnUploadError = input(false);
|
|
5657
|
+
uploadHandler = input.required({ alias: 'dbxFirebaseStorageFileUploadActionHandler' });
|
|
5658
|
+
_uploadHandlerEffect = effect(() => {
|
|
5659
|
+
const uploadHandler = this.uploadHandler();
|
|
5660
|
+
let handlerFunction;
|
|
5661
|
+
if (uploadHandler) {
|
|
5662
|
+
handlerFunction = (files, context) => {
|
|
5663
|
+
const { upload, cancel } = storageFileUploadFiles({
|
|
5664
|
+
files,
|
|
5665
|
+
uploadHandler
|
|
5666
|
+
});
|
|
5667
|
+
const loadingStateObs = upload.pipe(tap((x) => {
|
|
5668
|
+
this.uploadStore.setLatestProgressEvent(x);
|
|
5669
|
+
}), filter((x) => x.isComplete), tap((x) => {
|
|
5670
|
+
this.uploadStore.setUploadResult(x.result);
|
|
5671
|
+
}), map((x) => {
|
|
5672
|
+
const result = x.result;
|
|
5673
|
+
const { successFileResults, errorFileResults } = result;
|
|
5674
|
+
const actionFailureOnUploadError = this.actionFailureOnUploadError();
|
|
5675
|
+
let finalLoadingState;
|
|
5676
|
+
if ((errorFileResults.length > 0 && actionFailureOnUploadError) || (successFileResults.length === 0 && errorFileResults.length > 0)) {
|
|
5677
|
+
finalLoadingState = errorResult(new StorageFileUploadFilesError(result));
|
|
5678
|
+
}
|
|
5679
|
+
else {
|
|
5680
|
+
finalLoadingState = successResult(x.result);
|
|
5681
|
+
}
|
|
5682
|
+
return finalLoadingState;
|
|
5683
|
+
}), startWithBeginLoading());
|
|
5684
|
+
context.startWorkingWithLoadingStateObservable(loadingStateObs);
|
|
5685
|
+
};
|
|
5686
|
+
}
|
|
5687
|
+
else {
|
|
5688
|
+
handlerFunction = undefined;
|
|
5689
|
+
}
|
|
5690
|
+
this._dbxActionHandlerInstance.setHandlerFunction(handlerFunction);
|
|
5691
|
+
});
|
|
5692
|
+
files$ = this.uploadStore.files$;
|
|
5693
|
+
uploadHandler$ = toObservable(this.uploadHandler);
|
|
5694
|
+
ngOnInit() {
|
|
5695
|
+
this._dbxActionHandlerInstance.init();
|
|
5696
|
+
// trigger the action if files are available
|
|
5697
|
+
this._triggerSub.subscription = this.triggerOnFiles$
|
|
5698
|
+
.pipe(switchMap((triggerOnFiles) => {
|
|
5699
|
+
if (triggerOnFiles) {
|
|
5700
|
+
return this.files$.pipe(map((x) => x?.length));
|
|
5701
|
+
}
|
|
5702
|
+
else {
|
|
5703
|
+
return of(false);
|
|
5704
|
+
}
|
|
5705
|
+
}))
|
|
5706
|
+
.subscribe((canTrigger) => {
|
|
5707
|
+
if (canTrigger) {
|
|
5708
|
+
this.source.trigger();
|
|
5709
|
+
}
|
|
5710
|
+
});
|
|
5711
|
+
// ready the source with files after trigger is called and files are available
|
|
5712
|
+
this._readySub.subscription = this.files$.pipe(switchMap((files) => this.source.triggered$.pipe(map(() => files)))).subscribe((files) => {
|
|
5713
|
+
this.source.readyValue(files);
|
|
5714
|
+
});
|
|
5715
|
+
// sync isWorking
|
|
5716
|
+
this._isWorkingSub.subscription = this.uploadStore.setIsUploadHandlerWorking(this.source.isWorking$);
|
|
5717
|
+
// sync progress amount
|
|
5718
|
+
this._progressSub.subscription = this.source.setWorkProgress(this.uploadStore.latestProgressEvent$.pipe(throttleTime(100, undefined, { leading: true, trailing: true }), map((x) => x?.overallProgress), distinctUntilChanged()));
|
|
5719
|
+
}
|
|
5720
|
+
ngOnDestroy() {
|
|
5721
|
+
this._dbxActionHandlerInstance.destroy();
|
|
5722
|
+
}
|
|
5723
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadActionHandlerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5724
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", 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 });
|
|
5725
|
+
}
|
|
5726
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadActionHandlerDirective, decorators: [{
|
|
5727
|
+
type: Directive,
|
|
5728
|
+
args: [{
|
|
5729
|
+
selector: '[dbxFirebaseStorageFileUploadActionHandler]',
|
|
5730
|
+
standalone: true
|
|
5731
|
+
}]
|
|
5732
|
+
}] });
|
|
5733
|
+
|
|
5734
|
+
class StorageFileCollectionStore extends AbstractDbxFirebaseCollectionStore {
|
|
5735
|
+
storageFileFunctions = inject(StorageFileFunctions);
|
|
5736
|
+
constructor(collections) {
|
|
5737
|
+
super({ firestoreCollection: collections.storageFileCollection });
|
|
5738
|
+
}
|
|
5739
|
+
initializeAllStorageFilesFromUpload = firebaseCollectionStoreCreateFunction(this, this.storageFileFunctions.storageFile.createStorageFile.allFromUpload);
|
|
5740
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageFileCollectionStore, deps: [{ token: i1$4.StorageFileFirestoreCollections }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5741
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageFileCollectionStore });
|
|
5742
|
+
}
|
|
5743
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageFileCollectionStore, decorators: [{
|
|
5744
|
+
type: Injectable
|
|
5745
|
+
}], ctorParameters: () => [{ type: i1$4.StorageFileFirestoreCollections }] });
|
|
5746
|
+
|
|
5747
|
+
class DbxFirebaseStorageFileCollectionStoreDirective extends DbxFirebaseCollectionStoreDirective {
|
|
5748
|
+
constructor(store) {
|
|
5749
|
+
super(store);
|
|
5750
|
+
this.setConstraints([]);
|
|
5751
|
+
}
|
|
5752
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileCollectionStoreDirective, deps: [{ token: StorageFileCollectionStore }], target: i0.ɵɵFactoryTarget.Directive });
|
|
5753
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxFirebaseStorageFileCollectionStoreDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileCollection]", providers: provideDbxFirebaseCollectionStoreDirective(DbxFirebaseStorageFileCollectionStoreDirective, StorageFileCollectionStore), usesInheritance: true, ngImport: i0 });
|
|
5754
|
+
}
|
|
5755
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileCollectionStoreDirective, decorators: [{
|
|
5756
|
+
type: Directive,
|
|
5757
|
+
args: [{
|
|
5758
|
+
selector: '[dbxFirebaseStorageFileCollection]',
|
|
5759
|
+
providers: provideDbxFirebaseCollectionStoreDirective(DbxFirebaseStorageFileCollectionStoreDirective, StorageFileCollectionStore),
|
|
5760
|
+
standalone: true
|
|
5761
|
+
}]
|
|
5762
|
+
}], ctorParameters: () => [{ type: StorageFileCollectionStore }] });
|
|
5763
|
+
|
|
5764
|
+
class StorageFileDocumentStore extends AbstractDbxFirebaseDocumentStore {
|
|
5765
|
+
storageFileFunctions = inject(StorageFileFunctions);
|
|
5766
|
+
constructor() {
|
|
5767
|
+
super({ firestoreCollection: inject(StorageFileFirestoreCollections).storageFileCollection });
|
|
5768
|
+
}
|
|
5769
|
+
createStorageFileFromUpload = firebaseDocumentStoreCreateFunction(this, this.storageFileFunctions.storageFile.createStorageFile.create);
|
|
5770
|
+
initializeStorageFileFromUpload = firebaseDocumentStoreCreateFunction(this, this.storageFileFunctions.storageFile.createStorageFile.fromUpload);
|
|
5771
|
+
initializeAllStorageFilesFromUpload = firebaseDocumentStoreCrudFunction(this.storageFileFunctions.storageFile.createStorageFile.allFromUpload);
|
|
5772
|
+
updateStorageFile = firebaseDocumentStoreUpdateFunction(this, this.storageFileFunctions.storageFile.updateStorageFile.update);
|
|
5773
|
+
processStorageFile = firebaseDocumentStoreUpdateFunction(this, this.storageFileFunctions.storageFile.updateStorageFile.process);
|
|
5774
|
+
deleteStorageFile = firebaseDocumentStoreDeleteFunction(this, this.storageFileFunctions.storageFile.deleteStorageFile.delete);
|
|
5775
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageFileDocumentStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5776
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageFileDocumentStore });
|
|
5777
|
+
}
|
|
5778
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageFileDocumentStore, decorators: [{
|
|
5779
|
+
type: Injectable
|
|
5780
|
+
}], ctorParameters: () => [] });
|
|
5781
|
+
|
|
5782
|
+
class DbxFirebaseStorageFileDocumentStoreDirective extends DbxFirebaseDocumentStoreDirective {
|
|
5783
|
+
constructor(store) {
|
|
5784
|
+
super(store);
|
|
5785
|
+
}
|
|
5786
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileDocumentStoreDirective, deps: [{ token: StorageFileDocumentStore }], target: i0.ɵɵFactoryTarget.Directive });
|
|
5787
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxFirebaseStorageFileDocumentStoreDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileDocument]", providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseStorageFileDocumentStoreDirective, StorageFileDocumentStore), usesInheritance: true, ngImport: i0 });
|
|
5788
|
+
}
|
|
5789
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileDocumentStoreDirective, decorators: [{
|
|
5790
|
+
type: Directive,
|
|
5791
|
+
args: [{
|
|
5792
|
+
selector: '[dbxFirebaseStorageFileDocument]',
|
|
5793
|
+
providers: provideDbxFirebaseDocumentStoreDirective(DbxFirebaseStorageFileDocumentStoreDirective, StorageFileDocumentStore),
|
|
5794
|
+
standalone: true
|
|
5795
|
+
}]
|
|
5796
|
+
}], ctorParameters: () => [{ type: StorageFileDocumentStore }] });
|
|
5797
|
+
|
|
5798
|
+
/**
|
|
5799
|
+
* Directive that passes the upload result to a StorageFileDocumentStore to initialize the document immediately.
|
|
5800
|
+
*/
|
|
5801
|
+
class DbxFirebaseStorageFileUploadInitializeDocumentDirective extends AbstractSubscriptionDirective {
|
|
5802
|
+
uploadStore = inject(DbxFirebaseStorageFileUploadStore);
|
|
5803
|
+
storageFileDocumentStore = inject(StorageFileDocumentStore);
|
|
5804
|
+
constructor() {
|
|
5805
|
+
super();
|
|
5806
|
+
this.sub = this.uploadStore.uploadResult$.subscribe(async (result) => {
|
|
5807
|
+
const successFileResult = result.successFileResults.find((x) => x.fileRef != null);
|
|
5808
|
+
if (successFileResult) {
|
|
5809
|
+
const fileRef = successFileResult.fileRef;
|
|
5810
|
+
if (fileRef) {
|
|
5811
|
+
this.storageFileDocumentStore
|
|
5812
|
+
.initializeStorageFileFromUpload({
|
|
5813
|
+
pathString: fileRef.storagePath.pathString,
|
|
5814
|
+
bucketId: fileRef.storagePath.bucketId
|
|
5815
|
+
})
|
|
5816
|
+
.subscribe();
|
|
5817
|
+
}
|
|
5818
|
+
}
|
|
5819
|
+
});
|
|
5820
|
+
}
|
|
5821
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadInitializeDocumentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5822
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxFirebaseStorageFileUploadInitializeDocumentDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileUploadInitializeDocument]", exportAs: ["dbxFirebaseStorageFileUploadInitializeDocument"], usesInheritance: true, ngImport: i0 });
|
|
5823
|
+
}
|
|
5824
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadInitializeDocumentDirective, decorators: [{
|
|
5825
|
+
type: Directive,
|
|
5826
|
+
args: [{
|
|
5827
|
+
selector: '[dbxFirebaseStorageFileUploadInitializeDocument]',
|
|
5828
|
+
exportAs: 'dbxFirebaseStorageFileUploadInitializeDocument',
|
|
5829
|
+
standalone: true
|
|
5830
|
+
}]
|
|
5831
|
+
}], ctorParameters: () => [] });
|
|
5832
|
+
|
|
5833
|
+
/**
|
|
5834
|
+
* Directive that provides a DbxFirebaseStorageFileUploadStore, and sync's the inputs to the store.
|
|
5835
|
+
*/
|
|
5836
|
+
class DbxFirebaseStorageFileUploadStoreDirective {
|
|
5837
|
+
_allowedSub = new SubscriptionObject();
|
|
5838
|
+
_multiSub = new SubscriptionObject();
|
|
5839
|
+
uploadStore = inject(DbxFirebaseStorageFileUploadStore);
|
|
5840
|
+
multipleUpload = input();
|
|
5841
|
+
fileTypesAccepted = input();
|
|
5842
|
+
fileTypesAccepted$ = toObservable(this.fileTypesAccepted).pipe(skipAllInitialMaybe(), shareReplay(1));
|
|
5843
|
+
isMultiUploadAllowed$ = toObservable(this.multipleUpload).pipe(skipAllInitialMaybe(), shareReplay(1));
|
|
5844
|
+
constructor() {
|
|
5845
|
+
this._allowedSub.subscription = this.fileTypesAccepted$.subscribe((x) => this.uploadStore.setFileTypesAccepted(x));
|
|
5846
|
+
this._multiSub.subscription = this.isMultiUploadAllowed$.subscribe((x) => this.uploadStore.setIsMultiUploadAllowed(x));
|
|
5847
|
+
}
|
|
5848
|
+
ngOnDestroy() {
|
|
5849
|
+
this._allowedSub.destroy();
|
|
5850
|
+
this._multiSub.destroy();
|
|
5851
|
+
}
|
|
5852
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5853
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", 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 });
|
|
5854
|
+
}
|
|
5855
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadStoreDirective, decorators: [{
|
|
5856
|
+
type: Directive,
|
|
5857
|
+
args: [{
|
|
5858
|
+
selector: '[dbxFirebaseStorageFileUploadStore]',
|
|
5859
|
+
exportAs: 'dbxFirebaseStorageFileUploadStore',
|
|
5860
|
+
providers: [DbxFirebaseStorageFileUploadStore],
|
|
5861
|
+
standalone: true
|
|
5862
|
+
}]
|
|
5863
|
+
}], ctorParameters: () => [] });
|
|
5864
|
+
|
|
5865
|
+
/**
|
|
5866
|
+
* Directive that syncs a DbxFirebaseStorageFileUploadStore's configuration to a DbxFileUploadComponent.
|
|
5867
|
+
*/
|
|
5868
|
+
class DbxFirebaseStorageFileUploadSyncDirective {
|
|
5869
|
+
_allowedSub = new SubscriptionObject();
|
|
5870
|
+
_multiSub = new SubscriptionObject();
|
|
5871
|
+
_filesSub = new SubscriptionObject();
|
|
5872
|
+
uploadStore = inject(DbxFirebaseStorageFileUploadStore);
|
|
5873
|
+
uploadComponent = inject(DbxFileUploadComponent);
|
|
5874
|
+
constructor() {
|
|
5875
|
+
this._allowedSub.subscription = this.uploadStore.fileTypesAllowed$.subscribe((x) => this.uploadComponent.setAccept(x));
|
|
5876
|
+
this._multiSub.subscription = this.uploadStore.isMultiUploadAllowed$.subscribe((x) => this.uploadComponent.setMultiple(x));
|
|
5877
|
+
this._filesSub.subscription = this.uploadComponent.filesChanged.subscribe((files) => this.uploadStore.setFiles(files.matchResult.accepted));
|
|
5878
|
+
}
|
|
5879
|
+
ngOnDestroy() {
|
|
5880
|
+
this._allowedSub.destroy();
|
|
5881
|
+
this._multiSub.destroy();
|
|
5882
|
+
this._filesSub.destroy();
|
|
5883
|
+
}
|
|
5884
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadSyncDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5885
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxFirebaseStorageFileUploadSyncDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileUploadSync]", exportAs: ["dbxFirebaseStorageFileUploadSync"], ngImport: i0 });
|
|
5886
|
+
}
|
|
5887
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadSyncDirective, decorators: [{
|
|
5888
|
+
type: Directive,
|
|
5889
|
+
args: [{
|
|
5890
|
+
selector: '[dbxFirebaseStorageFileUploadSync]',
|
|
5891
|
+
exportAs: 'dbxFirebaseStorageFileUploadSync',
|
|
5892
|
+
standalone: true
|
|
5893
|
+
}]
|
|
5894
|
+
}], ctorParameters: () => [] });
|
|
5895
|
+
|
|
5896
|
+
const importsAndExports$1 = [
|
|
5897
|
+
// dbx-core/dbx-web modules/components
|
|
5898
|
+
DbxActionModule,
|
|
5899
|
+
DbxLoadingComponent,
|
|
5900
|
+
DbxActionLoadingContextDirective,
|
|
5901
|
+
DbxActionSnackbarErrorDirective,
|
|
5902
|
+
DbxFileUploadComponent,
|
|
5903
|
+
DbxFileUploadActionSyncDirective,
|
|
5904
|
+
// containers
|
|
5905
|
+
DbxFirebaseStorageFileUploadActionHandlerDirective,
|
|
5906
|
+
DbxFirebaseStorageFileUploadStoreDirective,
|
|
5907
|
+
DbxFirebaseStorageFileUploadSyncDirective,
|
|
5908
|
+
DbxFirebaseStorageFileUploadInitializeDocumentDirective,
|
|
5909
|
+
// stores
|
|
5910
|
+
DbxFirebaseStorageFileCollectionStoreDirective,
|
|
5911
|
+
DbxFirebaseStorageFileDocumentStoreDirective
|
|
5912
|
+
];
|
|
5913
|
+
/**
|
|
5914
|
+
* Convenience module for importing various modules/components that are relevant to the storage file upload feature.
|
|
5915
|
+
*
|
|
5916
|
+
* - DbxActionModule
|
|
5917
|
+
* - DbxFileUploadComponent
|
|
5918
|
+
* - DbxFirebaseStorageFileUploadActionHandlerDirective
|
|
5919
|
+
* - DbxFirebaseStorageFileUploadStoreDirective
|
|
5920
|
+
* - DbxFirebaseStorageFileUploadSyncDirective
|
|
5921
|
+
* - DbxFirebaseStorageFileUploadInitializeDocumentDirective
|
|
5922
|
+
* - DbxFirebaseStorageFileUploadStore
|
|
5923
|
+
*/
|
|
5924
|
+
class DbxFirebaseStorageFileUploadModule {
|
|
5925
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
5926
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadModule, imports: [
|
|
5927
|
+
// dbx-core/dbx-web modules/components
|
|
5928
|
+
DbxActionModule,
|
|
5929
|
+
DbxLoadingComponent,
|
|
5930
|
+
DbxActionLoadingContextDirective,
|
|
5931
|
+
DbxActionSnackbarErrorDirective,
|
|
5932
|
+
DbxFileUploadComponent,
|
|
5933
|
+
DbxFileUploadActionSyncDirective,
|
|
5934
|
+
// containers
|
|
5935
|
+
DbxFirebaseStorageFileUploadActionHandlerDirective,
|
|
5936
|
+
DbxFirebaseStorageFileUploadStoreDirective,
|
|
5937
|
+
DbxFirebaseStorageFileUploadSyncDirective,
|
|
5938
|
+
DbxFirebaseStorageFileUploadInitializeDocumentDirective,
|
|
5939
|
+
// stores
|
|
5940
|
+
DbxFirebaseStorageFileCollectionStoreDirective,
|
|
5941
|
+
DbxFirebaseStorageFileDocumentStoreDirective], exports: [
|
|
5942
|
+
// dbx-core/dbx-web modules/components
|
|
5943
|
+
DbxActionModule,
|
|
5944
|
+
DbxLoadingComponent,
|
|
5945
|
+
DbxActionLoadingContextDirective,
|
|
5946
|
+
DbxActionSnackbarErrorDirective,
|
|
5947
|
+
DbxFileUploadComponent,
|
|
5948
|
+
DbxFileUploadActionSyncDirective,
|
|
5949
|
+
// containers
|
|
5950
|
+
DbxFirebaseStorageFileUploadActionHandlerDirective,
|
|
5951
|
+
DbxFirebaseStorageFileUploadStoreDirective,
|
|
5952
|
+
DbxFirebaseStorageFileUploadSyncDirective,
|
|
5953
|
+
DbxFirebaseStorageFileUploadInitializeDocumentDirective,
|
|
5954
|
+
// stores
|
|
5955
|
+
DbxFirebaseStorageFileCollectionStoreDirective,
|
|
5956
|
+
DbxFirebaseStorageFileDocumentStoreDirective] });
|
|
5957
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadModule, imports: [
|
|
5958
|
+
// dbx-core/dbx-web modules/components
|
|
5959
|
+
DbxActionModule,
|
|
5960
|
+
DbxLoadingComponent,
|
|
5961
|
+
DbxFileUploadComponent,
|
|
5962
|
+
// dbx-core/dbx-web modules/components
|
|
5963
|
+
DbxActionModule] });
|
|
5964
|
+
}
|
|
5965
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadModule, decorators: [{
|
|
5966
|
+
type: NgModule,
|
|
5967
|
+
args: [{
|
|
5968
|
+
imports: importsAndExports$1,
|
|
5969
|
+
exports: importsAndExports$1
|
|
5970
|
+
}]
|
|
5971
|
+
}] });
|
|
5972
|
+
|
|
5170
5973
|
class FlatFirestoreModelKeyPipe {
|
|
5171
5974
|
transform(input) {
|
|
5172
5975
|
if (input != null) {
|
|
@@ -5354,7 +6157,7 @@ function providedDbxFirebaseStorage(config) {
|
|
|
5354
6157
|
}
|
|
5355
6158
|
|
|
5356
6159
|
/**
|
|
5357
|
-
* @deprecated use
|
|
6160
|
+
* @deprecated use providedDbxFirebaseStorage() instead.
|
|
5358
6161
|
*/
|
|
5359
6162
|
class DbxFirebaseStorageModule {
|
|
5360
6163
|
static forRoot(config) {
|
|
@@ -5433,5 +6236,5 @@ function provideDbxFirebase(config) {
|
|
|
5433
6236
|
* Generated bundle index. Do not edit.
|
|
5434
6237
|
*/
|
|
5435
6238
|
|
|
5436
|
-
export { AbstractConfiguredDbxFirebaseLoginButtonDirective, AbstractDbxFirebaseCollectionStore, AbstractDbxFirebaseCollectionWithParentStore, AbstractDbxFirebaseDocumentStore, AbstractDbxFirebaseDocumentWithParentStore, AbstractDbxFirebaseNotificationItemWidgetComponent, AbstractRootSingleItemDbxFirebaseDocument, AbstractSingleItemDbxFirebaseDocument, AbstractSystemStateDocumentStoreAccessor, DBX_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_COMPONENT_CONFIGURATION, DBX_FIREBASE_APP_OPTIONS_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_LOGIN_COMPONENTS, DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR, 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_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, DbxFirebaseAuthModule, DbxFirebaseAuthService, DbxFirebaseAuthServiceDelegate, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionChangeTriggerInstance, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionLoaderInstance, DbxFirebaseCollectionStoreDirective, DbxFirebaseCollectionWithParentStoreDirective, DbxFirebaseDefaultFirebaseProvidersModule, DbxFirebaseDevelopmentDirective, DbxFirebaseDevelopmentModule, DbxFirebaseDevelopmentPopupComponent, DbxFirebaseDevelopmentPopupContentComponent, DbxFirebaseDevelopmentPopupContentFormComponent, DbxFirebaseDevelopmentSchedulerListComponent, DbxFirebaseDevelopmentSchedulerListViewComponent, DbxFirebaseDevelopmentSchedulerListViewItemComponent, DbxFirebaseDevelopmentSchedulerService, DbxFirebaseDevelopmentSchedulerWidgetComponent, DbxFirebaseDevelopmentService, DbxFirebaseDevelopmentWidgetService, DbxFirebaseDocumentLoaderInstance, DbxFirebaseDocumentStoreDirective, DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective, DbxFirebaseDocumentStoreTwoWayKeyProvider, DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, DbxFirebaseEmailFormComponent, DbxFirebaseEmailRecoveryFormComponent, DbxFirebaseEmulatorModule, DbxFirebaseEmulatorService, DbxFirebaseFirestoreCollectionModule, DbxFirebaseFunctionsModule, DbxFirebaseLoginAnonymousComponent, DbxFirebaseLoginAppleComponent, DbxFirebaseLoginButtonComponent, DbxFirebaseLoginButtonContainerComponent, DbxFirebaseLoginComponent, DbxFirebaseLoginContext, DbxFirebaseLoginContextBackButtonComponent, DbxFirebaseLoginContextDirective, DbxFirebaseLoginEmailComponent, DbxFirebaseLoginEmailContentComponent, DbxFirebaseLoginFacebookComponent, DbxFirebaseLoginGitHubComponent, DbxFirebaseLoginGoogleComponent, DbxFirebaseLoginListComponent, DbxFirebaseLoginMicrosoftComponent, DbxFirebaseLoginModule, DbxFirebaseLoginTermsComponent, DbxFirebaseLoginTermsSimpleComponent, DbxFirebaseLoginTwitterComponent, DbxFirebaseModelContextService, DbxFirebaseModelHistoryComponent, DbxFirebaseModelHistoryModule, DbxFirebaseModelHistoryPopoverButtonComponent, DbxFirebaseModelHistoryPopoverComponent, DbxFirebaseModelModule, DbxFirebaseModelStoreModule, DbxFirebaseModelTrackerService, DbxFirebaseModelTypeInstanceListComponent, DbxFirebaseModelTypeInstanceListViewComponent, DbxFirebaseModelTypeInstanceListViewItemComponent, DbxFirebaseModelTypesModule, DbxFirebaseModelTypesService, DbxFirebaseModelTypesServiceConfig, DbxFirebaseModelViewedEventDirective, DbxFirebaseModule, DbxFirebaseNotificationBoxCollectionStoreDirective, DbxFirebaseNotificationBoxDocumentStoreDirective, DbxFirebaseNotificationCollectionStoreDirective, DbxFirebaseNotificationDocumentStoreDirective, DbxFirebaseNotificationItemContentComponent, DbxFirebaseNotificationItemDefaultViewComponent, DbxFirebaseNotificationItemListComponent, DbxFirebaseNotificationItemListViewComponent, DbxFirebaseNotificationItemListViewItemComponent, DbxFirebaseNotificationItemStore, DbxFirebaseNotificationItemStorePopoverButtonComponent, DbxFirebaseNotificationItemStorePopoverComponent, DbxFirebaseNotificationItemViewComponent, DbxFirebaseNotificationItemWidgetService, DbxFirebaseNotificationModule, DbxFirebaseNotificationSummaryCollectionStoreDirective, DbxFirebaseNotificationSummaryDocumentStoreDirective, DbxFirebaseNotificationTemplateService, DbxFirebaseNotificationUserCollectionStoreDirective, DbxFirebaseNotificationUserDocumentStoreDirective, DbxFirebaseParsedEmulatorsConfig, DbxFirebasePipeModule, DbxFirebaseRegisterComponent, DbxFirebaseRegisterEmailComponent, DbxFirebaseStorageModule, 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, SystemStateCollectionStore, SystemStateDocumentStore, TwoWayFlatFirestoreModelKeyPipe, authRolesObsWithClaimsService, authUserInfoFromAuthUser, authUserStateFromFirebaseAuthServiceFunction, dbxFirebaseAuthContextInfo, dbxFirebaseCollectionChangeTrigger, dbxFirebaseCollectionChangeTriggerForStore, dbxFirebaseCollectionChangeTriggerForWatcher, dbxFirebaseCollectionChangeWatcher, dbxFirebaseCollectionLoaderInstance, dbxFirebaseCollectionLoaderInstanceWithCollection, dbxFirebaseDocumentLoaderInstance, dbxFirebaseDocumentLoaderInstanceWithAccessor, dbxFirebaseIdRouteParamRedirect, dbxFirebaseInContextFirebaseModelServiceInstance, dbxFirebaseInContextFirebaseModelServiceInstanceFactory, dbxFirebaseKeyRouteParamRedirect, dbxFirebaseModelContextServiceInfoInstanceFactory, dbxFirebaseModelTypesServiceInstance, dbxFirebaseModelTypesServiceInstancePairForKeysFactory, dbxFirebaseSourceSelectLoadSource, dbxFirebaseStorageProvidersContextConfigFactory, dbxLimitedFirebaseDocumentLoaderInstance, dbxLimitedFirebaseDocumentLoaderInstanceWithAccessor, dbxWidgetTypeForNotificationTemplateType, defaultDbxFirebaseAuthServiceDelegateWithClaimsService, developmentFirebaseServerSchedulerWidgetEntry, enableAppCheckDebugTokenGeneration, firebaseAuthTokenFromUser, firebaseContextServiceEntityMap, firebaseDocumentStoreCreateFunction, firebaseDocumentStoreCrudFunction, firebaseDocumentStoreDeleteFunction, firebaseDocumentStoreReadFunction, firebaseDocumentStoreUpdateFunction, modelDoesNotExistError, provideDbxFirebase, provideDbxFirebaseAnalyticsUserEventsListenerService, provideDbxFirebaseApp, provideDbxFirebaseAuth, provideDbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionWithParentStoreDirective, provideDbxFirebaseDevelopment, provideDbxFirebaseDocumentStoreDirective, provideDbxFirebaseDocumentStoreTwoWayKeyProvider, provideDbxFirebaseEmulator, provideDbxFirebaseFunctions, provideDbxFirebaseLogin, provideDbxFirebaseModelContextService, provideDbxFirebaseNotifications, provideDbxFirestoreCollection, provideNotificationFirestoreCollections, provideSystemStateFirestoreCollections, providedDbxFirebaseStorage, readDbxAnalyticsUserPropertiesFromAuthUserInfo, readValueFromIdToken, setParentStoreEffect, stateFromTokenForLoggedInUserFunction };
|
|
6239
|
+
export { AbstractConfiguredDbxFirebaseLoginButtonDirective, AbstractDbxFirebaseCollectionStore, AbstractDbxFirebaseCollectionWithParentStore, AbstractDbxFirebaseDocumentStore, AbstractDbxFirebaseDocumentWithParentStore, AbstractDbxFirebaseNotificationItemWidgetComponent, AbstractRootSingleItemDbxFirebaseDocument, AbstractSingleItemDbxFirebaseDocument, AbstractSystemStateDocumentStoreAccessor, DBX_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_COMPONENT_CONFIGURATION, DBX_FIREBASE_APP_OPTIONS_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_LOGIN_COMPONENTS, DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR, 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_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, DbxFirebaseAuthModule, DbxFirebaseAuthService, DbxFirebaseAuthServiceDelegate, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionChangeTriggerInstance, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionLoaderInstance, DbxFirebaseCollectionStoreDirective, DbxFirebaseCollectionWithParentStoreDirective, DbxFirebaseDefaultFirebaseProvidersModule, DbxFirebaseDevelopmentDirective, DbxFirebaseDevelopmentModule, DbxFirebaseDevelopmentPopupComponent, DbxFirebaseDevelopmentPopupContentComponent, DbxFirebaseDevelopmentPopupContentFormComponent, DbxFirebaseDevelopmentSchedulerListComponent, DbxFirebaseDevelopmentSchedulerListViewComponent, DbxFirebaseDevelopmentSchedulerListViewItemComponent, DbxFirebaseDevelopmentSchedulerService, DbxFirebaseDevelopmentSchedulerWidgetComponent, DbxFirebaseDevelopmentService, DbxFirebaseDevelopmentWidgetService, DbxFirebaseDocumentLoaderInstance, DbxFirebaseDocumentStoreDirective, DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective, DbxFirebaseDocumentStoreTwoWayKeyProvider, DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, DbxFirebaseEmailFormComponent, DbxFirebaseEmailRecoveryFormComponent, DbxFirebaseEmulatorModule, DbxFirebaseEmulatorService, DbxFirebaseFirestoreCollectionModule, DbxFirebaseFunctionsModule, DbxFirebaseLoginAnonymousComponent, DbxFirebaseLoginAppleComponent, DbxFirebaseLoginButtonComponent, DbxFirebaseLoginButtonContainerComponent, DbxFirebaseLoginComponent, DbxFirebaseLoginContext, DbxFirebaseLoginContextBackButtonComponent, DbxFirebaseLoginContextDirective, DbxFirebaseLoginEmailComponent, DbxFirebaseLoginEmailContentComponent, DbxFirebaseLoginFacebookComponent, DbxFirebaseLoginGitHubComponent, DbxFirebaseLoginGoogleComponent, DbxFirebaseLoginListComponent, DbxFirebaseLoginMicrosoftComponent, DbxFirebaseLoginModule, DbxFirebaseLoginTermsComponent, DbxFirebaseLoginTermsSimpleComponent, DbxFirebaseLoginTwitterComponent, DbxFirebaseModelContextService, DbxFirebaseModelHistoryComponent, DbxFirebaseModelHistoryModule, DbxFirebaseModelHistoryPopoverButtonComponent, DbxFirebaseModelHistoryPopoverComponent, DbxFirebaseModelModule, DbxFirebaseModelStoreModule, DbxFirebaseModelTrackerService, DbxFirebaseModelTypeInstanceListComponent, DbxFirebaseModelTypeInstanceListViewComponent, DbxFirebaseModelTypeInstanceListViewItemComponent, DbxFirebaseModelTypesModule, DbxFirebaseModelTypesService, DbxFirebaseModelTypesServiceConfig, DbxFirebaseModelViewedEventDirective, DbxFirebaseModule, DbxFirebaseNotificationBoxCollectionStoreDirective, DbxFirebaseNotificationBoxDocumentStoreDirective, DbxFirebaseNotificationCollectionStoreDirective, DbxFirebaseNotificationDocumentStoreDirective, DbxFirebaseNotificationItemContentComponent, DbxFirebaseNotificationItemDefaultViewComponent, DbxFirebaseNotificationItemListComponent, DbxFirebaseNotificationItemListViewComponent, DbxFirebaseNotificationItemListViewItemComponent, DbxFirebaseNotificationItemStore, DbxFirebaseNotificationItemStorePopoverButtonComponent, DbxFirebaseNotificationItemStorePopoverComponent, DbxFirebaseNotificationItemViewComponent, DbxFirebaseNotificationItemWidgetService, DbxFirebaseNotificationModule, DbxFirebaseNotificationSummaryCollectionStoreDirective, DbxFirebaseNotificationSummaryDocumentStoreDirective, DbxFirebaseNotificationTemplateService, DbxFirebaseNotificationUserCollectionStoreDirective, DbxFirebaseNotificationUserDocumentStoreDirective, DbxFirebaseParsedEmulatorsConfig, DbxFirebasePipeModule, DbxFirebaseRegisterComponent, DbxFirebaseRegisterEmailComponent, DbxFirebaseStorageFileCollectionStoreDirective, DbxFirebaseStorageFileDocumentStoreDirective, DbxFirebaseStorageFileUploadActionHandlerDirective, DbxFirebaseStorageFileUploadInitializeDocumentDirective, DbxFirebaseStorageFileUploadModule, DbxFirebaseStorageFileUploadStore, DbxFirebaseStorageFileUploadStoreDirective, DbxFirebaseStorageFileUploadSyncDirective, DbxFirebaseStorageModule, 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, StorageFileUploadFilesError, SystemStateCollectionStore, SystemStateDocumentStore, TwoWayFlatFirestoreModelKeyPipe, authRolesObsWithClaimsService, authUserInfoFromAuthUser, authUserStateFromFirebaseAuthServiceFunction, dbxFirebaseAuthContextInfo, dbxFirebaseCollectionChangeTrigger, dbxFirebaseCollectionChangeTriggerForStore, dbxFirebaseCollectionChangeTriggerForWatcher, dbxFirebaseCollectionChangeWatcher, dbxFirebaseCollectionLoaderInstance, dbxFirebaseCollectionLoaderInstanceWithCollection, dbxFirebaseDocumentLoaderInstance, dbxFirebaseDocumentLoaderInstanceWithAccessor, dbxFirebaseIdRouteParamRedirect, dbxFirebaseInContextFirebaseModelServiceInstance, dbxFirebaseInContextFirebaseModelServiceInstanceFactory, dbxFirebaseKeyRouteParamRedirect, dbxFirebaseModelContextServiceInfoInstanceFactory, dbxFirebaseModelTypesServiceInstance, dbxFirebaseModelTypesServiceInstancePairForKeysFactory, dbxFirebaseSourceSelectLoadSource, dbxFirebaseStorageProvidersContextConfigFactory, dbxLimitedFirebaseDocumentLoaderInstance, dbxLimitedFirebaseDocumentLoaderInstanceWithAccessor, dbxWidgetTypeForNotificationTemplateType, defaultDbxFirebaseAuthServiceDelegateWithClaimsService, developmentFirebaseServerSchedulerWidgetEntry, enableAppCheckDebugTokenGeneration, firebaseAuthTokenFromUser, firebaseCollectionStoreCreateFunction, firebaseCollectionStoreCrudFunction, firebaseContextServiceEntityMap, firebaseDocumentStoreCreateFunction, firebaseDocumentStoreCrudFunction, firebaseDocumentStoreDeleteFunction, firebaseDocumentStoreReadFunction, firebaseDocumentStoreUpdateFunction, importsAndExports$1 as importsAndExports, modelDoesNotExistError, provideDbxFirebase, provideDbxFirebaseAnalyticsUserEventsListenerService, provideDbxFirebaseApp, provideDbxFirebaseAuth, provideDbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionWithParentStoreDirective, provideDbxFirebaseDevelopment, provideDbxFirebaseDocumentStoreDirective, provideDbxFirebaseDocumentStoreTwoWayKeyProvider, provideDbxFirebaseEmulator, provideDbxFirebaseFunctions, provideDbxFirebaseLogin, provideDbxFirebaseModelContextService, provideDbxFirebaseNotifications, provideDbxFirestoreCollection, provideNotificationFirestoreCollections, provideStorageFileFirestoreCollections, provideSystemStateFirestoreCollections, providedDbxFirebaseStorage, readDbxAnalyticsUserPropertiesFromAuthUserInfo, readValueFromIdToken, setParentStoreEffect, stateFromTokenForLoggedInUserFunction, storageFileUploadFiles, storageFileUploadHandler };
|
|
5437
6240
|
//# sourceMappingURL=dereekb-dbx-firebase.mjs.map
|