@dereekb/dbx-firebase 5.1.0 → 5.2.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.
Files changed (26) hide show
  1. package/esm2020/lib/auth/appcheck/appcheck.interceptor.mjs +5 -5
  2. package/esm2020/lib/auth/appcheck/appcheck.mjs +1 -1
  3. package/esm2020/lib/auth/login/login.service.mjs +1 -1
  4. package/esm2020/lib/firebase/appcheck.mjs +1 -1
  5. package/esm2020/lib/firebase/firebase.module.mjs +1 -1
  6. package/esm2020/lib/model/loader/collection.loader.instance.mjs +1 -1
  7. package/esm2020/lib/model/store/index.mjs +2 -1
  8. package/esm2020/lib/model/store/store.collection.directive.mjs +1 -1
  9. package/esm2020/lib/model/store/store.collection.mjs +1 -1
  10. package/esm2020/lib/model/store/store.subcollection.directive.mjs +30 -0
  11. package/esm2020/lib/model/store/store.subcollection.document.mjs +21 -4
  12. package/esm2020/lib/model/store/store.subcollection.mjs +51 -9
  13. package/esm2020/lib/model/store/store.subcollection.rxjs.mjs +3 -22
  14. package/fesm2015/dereekb-dbx-firebase.mjs +100 -30
  15. package/fesm2015/dereekb-dbx-firebase.mjs.map +1 -1
  16. package/fesm2020/dereekb-dbx-firebase.mjs +97 -30
  17. package/fesm2020/dereekb-dbx-firebase.mjs.map +1 -1
  18. package/lib/model/loader/collection.loader.instance.d.ts +8 -8
  19. package/lib/model/store/index.d.ts +1 -0
  20. package/lib/model/store/store.collection.d.ts +7 -7
  21. package/lib/model/store/store.collection.directive.d.ts +1 -1
  22. package/lib/model/store/store.subcollection.d.ts +29 -9
  23. package/lib/model/store/store.subcollection.directive.d.ts +23 -0
  24. package/lib/model/store/store.subcollection.document.d.ts +9 -8
  25. package/lib/model/store/store.subcollection.rxjs.d.ts +7 -6
  26. package/package.json +6 -6
@@ -1,37 +1,79 @@
1
+ import { Inject, Injectable, Optional } from '@angular/core';
1
2
  import { filterMaybe } from '@dereekb/rxjs';
2
- import { Injectable } from '@angular/core';
3
- import { shareReplay, distinctUntilChanged, map } from 'rxjs';
3
+ import { shareReplay, distinctUntilChanged, map, NEVER, switchMap, tap } from 'rxjs';
4
4
  import { AbstractDbxFirebaseCollectionStore } from './store.collection';
5
- import { setParentEffect, setParentStoreEffect } from './store.subcollection.rxjs';
5
+ import { setParentStoreEffect } from './store.subcollection.rxjs';
6
6
  import * as i0 from "@angular/core";
7
7
  /**
8
8
  * Abstract DbxFirebaseCollectionStore that has a parent document from which is derives it's FiresbaseCollection from.
9
9
  */
