@dereekb/dbx-firebase 12.6.10 → 12.6.11

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.
Files changed (43) hide show
  1. package/esm2022/lib/model/modules/model/entities/index.mjs +6 -0
  2. package/esm2022/lib/model/modules/model/entities/model.entities.component.mjs +73 -0
  3. package/esm2022/lib/model/modules/model/entities/model.entities.entity.component.mjs +28 -0
  4. package/esm2022/lib/model/modules/model/entities/model.entities.mjs +6 -0
  5. package/esm2022/lib/model/modules/model/entities/model.entities.popover.button.component.mjs +44 -0
  6. package/esm2022/lib/model/modules/model/entities/model.entities.popover.component.mjs +35 -0
  7. package/esm2022/lib/model/modules/model/entities/model.entities.source.directive.mjs +38 -0
  8. package/esm2022/lib/model/modules/model/entities/model.entities.widget.service.mjs +57 -0
  9. package/esm2022/lib/model/modules/model/index.mjs +2 -1
  10. package/esm2022/lib/model/modules/model/model.types.service.mjs +1 -1
  11. package/esm2022/lib/model/modules/store/index.mjs +5 -1
  12. package/esm2022/lib/model/modules/store/store.document.context.store.directive.mjs +19 -0
  13. package/esm2022/lib/model/modules/store/store.document.context.store.link.mjs +45 -0
  14. package/esm2022/lib/model/modules/store/store.document.context.store.mjs +86 -0
  15. package/esm2022/lib/model/modules/store/store.document.crud.mjs +1 -1
  16. package/esm2022/lib/model/modules/store/store.document.directive.mjs +1 -1
  17. package/esm2022/lib/model/modules/store/store.document.mjs +16 -4
  18. package/esm2022/lib/model/modules/store/store.mjs +2 -0
  19. package/esm2022/lib/model/modules/store/store.subcollection.document.mjs +1 -1
  20. package/esm2022/lib/model/modules/store/store.subcollection.rxjs.mjs +1 -1
  21. package/fesm2022/dereekb-dbx-firebase.mjs +407 -10
  22. package/fesm2022/dereekb-dbx-firebase.mjs.map +1 -1
  23. package/lib/model/modules/model/entities/index.d.ts +5 -0
  24. package/lib/model/modules/model/entities/model.entities.component.d.ts +25 -0
  25. package/lib/model/modules/model/entities/model.entities.d.ts +49 -0
  26. package/lib/model/modules/model/entities/model.entities.entity.component.d.ts +18 -0
  27. package/lib/model/modules/model/entities/model.entities.popover.button.component.d.ts +18 -0
  28. package/lib/model/modules/model/entities/model.entities.popover.component.d.ts +45 -0
  29. package/lib/model/modules/model/entities/model.entities.source.directive.d.ts +8 -0
  30. package/lib/model/modules/model/entities/model.entities.widget.service.d.ts +44 -0
  31. package/lib/model/modules/model/index.d.ts +1 -0
  32. package/lib/model/modules/store/index.d.ts +4 -0
  33. package/lib/model/modules/store/store.d.ts +79 -0
  34. package/lib/model/modules/store/store.document.context.store.d.ts +59 -0
  35. package/lib/model/modules/store/store.document.context.store.directive.d.ts +8 -0
  36. package/lib/model/modules/store/store.document.context.store.link.d.ts +17 -0
  37. package/lib/model/modules/store/store.document.crud.d.ts +1 -1
  38. package/lib/model/modules/store/store.document.d.ts +16 -76
  39. package/lib/model/modules/store/store.document.directive.d.ts +1 -1
  40. package/lib/model/modules/store/store.subcollection.document.d.ts +2 -1
  41. package/lib/model/modules/store/store.subcollection.rxjs.d.ts +1 -1
  42. package/lib/modules/storagefile/storagefile.upload.module.d.ts +1 -1
  43. package/package.json +1 -1