10
10
  export class AbstractDbxFirebaseCollectionWithParentStore extends AbstractDbxFirebaseCollectionStore {
11
- constructor() {
12
- super(...arguments);
11
+ constructor(state, defaultSourceMode) {
12
+ super(state);
13
13
  // MARK: Effects
14
- this.setParent = setParentEffect(this);
15
14
  this.setParentStore = setParentStoreEffect(this);
15
+ this.setSourceMode = this.effect((input) => {
16
+ return input.pipe(distinctUntilChanged(), switchMap((inputMode) => {
17
+ const mode = inputMode?.toLowerCase() ?? 'parent'; // default to parent mode
18
+ if (mode === 'group') {
19
+ return this.currentCollectionGroup$.pipe(tap((collectionGroup) => {
20
+ this.setFirestoreCollection(collectionGroup);
21
+ }));
22
+ }
23
+ else {
24
+ // parent document collection
25
+ return this.currentParent$.pipe(switchMap((parent) => {
26
+ if (parent) {
27
+ return this.collectionFactory$.pipe(tap((collectionFactory) => {
28
+ const collection = collectionFactory(parent);
29
+ this.setFirestoreCollection(collection);
30
+ }));
31
+ }
32
+ else {
33
+ this.setFirestoreCollection(undefined);
34
+ return NEVER;
35
+ }
36
+ }));
37
+ }
38
+ }));
39
+ });
16
40
  // MARK: Accessors
17
41
  this.currentParent$ = this.state$.pipe(map((x) => x.parent), distinctUntilChanged(), shareReplay(1));
18
42
  this.parent$ = this.currentParent$.pipe(filterMaybe());
19
43
  this.currentCollectionFactory$ = this.state$.pipe(map((x) => x.collectionFactory), distinctUntilChanged(), shareReplay(1));
20
44
  this.collectionFactory$ = this.currentCollectionFactory$.pipe(filterMaybe());
45
+ this.currentCollectionGroup$ = this.state$.pipe(map((x) => x.collectionGroup), distinctUntilChanged(), shareReplay(1));
46
+ this.collectionGroup$ = this.currentCollectionGroup$.pipe(filterMaybe());
21
47
  // MARK: State Changes
22
48
  /**
23
49
  * Sets the collection factory function to use.
24
50
  */
25
51
  this.setCollectionFactory = this.updater((state, collectionFactory) => ({ ...state, collectionFactory }));
52
+ /**
53
+ * Sets the collection group to use.
54
+ */
55
+ this.setCollectionGroup = this.updater((state, collectionGroup) => ({ ...state, collectionGroup }));
26
56
  /**
27
57
  * Sets the parent on the current state.
28
58
  */
29
59
  this._setParentDocument = this.updater((state, parent) => ({ ...state, parent }));
60
+ this._setParent = this._setParentDocument;
61
+ this.setSourceMode(defaultSourceMode || 'parent');
30
62
  }
31
63
  }
32
- AbstractDbxFirebaseCollectionWithParentStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AbstractDbxFirebaseCollectionWithParentStore, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
64
+ AbstractDbxFirebaseCollectionWithParentStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AbstractDbxFirebaseCollectionWithParentStore, deps: [{ token: null, optional: true }, { token: null, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
33
65
  AbstractDbxFirebaseCollectionWithParentStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AbstractDbxFirebaseCollectionWithParentStore });
34
66
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AbstractDbxFirebaseCollectionWithParentStore, decorators: [{
35
67
  type: Injectable
36
- }] });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuc3ViY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL3N0b3JlL3N0b3JlLnN1YmNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzFFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBc0UsTUFBTSxvQkFBb0IsQ0FBQztBQUM1SSxPQUFPLEVBQXFOLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQU10Uzs7R0FFRztBQUVILE1BQU0sT0FBTyw0Q0FDWCxTQUFRLGtDQUEyQztJQUZyRDs7UUFLRSxnQkFBZ0I7UUFDUCxjQUFTLEdBQW1FLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRyxtQkFBYyxHQUE0RSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU5SCxrQkFBa0I7UUFDVCxtQkFBYyxHQUEwQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDL0QsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQ3BCLG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU8sWUFBTyxHQUFtQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRWxFLDhCQUF5QixHQUEwRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDMUgsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsRUFDL0Isb0JBQW9CLEVBQUUsRUFDdEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFTyx1QkFBa0IsR0FBbUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRWpKLHNCQUFzQjtRQUN0Qjs7V0FFRztRQUNNLHlCQUFvQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsaUJBQXFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVsSzs7V0FFRztRQUNNLHVCQUFrQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztLQUNsRzs7eUlBbkNZLDRDQUE0Qzs2SUFBNUMsNENBQTRDOzJGQUE1Qyw0Q0FBNEM7a0JBRHhELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaWx0ZXJNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZpcmVzdG9yZUNvbGxlY3Rpb25XaXRoUGFyZW50RmFjdG9yeSwgRmlyZXN0b3JlRG9jdW1lbnQgfSBmcm9tICdAZGVyZWVrYi9maXJlYmFzZSc7XG5pbXBvcnQgeyBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgQWJzdHJhY3REYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZSwgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uU3RvcmUsIERieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlQ29udGV4dFN0YXRlIH0gZnJvbSAnLi9zdG9yZS5jb2xsZWN0aW9uJztcbmltcG9ydCB7IERieEZpcmViYXNlQ29tcG9uZW50U3RvcmVXaXRoUGFyZW50LCBEYnhGaXJlYmFzZUNvbXBvbmVudFN0b3JlV2l0aFBhcmVudENvbnRleHRTdGF0ZSwgRGJ4RmlyZWJhc2VDb21wb25lbnRTdG9yZVdpdGhQYXJlbnRTZXRQYXJlbnRFZmZlY3RGdW5jdGlvbiwgRGJ4RmlyZWJhc2VDb21wb25lbnRTdG9yZVdpdGhQYXJlbnRTZXRQYXJlbnRTdG9yZUVmZmVjdEZ1bmN0aW9uLCBzZXRQYXJlbnRFZmZlY3QsIHNldFBhcmVudFN0b3JlRWZmZWN0IH0gZnJvbSAnLi9zdG9yZS5zdWJjb2xsZWN0aW9uLnJ4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlQ29sbGVjdGlvbldpdGhQYXJlbnRTdG9yZTxULCBQVCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4sIFBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8UFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8UFQ+PiBleHRlbmRzIERieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlPFQsIEQ+LCBEYnhGaXJlYmFzZUNvbXBvbmVudFN0b3JlV2l0aFBhcmVudDxULCBQVCwgRCwgUEQ+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uV2l0aFBhcmVudFN0b3JlQ29udGV4dFN0YXRlPFQsIFBULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPiwgUEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxQVD4gPSBGaXJlc3RvcmVEb2N1bWVudDxQVD4+IGV4dGVuZHMgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uU3RvcmVDb250ZXh0U3RhdGU8VCwgRD4sIERieEZpcmViYXNlQ29tcG9uZW50U3RvcmVXaXRoUGFyZW50Q29udGV4dFN0YXRlPFQsIFBULCBELCBQRD4ge31cblxuLyoqXG4gKiBBYnN0cmFjdCBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZSB0aGF0IGhhcyBhIHBhcmVudCBkb2N1bWVudCBmcm9tIHdoaWNoIGlzIGRlcml2ZXMgaXQncyBGaXJlc2Jhc2VDb2xsZWN0aW9uIGZyb20uXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBYnN0cmFjdERieEZpcmViYXNlQ29sbGVjdGlvbldpdGhQYXJlbnRTdG9yZTxULCBQVCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4sIFBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8UFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8UFQ+LCBDIGV4dGVuZHMgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uV2l0aFBhcmVudFN0b3JlQ29udGV4dFN0YXRlPFQsIFBULCBELCBQRD4gPSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25XaXRoUGFyZW50U3RvcmVDb250ZXh0U3RhdGU8VCwgUFQsIEQsIFBEPj5cbiAgZXh0ZW5kcyBBYnN0cmFjdERieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlPFQsIEQsIEM+XG4gIGltcGxlbWVudHMgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uV2l0aFBhcmVudFN0b3JlPFQsIFBULCBELCBQRD5cbntcbiAgLy8gTUFSSzogRWZmZWN0c1xuICByZWFkb25seSBzZXRQYXJlbnQ6IERieEZpcmViYXNlQ29tcG9uZW50U3RvcmVXaXRoUGFyZW50U2V0UGFyZW50RWZmZWN0RnVuY3Rpb248UEQ+ID0gc2V0UGFyZW50RWZmZWN0KHRoaXMpO1xuICByZWFkb25seSBzZXRQYXJlbnRTdG9yZTogRGJ4RmlyZWJhc2VDb21wb25lbnRTdG9yZVdpdGhQYXJlbnRTZXRQYXJlbnRTdG9yZUVmZmVjdEZ1bmN0aW9uPFBULCBQRD4gPSBzZXRQYXJlbnRTdG9yZUVmZmVjdCh0aGlzKTtcblxuICAvLyBNQVJLOiBBY2Nlc3NvcnNcbiAgcmVhZG9ubHkgY3VycmVudFBhcmVudCQ6IE9ic2VydmFibGU8TWF5YmU8UEQ+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LnBhcmVudCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHBhcmVudCQ6IE9ic2VydmFibGU8UEQ+ID0gdGhpcy5jdXJyZW50UGFyZW50JC5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRDb2xsZWN0aW9uRmFjdG9yeSQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbldpdGhQYXJlbnRGYWN0b3J5PFQsIFBULCBELCBQRD4+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmNvbGxlY3Rpb25GYWN0b3J5KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY29sbGVjdGlvbkZhY3RvcnkkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZUNvbGxlY3Rpb25XaXRoUGFyZW50RmFjdG9yeTxULCBQVCwgRCwgUEQ+PiA9IHRoaXMuY3VycmVudENvbGxlY3Rpb25GYWN0b3J5JC5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIC8vIE1BUks6IFN0YXRlIENoYW5nZXNcbiAgLyoqXG4gICAqIFNldHMgdGhlIGNvbGxlY3Rpb24gZmFjdG9yeSBmdW5jdGlvbiB0byB1c2UuXG4gICAqL1xuICByZWFkb25seSBzZXRDb2xsZWN0aW9uRmFjdG9yeSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGNvbGxlY3Rpb25GYWN0b3J5OiBGaXJlc3RvcmVDb2xsZWN0aW9uV2l0aFBhcmVudEZhY3Rvcnk8VCwgUFQsIEQsIFBEPikgPT4gKHsgLi4uc3RhdGUsIGNvbGxlY3Rpb25GYWN0b3J5IH0pKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgcGFyZW50IG9uIHRoZSBjdXJyZW50IHN0YXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgX3NldFBhcmVudERvY3VtZW50ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgcGFyZW50OiBNYXliZTxQRD4pID0+ICh7IC4uLnN0YXRlLCBwYXJlbnQgfSkpO1xufVxuIl19
68
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
69
+ type: Inject,
70
+ args: [null]
71
+ }, {
72
+ type: Optional
73
+ }] }, { type: undefined, decorators: [{
74
+ type: Inject,
75
+ args: [null]
76
+ }, {
77
+ type: Optional
78
+ }] }]; } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuc3ViY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL3N0b3JlL3N0b3JlLnN1YmNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBYyxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFnQixLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvRyxPQUFPLEVBQUUsa0NBQWtDLEVBQXNFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUksT0FBTyxFQUEyTSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQXFCM1E7O0dBRUc7QUFFSCxNQUFNLE9BQU8sNENBQWdULFNBQVEsa0NBQTJDO0lBQzlXLFlBQXNDLEtBQVEsRUFBNEIsaUJBQWlFO1FBQ3pJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUlmLGdCQUFnQjtRQUNQLG1CQUFjLEdBQTRFLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JILGtCQUFhLEdBQW1FLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUF1RSxFQUFFLEVBQUU7WUFDL0ssT0FBTyxLQUFLLENBQUMsSUFBSSxDQUNmLG9CQUFvQixFQUFFLEVBQ3RCLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUN0QixNQUFNLElBQUksR0FBRyxTQUFTLEVBQUUsV0FBVyxFQUFFLElBQUksUUFBUSxDQUFDLENBQUMseUJBQXlCO2dCQUU1RSxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUU7b0JBQ3BCLE9BQU8sSUFBSSxDQUFDLHVC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QyxDQUFDO0lBQ3BELENBQUM7O3lJQUpVLDRDQUE0QyxrQkFDbkMsSUFBSSw2QkFBZ0MsSUFBSTs2SUFEakQsNENBQTRDOzJGQUE1Qyw0Q0FBNEM7a0JBRHhELFVBQVU7OzBCQUVJLE1BQU07MkJBQUMsSUFBSTs7MEJBQUcsUUFBUTs7MEJBQWMsTUFBTTsyQkFBQyxJQUFJOzswQkFBRyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpbHRlck1heWJlLCBPYnNlcnZhYmxlT3JWYWx1ZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIFN1YnNjcmlwdGlvbiwgTkVWRVIsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaXJlc3RvcmVDb2xsZWN0aW9uR3JvdXAsIEZpcmVzdG9yZUNvbGxlY3Rpb25XaXRoUGFyZW50RmFjdG9yeSwgRmlyZXN0b3JlRG9jdW1lbnQgfSBmcm9tICdAZGVyZWVrYi9maXJlYmFzZSc7XG5pbXBvcnQgeyBBYnN0cmFjdERieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlLCBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZSwgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uU3RvcmVDb250ZXh0U3RhdGUgfSBmcm9tICcuL3N0b3JlLmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VDb21wb25lbnRTdG9yZVNldFBhcmVudEVmZmVjdEZ1bmN0aW9uLCBEYnhGaXJlYmFzZUNvbXBvbmVudFN0b3JlV2l0aFBhcmVudCwgRGJ4RmlyZWJhc2VDb21wb25lbnRTdG9yZVdpdGhQYXJlbnRDb250ZXh0U3RhdGUsIERieEZpcmViYXNlQ29tcG9uZW50U3RvcmVXaXRoUGFyZW50U2V0UGFyZW50U3RvcmVFZmZlY3RGdW5jdGlvbiwgc2V0UGFyZW50U3RvcmVFZmZlY3QgfSBmcm9tICcuL3N0b3JlLnN1YmNvbGxlY3Rpb24ucnhqcyc7XG5cbi8qKlxuICogV2hldGhlciBvciBub3QgdG8gbG9hZCB2YWx1ZXMgZnJvbSBhIHBhcmVudCBvciBhIGdyb3VwLlxuICovXG5leHBvcnQgdHlwZSBEYnhGaXJlYmFzZUNvbXBvbmVudFN0b3JlV2l0aFBhcmVudFNvdXJjZU1vZGUgPSAncGFyZW50JyB8ICdncm91cCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uV2l0aFBhcmVudFN0b3JlQ29udGV4dFN0YXRlPFQsIFBULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPiwgUEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxQVD4gPSBGaXJlc3RvcmVEb2N1bWVudDxQVD4+IGV4dGVuZHMgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uU3RvcmVDb250ZXh0U3RhdGU8VCwgRD4sIERieEZpcmViYXNlQ29tcG9uZW50U3RvcmVXaXRoUGFyZW50Q29udGV4dFN0YXRlPFQsIFBULCBELCBQRD4ge1xuICByZWFkb25seSBtb2RlPzogTWF5YmU8RGJ4RmlyZWJhc2VDb21wb25lbnRTdG9yZVdpdGhQYXJlbnRTb3VyY2VNb2RlPjtcbiAgcmVhZG9ubHkgY29sbGVjdGlvbkdyb3VwPzogTWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkdyb3VwPFQsIEQ+Pjtcbn1cblxuZXhwb3J0IHR5cGUgRGJ4RmlyZWJhc2VDb21wb25lbnRTdG9yZVdpdGhQYXJlbnRTZXRQYXJlbnRTb3VyY2VNb2RlRnVuY3Rpb24gPSAob2JzZXJ2YWJsZU9yVmFsdWU6IE9ic2VydmFibGVPclZhbHVlPE1heWJlPERieEZpcmViYXNlQ29tcG9uZW50U3RvcmVXaXRoUGFyZW50U291cmNlTW9kZT4+KSA9PiBTdWJzY3JpcHRpb247XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uV2l0aFBhcmVudFN0b3JlPFQsIFBULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPiwgUEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxQVD4gPSBGaXJlc3RvcmVEb2N1bWVudDxQVD4+IGV4dGVuZHMgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uU3RvcmU8VCwgRD4sIERieEZpcmViYXNlQ29tcG9uZW50U3RvcmVXaXRoUGFyZW50PFQsIFBULCBELCBQRD4ge1xuICByZWFkb25seSBzZXRTb3VyY2VNb2RlOiBEYnhGaXJlYmFzZUNvbXBvbmVudFN0b3JlV2l0aFBhcmVudFNldFBhcmVudFNvdXJjZU1vZGVGdW5jdGlvbjtcbiAgcmVhZG9ubHkgc2V0Q29sbGVjdGlvbkdyb3VwOiAob2JzZXJ2YWJsZU9yVmFsdWU6IEZpcmVzdG9yZUNvbGxlY3Rpb25Hcm91cDxULCBEPiB8IE9ic2VydmFibGU8RmlyZXN0b3JlQ29sbGVjdGlvbkdyb3VwPFQsIEQ+PikgPT4gU3Vic2NyaXB0aW9uO1xuICByZWFkb25seSBjdXJyZW50Q29sbGVjdGlvbkdyb3VwJDogT2JzZXJ2YWJsZTxNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uR3JvdXA8VCwgRD4+PjtcbiAgcmVhZG9ubHkgY29sbGVjdGlvbkdyb3VwJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVDb2xsZWN0aW9uR3JvdXA8VCwgRD4+O1xufVxuXG4vKipcbiAqIEFic3RyYWN0IERieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlIHRoYXQgaGFzIGEgcGFyZW50IGRvY3VtZW50IGZyb20gd2hpY2ggaXMgZGVyaXZlcyBpdCdzIEZpcmVzYmFzZUNvbGxlY3Rpb24gZnJvbS5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFic3RyYWN0RGJ4RmlyZWJhc2VDb2xsZWN0aW9uV2l0aFBhcmVudFN0b3JlPFQsIFBULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPiwgUEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxQVD4gPSBGaXJlc3RvcmVEb2N1bWVudDxQVD4sIEMgZXh0ZW5kcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25XaXRoUGFyZW50U3RvcmVDb250ZXh0U3RhdGU8VCwgUFQsIEQsIFBEPiA9IERieEZpcmViYXNlQ29sbGVjdGlvbldpdGhQYXJlbnRTdG9yZUNvbnRleHRTdGF0ZTxULCBQVCwgRCwgUEQ+PiBleHRlbmRzIEFic3RyYWN0RGJ4RmlyZWJhc2VDb2xsZWN0aW9uU3RvcmU8VCwgRCwgQz4gaW1wbGVtZW50cyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25XaXRoUGFyZW50U3RvcmU8VCwgUFQsIEQsIFBEPiB7XG4gIGNvbnN0cnVjdG9yKEBJbmplY3QobnVsbCkgQE9wdGlvbmFsKCkgc3RhdGU6IEMsIEBJbmplY3QobnVsbCkgQE9wdGlvbmFsKCkgZGVmYXVsdFNvdXJjZU1vZGU/OiBEYnhGaXJlYmFzZUNvbXBvbmVudFN0b3JlV2l0aFBhcmVudFNvdXJjZU1vZGUpIHtcbiAgICBzdXBlcihzdGF0ZSk7XG4gICAgdGhpcy5zZXRTb3VyY2VNb2RlKGRlZmF1bHRTb3VyY2VNb2RlIHx8ICdwYXJlbnQnKTtcbiAgfVxuXG4gIC8vIE1BUks6IEVmZmVjdHNcbiAgcmVhZG9ubHkgc2V0UGFyZW50U3RvcmU6IERieEZpcmViYXNlQ29tcG9uZW50U3RvcmVXaXRoUGFyZW50U2V0UGFyZW50U3RvcmVFZmZlY3RGdW5jdGlvbjxQVCwgUEQ+ID0gc2V0UGFyZW50U3RvcmVFZmZlY3QodGhpcyk7XG4gIHJlYWRvbmx5IHNldFNvdXJjZU1vZGU6IERieEZpcmViYXNlQ29tcG9uZW50U3RvcmVXaXRoUGFyZW50U2V0UGFyZW50U291cmNlTW9kZUZ1bmN0aW9uID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1heWJlPERieEZpcmViYXNlQ29tcG9uZW50U3RvcmVXaXRoUGFyZW50U291cmNlTW9kZT4+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgc3dpdGNoTWFwKChpbnB1dE1vZGUpID0+IHtcbiAgICAgICAgY29uc3QgbW9kZSA9IGlucHV0TW9kZT8udG9Mb3dlckNhc2UoKSA/PyAncGFyZW50JzsgLy8gZGVmYXVsdCB0byBwYXJlbnQgbW9kZVxuXG4gICAgICAgIGlmIChtb2RlID09PSAnZ3JvdXAnKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudENvbGxlY3Rpb25Hcm91cCQucGlwZShcbiAgICAgICAgICAgIHRhcCgoY29sbGVjdGlvbkdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0RmlyZXN0b3JlQ29sbGVjdGlvbihjb2xsZWN0aW9uR3JvdXApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHBhcmVudCBkb2N1bWVudCBjb2xsZWN0aW9uXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFBhcmVudCQucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgocGFyZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uRmFjdG9yeSQucGlwZShcbiAgICAgICAgICAgICAgICAgIHRhcCgoY29sbGVjdGlvbkZhY3RvcnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IGNvbGxlY3Rpb25GYWN0b3J5KHBhcmVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RmlyZXN0b3JlQ29sbGVjdGlvbihjb2xsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZpcmVzdG9yZUNvbGxlY3Rpb24odW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gTkVWRVI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICAvLyBNQVJLOiBBY2Nlc3NvcnNcbiAgcmVhZG9ubHkgY3VycmVudFBhcmVudCQ6IE9ic2VydmFibGU8TWF5YmU8UEQ+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LnBhcmVudCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHBhcmVudCQ6IE9ic2VydmFibGU8UEQ+ID0gdGhpcy5jdXJyZW50UGFyZW50JC5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRDb2xsZWN0aW9uRmFjdG9yeSQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbldpdGhQYXJlbnRGYWN0b3J5PFQsIFBULCBELCBQRD4+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmNvbGxlY3Rpb25GYWN0b3J5KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY29sbGVjdGlvbkZhY3RvcnkkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZUNvbGxlY3Rpb25XaXRoUGFyZW50RmFjdG9yeTxULCBQVCwgRCwgUEQ+PiA9IHRoaXMuY3VycmVudENvbGxlY3Rpb25GYWN0b3J5JC5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRDb2xsZWN0aW9uR3JvdXAkOiBPYnNlcnZhYmxlPE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25Hcm91cDxULCBEPj4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHguY29sbGVjdGlvbkdyb3VwKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY29sbGVjdGlvbkdyb3VwJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVDb2xsZWN0aW9uR3JvdXA8VCwgRD4+ID0gdGhpcy5jdXJyZW50Q29sbGVjdGlvbkdyb3VwJC5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIC8vIE1BUks6IFN0YXRlIENoYW5nZXNcbiAgLyoqXG4gICAqIFNldHMgdGhlIGNvbGxlY3Rpb24gZmFjdG9yeSBmdW5jdGlvbiB0byB1c2UuXG4gICAqL1xuICByZWFkb25seSBzZXRDb2xsZWN0aW9uRmFjdG9yeSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGNvbGxlY3Rpb25GYWN0b3J5OiBGaXJlc3RvcmVDb2xsZWN0aW9uV2l0aFBhcmVudEZhY3Rvcnk8VCwgUFQsIEQsIFBEPikgPT4gKHsgLi4uc3RhdGUsIGNvbGxlY3Rpb25GYWN0b3J5IH0pKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgY29sbGVjdGlvbiBncm91cCB0byB1c2UuXG4gICAqL1xuICByZWFkb25seSBzZXRDb2xsZWN0aW9uR3JvdXAgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBjb2xsZWN0aW9uR3JvdXA6IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25Hcm91cDxULCBEPj4pID0+ICh7IC4uLnN0YXRlLCBjb2xsZWN0aW9uR3JvdXAgfSkpIGFzIChvYnNlcnZhYmxlT3JWYWx1ZTogTWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkdyb3VwPFQsIEQ+PiB8IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkdyb3VwPFQsIEQ+Pj4pID0+IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogU2V0cyB0aGUgcGFyZW50IG9uIHRoZSBjdXJyZW50IHN0YXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgX3NldFBhcmVudERvY3VtZW50ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgcGFyZW50OiBNYXliZTxQRD4pID0+ICh7IC4uLnN0YXRlLCBwYXJlbnQgfSkpO1xuICByZWFkb25seSBfc2V0UGFyZW50ID0gdGhpcy5fc2V0UGFyZW50RG9jdW1lbnQgYXMgRGJ4RmlyZWJhc2VDb21wb25lbnRTdG9yZVNldFBhcmVudEVmZmVjdEZ1bmN0aW9uPFBEPjtcbn1cbiJdfQ==
@@ -1,11 +1,11 @@
1
1
  import { cleanup } from '@dereekb/rxjs';
2
- import { map, NEVER, switchMap, tap } from 'rxjs';
2
+ import { map } from 'rxjs';
3
3
  export function setParentStoreEffect(store) {
4
4
  return store.effect((input) => {
5
5
  return input.pipe(map((parentStore) => {
6
6
  let result;
7
7
  if (parentStore) {
8
- result = store.setParent(parentStore.currentDocument$);
8
+ result = store._setParent(parentStore.currentDocument$);
9
9
  }
10
10
  else {
11
11
  result = undefined;
@@ -20,23 +20,4 @@ export function setParentStoreEffect(store) {
20
20
  }));
21
21
  });
22
22
  }
23
- export function setParentEffect(store) {
24
- return store.effect((input) => {
25
- return input.pipe(switchMap((parent) => {
26
- store._setParentDocument(parent);
27
- if (parent) {
28
- return store.collectionFactory$.pipe(tap((collectionFactory) => {
29
- const collection = collectionFactory(parent);
30
- store.setFirestoreCollection(collection);
31
- }));
32
- }
33
- else {
34
- // clear the current collection
35
- store.setFirestoreCollection(undefined);
36
- // do nothing until a parent is returned.
37
- return NEVER;
38
- }
39
- }));
40
- });
41
- }
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuc3ViY29sbGVjdGlvbi5yeGpzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvc3RvcmUvc3RvcmUuc3ViY29sbGVjdGlvbi5yeGpzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRzNELE9BQU8sRUFBRSxHQUFHLEVBQTRCLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBb0I1RSxNQUFNLFVBQVUsb0JBQW9CLENBQXlILEtBQXdEO0lBQ25OLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQTBELEVBQUUsRUFBRTtRQUNqRixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQ2YsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDbEIsSUFBSSxNQUEyQixDQUFDO1lBRWhDLElBQUksV0FBVyxFQUFFO2dCQUNmLE1BQU0sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBaUIsQ0FBQzthQUN4RTtpQkFBTTtnQkFDTCxNQUFNLEdBQUcsU0FBUyxDQUFDO2FBQ3BCO1lBRUQsaUNBQWlDO1lBQ2pDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUVwQyxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsRUFDRixPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNkLElBQUksR0FBRyxFQUFFO2dCQUNQLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNuQjtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUF5SCxLQUF3RDtJQUM5TSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUE0QixFQUFFLEVBQUU7UUFDbkQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUNmLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ25CLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVqQyxJQUFJLE1BQU0sRUFBRTtnQkFDVixPQUFPLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQ2xDLEdBQUcsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEVBQUU7b0JBQ3hCLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUM3QyxLQUFLLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzNDLENBQUMsQ0FBQyxDQUNILENBQUM7YUFDSDtpQkFBTTtnQkFDTCwrQkFBK0I7Z0JBQy9CLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFFeEMseUNBQXlDO2dCQUN6QyxPQUFPLEtBQUssQ0FBQzthQUNkO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2tTZXRDb21wb25lbnRTdG9yZSB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IEZpcmVzdG9yZUNvbGxlY3Rpb24sIEZpcmVzdG9yZUNvbGxlY3Rpb25XaXRoUGFyZW50RmFjdG9yeSwgRmlyZXN0b3JlRG9jdW1lbnQgfSBmcm9tICdAZGVyZWVrYi9maXJlYmFzZSc7XG5pbXBvcnQgeyBjbGVhbnVwLCBPYnNlcnZhYmxlT3JWYWx1ZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IENvbXBvbmVudFN0b3JlIH0gZnJvbSAnQG5ncngvY29tcG9uZW50LXN0b3JlJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBORVZFUiwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERieEZpcmViYXNlRG9jdW1lbnRTdG9yZSB9IGZyb20gJy4vc3RvcmUuZG9jdW1lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlQ29tcG9uZW50U3RvcmVXaXRoUGFyZW50Q29udGV4dFN0YXRlPFQsIFBULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPiwgUEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxQVD4gPSBGaXJlc3RvcmVEb2N1bWVudDxQVD4+IHtcbiAgcmVhZG9ubHkgcGFyZW50PzogTWF5YmU8UEQ+O1xuICByZWFkb25seSBjb2xsZWN0aW9uRmFjdG9yeT86IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25XaXRoUGFyZW50RmFjdG9yeTxULCBQVCwgRCwgUEQ+Pjtcbn1cblxuZXhwb3J0IHR5cGUgRGJ4RmlyZWJhc2VDb21wb25lbnRTdG9yZVdpdGhQYXJlbnRTZXRQYXJlbnRFZmZlY3RGdW5jdGlvbjxQRD4gPSAob2JzZXJ2YWJsZU9yVmFsdWU6IE9ic2VydmFibGVPclZhbHVlPE1heWJlPFBEPj4pID0+IFN1YnNjcmlwdGlvbjtcbmV4cG9ydCB0eXBlIERieEZpcmViYXNlQ29tcG9uZW50U3RvcmVXaXRoUGFyZW50U2V0UGFyZW50U3RvcmVFZmZlY3RGdW5jdGlvbjxQVCwgUEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxQVD4gPSBGaXJlc3RvcmVEb2N1bWVudDxQVD4+ID0gKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxEYnhGaXJlYmFzZURvY3VtZW50U3RvcmU8UFQsIFBEPj4pID0+IFN1YnNjcmlwdGlvbjtcblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZUNvbXBvbmVudFN0b3JlV2l0aFBhcmVudDxULCBQVCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4sIFBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8UFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8UFQ+PiBleHRlbmRzIExvY2tTZXRDb21wb25lbnRTdG9yZTxvYmplY3Q+LCBQaWNrPENvbXBvbmVudFN0b3JlPERieEZpcmViYXNlQ29tcG9uZW50U3RvcmVXaXRoUGFyZW50Q29udGV4dFN0YXRlPFQsIFBULCBELCBQRD4+LCAnZWZmZWN0Jz4ge1xuICByZWFkb25seSBjdXJyZW50UGFyZW50JDogT2JzZXJ2YWJsZTxNYXliZTxQRD4+O1xuICByZWFkb25seSBwYXJlbnQkOiBPYnNlcnZhYmxlPFBEPjtcbiAgcmVhZG9ubHkgY29sbGVjdGlvbkZhY3RvcnkkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZUNvbGxlY3Rpb25XaXRoUGFyZW50RmFjdG9yeTxULCBQVCwgRCwgUEQ+PjtcbiAgcmVhZG9ubHkgc2V0UGFyZW50OiBEYnhGaXJlYmFzZUNvbXBvbmVudFN0b3JlV2l0aFBhcmVudFNldFBhcmVudEVmZmVjdEZ1bmN0aW9uPFBEPjtcbiAgcmVhZG9ubHkgX3NldFBhcmVudERvY3VtZW50OiAoKCkgPT4gdm9pZCkgfCAoKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxQRD4+KSA9PiBTdWJzY3JpcHRpb24pO1xuICByZWFkb25seSBzZXRGaXJlc3RvcmVDb2xsZWN0aW9uOiAoKCkgPT4gdm9pZCkgfCAoKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+Pj4pID0+IFN1YnNjcmlwdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRQYXJlbnRTdG9yZUVmZmVjdDxULCBQVCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4sIFBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8UFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8UFQ+PihzdG9yZTogRGJ4RmlyZWJhc2VDb21wb25lbnRTdG9yZVdpdGhQYXJlbnQ8VCwgUFQsIEQsIFBEPik6IERieEZpcmViYXNlQ29tcG9uZW50U3RvcmVXaXRoUGFyZW50U2V0UGFyZW50U3RvcmVFZmZlY3RGdW5jdGlvbjxQVCwgUEQ+IHtcbiAgcmV0dXJuIHN0b3JlLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8TWF5YmU8RGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlPFBULCBQRD4+PikgPT4ge1xuICAgIHJldHVybiBpbnB1dC5waXBlKFxuICAgICAgbWFwKChwYXJlbnRTdG9yZSkgPT4ge1xuICAgICAgICBsZXQgcmVzdWx0OiBNYXliZTxTdWJzY3JpcHRpb24+O1xuXG4gICAgICAgIGlmIChwYXJlbnRTdG9yZSkge1xuICAgICAgICAgIHJlc3VsdCA9IHN0b3JlLnNldFBhcmVudChwYXJlbnRTdG9yZS5jdXJyZW50RG9jdW1lbnQkKSBhcyBTdWJzY3JpcHRpb247XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2V0IGFzIHRoZSBwYXJlbnQgbG9jayBzZXQgdG9vXG4gICAgICAgIHN0b3JlLnNldFBhcmVudExvY2tTZXQocGFyZW50U3RvcmUpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KSxcbiAgICAgIGNsZWFudXAoKHN1YikgPT4ge1xuICAgICAgICBpZiAoc3ViKSB7XG4gICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRQYXJlbnRFZmZlY3Q8VCwgUFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+LCBQRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFBUPiA9IEZpcmVzdG9yZURvY3VtZW50PFBUPj4oc3RvcmU6IERieEZpcmViYXNlQ29tcG9uZW50U3RvcmVXaXRoUGFyZW50PFQsIFBULCBELCBQRD4pOiBEYnhGaXJlYmFzZUNvbXBvbmVudFN0b3JlV2l0aFBhcmVudFNldFBhcmVudEVmZmVjdEZ1bmN0aW9uPFBEPiB7XG4gIHJldHVybiBzdG9yZS5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1heWJlPFBEPj4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgocGFyZW50KSA9PiB7XG4gICAgICAgIHN0b3JlLl9zZXRQYXJlbnREb2N1bWVudChwYXJlbnQpO1xuXG4gICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICByZXR1cm4gc3RvcmUuY29sbGVjdGlvbkZhY3RvcnkkLnBpcGUoXG4gICAgICAgICAgICB0YXAoKGNvbGxlY3Rpb25GYWN0b3J5KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBjb2xsZWN0aW9uRmFjdG9yeShwYXJlbnQpO1xuICAgICAgICAgICAgICBzdG9yZS5zZXRGaXJlc3RvcmVDb2xsZWN0aW9uKGNvbGxlY3Rpb24pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGNsZWFyIHRoZSBjdXJyZW50IGNvbGxlY3Rpb25cbiAgICAgICAgICBzdG9yZS5zZXRGaXJlc3RvcmVDb2xsZWN0aW9uKHVuZGVmaW5lZCk7XG5cbiAgICAgICAgICAvLyBkbyBub3RoaW5nIHVudGlsIGEgcGFyZW50IGlzIHJldHVybmVkLlxuICAgICAgICAgIHJldHVybiBORVZFUjtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9KTtcbn1cbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuc3ViY29sbGVjdGlvbi5yeGpzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvc3RvcmUvc3RvcmUuc3ViY29sbGVjdGlvbi5yeGpzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRzNELE9BQU8sRUFBRSxHQUFHLEVBQW1ELE1BQU0sTUFBTSxDQUFDO0FBc0I1RSxNQUFNLFVBQVUsb0JBQW9CLENBQWtNLEtBQTJEO0lBQy9SLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQTBELEVBQUUsRUFBRTtRQUNqRixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQ2YsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDbEIsSUFBSSxNQUEyQixDQUFDO1lBRWhDLElBQUksV0FBVyxFQUFFO2dCQUNmLE1BQU0sR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBaUIsQ0FBQzthQUN6RTtpQkFBTTtnQkFDTCxNQUFNLEdBQUcsU0FBUyxDQUFDO2FBQ3BCO1lBRUQsaUNBQWlDO1lBQ2pDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUVwQyxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsRUFDRixPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNkLElBQUksR0FBRyxFQUFFO2dCQUNQLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNuQjtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NrU2V0Q29tcG9uZW50U3RvcmUgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBGaXJlc3RvcmVDb2xsZWN0aW9uR3JvdXAsIEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlLCBGaXJlc3RvcmVDb2xsZWN0aW9uV2l0aFBhcmVudEZhY3RvcnksIEZpcmVzdG9yZURvY3VtZW50IH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgY2xlYW51cCwgT2JzZXJ2YWJsZU9yVmFsdWUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBDb21wb25lbnRTdG9yZSB9IGZyb20gJ0BuZ3J4L2NvbXBvbmVudC1zdG9yZSc7XG5pbXBvcnQgeyBtYXAsIE5FVkVSLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmUgfSBmcm9tICcuL3N0b3JlLmRvY3VtZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZUNvbXBvbmVudFN0b3JlV2l0aFBhcmVudENvbnRleHRTdGF0ZTxULCBQVCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4sIFBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8UFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8UFQ+PiB7XG4gIHJlYWRvbmx5IHBhcmVudD86IE1heWJlPFBEPjtcbiAgcmVhZG9ubHkgY29sbGVjdGlvbkZhY3Rvcnk/OiBNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uV2l0aFBhcmVudEZhY3Rvcnk8VCwgUFQsIEQsIFBEPj47XG59XG5cbmV4cG9ydCB0eXBlIERieEZpcmViYXNlQ29tcG9uZW50U3RvcmVTZXRQYXJlbnRFZmZlY3RGdW5jdGlvbjxQRD4gPSAocGFyZW50OiBPYnNlcnZhYmxlPE1heWJlPFBEPj4pID0+IFN1YnNjcmlwdGlvbjtcbmV4cG9ydCB0eXBlIERieEZpcmViYXNlQ29tcG9uZW50U3RvcmVXaXRoUGFyZW50U2V0UGFyZW50RWZmZWN0RnVuY3Rpb248UEQ+ID0gKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxQRD4+KSA9PiBTdWJzY3JpcHRpb247XG5leHBvcnQgdHlwZSBEYnhGaXJlYmFzZUNvbXBvbmVudFN0b3JlV2l0aFBhcmVudFNldFBhcmVudFN0b3JlRWZmZWN0RnVuY3Rpb248UFQsIFBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8UFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8UFQ+PiA9IChvYnNlcnZhYmxlT3JWYWx1ZTogT2JzZXJ2YWJsZU9yVmFsdWU8RGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlPFBULCBQRD4+KSA9PiBTdWJzY3JpcHRpb247XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VDb21wb25lbnRTdG9yZVdpdGhQYXJlbnQ8VCwgUFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+LCBQRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFBUPiA9IEZpcmVzdG9yZURvY3VtZW50PFBUPiwgQSBleHRlbmRzIEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+ID0gRmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+IGV4dGVuZHMgTG9ja1NldENvbXBvbmVudFN0b3JlPG9iamVjdD4sIFBpY2s8Q29tcG9uZW50U3RvcmU8RGJ4RmlyZWJhc2VDb21wb25lbnRTdG9yZVdpdGhQYXJlbnRDb250ZXh0U3RhdGU8VCwgUFQsIEQsIFBEPj4sICdlZmZlY3QnPiB7XG4gIHJlYWRvbmx5IGN1cnJlbnRQYXJlbnQkOiBPYnNlcnZhYmxlPE1heWJlPFBEPj47XG4gIHJlYWRvbmx5IHBhcmVudCQ6IE9ic2VydmFibGU8UEQ+O1xuICByZWFkb25seSBjdXJyZW50Q29sbGVjdGlvbkZhY3RvcnkkOiBPYnNlcnZhYmxlPE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25XaXRoUGFyZW50RmFjdG9yeTxULCBQVCwgRCwgUEQ+Pj47XG4gIHJlYWRvbmx5IGNvbGxlY3Rpb25GYWN0b3J5JDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVDb2xsZWN0aW9uV2l0aFBhcmVudEZhY3Rvcnk8VCwgUFQsIEQsIFBEPj47XG4gIHJlYWRvbmx5IF9zZXRQYXJlbnQ6IERieEZpcmViYXNlQ29tcG9uZW50U3RvcmVTZXRQYXJlbnRFZmZlY3RGdW5jdGlvbjxQRD47XG4gIHJlYWRvbmx5IF9zZXRQYXJlbnREb2N1bWVudDogKCgpID0+IHZvaWQpIHwgKChvYnNlcnZhYmxlT3JWYWx1ZTogT2JzZXJ2YWJsZU9yVmFsdWU8TWF5YmU8UEQ+PikgPT4gU3Vic2NyaXB0aW9uKTtcbiAgcmVhZG9ubHkgc2V0RmlyZXN0b3JlQ29sbGVjdGlvbjogKCgpID0+IHZvaWQpIHwgKChvYnNlcnZhYmxlT3JWYWx1ZTogT2JzZXJ2YWJsZU9yVmFsdWU8TWF5YmU8QT4+KSA9PiBTdWJzY3JpcHRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0UGFyZW50U3RvcmVFZmZlY3Q8VCwgUFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+LCBQRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFBUPiA9IEZpcmVzdG9yZURvY3VtZW50PFBUPiwgQSBleHRlbmRzIEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+ID0gRmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+KHN0b3JlOiBEYnhGaXJlYmFzZUNvbXBvbmVudFN0b3JlV2l0aFBhcmVudDxULCBQVCwgRCwgUEQsIEE+KTogRGJ4RmlyZWJhc2VDb21wb25lbnRTdG9yZVdpdGhQYXJlbnRTZXRQYXJlbnRTdG9yZUVmZmVjdEZ1bmN0aW9uPFBULCBQRD4ge1xuICByZXR1cm4gc3RvcmUuZWZmZWN0KChpbnB1dDogT2JzZXJ2YWJsZTxNYXliZTxEYnhGaXJlYmFzZURvY3VtZW50U3RvcmU8UFQsIFBEPj4+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBtYXAoKHBhcmVudFN0b3JlKSA9PiB7XG4gICAgICAgIGxldCByZXN1bHQ6IE1heWJlPFN1YnNjcmlwdGlvbj47XG5cbiAgICAgICAgaWYgKHBhcmVudFN0b3JlKSB7XG4gICAgICAgICAgcmVzdWx0ID0gc3RvcmUuX3NldFBhcmVudChwYXJlbnRTdG9yZS5jdXJyZW50RG9jdW1lbnQkKSBhcyBTdWJzY3JpcHRpb247XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2V0IGFzIHRoZSBwYXJlbnQgbG9jayBzZXQgdG9vXG4gICAgICAgIHN0b3JlLnNldFBhcmVudExvY2tTZXQocGFyZW50U3RvcmUpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KSxcbiAgICAgIGNsZWFudXAoKHN1YikgPT4ge1xuICAgICAgICBpZiAoc3ViKSB7XG4gICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG59XG4iXX0=
@@ -58,8 +58,8 @@ class DbxFirebaseAppCheckHttpInterceptor {
58
58
  if (appCheck != null) {
59
59
  routes = ((_b = (_a = this.dbxFirebaseOptions.appCheck) === null || _a === void 0 ? void 0 : _a.appCheckRoutes) !== null && _b !== void 0 ? _b : ['/api/*']).map((route) => {
60
60
  const wildcardIndex = route.indexOf('*');
61
- const isWildcard = (wildcardIndex === route.length - 1);
62
- const match = (isWildcard) ? route.substring(0, wildcardIndex) : route;
61
+ const isWildcard = wildcardIndex === route.length - 1;
62
+ const match = isWildcard ? route.substring(0, wildcardIndex) : route;
63
63
  return {
64
64
  isWildcard,
65
65
  match
@@ -107,7 +107,7 @@ class DbxFirebaseAppCheckHttpInterceptor {
107
107
  return url === enabledRoute.match;
108
108
  }
109
109
  }
110
- return from(this._appCheckRoutes).pipe(first((route) => isEnabledRouteMatch(route), false), map(x => Boolean(x)));
110
+ return from(this._appCheckRoutes).pipe(first((route) => isEnabledRouteMatch(route), false), map((x) => Boolean(x)));
111
111
  }
112
112
  }
113
113
  DbxFirebaseAppCheckHttpInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseAppCheckHttpInterceptor, deps: [{ token: DBX_FIREBASE_OPTIONS_TOKEN }, { token: i1.AppCheck }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -2331,7 +2331,7 @@ function setParentStoreEffect(store) {
2331
2331
  return input.pipe(map((parentStore) => {
2332
2332
  let result;
2333
2333
  if (parentStore) {
2334
- result = store.setParent(parentStore.currentDocument$);
2334
+ result = store._setParent(parentStore.currentDocument$);
2335
2335
  }
2336
2336
  else {
2337
2337
  result = undefined;
@@ -2346,56 +2346,82 @@ function setParentStoreEffect(store) {
2346
2346
  }));
2347
2347
  });
2348
2348
  }
2349
- function setParentEffect(store) {
2350
- return store.effect((input) => {
2351
- return input.pipe(switchMap((parent) => {
2352
- store._setParentDocument(parent);
2353
- if (parent) {
2354
- return store.collectionFactory$.pipe(tap((collectionFactory) => {
2355
- const collection = collectionFactory(parent);
2356
- store.setFirestoreCollection(collection);
2357
- }));
2358
- }
2359
- else {
2360
- // clear the current collection
2361
- store.setFirestoreCollection(undefined);
2362
- // do nothing until a parent is returned.
2363
- return NEVER;
2364
- }
2365
- }));
2366
- });
2367
- }
2368
2349
 
2369
2350
  /**
2370
2351
  * Abstract DbxFirebaseCollectionStore that has a parent document from which is derives it's FiresbaseCollection from.
2371
2352
  */
2372
2353
  class AbstractDbxFirebaseCollectionWithParentStore extends AbstractDbxFirebaseCollectionStore {
2373
- constructor() {
2374
- super(...arguments);
2354
+ constructor(state, defaultSourceMode) {
2355
+ super(state);
2375
2356
  // MARK: Effects
2376
- this.setParent = setParentEffect(this);
2377
2357
  this.setParentStore = setParentStoreEffect(this);
2358
+ this.setSourceMode = this.effect((input) => {
2359
+ return input.pipe(distinctUntilChanged(), switchMap((inputMode) => {
2360
+ var _a;
2361
+ const mode = (_a = inputMode === null || inputMode === void 0 ? void 0 : inputMode.toLowerCase()) !== null && _a !== void 0 ? _a : 'parent'; // default to parent mode
2362
+ if (mode === 'group') {
2363
+ return this.currentCollectionGroup$.pipe(tap((collectionGroup) => {
2364
+ this.setFirestoreCollection(collectionGroup);
2365
+ }));
2366
+ }
2367
+ else {
2368
+ // parent document collection
2369
+ return this.currentParent$.pipe(switchMap((parent) => {
2370
+ if (parent) {
2371
+ return this.collectionFactory$.pipe(tap((collectionFactory) => {
2372
+ const collection = collectionFactory(parent);
2373
+ this.setFirestoreCollection(collection);
2374
+ }));
2375
+ }
2376
+ else {
2377
+ this.setFirestoreCollection(undefined);
2378
+ return NEVER;
2379
+ }
2380
+ }));
2381
+ }
2382
+ }));
2383
+ });
2378
2384
  // MARK: Accessors
2379
2385
  this.currentParent$ = this.state$.pipe(map((x) => x.parent), distinctUntilChanged(), shareReplay(1));
2380
2386
  this.parent$ = this.currentParent$.pipe(filterMaybe());
2381
2387
  this.currentCollectionFactory$ = this.state$.pipe(map((x) => x.collectionFactory), distinctUntilChanged(), shareReplay(1));
2382
2388
  this.collectionFactory$ = this.currentCollectionFactory$.pipe(filterMaybe());
2389
+ this.currentCollectionGroup$ = this.state$.pipe(map((x) => x.collectionGroup), distinctUntilChanged(), shareReplay(1));
2390
+ this.collectionGroup$ = this.currentCollectionGroup$.pipe(filterMaybe());
2383
2391
  // MARK: State Changes
2384
2392
  /**
2385
2393
  * Sets the collection factory function to use.
2386
2394
  */
2387
2395
  this.setCollectionFactory = this.updater((state, collectionFactory) => (Object.assign(Object.assign({}, state), { collectionFactory })));
2396
+ /**
2397
+ * Sets the collection group to use.
2398
+ */
2399
+ this.setCollectionGroup = this.updater((state, collectionGroup) => (Object.assign(Object.assign({}, state), { collectionGroup })));
2388
2400
  /**
2389
2401
  * Sets the parent on the current state.
2390
2402
  */
2391
2403
  this._setParentDocument = this.updater((state, parent) => (Object.assign(Object.assign({}, state), { parent })));
2404
+ this._setParent = this._setParentDocument;
2405
+ this.setSourceMode(defaultSourceMode || 'parent');
2392
2406
  }
2393
2407
  }
2394
- AbstractDbxFirebaseCollectionWithParentStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AbstractDbxFirebaseCollectionWithParentStore, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2408
+ AbstractDbxFirebaseCollectionWithParentStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AbstractDbxFirebaseCollectionWithParentStore, deps: [{ token: null, optional: true }, { token: null, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
2395
2409
  AbstractDbxFirebaseCollectionWithParentStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AbstractDbxFirebaseCollectionWithParentStore });
2396
2410
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AbstractDbxFirebaseCollectionWithParentStore, decorators: [{
2397
2411
  type: Injectable
2398
- }] });
2412
+ }], ctorParameters: function () {
2413
+ return [{ type: undefined, decorators: [{
2414
+ type: Inject,
2415
+ args: [null]
2416
+ }, {
2417
+ type: Optional
2418
+ }] }, { type: undefined, decorators: [{
2419
+ type: Inject,
2420
+ args: [null]
2421
+ }, {
2422
+ type: Optional
2423
+ }] }];
2424
+ } });
2399
2425
 