@@ -0,0 +1,5 @@
1
+ export * from './model.entities.component';
2
+ export * from './model.entities.popover.component';
3
+ export * from './model.entities.popover.button.component';
4
+ export * from './model.entities.source.directive';
5
+ export * from './model.entities.widget.service';
@@ -0,0 +1,25 @@
1
+ import { OnDestroy } from '@angular/core';
2
+ import { DbxFirebaseModelEntity, DbxFirebaseModelEntityWithKeyAndStore } from './model.entities';
3
+ import { Observable } from 'rxjs';
4
+ import { Maybe } from '@dereekb/util';
5
+ import { LoadingState } from '@dereekb/rxjs';
6
+ import * as i0 from "@angular/core";
7
+ export declare class DbxFirebaseModelEntitiesComponent implements OnDestroy {
8
+ /**
9
+ * All input entities.
10
+ */
11
+ readonly entities: import("@angular/core").InputSignal<Observable<LoadingState<DbxFirebaseModelEntity[]>> | undefined>;
12
+ readonly entities$: Observable<LoadingState<DbxFirebaseModelEntity[]>>;
13
+ /**
14
+ * Whether the accordion should allow multiple expanded panels.
15
+ */
16
+ readonly multi: import("@angular/core").InputSignal<boolean>;
17
+ readonly entitiesWithKeysState$: Observable<LoadingState<DbxFirebaseModelEntityWithKeyAndStore[]>>;
18
+ readonly entitiesWithKeys$: Observable<Maybe<DbxFirebaseModelEntityWithKeyAndStore<any, import("dist/packages/firebase/src").FirestoreDocument<any, import("dist/packages/firebase/src").FirestoreModelIdentity>>[]>>;
19
+ readonly entitiesWithKeysSignal: import("@angular/core").Signal<Maybe<DbxFirebaseModelEntityWithKeyAndStore<any, import("dist/packages/firebase/src").FirestoreDocument<any, import("dist/packages/firebase/src").FirestoreModelIdentity>>[]>>;
20
+ readonly hasNoEntitiesSignal: import("@angular/core").Signal<boolean>;
21
+ readonly context: import("@dereekb/rxjs").MutableLoadingStateContext<unknown, LoadingState<DbxFirebaseModelEntityWithKeyAndStore<any, import("dist/packages/firebase/src").FirestoreDocument<any, import("dist/packages/firebase/src").FirestoreModelIdentity>>[]>, import("@dereekb/rxjs").LoadingContextEvent & LoadingState<DbxFirebaseModelEntityWithKeyAndStore<any, import("dist/packages/firebase/src").FirestoreDocument<any, import("dist/packages/firebase/src").FirestoreModelIdentity>>[]>>;
22
+ ngOnDestroy(): void;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseModelEntitiesComponent, never>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<DbxFirebaseModelEntitiesComponent, "dbx-firebase-model-entities", never, { "entities": { "alias": "entities"; "required": false; "isSignal": true; }; "multi": { "alias": "multi"; "required": false; "isSignal": true; }; }, {}, never, ["[empty]"], true, never>;
25
+ }
@@ -0,0 +1,49 @@
1
+ import { type FirestoreDocument, type FirestoreModelIdentity } from '@dereekb/firebase';
2
+ import { type Maybe, type ModelKey } from '@dereekb/util';
3
+ import { type DbxFirebaseDocumentReadOnlyStore } from '../../store/store';
4
+ import { type LoadingState } from '@dereekb/rxjs';
5
+ import { type Observable } from 'rxjs';
6
+ /**
7
+ * Provides a source of entities.
8
+ */
9
+ export declare abstract class DbxFirebaseModelEntitiesSource {
10
+ /**
11
+ * Observable of a LoadingState of entity values.
12
+ */
13
+ abstract readonly entities$: Observable<LoadingState<DbxFirebaseModelEntity[]>>;
14
+ }
15
+ /**
16
+ * A model entity.
17
+ */
18
+ export interface DbxFirebaseModelEntity {
19
+ /**
20
+ * Model identity for the entity.
21
+ *
22
+ * Used for sorting/grouping by expected entity type.
23
+ */
24
+ readonly modelIdentity: FirestoreModelIdentity;
25
+ /**
26
+ * An associated store for the document, if it is available.
27
+ */
28
+ readonly store?: Maybe<DbxFirebaseDocumentReadOnlyStore<any, any>>;
29
+ }
30
+ export interface DbxFirebaseModelEntityWithStore<T = any, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends DbxFirebaseModelEntity {
31
+ /**
32
+ * An associated store for the document, if it is available.
33
+ */
34
+ readonly store: DbxFirebaseDocumentReadOnlyStore<T, D>;
35
+ }
36
+ /**
37
+ * An entity that has a key.
38
+ */
39
+ export interface DbxFirebaseModelEntityWithKey extends DbxFirebaseModelEntity {
40
+ /**
41
+ * The key of the target document.
42
+ */
43
+ readonly key: ModelKey;
44
+ }
45
+ /**
46
+ * An entity that has a key and a store.
47
+ */
48
+ export interface DbxFirebaseModelEntityWithKeyAndStore<T = any, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends Omit<DbxFirebaseModelEntityWithKey, 'store'>, DbxFirebaseModelEntityWithStore<T, D> {
49
+ }
@@ -0,0 +1,18 @@
1
+ import { DbxFirebaseModelEntity } from './model.entities';
2
+ import { DbxFirebaseModelEntitiesWidgetService } from './model.entities.widget.service';
3
+ import { DbxFirebaseModelTypesService } from '../model.types.service';
4
+ import * as i0 from "@angular/core";
5
+ export declare class DbxFirebaseModelEntitiesEntityComponent {
6
+ readonly widgetService: DbxFirebaseModelEntitiesWidgetService;
7
+ readonly modelTypesService: DbxFirebaseModelTypesService;
8
+ /**
9
+ * The input entity
10
+ */
11
+ readonly entity: import("@angular/core").InputSignal<DbxFirebaseModelEntity>;
12
+ readonly modelIdentity: import("@angular/core").Signal<import("dist/packages/firebase/src").FirestoreModelIdentity>;
13
+ readonly entity$: import("rxjs").Observable<DbxFirebaseModelEntity>;
14
+ readonly store$: import("rxjs").Observable<import("@dereekb/dbx-firebase").DbxFirebaseDocumentReadOnlyStore<any, any>>;
15
+ readonly loadingState$: import("rxjs").Observable<import("@dereekb/rxjs").LoadingState<any>>;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseModelEntitiesEntityComponent, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<DbxFirebaseModelEntitiesEntityComponent, "dbx-firebase-model-entities-entity", never, { "entity": { "alias": "entity"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
18
+ }
@@ -0,0 +1,18 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import { AbstractPopoverRefDirective } from '@dereekb/dbx-web';
3
+ import { NgPopoverRef } from 'ng-overlay-container';
4
+ import { DbxFirebaseModelEntitiesPopoverConfigWithoutOrigin } from './model.entities.popover.component';
5
+ import { Maybe } from '@dereekb/util';
6
+ import { DbxFirebaseModelEntitiesSource } from './model.entities';
7
+ import * as i0 from "@angular/core";
8
+ export type DbxFirebaseModelEntitiesPopoverButtonConfig = DbxFirebaseModelEntitiesPopoverConfigWithoutOrigin;
9
+ export declare class DbxFirebaseModelEntitiesPopoverButtonComponent extends AbstractPopoverRefDirective<unknown, unknown> {
10
+ private readonly _dbxPopoverService;
11
+ readonly entitiesSource: DbxFirebaseModelEntitiesSource;
12
+ readonly buttonElement: import("@angular/core").Signal<ElementRef<any>>;
13
+ readonly config: import("@angular/core").InputSignal<DbxFirebaseModelEntitiesPopoverConfigWithoutOrigin | undefined>;
14
+ protected _makePopoverRef(origin?: Maybe<ElementRef>): NgPopoverRef<unknown, unknown>;
15
+ showEntitiesPopover(): void;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseModelEntitiesPopoverButtonComponent, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<DbxFirebaseModelEntitiesPopoverButtonComponent, "dbx-firebase-model-entities-popover-button", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
18
+ }
@@ -0,0 +1,45 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import { NgPopoverRef } from 'ng-overlay-container';
3
+ import { AbstractPopoverDirective, DbxPopoverKey, DbxPopoverService } from '@dereekb/dbx-web';
4
+ import { Observable } from 'rxjs';
5
+ import { LoadingState } from '@dereekb/rxjs';
6
+ import { DbxFirebaseModelEntity } from './model.entities';
7
+ import * as i0 from "@angular/core";
8
+ export interface DbxFirebaseModelEntitiesPopoverConfig {
9
+ /**
10
+ * Custom icon
11
+ *
12
+ * Defaults to "history"
13
+ */
14
+ readonly icon?: string;
15
+ /**
16
+ * Custom header text
17
+ *
18
+ * Defaults to "Entities"
19
+ */
20
+ readonly header?: string;
21
+ /**
22
+ * Custom empty text when no entities exist.
23
+ */
24
+ readonly emptyText?: string;
25
+ /**
26
+ * Origin to add the popover to.
27
+ */
28
+ readonly origin: ElementRef;
29
+ /**
30
+ * Observable of entities to display.
31
+ */
32
+ readonly entities$: Observable<LoadingState<DbxFirebaseModelEntity[]>>;
33
+ }
34
+ export type DbxFirebaseModelEntitiesPopoverConfigWithoutOrigin = Omit<DbxFirebaseModelEntitiesPopoverConfig, 'origin' | 'entities$'>;
35
+ export declare const DEFAULT_DBX_FIREBASE_MODEL_ENTITIES_COMPONENT_POPOVER_KEY = "entities";
36
+ export declare class DbxFirebaseModelEntitiesPopoverComponent extends AbstractPopoverDirective<unknown, DbxFirebaseModelEntitiesPopoverConfig> {
37
+ readonly entities$: Observable<LoadingState<DbxFirebaseModelEntity[]>> | undefined;
38
+ static openPopover(popupService: DbxPopoverService, { origin, header, icon, emptyText, entities$ }: DbxFirebaseModelEntitiesPopoverConfig, popoverKey?: DbxPopoverKey): NgPopoverRef;
39
+ get config(): DbxFirebaseModelEntitiesPopoverConfig;
40
+ readonly icon: string;
41
+ readonly header: string;
42
+ readonly emptyText: string;
43
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseModelEntitiesPopoverComponent, never>;
44
+ static ɵcmp: i0.ɵɵComponentDeclaration<DbxFirebaseModelEntitiesPopoverComponent, "ng-component", never, {}, {}, never, never, true, never>;
45
+ }
@@ -0,0 +1,8 @@
1
+ import { DbxFirebaseModelEntitiesSource } from './model.entities';
2
+ import { DbxFirebaseDocumentStoreContextStore } from '../../store/store.document.context.store';
3
+ import * as i0 from "@angular/core";
4
+ export declare const dbxFirebaseDocumentStoreContextModelEntitiesSourceFactory: (storeContextStore: DbxFirebaseDocumentStoreContextStore) => DbxFirebaseModelEntitiesSource;
5
+ export declare class DbxFirebaseDocumentStoreContextModelEntitiesSourceDirective {
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseDocumentStoreContextModelEntitiesSourceDirective, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DbxFirebaseDocumentStoreContextModelEntitiesSourceDirective, "[dbxFirebaseDocumentStoreContextModelEntitiesSource]", never, {}, {}, never, never, true, never>;
8
+ }
@@ -0,0 +1,44 @@
1
+ import { Type } from '@angular/core';
2
+ import { ArrayOrValue, Maybe } from '@dereekb/util';
3
+ import { FirestoreModelIdentity } from '@dereekb/firebase';
4
+ import * as i0 from "@angular/core";
5
+ export interface DbxFirebaseModelEntitiesWidgetEntry {
6
+ /**
7
+ * Widget type to respond to.
8
+ */
9
+ readonly identity: FirestoreModelIdentity;
10
+ /**
11
+ * Widget component class to use.
12
+ */
13
+ readonly componentClass: Type<unknown>;
14
+ }
15
+ /**
16
+ * Configuration provided in the root module for configuring entries.
17
+ */
18
+ export declare abstract class DbxFirebaseModelEntitiesWidgetServiceConfig {
19
+ /**
20
+ * Entries to register.
21
+ */
22
+ abstract entries: DbxFirebaseModelEntitiesWidgetEntry[];
23
+ }
24
+ /**
25
+ * Service used to register widgets used for model entities.
26
+ */
27
+ export declare class DbxFirebaseModelEntitiesWidgetService {
28
+ private readonly _entries;
29
+ constructor(initialConfig: DbxFirebaseModelEntitiesWidgetServiceConfig);
30
+ /**
31
+ * Used to register one or more entries.
32
+ *
33
+ * If an entry with the same identity is already registered, this will override it by default.
34
+ *
35
+ * @param entries
36
+ * @param override
37
+ */
38
+ register(entries: ArrayOrValue<DbxFirebaseModelEntitiesWidgetEntry>, override?: boolean): void;
39
+ getAllRegisteredWidgetIdentities(): FirestoreModelIdentity[];
40
+ getWidgetEntry(identity: FirestoreModelIdentity): Maybe<DbxFirebaseModelEntitiesWidgetEntry>;
41
+ getWidgetEntries(identities: Iterable<FirestoreModelIdentity>): DbxFirebaseModelEntitiesWidgetEntry[];
42
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseModelEntitiesWidgetService, never>;
43
+ static ɵprov: i0.ɵɵInjectableDeclaration<DbxFirebaseModelEntitiesWidgetService>;
44
+ }
@@ -1,4 +1,5 @@
1
1
  export * from './history';
2
+ export * from './entities';
2
3
  export * from './model.types.service';
3
4
  export * from './model.types.module';
4
5
  export * from './model.types.list.component';
@@ -1,4 +1,5 @@
1
1
  export * from './model.store.module';
2
+ export * from './store';
2
3
  export * from './store.collection';
3
4
  export * from './store.collection.crud';
4
5
  export * from './store.collection.change.directive';
@@ -15,3 +16,6 @@ export * from './store.subcollection';
15
16
  export * from './store.subcollection.document';
16
17
  export * from './store.subcollection.directive';
17
18
  export * from './store.subcollection.rxjs';
19
+ export * from './store.document.context.store';
20
+ export * from './store.document.context.store.link';
21
+ export * from './store.document.context.store.directive';
@@ -0,0 +1,79 @@
1
+ import { type LockSetComponent } from '@dereekb/dbx-core';
2
+ import { type FirestoreDocument, type FirestoreCollectionLike, type FirestoreCollection, type FirestoreModelId, type FirestoreModelKey, type DocumentReference, type FirestoreAccessorStreamMode, type FlatFirestoreModelKey, type TwoWayFlatFirestoreModelKey, type FirestoreModelCollectionAndIdPair, type FirestoreModelCollectionAndIdPairObject, type DocumentSnapshot, type DocumentDataWithIdAndKey, type FirestoreModelIdentity } from '@dereekb/firebase';
3
+ import { type LoadingState, type ObservableOrValue } from '@dereekb/rxjs';
4
+ import { type Maybe } from '@dereekb/util';
5
+ import { type Observable, type Subscription } from 'rxjs';
6
+ /**
7
+ * Provides read-only accessors to a single model/document.
8
+ */
9
+ export interface DbxFirebaseDocumentReadOnlyStore<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {
10
+ readonly firestoreCollectionLike$: Observable<FirestoreCollectionLike<T, D>>;
11
+ readonly firestoreCollection$: Observable<FirestoreCollection<T, D>>;
12
+ readonly currentInputId$: Observable<Maybe<FirestoreModelId>>;
13
+ readonly inputId$: Observable<FirestoreModelId>;
14
+ readonly currentInputKey$: Observable<Maybe<FirestoreModelKey>>;
15
+ readonly inputKey$: Observable<FirestoreModelKey>;
16
+ readonly currentInputRef$: Observable<Maybe<DocumentReference<T>>>;
17
+ readonly inputRef$: Observable<DocumentReference<T>>;
18
+ readonly streamMode$: Observable<FirestoreAccessorStreamMode>;
19
+ readonly currentDocument$: Observable<Maybe<D>>;
20
+ readonly document$: Observable<D>;
21
+ readonly currentId$: Observable<Maybe<FirestoreModelId>>;
22
+ readonly currentKey$: Observable<Maybe<FirestoreModelKey>>;
23
+ readonly id$: Observable<FirestoreModelId>;
24
+ readonly key$: Observable<FirestoreModelKey>;
25
+ readonly ref$: Observable<DocumentReference<T>>;
26
+ readonly hasRef$: Observable<boolean>;
27
+ readonly flatKey$: Observable<FlatFirestoreModelKey>;
28
+ readonly twoWayFlatKey$: Observable<TwoWayFlatFirestoreModelKey>;
29
+ readonly keyModelIds$: Observable<FirestoreModelId[]>;
30
+ readonly keyPairs$: Observable<FirestoreModelCollectionAndIdPair[]>;
31
+ readonly keyPairObject$: Observable<FirestoreModelCollectionAndIdPairObject>;
32
+ readonly documentLoadingState$: Observable<LoadingState<D>>;
33
+ readonly snapshot$: Observable<DocumentSnapshot<T>>;
34
+ readonly snapshotLoadingState$: Observable<LoadingState<DocumentSnapshot<T>>>;
35
+ readonly currentData$: Observable<Maybe<DocumentDataWithIdAndKey<T>>>;
36
+ readonly data$: Observable<DocumentDataWithIdAndKey<T>>;
37
+ readonly dataLoadingState$: Observable<LoadingState<DocumentDataWithIdAndKey<T>>>;
38
+ readonly isLoadingData$: Observable<boolean>;
39
+ readonly currentExists$: Observable<boolean>;
40
+ readonly exists$: Observable<boolean>;
41
+ readonly modelIdentity$: Observable<FirestoreModelIdentity>;
42
+ }
43
+ /**
44
+ * Provides accessors to a single model/document.
45
+ */
46
+ export interface DbxFirebaseDocumentStore<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends DbxFirebaseDocumentReadOnlyStore<T, D>, LockSetComponent {
47
+ /**
48
+ * Sets the id of the document to load.
49
+ */
50
+ readonly setId: (observableOrValue: ObservableOrValue<Maybe<FirestoreModelId>>) => Subscription;
51
+ /**
52
+ * Sets the key of the document to load.
53
+ */
54
+ readonly setKey: (observableOrValue: ObservableOrValue<Maybe<FirestoreModelKey>>) => Subscription;
55
+ /**
56
+ * Sets the key of the document to load using a TwoWayFlatFirestoreModelKey.
57
+ */
58
+ readonly setFlatKey: (observableOrValue: ObservableOrValue<Maybe<TwoWayFlatFirestoreModelKey>>) => Subscription;
59
+ /**
60
+ * Sets the ref of the document to load.
61
+ */
62
+ readonly setRef: (observableOrValue: ObservableOrValue<Maybe<DocumentReference<T>>>) => Subscription;
63
+ /**
64
+ * Clears the key/id/ref and current document from the store.
65
+ */
66
+ readonly clearRefs: () => void;
67
+ /**
68
+ * Sets the stream mode.
69
+ */
70
+ readonly setStreamMode: (observableOrValue: ObservableOrValue<FirestoreAccessorStreamMode>) => Subscription;
71
+ /**
72
+ * Sets the FirestoreCollection to retrieve documents from.
73
+ */
74
+ readonly setFirestoreCollection: (() => void) | ((observableOrValue: ObservableOrValue<Maybe<FirestoreCollection<T, D>>>) => Subscription);
75
+ /**
76
+ * Sets the FirestoreCollectionLike to retrieve documents from.
77
+ */
78
+ readonly setFirestoreCollectionLike: (() => void) | ((observableOrValue: ObservableOrValue<Maybe<FirestoreCollectionLike<T, D>>>) => Subscription);
79
+ }
@@ -0,0 +1,59 @@
1
+ import { ComponentStore } from '@ngrx/component-store';
2
+ import { DbxFirebaseDocumentStore } from './store';
3
+ import { FirestoreModelIdentity } from '@dereekb/firebase';
4
+ import { Maybe } from '@dereekb/util';
5
+ import { Observable } from 'rxjs';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * A unique number for a store entry.
9
+ */
10
+ export type DbxFirebaseDocumentStoreContextStoreEntryNumber = number;
11
+ /**
12
+ * A specifiy entry in the store.
13
+ *
14
+ * Used for caching information about a specific store.
15
+ */
16
+ export interface DbxFirebaseDocumentStoreContextStoreEntry {
17
+ /**
18
+ * The number the entry was assigned when added to the store.
19
+ */
20
+ readonly entryNumber: DbxFirebaseDocumentStoreContextStoreEntryNumber;
21
+ /**
22
+ * The referenced document store.
23
+ */
24
+ readonly store: DbxFirebaseDocumentStore<unknown>;
25
+ readonly modelIdentity?: Maybe<FirestoreModelIdentity>;
26
+ }
27
+ export interface DbxFirebaseDocumentStoreContextStoreEntryWithIdentity extends Omit<DbxFirebaseDocumentStoreContextStoreEntry, 'modelIdentity'> {
28
+ readonly modelIdentity: FirestoreModelIdentity;
29
+ }
30
+ export interface DbxFirebaseDocumentStoreContextStoreState {
31
+ /**
32
+ * The next entry number to use for a new store.
33
+ */
34
+ readonly nextEntryNumber: DbxFirebaseDocumentStoreContextStoreEntryNumber;
35
+ /**
36
+ * The current number of entries
37
+ */
38
+ readonly currentEntryCount: number;
39
+ /**
40
+ * The map of all current stores.
41
+ *
42
+ * The map uses the store as the key for it's corresponding entry that contains additional information about the store.
43
+ */
44
+ readonly stores: Map<DbxFirebaseDocumentStore<unknown>, DbxFirebaseDocumentStoreContextStoreEntry>;
45
+ /**
46
+ * The last time the stores map was changed.
47
+ */
48
+ readonly lastStoresChangeAt: Date;
49
+ }
50
+ export declare class DbxFirebaseDocumentStoreContextStore extends ComponentStore<DbxFirebaseDocumentStoreContextStoreState> {
51
+ constructor();
52
+ readonly stores$: Observable<Map<DbxFirebaseDocumentStore<unknown, import("@dereekb/firebase").FirestoreDocument<unknown, FirestoreModelIdentity>>, DbxFirebaseDocumentStoreContextStoreEntry>>;
53
+ readonly lastStoresChangeAt$: Observable<Maybe<Date>>;
54
+ readonly entriesGroupedByIdentity$: Observable<DbxFirebaseDocumentStoreContextStoreEntryWithIdentity[]>;
55
+ readonly addStore: (observableOrValue: DbxFirebaseDocumentStore<unknown, import("@dereekb/firebase").FirestoreDocument<unknown, FirestoreModelIdentity>> | Observable<DbxFirebaseDocumentStore<unknown, import("@dereekb/firebase").FirestoreDocument<unknown, FirestoreModelIdentity>>>) => import("rxjs").Subscription;
56
+ readonly removeStore: (observableOrValue: DbxFirebaseDocumentStore<unknown, import("@dereekb/firebase").FirestoreDocument<unknown, FirestoreModelIdentity>> | Observable<DbxFirebaseDocumentStore<unknown, import("@dereekb/firebase").FirestoreDocument<unknown, FirestoreModelIdentity>>>) => import("rxjs").Subscription;
57
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseDocumentStoreContextStore, never>;
58
+ static ɵprov: i0.ɵɵInjectableDeclaration<DbxFirebaseDocumentStoreContextStore>;
59
+ }
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ /**
3
+ * Directive that provides a DbxFirebaseDocumentStoreContextStore.
4
+ */
5
+ export declare class DbxFirebaseDocumentStoreContextStoreDirective {
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseDocumentStoreContextStoreDirective, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DbxFirebaseDocumentStoreContextStoreDirective, "[dbxFirebaseDocumentStoreContextStore]", never, {}, {}, never, never, true, never>;
8
+ }
@@ -0,0 +1,17 @@
1
+ import { InjectionToken, type Provider } from '@angular/core';
2
+ import { DbxFirebaseDocumentStoreContextStore } from './store.document.context.store';
3
+ import { type DbxFirebaseDocumentStore } from './store';
4
+ /**
5
+ * Injection token for DbxFirebaseDocumentStoreContextStore.
6
+ */
7
+ export declare const DBX_FIREBASE_DOCUMENT_STORE_CONTEXT_STORE_TOKEN: InjectionToken<DbxFirebaseDocumentStoreContextStore[]>;
8
+ /**
9
+ * Provides the DbxFirebaseDocumentStoreContextStore.
10
+ */
11
+ export declare function provideDbxFirebaseDocumentStoreContextStore(): Provider[];
12
+ /**
13
+ * Links a DbxFirebaseDocumentStore to parent DbxFirebaseDocumentStoreContextStore instances.
14
+ *
15
+ * This should be called in an injectable context.
16
+ */
17
+ export declare function linkDocumentStoreToParentContextStores(store: DbxFirebaseDocumentStore<any, any>): void;
@@ -2,7 +2,7 @@ import { type ModelFirebaseCreateFunction, type ModelFirebaseDeleteFunction, typ
2
2
  import { type LoadingState } from '@dereekb/rxjs';
3
3
  import { type PartialOnKeys } from '@dereekb/util';
4
4
  import { type Observable } from 'rxjs';
5
- import { type DbxFirebaseDocumentStore } from './store.document';
5
+ import { type DbxFirebaseDocumentStore } from './store';
6
6
  export type DbxFirebaseDocumentStoreCreateFunction<I, O extends OnCallCreateModelResult = OnCallCreateModelResult> = (params: I) => Observable<LoadingState<O>>;
7
7
  /**
8
8
  * Creates a function for a store that DbxFirebaseDocumentStore captures the ModelFirebaseCreateFunction result and sets the key of the created value.
@@ -1,82 +1,12 @@
1
1
  import { Observable, Subscription } from 'rxjs';
2
- import { DocumentSnapshot, DocumentReference, FirestoreCollection, FirestoreDocument, DocumentDataWithIdAndKey, FirestoreModelId, FirestoreModelKey, FirestoreCollectionLike, FirestoreModelIdentity, FirestoreModelCollectionAndIdPair, FirestoreModelCollectionAndIdPairObject, FirestoreAccessorStreamMode, TwoWayFlatFirestoreModelKey, FlatFirestoreModelKey } from '@dereekb/firebase';
3
- import { LoadingState, ObservableOrValue } from '@dereekb/rxjs';
2
+ import { DocumentSnapshot, DocumentReference, FirestoreCollection, FirestoreDocument, DocumentDataWithIdAndKey, FirestoreModelId, FirestoreModelKey, FirestoreCollectionLike, FirestoreModelIdentity, FirestoreModelCollectionAndIdPair, FirestoreModelCollectionAndIdPairObject, FirestoreAccessorStreamMode, FlatFirestoreModelKey } from '@dereekb/firebase';
3
+ import { LoadingState } from '@dereekb/rxjs';
4
4
  import { Maybe } from '@dereekb/util';
5
- import { LockSetComponent, LockSetComponentStore } from '@dereekb/dbx-core';
5
+ import { LockSetComponentStore } from '@dereekb/dbx-core';
6
+ import { DbxFirebaseDocumentStore } from './store';
6
7
  import * as i0 from "@angular/core";
7
- export interface DbxFirebaseDocumentStore<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> extends LockSetComponent {
8
- readonly firestoreCollectionLike$: Observable<FirestoreCollectionLike<T, D>>;
9
- readonly firestoreCollection$: Observable<FirestoreCollection<T, D>>;
10
- readonly currentInputId$: Observable<Maybe<FirestoreModelId>>;
11
- readonly inputId$: Observable<FirestoreModelId>;
12
- readonly currentInputKey$: Observable<Maybe<FirestoreModelKey>>;
13
- readonly inputKey$: Observable<FirestoreModelKey>;
14
- readonly currentInputRef$: Observable<Maybe<DocumentReference<T>>>;
15
- readonly inputRef$: Observable<DocumentReference<T>>;
16
- readonly streamMode$: Observable<FirestoreAccessorStreamMode>;
17
- readonly currentDocument$: Observable<Maybe<D>>;
18
- readonly document$: Observable<D>;
19
- readonly id$: Observable<FirestoreModelId>;
20
- readonly key$: Observable<FirestoreModelKey>;
21
- readonly ref$: Observable<DocumentReference<T>>;
22
- readonly hasRef$: Observable<boolean>;
23
- readonly flatKey$: Observable<FlatFirestoreModelKey>;
24
- readonly twoWayFlatKey$: Observable<TwoWayFlatFirestoreModelKey>;
25
- readonly keyModelIds$: Observable<FirestoreModelId[]>;
26
- readonly keyPairs$: Observable<FirestoreModelCollectionAndIdPair[]>;
27
- readonly keyPairObject$: Observable<FirestoreModelCollectionAndIdPairObject>;
28
- readonly documentLoadingState$: Observable<LoadingState<D>>;
29
- readonly snapshot$: Observable<DocumentSnapshot<T>>;
30
- readonly snapshotLoadingState$: Observable<LoadingState<DocumentSnapshot<T>>>;
31
- readonly currentData$: Observable<Maybe<DocumentDataWithIdAndKey<T>>>;
32
- readonly data$: Observable<DocumentDataWithIdAndKey<T>>;
33
- readonly dataLoadingState$: Observable<LoadingState<DocumentDataWithIdAndKey<T>>>;
34
- readonly isLoadingData$: Observable<boolean>;
35
- readonly currentExists$: Observable<boolean>;
36
- readonly exists$: Observable<boolean>;
37
- readonly modelIdentity$: Observable<FirestoreModelIdentity>;
38
- /**
39
- * Sets the id of the document to load.
40
- */
41
- readonly setId: (observableOrValue: ObservableOrValue<Maybe<FirestoreModelId>>) => Subscription;
42
- /**
43
- * Sets the key of the document to load.
44
- */
45
- readonly setKey: (observableOrValue: ObservableOrValue<Maybe<FirestoreModelKey>>) => Subscription;
46
- /**
47
- * Sets the key of the document to load using a TwoWayFlatFirestoreModelKey.
48
- */
49
- readonly setFlatKey: (observableOrValue: ObservableOrValue<Maybe<TwoWayFlatFirestoreModelKey>>) => Subscription;
50
- /**
51
- * Sets the ref of the document to load.
52
- */
53
- readonly setRef: (observableOrValue: ObservableOrValue<Maybe<DocumentReference<T>>>) => Subscription;
54
- /**
55
- * Clears the key/id/ref and current document from the store.
56
- */
57
- readonly clearRefs: () => void;
58
- /**
59
- * Sets the stream mode.
60
- */
61
- readonly setStreamMode: (observableOrValue: ObservableOrValue<FirestoreAccessorStreamMode>) => Subscription;
62
- /**
63
- * Sets the FirestoreCollection to retrieve documents from.
64
- */
65
- readonly setFirestoreCollection: (() => void) | ((observableOrValue: ObservableOrValue<Maybe<FirestoreCollection<T, D>>>) => Subscription);
66
- /**
67
- * Sets the FirestoreCollectionLike to retrieve documents from.
68
- */
69
- readonly setFirestoreCollectionLike: (() => void) | ((observableOrValue: ObservableOrValue<Maybe<FirestoreCollectionLike<T, D>>>) => Subscription);
70
- }
71
- export interface DbxFirebaseDocumentStoreContextState<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {
72
- readonly firestoreCollectionLike?: Maybe<FirestoreCollectionLike<T, D>>;
73
- readonly firestoreCollection?: Maybe<FirestoreCollection<T, D>>;
74
- readonly streamMode?: FirestoreAccessorStreamMode;
75
- readonly id?: Maybe<FirestoreModelId>;
76
- readonly key?: Maybe<FirestoreModelKey>;
77
- readonly ref?: Maybe<DocumentReference<T>>;
78
- }
79
8
  export declare class AbstractDbxFirebaseDocumentStore<T, D extends FirestoreDocument<T> = FirestoreDocument<T>, C extends DbxFirebaseDocumentStoreContextState<T, D> = DbxFirebaseDocumentStoreContextState<T, D>> extends LockSetComponentStore<C> implements DbxFirebaseDocumentStore<T, D> {
9
+ protected constructor(initialState?: C);
80
10
  readonly currentFirestoreCollectionLike$: Observable<Maybe<FirestoreCollectionLike<T, D>>>;
81
11
  readonly currentFirestoreCollection$: Observable<Maybe<FirestoreCollection<T, D>>>;
82
12
  readonly firestoreCollectionLike$: Observable<FirestoreCollectionLike<T, D>>;
@@ -95,6 +25,8 @@ export declare class AbstractDbxFirebaseDocumentStore<T, D extends FirestoreDocu
95
25
  readonly hasRef$: Observable<boolean>;
96
26
  readonly document$: Observable<D>;
97
27
  readonly documentLoadingState$: Observable<LoadingState<D>>;
28
+ readonly currentId$: Observable<Maybe<FirestoreModelId>>;
29
+ readonly currentKey$: Observable<Maybe<FirestoreModelKey>>;
98
30
  readonly id$: Observable<FirestoreModelId>;
99
31
  readonly key$: Observable<FirestoreModelKey>;
100
32
  readonly keyModelIds$: Observable<FirestoreModelId[]>;
@@ -124,7 +56,7 @@ export declare class AbstractDbxFirebaseDocumentStore<T, D extends FirestoreDocu
124
56
  readonly clearRefs: () => void;
125
57
  readonly setFirestoreCollection: (() => void) | ((observableOrValue: Maybe<FirestoreCollection<T, D>> | Observable<Maybe<FirestoreCollection<T, D>>>) => Subscription);
126
58
  readonly setFirestoreCollectionLike: (() => void) | ((observableOrValue: Maybe<FirestoreCollectionLike<T, D, import("@dereekb/firebase").LimitedFirestoreDocumentAccessor<T, D>>> | Observable<Maybe<FirestoreCollectionLike<T, D, import("@dereekb/firebase").LimitedFirestoreDocumentAccessor<T, D>>>>) => Subscription);
127
- static ɵfac: i0.ɵɵFactoryDeclaration<AbstractDbxFirebaseDocumentStore<any, any, any>, never>;
59
+ static ɵfac: i0.ɵɵFactoryDeclaration<AbstractDbxFirebaseDocumentStore<any, any, any>, [{ optional: true; }]>;
128
60
  static ɵprov: i0.ɵɵInjectableDeclaration<AbstractDbxFirebaseDocumentStore<any, any, any>>;
129
61
  }
130
62
  /**
@@ -156,3 +88,11 @@ export declare class AbstractRootSingleItemDbxFirebaseDocument<T, D extends Fire
156
88
  readonly setRef: (observableOrValue: Maybe<DocumentReference<T>> | Observable<Maybe<DocumentReference<T>>>) => Subscription;
157
89
  readonly clearRefs: () => void;
158
90
  }
91
+ export interface DbxFirebaseDocumentStoreContextState<T, D extends FirestoreDocument<T> = FirestoreDocument<T>> {
92
+ readonly firestoreCollectionLike?: Maybe<FirestoreCollectionLike<T, D>>;
93
+ readonly firestoreCollection?: Maybe<FirestoreCollection<T, D>>;
94
+ readonly streamMode?: FirestoreAccessorStreamMode;
95
+ readonly id?: Maybe<FirestoreModelId>;
96
+ readonly key?: Maybe<FirestoreModelKey>;
97
+ readonly ref?: Maybe<DocumentReference<T>>;
98
+ }
@@ -1,7 +1,7 @@
1
1
  import { OnDestroy, Provider, Type } from '@angular/core';
2
2
  import { DocumentReference, FirestoreAccessorStreamMode, FirestoreDocument, FirestoreModelKey, FirestoreModelId, TwoWayFlatFirestoreModelKey } from '@dereekb/firebase';
3
3
  import { ModelKey, type Maybe } from '@dereekb/util';
4
- import { DbxFirebaseDocumentStore } from './store.document';
4
+ import { DbxFirebaseDocumentStore } from './store';
5
5
  import { Observable, Subscription } from 'rxjs';
6
6
  import { DbxRouteModelIdDirectiveDelegate, DbxRouteModelKeyDirectiveDelegate } from '@dereekb/dbx-core';
7
7
  import { DbxFirebaseDocumentStoreTwoWayKeyProvider } from './store.document.twoway.key.source';
@@ -1,7 +1,8 @@
1
1
  import { Observable, Subscription } from 'rxjs';
2
2
  import { FirestoreDocument, FirestoreCollectionWithParentFactory, FirestoreCollection, DocumentReference, FirestoreModelKey } from '@dereekb/firebase';
3
3
  import { type Maybe } from '@dereekb/util';
4
- import { AbstractDbxFirebaseDocumentStore, DbxFirebaseDocumentStore, DbxFirebaseDocumentStoreContextState } from './store.document';
4
+ import { AbstractDbxFirebaseDocumentStore, DbxFirebaseDocumentStoreContextState } from './store.document';
5
+ import { DbxFirebaseDocumentStore } from './store';
5
6
  import { DbxFirebaseComponentStoreWithParentSetParentStoreEffectFunction, DbxFirebaseComponentStoreWithParent, DbxFirebaseComponentStoreWithParentContextState, DbxFirebaseComponentStoreWithParentSetParentEffectFunction } from './store.subcollection.rxjs';
6
7
  import * as i0 from "@angular/core";
7
8
  export interface DbxFirebaseDocumentWithParentStoreContextState<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> extends DbxFirebaseDocumentStoreContextState<T, D>, DbxFirebaseComponentStoreWithParentContextState<T, PT, D, PD> {
@@ -4,7 +4,7 @@ import { type ObservableOrValue } from '@dereekb/rxjs';
4
4
  import { type Maybe } from '@dereekb/util';
5
5
  import { type ComponentStore } from '@ngrx/component-store';
6
6
  import { type Observable, type Subscription } from 'rxjs';
7
- import { type DbxFirebaseDocumentStore } from './store.document';
7
+ import { type DbxFirebaseDocumentStore } from './store';
8
8
  export interface DbxFirebaseComponentStoreWithParentContextState<T, PT, D extends FirestoreDocument<T> = FirestoreDocument<T>, PD extends FirestoreDocument<PT> = FirestoreDocument<PT>> {
9
9
  readonly parent?: Maybe<PD>;
10
10
  readonly collectionFactory?: Maybe<FirestoreCollectionWithParentFactory<T, PT, D, PD>>;
@@ -10,7 +10,7 @@ import * as i4 from "./container/storagefile.upload.sync.directive";
10
10
  import * as i5 from "./container/storagefile.upload.initialize.document.directive";
11
11
  import * as i6 from "./store/storagefile.collection.store.directive";
12
12
  import * as i7 from "./store/storagefile.document.store.directive";
13
- export declare const importsAndExports: (typeof DbxActionModule | typeof DbxActionSnackbarErrorDirective | typeof DbxFirebaseStorageFileCollectionStoreDirective | typeof DbxFirebaseStorageFileDocumentStoreDirective | typeof DbxFirebaseStorageFileUploadActionHandlerDirective | typeof DbxFirebaseStorageFileUploadInitializeDocumentDirective | typeof DbxFirebaseStorageFileUploadStoreDirective | typeof DbxFirebaseStorageFileUploadSyncDirective | typeof DbxFileUploadComponent | typeof DbxLoadingComponent | typeof DbxActionLoadingContextDirective | typeof DbxFileUploadActionSyncDirective)[];
13
+ export declare const importsAndExports: (typeof DbxActionModule | typeof DbxLoadingComponent | typeof DbxActionSnackbarErrorDirective | typeof DbxFirebaseStorageFileCollectionStoreDirective | typeof DbxFirebaseStorageFileDocumentStoreDirective | typeof DbxFirebaseStorageFileUploadActionHandlerDirective | typeof DbxFirebaseStorageFileUploadInitializeDocumentDirective | typeof DbxFirebaseStorageFileUploadStoreDirective | typeof DbxFirebaseStorageFileUploadSyncDirective | typeof DbxFileUploadComponent | typeof DbxActionLoadingContextDirective | typeof DbxFileUploadActionSyncDirective)[];
14
14
  /**
15
15
  * Convenience module for importing various modules/components that are relevant to the storage file upload feature.
16
16
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-firebase",
3
- "version": "12.6.10",
3
+ "version": "12.6.11",
4
4
  "peerDependencies": {
5
5
  "@angular/core": "^18.0.0",
6
6
  "@dereekb/dbx-analytics": "*",