2400
2426
  /**
2401
2427
  * Abstract DbxFirebaseDocumentStore that has a parent document from which is derives it's FiresbaseCollection from.
@@ -2404,8 +2430,25 @@ class AbstractDbxFirebaseDocumentWithParentStore extends AbstractDbxFirebaseDocu
2404
2430
  constructor() {
2405
2431
  super(...arguments);
2406
2432
  // MARK: Effects
2407
- this.setParent = setParentEffect(this);
2408
2433
  this.setParentStore = setParentStoreEffect(this);
2434
+ this.setParent = this.effect((input) => {
2435
+ return input.pipe(switchMap((parent) => {
2436
+ this._setParentDocument(parent);
2437
+ if (parent) {
2438
+ return this.collectionFactory$.pipe(tap((collectionFactory) => {
2439
+ const collection = collectionFactory(parent);
2440
+ this.setFirestoreCollection(collection);
2441
+ }));
2442
+ }
2443
+ else {
2444
+ // clear the current collection
2445
+ this.setFirestoreCollection(undefined);
2446
+ // do nothing until a parent is returned.
2447
+ return NEVER;
2448
+ }
2449
+ }));
2450
+ });
2451
+ this._setParent = this.setParent;
2409
2452
  // MARK: Accessors
2410
2453
  this.currentParent$ = this.state$.pipe(map((x) => x.parent), distinctUntilChanged(), shareReplay(1));
2411
2454
  this.parent$ = this.currentParent$.pipe(filterMaybe());
@@ -2428,6 +2471,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
2428
2471
  type: Injectable
2429
2472
  }] });
2430
2473
 
2474
+ /**
2475
+ * Abstract directive that contains a DbxFirebaseCollectionWithParentStore and provides an interface for communicating with other directives.
2476
+ */
2477
+ class DbxFirebaseCollectionWithParentStoreDirective extends DbxFirebaseCollectionStoreDirective {
2478
+ // MARK: Inputs
2479
+ set sourceMode(sourceMode) {
2480
+ this.store.setSourceMode(sourceMode);
2481
+ }
2482
+ }
2483
+ DbxFirebaseCollectionWithParentStoreDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseCollectionWithParentStoreDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
2484
+ DbxFirebaseCollectionWithParentStoreDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.2", type: DbxFirebaseCollectionWithParentStoreDirective, inputs: { sourceMode: "sourceMode" }, usesInheritance: true, ngImport: i0 });
2485
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseCollectionWithParentStoreDirective, decorators: [{
2486
+ type: Directive
2487
+ }], propDecorators: { sourceMode: [{
2488
+ type: Input
2489
+ }] } });
2490
+ function provideDbxFirebaseCollectionWithParentStoreDirective(sourceType, storeType) {
2491
+ const providers = [
2492
+ ...provideDbxFirebaseCollectionStoreDirective(sourceType, storeType),
2493
+ {
2494
+ provide: DbxFirebaseCollectionWithParentStoreDirective,
2495
+ useExisting: forwardRef(() => sourceType)
2496
+ }
2497
+ ];
2498
+ return providers;
2499
+ }
2500
+
2431
2501
  class DbxFirebaseModelModule {
2432
2502
  }
2433
2503
  DbxFirebaseModelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseModelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -2456,5 +2526,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
2456
2526
  * Generated bundle index. Do not edit.
2457
2527
  */
2458
2528
 
2459
- export { AbstractConfiguredDbxFirebaseLoginButtonDirective, AbstractDbxFirebaseCollectionStore, AbstractDbxFirebaseCollectionWithParentStore, AbstractDbxFirebaseDocumentStore, AbstractDbxFirebaseDocumentWithParentStore, DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR, DBX_FIREBASE_OPTIONS_TOKEN, DBX_FIREBASE_ROUTER_SYNC_DEFAULT_ID_PARAM_KEY, DBX_FIRESTORE_CONTEXT_TOKEN, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE, DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE, 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_LOGIN_METHOD_CATEGORY, DbxFirebaseAppCheckHttpInterceptor, DbxFirebaseAuthLoginService, DbxFirebaseAuthModule, DbxFirebaseAuthService, DbxFirebaseAuthServiceDelegate, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionLoaderInstance, DbxFirebaseCollectionStoreDirective, DbxFirebaseDefaultAppCheckProviderModule, DbxFirebaseDefaultAuthProviderModule, DbxFirebaseDefaultFirebaseProvidersModule, DbxFirebaseDefaultFirestoreProviderModule, DbxFirebaseDefaultFunctionsProviderModule, DbxFirebaseDefaultStorageProviderModule, DbxFirebaseDocumentAuthIdDirective, DbxFirebaseDocumentStoreDirective, DbxFirebaseDocumentStoreRouteIdDirective, DbxFirebaseEmailFormComponent, DbxFirebaseEmailRecoveryFormComponent, DbxFirebaseEmulatorModule, DbxFirebaseFirestoreCollectionModule, DbxFirebaseFunctionsModule, DbxFirebaseLoginAnonymousComponent, DbxFirebaseLoginAppleComponent, DbxFirebaseLoginButtonComponent, DbxFirebaseLoginButtonContainerComponent, DbxFirebaseLoginComponent, DbxFirebaseLoginContext, DbxFirebaseLoginContextBackButtonComponent, DbxFirebaseLoginContextDirective, DbxFirebaseLoginEmailComponent, DbxFirebaseLoginEmailContentComponent, DbxFirebaseLoginFacebookComponent, DbxFirebaseLoginGitHubComponent, DbxFirebaseLoginGoogleComponent, DbxFirebaseLoginListComponent, DbxFirebaseLoginMicrosoftComponent, DbxFirebaseLoginModule, DbxFirebaseLoginModuleRootConfig, DbxFirebaseLoginTermsComponent, DbxFirebaseLoginTermsSimpleComponent, DbxFirebaseLoginTwitterComponent, DbxFirebaseModelModule, DbxFirebaseModelStoreModule, DbxFirebaseModule, DbxFirebaseParsedEmulatorsConfig, DbxFirebaseRegisterComponent, DbxFirebaseRegisterEmailComponent, DbxFirestoreContextService, FIREBASE_AUTH_NETWORK_REQUEST_ERROR, FIREBASE_AUTH_USER_NOT_FOUND_ERROR, OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY, authUserInfoFromAuthUser, authUserStateFromFirebaseAuthService, dbxFirebaseCollectionLoaderInstance, dbxFirebaseCollectionLoaderInstanceWithCollection, defaultFirebaseAuthLoginProvidersFactory, enableAppCheckDebugTokenGeneration, firebaseAuthErrorToReadableError, modelDoesNotExistError, provideDbxFirebaseCollectionStoreDirective, provideDbxFirebaseDocumentStoreDirective, readValueFromIdToken, setParentEffect, setParentStoreEffect };
2529
+ export { AbstractConfiguredDbxFirebaseLoginButtonDirective, AbstractDbxFirebaseCollectionStore, AbstractDbxFirebaseCollectionWithParentStore, AbstractDbxFirebaseDocumentStore, AbstractDbxFirebaseDocumentWithParentStore, DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR, DBX_FIREBASE_OPTIONS_TOKEN, DBX_FIREBASE_ROUTER_SYNC_DEFAULT_ID_PARAM_KEY, DBX_FIRESTORE_CONTEXT_TOKEN, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE, DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE, 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_LOGIN_METHOD_CATEGORY, DbxFirebaseAppCheckHttpInterceptor, DbxFirebaseAuthLoginService, DbxFirebaseAuthModule, DbxFirebaseAuthService, DbxFirebaseAuthServiceDelegate, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionLoaderInstance, DbxFirebaseCollectionStoreDirective, DbxFirebaseCollectionWithParentStoreDirective, DbxFirebaseDefaultAppCheckProviderModule, DbxFirebaseDefaultAuthProviderModule, DbxFirebaseDefaultFirebaseProvidersModule, DbxFirebaseDefaultFirestoreProviderModule, DbxFirebaseDefaultFunctionsProviderModule, DbxFirebaseDefaultStorageProviderModule, DbxFirebaseDocumentAuthIdDirective, DbxFirebaseDocumentStoreDirective, DbxFirebaseDocumentStoreRouteIdDirective, DbxFirebaseEmailFormComponent, DbxFirebaseEmailRecoveryFormComponent, DbxFirebaseEmulatorModule, DbxFirebaseFirestoreCollectionModule, DbxFirebaseFunctionsModule, DbxFirebaseLoginAnonymousComponent, DbxFirebaseLoginAppleComponent, DbxFirebaseLoginButtonComponent, DbxFirebaseLoginButtonContainerComponent, DbxFirebaseLoginComponent, DbxFirebaseLoginContext, DbxFirebaseLoginContextBackButtonComponent, DbxFirebaseLoginContextDirective, DbxFirebaseLoginEmailComponent, DbxFirebaseLoginEmailContentComponent, DbxFirebaseLoginFacebookComponent, DbxFirebaseLoginGitHubComponent, DbxFirebaseLoginGoogleComponent, DbxFirebaseLoginListComponent, DbxFirebaseLoginMicrosoftComponent, DbxFirebaseLoginModule, DbxFirebaseLoginModuleRootConfig, DbxFirebaseLoginTermsComponent, DbxFirebaseLoginTermsSimpleComponent, DbxFirebaseLoginTwitterComponent, DbxFirebaseModelModule, DbxFirebaseModelStoreModule, DbxFirebaseModule, DbxFirebaseParsedEmulatorsConfig, DbxFirebaseRegisterComponent, DbxFirebaseRegisterEmailComponent, DbxFirestoreContextService, FIREBASE_AUTH_NETWORK_REQUEST_ERROR, FIREBASE_AUTH_USER_NOT_FOUND_ERROR, OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY, authUserInfoFromAuthUser, authUserStateFromFirebaseAuthService, dbxFirebaseCollectionLoaderInstance, dbxFirebaseCollectionLoaderInstanceWithCollection, defaultFirebaseAuthLoginProvidersFactory, enableAppCheckDebugTokenGeneration, firebaseAuthErrorToReadableError, modelDoesNotExistError, provideDbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionWithParentStoreDirective, provideDbxFirebaseDocumentStoreDirective, readValueFromIdToken, setParentStoreEffect };
2460
2530
  //# sourceMappingURL=dereekb-dbx-firebase.mjs.map