@dereekb/dbx-firebase 2.1.0 → 3.0.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 (149) hide show
  1. package/_index.scss +18 -0
  2. package/esm2020/lib/auth/auth.mjs +10 -0
  3. package/esm2020/lib/auth/error.mjs +28 -0
  4. package/esm2020/lib/auth/firebase.auth.module.mjs +34 -0
  5. package/esm2020/lib/auth/index.mjs +6 -0
  6. package/esm2020/lib/auth/login/firebase.login.module.mjs +274 -0
  7. package/esm2020/lib/auth/login/index.mjs +26 -0
  8. package/esm2020/lib/auth/login/login.anonymous.component.mjs +22 -0
  9. package/esm2020/lib/auth/login/login.apple.component.mjs +22 -0
  10. package/esm2020/lib/auth/login/login.button.component.mjs +139 -0
  11. package/esm2020/lib/auth/login/login.component.mjs +43 -0
  12. package/esm2020/lib/auth/login/login.context.back.component.mjs +27 -0
  13. package/esm2020/lib/auth/login/login.context.directive.mjs +25 -0
  14. package/esm2020/lib/auth/login/login.context.mjs +7 -0
  15. package/esm2020/lib/auth/login/login.email.component.mjs +23 -0
  16. package/esm2020/lib/auth/login/login.email.content.component.mjs +105 -0
  17. package/esm2020/lib/auth/login/login.email.form.component.mjs +35 -0
  18. package/esm2020/lib/auth/login/login.email.recovery.form.component.mjs +21 -0
  19. package/esm2020/lib/auth/login/login.facebook.component.mjs +22 -0
  20. package/esm2020/lib/auth/login/login.github.component.mjs +22 -0
  21. package/esm2020/lib/auth/login/login.google.component.mjs +22 -0
  22. package/esm2020/lib/auth/login/login.list.component.mjs +87 -0
  23. package/esm2020/lib/auth/login/login.microsoft.component.mjs +22 -0
  24. package/esm2020/lib/auth/login/login.mjs +3 -0
  25. package/esm2020/lib/auth/login/login.password.mjs +4 -0
  26. package/esm2020/lib/auth/login/login.service.mjs +134 -0
  27. package/esm2020/lib/auth/login/login.terms.component.mjs +26 -0
  28. package/esm2020/lib/auth/login/login.terms.mjs +3 -0
  29. package/esm2020/lib/auth/login/login.terms.simple.component.mjs +39 -0
  30. package/esm2020/lib/auth/login/login.twitter.component.mjs +22 -0
  31. package/esm2020/lib/auth/login/register.component.mjs +24 -0
  32. package/esm2020/lib/auth/login/register.email.component.mjs +21 -0
  33. package/esm2020/lib/auth/service/firebase.auth.rxjs.mjs +39 -0
  34. package/esm2020/lib/auth/service/firebase.auth.service.mjs +99 -0
  35. package/esm2020/lib/auth/service/index.mjs +3 -0
  36. package/esm2020/lib/firebase/emulators.mjs +3 -0
  37. package/esm2020/lib/firebase/firebase.emulator.module.mjs +36 -0
  38. package/esm2020/lib/firebase/firebase.module.mjs +188 -0
  39. package/esm2020/lib/firebase/index.mjs +5 -0
  40. package/esm2020/lib/firebase/options.mjs +2 -0
  41. package/esm2020/lib/firestore/firebase.firestore.context.service.mjs +23 -0
  42. package/esm2020/lib/firestore/firebase.firestore.mjs +6 -0
  43. package/esm2020/lib/firestore/firebase.firestore.module.mjs +31 -0
  44. package/esm2020/lib/firestore/index.mjs +4 -0
  45. package/esm2020/lib/function/firebase.function.module.mjs +47 -0
  46. package/esm2020/lib/function/index.mjs +2 -0
  47. package/esm2020/lib/index.mjs +7 -2
  48. package/esm2020/lib/model/error.mjs +6 -0
  49. package/esm2020/lib/model/index.mjs +5 -0
  50. package/esm2020/lib/model/loader/collection.loader.instance.mjs +101 -0
  51. package/esm2020/lib/model/loader/collection.loader.mjs +2 -0
  52. package/esm2020/lib/model/loader/index.mjs +3 -0
  53. package/esm2020/lib/model/model.module.mjs +17 -0
  54. package/esm2020/lib/model/store/index.mjs +14 -0
  55. package/esm2020/lib/model/store/model.store.module.mjs +41 -0
  56. package/esm2020/lib/model/store/store.collection.change.directive.mjs +54 -0
  57. package/esm2020/lib/model/store/store.collection.change.if.directive.mjs +57 -0
  58. package/esm2020/lib/model/store/store.collection.directive.mjs +52 -0
  59. package/esm2020/lib/model/store/store.collection.list.directive.mjs +27 -0
  60. package/esm2020/lib/model/store/store.collection.mjs +50 -0
  61. package/esm2020/lib/model/store/store.document.auth.directive.mjs +33 -0
  62. package/esm2020/lib/model/store/store.document.directive.mjs +46 -0
  63. package/esm2020/lib/model/store/store.document.mjs +81 -0
  64. package/esm2020/lib/model/store/store.document.router.directive.mjs +53 -0
  65. package/esm2020/lib/model/store/store.subcollection.document.mjs +37 -0
  66. package/esm2020/lib/model/store/store.subcollection.mjs +37 -0
  67. package/esm2020/lib/model/store/store.subcollection.rxjs.mjs +42 -0
  68. package/esm2020/lib/module.mjs +17 -0
  69. package/fesm2015/dereekb-dbx-firebase.mjs +2266 -2
  70. package/fesm2015/dereekb-dbx-firebase.mjs.map +1 -1
  71. package/fesm2020/dereekb-dbx-firebase.mjs +2247 -2
  72. package/fesm2020/dereekb-dbx-firebase.mjs.map +1 -1
  73. package/lib/auth/auth.d.ts +4 -0
  74. package/lib/auth/error.d.ts +9 -0
  75. package/lib/auth/firebase.auth.module.d.ts +12 -0
  76. package/lib/auth/index.d.ts +5 -0
  77. package/lib/auth/login/_login.scss +72 -0
  78. package/lib/auth/login/firebase.login.module.d.ts +48 -0
  79. package/lib/auth/login/index.d.ts +25 -0
  80. package/lib/auth/login/login.anonymous.component.d.ts +8 -0
  81. package/lib/auth/login/login.apple.component.d.ts +8 -0
  82. package/lib/auth/login/login.button.component.d.ts +51 -0
  83. package/lib/auth/login/login.component.d.ts +14 -0
  84. package/lib/auth/login/login.context.back.component.d.ts +9 -0
  85. package/lib/auth/login/login.context.d.ts +6 -0
  86. package/lib/auth/login/login.context.directive.d.ts +10 -0
  87. package/lib/auth/login/login.d.ts +7 -0
  88. package/lib/auth/login/login.email.component.d.ts +8 -0
  89. package/lib/auth/login/login.email.content.component.d.ts +39 -0
  90. package/lib/auth/login/login.email.form.component.d.ts +21 -0
  91. package/lib/auth/login/login.email.recovery.form.component.d.ts +11 -0
  92. package/lib/auth/login/login.facebook.component.d.ts +8 -0
  93. package/lib/auth/login/login.github.component.d.ts +8 -0
  94. package/lib/auth/login/login.google.component.d.ts +8 -0
  95. package/lib/auth/login/login.list.component.d.ts +28 -0
  96. package/lib/auth/login/login.microsoft.component.d.ts +8 -0
  97. package/lib/auth/login/login.password.d.ts +4 -0
  98. package/lib/auth/login/login.service.d.ts +115 -0
  99. package/lib/auth/login/login.terms.component.d.ts +10 -0
  100. package/lib/auth/login/login.terms.d.ts +4 -0
  101. package/lib/auth/login/login.terms.simple.component.d.ts +11 -0
  102. package/lib/auth/login/login.twitter.component.d.ts +8 -0
  103. package/lib/auth/login/register.component.d.ts +13 -0
  104. package/lib/auth/login/register.email.component.d.ts +8 -0
  105. package/lib/auth/service/firebase.auth.rxjs.d.ts +21 -0
  106. package/lib/auth/service/firebase.auth.service.d.ts +49 -0
  107. package/lib/auth/service/index.d.ts +2 -0
  108. package/lib/firebase/emulators.d.ts +52 -0
  109. package/lib/firebase/firebase.emulator.module.d.ts +12 -0
  110. package/lib/firebase/firebase.module.d.ts +50 -0
  111. package/lib/firebase/index.d.ts +4 -0
  112. package/lib/firebase/options.d.ts +6 -0
  113. package/lib/firestore/firebase.firestore.context.service.d.ts +11 -0
  114. package/lib/firestore/firebase.firestore.d.ts +5 -0
  115. package/lib/firestore/firebase.firestore.module.d.ts +17 -0
  116. package/lib/firestore/index.d.ts +3 -0
  117. package/lib/function/firebase.function.module.d.ts +24 -0
  118. package/lib/function/index.d.ts +1 -0
  119. package/lib/index.d.ts +6 -1
  120. package/lib/model/error.d.ts +5 -0
  121. package/lib/model/index.d.ts +4 -0
  122. package/lib/model/loader/collection.loader.d.ts +38 -0
  123. package/lib/model/loader/collection.loader.instance.d.ts +52 -0
  124. package/lib/model/loader/index.d.ts +2 -0
  125. package/lib/model/model.module.d.ts +7 -0
  126. package/lib/model/store/index.d.ts +13 -0
  127. package/lib/model/store/model.store.module.d.ts +11 -0
  128. package/lib/model/store/store.collection.change.directive.d.ts +30 -0
  129. package/lib/model/store/store.collection.change.if.directive.d.ts +24 -0
  130. package/lib/model/store/store.collection.d.ts +47 -0
  131. package/lib/model/store/store.collection.directive.d.ts +30 -0
  132. package/lib/model/store/store.collection.list.directive.d.ts +13 -0
  133. package/lib/model/store/store.document.auth.directive.d.ts +19 -0
  134. package/lib/model/store/store.document.d.ts +69 -0
  135. package/lib/model/store/store.document.directive.d.ts +34 -0
  136. package/lib/model/store/store.document.router.directive.d.ts +25 -0
  137. package/lib/model/store/store.subcollection.d.ts +31 -0
  138. package/lib/model/store/store.subcollection.document.d.ts +31 -0
  139. package/lib/model/store/store.subcollection.rxjs.d.ts +23 -0
  140. package/lib/module.d.ts +7 -0
  141. package/lib/style/_all-core.scss +6 -0
  142. package/lib/style/_all-theme.scss +6 -0
  143. package/lib/style/_all-typography.scss +6 -0
  144. package/lib/style/_config.scss +20 -0
  145. package/lib/style/_core.scss +9 -0
  146. package/lib/style/_mixin.scss +3 -0
  147. package/lib/style/_theming.scss +19 -0
  148. package/lib/style/_variables.scss +1 -0
  149. package/package.json +21 -12
@@ -0,0 +1,101 @@
1
+ import { cleanupDestroyable, filterMaybe, useFirst, SubscriptionObject, accumulatorFlattenPageListLoadingState } from '@dereekb/rxjs';
2
+ import { BehaviorSubject, combineLatest, map, shareReplay, distinctUntilChanged, Subject, throttleTime, switchMap, tap, startWith, NEVER } from 'rxjs';
3
+ import { firebaseQueryItemAccumulator, iterationQueryDocChangeWatcher } from '@dereekb/firebase';
4
+ /**
5
+ * DbxFirebaseModelLoader implementation within an instance.
6
+ */
7
+ export class DbxFirebaseCollectionLoaderInstance {
8
+ constructor(_initConfig) {
9
+ this._initConfig = _initConfig;
10
+ this._collection = new BehaviorSubject(this._initConfig?.collection);
11
+ this._maxPages = new BehaviorSubject(this._initConfig?.maxPages);
12
+ this._itemsPerPage = new BehaviorSubject(this._initConfig?.itemsPerPage);
13
+ this._constraints = new BehaviorSubject(this._initConfig?.constraints);
14
+ this._restart = new Subject();
15
+ this._maxPagesSub = new SubscriptionObject();
16
+ this.collection$ = this._collection.pipe(distinctUntilChanged());
17
+ this.constraints$ = this._constraints.pipe(distinctUntilChanged());
18
+ this.iteratorFilter$ = combineLatest([
19
+ this._itemsPerPage.pipe(distinctUntilChanged()),
20
+ this.constraints$
21
+ ]).pipe(map(([limit, constraints]) => ({ limit, constraints, maxPageLoadLimit: this.maxPages })), shareReplay(1));
22
+ this.firestoreIteration$ = this.collection$.pipe(switchMap((collection) => {
23
+ if (collection) {
24
+ return combineLatest([this.iteratorFilter$, this._restart.pipe(startWith(undefined))]).pipe(throttleTime(100, undefined, { trailing: true }), // prevent rapid changes and executing filters too quickly.
25
+ map(([iteratorFilter]) => collection.firestoreIteration(iteratorFilter)), cleanupDestroyable(), // cleanup the iteration
26
+ shareReplay(1));
27
+ }
28
+ else {
29
+ return NEVER; // don't emit anything until collection is provided.
30
+ }
31
+ }), cleanupDestroyable(), // cleanup the iteration
32
+ shareReplay(1));
33
+ this.queryChangeWatcher$ = this.firestoreIteration$.pipe(map(instance => iterationQueryDocChangeWatcher({ instance })), shareReplay(1));
34
+ this.accumulator$ = this.firestoreIteration$.pipe(map(x => firebaseQueryItemAccumulator(x)), cleanupDestroyable(), shareReplay(1));
35
+ this.pageLoadingState$ = this.accumulator$.pipe(switchMap(x => accumulatorFlattenPageListLoadingState(x)), shareReplay(1));
36
+ }
37
+ init() {
38
+ // When max pages changes, update the iteration's max page limit.
39
+ this._maxPagesSub.subscription = this._maxPages.pipe(distinctUntilChanged(), filterMaybe(), // do not pass null/undefined values
40
+ switchMap((maxPageLoadLimit) => this.firestoreIteration$.pipe(tap((iteration) => {
41
+ iteration.maxPageLoadLimit = maxPageLoadLimit;
42
+ })))).subscribe();
43
+ }
44
+ destroy() {
45
+ this._maxPages.complete();
46
+ this._collection.complete();
47
+ this._constraints.complete();
48
+ this._itemsPerPage.complete();
49
+ this._restart.complete();
50
+ this._maxPagesSub.destroy();
51
+ }
52
+ // MARK: Inputs
53
+ get maxPages() {
54
+ return this._maxPages.value;
55
+ }
56
+ set maxPages(maxPages) {
57
+ if (this.maxPages != maxPages) {
58
+ this._maxPages.next(maxPages);
59
+ }
60
+ }
61
+ get itemsPerPage() {
62
+ return this._itemsPerPage.value;
63
+ }
64
+ set itemsPerPage(itemsPerPage) {
65
+ if (this.itemsPerPage != itemsPerPage) {
66
+ this._itemsPerPage.next(itemsPerPage);
67
+ }
68
+ }
69
+ get constraints() {
70
+ return this._constraints.value;
71
+ }
72
+ set constraints(constraints) {
73
+ this._constraints.next(constraints);
74
+ }
75
+ get collection() {
76
+ return this._collection.value;
77
+ }
78
+ set collection(collection) {
79
+ this._collection.next(collection);
80
+ }
81
+ // MARK: DbxFirebaseModelList
82
+ next() {
83
+ useFirst(this.firestoreIteration$, (x) => x.next());
84
+ }
85
+ restart() {
86
+ this._restart.next();
87
+ }
88
+ setConstraints(constraints) {
89
+ this.constraints = constraints;
90
+ }
91
+ setCollection(firestoreCollection) {
92
+ this.collection = firestoreCollection;
93
+ }
94
+ }
95
+ export function dbxFirebaseCollectionLoaderInstance(config) {
96
+ return new DbxFirebaseCollectionLoaderInstance(config);
97
+ }
98
+ export function dbxFirebaseCollectionLoaderInstanceWithCollection(collection) {
99
+ return new DbxFirebaseCollectionLoaderInstance({ collection });
100
+ }
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5sb2FkZXIuaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9sb2FkZXIvY29sbGVjdGlvbi5sb2FkZXIuaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QixrQkFBa0IsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLHNDQUFzQyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVKLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWMsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkssT0FBTyxFQUFnQyw0QkFBNEIsRUFBeUssOEJBQThCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWlCdFM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUNBQW1DO0lBdUQ5QyxZQUE2QixXQUFpRTtRQUFqRSxnQkFBVyxHQUFYLFdBQVcsQ0FBc0Q7UUFyRDNFLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQW1DLElBQUksQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFbEcsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFnQixJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzNFLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQWdCLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDbkYsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBbUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNwSCxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVqQyxpQkFBWSxHQUFHLElBQUks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QUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksVUFBVSxDQUFDLFVBQTRDO1FBQ3pELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCw2QkFBNkI7SUFDN0IsSUFBSTtRQUNGLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsY0FBYyxDQUFDLFdBQTBEO1FBQ3ZFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxhQUFhLENBQUMsbUJBQXFEO1FBQ2pFLElBQUksQ0FBQyxVQUFVLEdBQUcsbUJBQW1CLENBQUM7SUFDeEMsQ0FBQztDQUVGO0FBRUQsTUFBTSxVQUFVLG1DQUFtQyxDQUEyRCxNQUEyRDtJQUN2SyxPQUFPLElBQUksbUNBQW1DLENBQU8sTUFBTSxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVELE1BQU0sVUFBVSxpREFBaUQsQ0FBMkQsVUFBNEM7SUFDdEssT0FBTyxJQUFJLG1DQUFtQyxDQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUN2RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFnZUxpc3RMb2FkaW5nU3RhdGUsIGNsZWFudXBEZXN0cm95YWJsZSwgZmlsdGVyTWF5YmUsIHVzZUZpcnN0LCBTdWJzY3JpcHRpb25PYmplY3QsIGFjY3VtdWxhdG9yRmxhdHRlblBhZ2VMaXN0TG9hZGluZ1N0YXRlIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgc2hhcmVSZXBsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBTdWJqZWN0LCB0aHJvdHRsZVRpbWUsIHN3aXRjaE1hcCwgT2JzZXJ2YWJsZSwgdGFwLCBzdGFydFdpdGgsIE5FVkVSIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaXJlYmFzZVF1ZXJ5SXRlbUFjY3VtdWxhdG9yLCBmaXJlYmFzZVF1ZXJ5SXRlbUFjY3VtdWxhdG9yLCBGaXJlc3RvcmVDb2xsZWN0aW9uLCBGaXJlc3RvcmVEb2N1bWVudCwgRmlyZXN0b3JlSXRlbVBhZ2VJdGVyYXRpb25JbnN0YW5jZSwgRmlyZXN0b3JlSXRlbVBhZ2VJdGVyYXRvckZpbHRlciwgRmlyZXN0b3JlUXVlcnlDb25zdHJhaW50LCBJdGVyYXRpb25RdWVyeURvY0NoYW5nZVdhdGNoZXIsIGl0ZXJhdGlvblF1ZXJ5RG9jQ2hhbmdlV2F0Y2hlciB9IGZyb20gJ0BkZXJlZWtiL2ZpcmViYXNlJztcbmltcG9ydCB7IEFycmF5T3JWYWx1ZSwgRGVzdHJveWFibGUsIEluaXRpYWxpemVkLCBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVyIH0gZnJvbSAnLi9jb2xsZWN0aW9uLmxvYWRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVySW5zdGFuY2VJbml0Q29uZmlnPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+PiB7XG4gIGNvbGxlY3Rpb24/OiBNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+PixcbiAgbWF4UGFnZXM/OiBNYXliZTxudW1iZXI+O1xuICBpdGVtc1BlclBhZ2U/OiBNYXliZTxudW1iZXI+O1xuICBjb25zdHJhaW50cz86IE1heWJlPEFycmF5T3JWYWx1ZTxGaXJlc3RvcmVRdWVyeUNvbnN0cmFpbnQ8VD4+Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZURhdGE8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4+IHtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlSXRlcmF0aW9uJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVJdGVtUGFnZUl0ZXJhdGlvbkluc3RhbmNlPFQ+PjtcbiAgcmVhZG9ubHkgYWNjdW11bGF0b3IkOiBPYnNlcnZhYmxlPEZpcmViYXNlUXVlcnlJdGVtQWNjdW11bGF0b3I8VD4+O1xuICByZWFkb25seSBwYWdlTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxQYWdlTGlzdExvYWRpbmdTdGF0ZTxUPj47XG59XG5cbi8qKlxuICogRGJ4RmlyZWJhc2VNb2RlbExvYWRlciBpbXBsZW1lbnRhdGlvbiB3aXRoaW4gYW4gaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZTxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPj4gaW1wbGVtZW50cyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXI8VD4sIERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckluc3RhbmNlRGF0YTxULCBEPiwgSW5pdGlhbGl6ZWQsIERlc3Ryb3lhYmxlIHtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbGxlY3Rpb24gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+Pih0aGlzLl9pbml0Q29uZmlnPy5jb2xsZWN0aW9uKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX21heFBhZ2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxudW1iZXI+Pih0aGlzLl9pbml0Q29uZmlnPy5tYXhQYWdlcyk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfaXRlbXNQZXJQYWdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxudW1iZXI+Pih0aGlzLl9pbml0Q29uZmlnPy5pdGVtc1BlclBhZ2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbnN0cmFpbnRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxBcnJheU9yVmFsdWU8RmlyZXN0b3JlUXVlcnlDb25zdHJhaW50PFQ+Pj4+KHRoaXMuX2luaXRDb25maWc/LmNvbnN0cmFpbnRzKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9yZXN0YXJ0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9tYXhQYWdlc1N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICByZWFkb25seSBjb2xsZWN0aW9uJCA9IHRoaXMuX2NvbGxlY3Rpb24ucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgcmVhZG9ubHkgY29uc3RyYWludHMkID0gdGhpcy5fY29uc3RyYWludHMucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICByZWFkb25seSBpdGVyYXRvckZpbHRlciQ6IE9ic2VydmFibGU8RmlyZXN0b3JlSXRlbVBhZ2VJdGVyYXRvckZpbHRlcj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLl9pdGVtc1BlclBhZ2UucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKSxcbiAgICB0aGlzLmNvbnN0cmFpbnRzJFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2xpbWl0LCBjb25zdHJhaW50c10pID0+ICh7IGxpbWl0LCBjb25zdHJhaW50cywgbWF4UGFnZUxvYWRMaW1pdDogdGhpcy5tYXhQYWdlcyB9KSBhcyBGaXJlc3RvcmVJdGVtUGFnZUl0ZXJhdG9yRmlsdGVyKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGZpcmVzdG9yZUl0ZXJhdGlvbiQ6IE9ic2VydmFibGU8RmlyZXN0b3JlSXRlbVBhZ2VJdGVyYXRpb25JbnN0YW5jZTxUPj4gPSB0aGlzLmNvbGxlY3Rpb24kLnBpcGUoXG4gICAgc3dpdGNoTWFwKChjb2xsZWN0aW9uKSA9PiB7XG4gICAgICBpZiAoY29sbGVjdGlvbikge1xuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5pdGVyYXRvckZpbHRlciQsIHRoaXMuX3Jlc3RhcnQucGlwZShzdGFydFdpdGgodW5kZWZpbmVkKSldKS5waXBlKFxuICAgICAgICAgIHRocm90dGxlVGltZSgxMDAsIHVuZGVmaW5lZCwgeyB0cmFpbGluZzogdHJ1ZSB9KSwgIC8vIHByZXZlbnQgcmFwaWQgY2hhbmdlcyBhbmQgZXhlY3V0aW5nIGZpbHRlcnMgdG9vIHF1aWNrbHkuXG4gICAgICAgICAgbWFwKChbaXRlcmF0b3JGaWx0ZXJdKSA9PiBjb2xsZWN0aW9uLmZpcmVzdG9yZUl0ZXJhdGlvbihpdGVyYXRvckZpbHRlcikpLFxuICAgICAgICAgIGNsZWFudXBEZXN0cm95YWJsZSgpLCAvLyBjbGVhbnVwIHRoZSBpdGVyYXRpb25cbiAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIE5FVkVSOyAvLyBkb24ndCBlbWl0IGFueXRoaW5nIHVudGlsIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuXG4gICAgICB9XG4gICAgfSksXG4gICAgY2xlYW51cERlc3Ryb3lhYmxlKCksIC8vIGNsZWFudXAgdGhlIGl0ZXJhdGlvblxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgcXVlcnlDaGFuZ2VXYXRjaGVyJDogT2JzZXJ2YWJsZTxJdGVyYXRpb25RdWVyeURvY0NoYW5nZVdhdGNoZXI8VD4+ID0gdGhpcy5maXJlc3RvcmVJdGVyYXRpb24kLnBpcGUoXG4gICAgbWFwKGluc3RhbmNlID0+IGl0ZXJhdGlvblF1ZXJ5RG9jQ2hhbmdlV2F0Y2hlcih7IGluc3RhbmNlIH0pKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGFjY3VtdWxhdG9yJDogT2JzZXJ2YWJsZTxGaXJlYmFzZVF1ZXJ5SXRlbUFjY3VtdWxhdG9yPFQ+PiA9IHRoaXMuZmlyZXN0b3JlSXRlcmF0aW9uJC5waXBlKFxuICAgIG1hcCh4ID0+IGZpcmViYXNlUXVlcnlJdGVtQWNjdW11bGF0b3I8VD4oeCkpLFxuICAgIGNsZWFudXBEZXN0cm95YWJsZSgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgcGFnZUxvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8UGFnZUxpc3RMb2FkaW5nU3RhdGU8VD4+ID0gdGhpcy5hY2N1bXVsYXRvciQucGlwZShcbiAgICBzd2l0Y2hNYXAoeCA9PiBhY2N1bXVsYXRvckZsYXR0ZW5QYWdlTGlzdExvYWRpbmdTdGF0ZSh4KSBhcyBPYnNlcnZhYmxlPFBhZ2VMaXN0TG9hZGluZ1N0YXRlPFQ+PiksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9pbml0Q29uZmlnPzogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVySW5zdGFuY2VJbml0Q29uZmlnPFQsIEQ+KSB7IH1cblxuICBpbml0KCk6IHZvaWQge1xuXG4gICAgLy8gV2hlbiBtYXggcGFnZXMgY2hhbmdlcywgdXBkYXRlIHRoZSBpdGVyYXRpb24ncyBtYXggcGFnZSBsaW1pdC5cbiAgICB0aGlzLl9tYXhQYWdlc1N1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLl9tYXhQYWdlcy5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIGZpbHRlck1heWJlKCksICAvLyBkbyBub3QgcGFzcyBudWxsL3VuZGVmaW5lZCB2YWx1ZXNcbiAgICAgIHN3aXRjaE1hcCgobWF4UGFnZUxvYWRMaW1pdCkgPT4gdGhpcy5maXJlc3RvcmVJdGVyYXRpb24kLnBpcGUoXG4gICAgICAgIHRhcCgoaXRlcmF0aW9uKSA9PiB7XG4gICAgICAgICAgaXRlcmF0aW9uLm1heFBhZ2VMb2FkTGltaXQgPSBtYXhQYWdlTG9hZExpbWl0O1xuICAgICAgICB9KVxuICAgICAgKSlcbiAgICApLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tYXhQYWdlcy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2NvbGxlY3Rpb24uY29tcGxldGUoKTtcbiAgICB0aGlzLl9jb25zdHJhaW50cy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2l0ZW1zUGVyUGFnZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3Jlc3RhcnQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9tYXhQYWdlc1N1Yi5kZXN0cm95KCk7XG4gIH1cblxuICAvLyBNQVJLOiBJbnB1dHNcbiAgZ2V0IG1heFBhZ2VzKCk6IE1heWJlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9tYXhQYWdlcy52YWx1ZTtcbiAgfVxuXG4gIHNldCBtYXhQYWdlcyhtYXhQYWdlczogTWF5YmU8bnVtYmVyPikge1xuICAgIGlmICh0aGlzLm1heFBhZ2VzICE9IG1heFBhZ2VzKSB7XG4gICAgICB0aGlzLl9tYXhQYWdlcy5uZXh0KG1heFBhZ2VzKTtcbiAgICB9XG4gIH1cblxuICBnZXQgaXRlbXNQZXJQYWdlKCk6IE1heWJlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9pdGVtc1BlclBhZ2UudmFsdWU7XG4gIH1cblxuICBzZXQgaXRlbXNQZXJQYWdlKGl0ZW1zUGVyUGFnZTogTWF5YmU8bnVtYmVyPikge1xuICAgIGlmICh0aGlzLml0ZW1zUGVyUGFnZSAhPSBpdGVtc1BlclBhZ2UpIHtcbiAgICAgIHRoaXMuX2l0ZW1zUGVyUGFnZS5uZXh0KGl0ZW1zUGVyUGFnZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNvbnN0cmFpbnRzKCk6IE1heWJlPEFycmF5T3JWYWx1ZTxGaXJlc3RvcmVRdWVyeUNvbnN0cmFpbnQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnN0cmFpbnRzLnZhbHVlO1xuICB9XG5cbiAgc2V0IGNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzOiBNYXliZTxBcnJheU9yVmFsdWU8RmlyZXN0b3JlUXVlcnlDb25zdHJhaW50Pj4pIHtcbiAgICB0aGlzLl9jb25zdHJhaW50cy5uZXh0KGNvbnN0cmFpbnRzKTtcbiAgfVxuXG4gIGdldCBjb2xsZWN0aW9uKCk6IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+IHtcbiAgICByZXR1cm4gdGhpcy5fY29sbGVjdGlvbi52YWx1ZTtcbiAgfVxuXG4gIHNldCBjb2xsZWN0aW9uKGNvbGxlY3Rpb246IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+KSB7XG4gICAgdGhpcy5fY29sbGVjdGlvbi5uZXh0KGNvbGxlY3Rpb24pO1xuICB9XG5cbiAgLy8gTUFSSzogRGJ4RmlyZWJhc2VNb2RlbExpc3RcbiAgbmV4dCgpIHtcbiAgICB1c2VGaXJzdCh0aGlzLmZpcmVzdG9yZUl0ZXJhdGlvbiQsICh4KSA9PiB4Lm5leHQoKSk7XG4gIH1cblxuICByZXN0YXJ0KCkge1xuICAgIHRoaXMuX3Jlc3RhcnQubmV4dCgpO1xuICB9XG5cbiAgc2V0Q29uc3RyYWludHMoY29uc3RyYWludHM6IE1heWJlPEFycmF5T3JWYWx1ZTxGaXJlc3RvcmVRdWVyeUNvbnN0cmFpbnQ+Pikge1xuICAgIHRoaXMuY29uc3RyYWludHMgPSBjb25zdHJhaW50cztcbiAgfVxuXG4gIHNldENvbGxlY3Rpb24oZmlyZXN0b3JlQ29sbGVjdGlvbjogTWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbjxULCBEPj4pIHtcbiAgICB0aGlzLmNvbGxlY3Rpb24gPSBmaXJlc3RvcmVDb2xsZWN0aW9uO1xuICB9XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckluc3RhbmNlPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+Pihjb25maWc6IERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckluc3RhbmNlSW5pdENvbmZpZzxULCBEPik6IERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckluc3RhbmNlPFQsIEQ+IHtcbiAgcmV0dXJuIG5ldyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZTxULCBEPihjb25maWcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVySW5zdGFuY2VXaXRoQ29sbGVjdGlvbjxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPj4oY29sbGVjdGlvbjogTWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbjxULCBEPj4pOiBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZTxULCBEPiB7XG4gIHJldHVybiBuZXcgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVySW5zdGFuY2U8VCwgRD4oeyBjb2xsZWN0aW9uIH0pO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9sb2FkZXIvY29sbGVjdGlvbi5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpcmVzdG9yZUl0ZW1QYWdlSXRlcmF0aW9uSW5zdGFuY2UsIEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludCB9IGZyb20gXCJAZGVyZWVrYi9maXJlYmFzZVwiO1xuaW1wb3J0IHsgUGFnZUxpc3RMb2FkaW5nU3RhdGUgfSBmcm9tIFwiQGRlcmVla2Ivcnhqc1wiO1xuaW1wb3J0IHsgTWF5YmUsIEFycmF5T3JWYWx1ZSB9IGZyb20gXCJAZGVyZWVrYi91dGlsXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcblxuLyoqXG4gKiBBYnN0cmFjdCB0eXBlIHRoYXQgbG9hZHMgbW9kZWxzIGZyb20gYSBjb25maWd1cmVkIGNvbGxlY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVyPFQgPSBhbnk+IHtcblxuICByZWFkb25seSBjb25zdHJhaW50cyQ6IE9ic2VydmFibGU8TWF5YmU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludD4+PjtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlSXRlcmF0aW9uJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVJdGVtUGFnZUl0ZXJhdGlvbkluc3RhbmNlPFQ+PjtcbiAgcmVhZG9ubHkgcGFnZUxvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8UGFnZUxpc3RMb2FkaW5nU3RhdGU8VD4+O1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIG51bWJlciBvZiBwYWdlcyB0byBsb2FkIGZyb20gdGhlIGludGVyYXRpb24uXG4gICAqIFxuICAgKiBDaGFuZ2luZyB0aGlzIHVwZGF0ZXMgdGhlIGl0ZXJhdGlvbiwgYnV0IGRvZXMgbm90IHJlc2V0IGl0LlxuICAgKi9cbiAgbWF4UGFnZXM6IE1heWJlPG51bWJlcj47XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBpdGVtcyB0byBsb2FkIHBlciBwYWdlLiBcbiAgICogXG4gICAqIENoYW5naW5nIHRoaXMgd2lsbCByZXNldCB0aGUgaXRlcmF0aW9uLlxuICAgKi9cbiAgaXRlbXNQZXJQYWdlOiBNYXliZTxudW1iZXI+O1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjb25zdHJhaW50cyBvbiB0aGUgbW9kZWwgbG9hZGVyLlxuICAgKiBcbiAgICogQHBhcmFtIGNvbnN0cmFpbnRzIFxuICAgKi9cbiAgc2V0Q29uc3RyYWludHMoY29uc3RyYWludHM6IE1heWJlPEFycmF5T3JWYWx1ZTxGaXJlc3RvcmVRdWVyeUNvbnN0cmFpbnQ+Pik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIExvYWRzIG1vcmUgaXRlbXMuXG4gICAqL1xuICBuZXh0KCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJlc2V0cy9yZXN0YXJ0cyB0aGUgbGlzdC5cbiAgICovXG4gIHJlc3RhcnQoKTogdm9pZDtcblxufVxuIl19
@@ -0,0 +1,3 @@
1
+ export * from './collection.loader.instance';
2
+ export * from './collection.loader';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9sb2FkZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb2xsZWN0aW9uLmxvYWRlci5pbnN0YW5jZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbGxlY3Rpb24ubG9hZGVyJztcbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { DbxFirebaseModelStoreModule } from "./store/model.store.module";
3
+ import * as i0 from "@angular/core";
4
+ export class DbxFirebaseModelModule {
5
+ }
6
+ DbxFirebaseModelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseModelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
+ DbxFirebaseModelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseModelModule, exports: [DbxFirebaseModelStoreModule] });
8
+ DbxFirebaseModelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseModelModule, imports: [DbxFirebaseModelStoreModule] });
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseModelModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ exports: [
13
+ DbxFirebaseModelStoreModule
14
+ ]
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbW9kZWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBT3pFLE1BQU0sT0FBTyxzQkFBc0I7O21IQUF0QixzQkFBc0I7b0hBQXRCLHNCQUFzQixZQUgvQiwyQkFBMkI7b0hBR2xCLHNCQUFzQixZQUgvQiwyQkFBMkI7MkZBR2xCLHNCQUFzQjtrQkFMbEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsMkJBQTJCO3FCQUM1QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IERieEZpcmViYXNlTW9kZWxTdG9yZU1vZHVsZSB9IGZyb20gXCIuL3N0b3JlL21vZGVsLnN0b3JlLm1vZHVsZVwiO1xuXG5ATmdNb2R1bGUoe1xuICBleHBvcnRzOiBbXG4gICAgRGJ4RmlyZWJhc2VNb2RlbFN0b3JlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VNb2RlbE1vZHVsZSB7IH1cbiJdfQ==
@@ -0,0 +1,14 @@
1
+ export * from './model.store.module';
2
+ export * from './store.collection';
3
+ export * from './store.collection.change.directive';
4
+ export * from './store.collection.change.if.directive';
5
+ export * from './store.collection.directive';
6
+ export * from './store.collection.list.directive';
7
+ export * from './store.document';
8
+ export * from './store.document.auth.directive';
9
+ export * from './store.document.directive';
10
+ export * from './store.document.router.directive';
11
+ export * from './store.subcollection';
12
+ export * from './store.subcollection.document';
13
+ export * from './store.subcollection.rxjs';
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9zdG9yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tb2RlbC5zdG9yZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5jb2xsZWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuY29sbGVjdGlvbi5jaGFuZ2UuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuY29sbGVjdGlvbi5jaGFuZ2UuaWYuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuY29sbGVjdGlvbi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5jb2xsZWN0aW9uLmxpc3QuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuZG9jdW1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5kb2N1bWVudC5hdXRoLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmRvY3VtZW50LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmRvY3VtZW50LnJvdXRlci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5zdWJjb2xsZWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuc3ViY29sbGVjdGlvbi5kb2N1bWVudCc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLnN1YmNvbGxlY3Rpb24ucnhqcyc7XG4iXX0=
@@ -0,0 +1,41 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { DbxFirebaseCollectionChangeDirective } from "./store.collection.change.directive";
3
+ import { DbxFirebaseCollectionHasChangeDirective } from "./store.collection.change.if.directive";
4
+ import { DbxFirebaseCollectionListDirective } from "./store.collection.list.directive";
5
+ import { DbxFirebaseDocumentAuthIdDirective } from "./store.document.auth.directive";
6
+ import { DbxFirebaseDocumentStoreRouteIdDirective } from "./store.document.router.directive";
7
+ import * as i0 from "@angular/core";
8
+ export class DbxFirebaseModelStoreModule {
9
+ }
10
+ DbxFirebaseModelStoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseModelStoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
+ DbxFirebaseModelStoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseModelStoreModule, declarations: [DbxFirebaseCollectionListDirective,
12
+ DbxFirebaseCollectionChangeDirective,
13
+ DbxFirebaseCollectionHasChangeDirective,
14
+ DbxFirebaseDocumentStoreRouteIdDirective,
15
+ DbxFirebaseDocumentAuthIdDirective], exports: [DbxFirebaseCollectionListDirective,
16
+ DbxFirebaseCollectionChangeDirective,
17
+ DbxFirebaseCollectionHasChangeDirective,
18
+ DbxFirebaseDocumentStoreRouteIdDirective,
19
+ DbxFirebaseDocumentAuthIdDirective] });
20
+ DbxFirebaseModelStoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseModelStoreModule, imports: [[]] });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseModelStoreModule, decorators: [{
22
+ type: NgModule,
23
+ args: [{
24
+ imports: [],
25
+ declarations: [
26
+ DbxFirebaseCollectionListDirective,
27
+ DbxFirebaseCollectionChangeDirective,
28
+ DbxFirebaseCollectionHasChangeDirective,
29
+ DbxFirebaseDocumentStoreRouteIdDirective,
30
+ DbxFirebaseDocumentAuthIdDirective
31
+ ],
32
+ exports: [
33
+ DbxFirebaseCollectionListDirective,
34
+ DbxFirebaseCollectionChangeDirective,
35
+ DbxFirebaseCollectionHasChangeDirective,
36
+ DbxFirebaseDocumentStoreRouteIdDirective,
37
+ DbxFirebaseDocumentAuthIdDirective
38
+ ]
39
+ }]
40
+ }] });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuc3RvcmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvc3RvcmUvbW9kZWwuc3RvcmUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0YsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakcsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkYsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckYsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBbUI3RixNQUFNLE9BQU8sMkJBQTJCOzt3SEFBM0IsMkJBQTJCO3lIQUEzQiwyQkFBMkIsaUJBZHBDLGtDQUFrQztRQUNsQyxvQ0FBb0M7UUFDcEMsdUNBQXVDO1FBQ3ZDLHdDQUF3QztRQUN4QyxrQ0FBa0MsYUFHbEMsa0NBQWtDO1FBQ2xDLG9DQUFvQztRQUNwQyx1Q0FBdUM7UUFDdkMsd0NBQXdDO1FBQ3hDLGtDQUFrQzt5SEFHekIsMkJBQTJCLFlBaEI3QixFQUFFOzJGQWdCQSwyQkFBMkI7a0JBakJ2QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxFQUFFO29CQUNYLFlBQVksRUFBRTt3QkFDWixrQ0FBa0M7d0JBQ2xDLG9DQUFvQzt3QkFDcEMsdUNBQXVDO3dCQUN2Qyx3Q0FBd0M7d0JBQ3hDLGtDQUFrQztxQkFDbkM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGtDQUFrQzt3QkFDbEMsb0NBQW9DO3dCQUNwQyx1Q0FBdUM7d0JBQ3ZDLHdDQUF3Qzt3QkFDeEMsa0NBQWtDO3FCQUNuQztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IERieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZURpcmVjdGl2ZSB9IGZyb20gXCIuL3N0b3JlLmNvbGxlY3Rpb24uY2hhbmdlLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uSGFzQ2hhbmdlRGlyZWN0aXZlIH0gZnJvbSBcIi4vc3RvcmUuY29sbGVjdGlvbi5jaGFuZ2UuaWYuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25MaXN0RGlyZWN0aXZlIH0gZnJvbSBcIi4vc3RvcmUuY29sbGVjdGlvbi5saXN0LmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VEb2N1bWVudEF1dGhJZERpcmVjdGl2ZSB9IGZyb20gXCIuL3N0b3JlLmRvY3VtZW50LmF1dGguZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVSb3V0ZUlkRGlyZWN0aXZlIH0gZnJvbSBcIi4vc3RvcmUuZG9jdW1lbnQucm91dGVyLmRpcmVjdGl2ZVwiO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTGlzdERpcmVjdGl2ZSxcbiAgICBEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VEaXJlY3RpdmUsXG4gICAgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uSGFzQ2hhbmdlRGlyZWN0aXZlLFxuICAgIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZVJvdXRlSWREaXJlY3RpdmUsXG4gICAgRGJ4RmlyZWJhc2VEb2N1bWVudEF1dGhJZERpcmVjdGl2ZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTGlzdERpcmVjdGl2ZSxcbiAgICBEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VEaXJlY3RpdmUsXG4gICAgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uSGFzQ2hhbmdlRGlyZWN0aXZlLFxuICAgIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZVJvdXRlSWREaXJlY3RpdmUsXG4gICAgRGJ4RmlyZWJhc2VEb2N1bWVudEF1dGhJZERpcmVjdGl2ZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERieEZpcmViYXNlTW9kZWxTdG9yZU1vZHVsZSB7IH1cbiJdfQ==
@@ -0,0 +1,54 @@
1
+ import { shareReplay, startWith, switchMap, BehaviorSubject, distinctUntilChanged, combineLatest, map, filter, take } from 'rxjs';
2
+ import { Directive, Input } from '@angular/core';
3
+ import { DbxFirebaseCollectionStoreDirective } from './store.collection.directive';
4
+ import { AbstractSubscriptionDirective } from '@dereekb/dbx-core';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "./store.collection.directive";
7
+ /**
8
+ * Used to watch query doc changes and respond to them accordingly.
9
+ */
10
+ export class DbxFirebaseCollectionChangeDirective extends AbstractSubscriptionDirective {
11
+ constructor(dbxFirebaseCollectionStoreDirective) {
12
+ super();
13
+ this.dbxFirebaseCollectionStoreDirective = dbxFirebaseCollectionStoreDirective;
14
+ this._mode = new BehaviorSubject('manual');
15
+ this.mode$ = this._mode.pipe(distinctUntilChanged());
16
+ this.event$ = this.dbxFirebaseCollectionStoreDirective.store.queryChangeWatcher$.pipe(switchMap((x) => x.event$.pipe(filter(x => x.type !== 'none'), // do not share 'none' events.
17
+ take(1), // only need one event to mark as change is available.
18
+ startWith({
19
+ time: new Date(),
20
+ type: 'none'
21
+ }))), shareReplay(1));
22
+ this.hasChangeAvailable$ = this.event$.pipe(map(x => x.type !== 'none'), shareReplay(1));
23
+ }
24
+ ngOnInit() {
25
+ this.sub = combineLatest([this.mode$, this.hasChangeAvailable$]).pipe(filter(([mode, hasChange]) => mode === 'auto' && hasChange)).subscribe(() => {
26
+ this.restart();
27
+ });
28
+ }
29
+ ngOnDestroy() {
30
+ super.ngOnDestroy();
31
+ this._mode.complete();
32
+ }
33
+ get mode() {
34
+ return this._mode.value;
35
+ }
36
+ set mode(mode) {
37
+ this._mode.next(mode || 'manual');
38
+ }
39
+ restart() {
40
+ this.dbxFirebaseCollectionStoreDirective.store.restart();
41
+ }
42
+ }
43
+ DbxFirebaseCollectionChangeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseCollectionChangeDirective, deps: [{ token: i1.DbxFirebaseCollectionStoreDirective }], target: i0.ɵɵFactoryTarget.Directive });
44
+ DbxFirebaseCollectionChangeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.2", type: DbxFirebaseCollectionChangeDirective, selector: "[dbxFirebaseCollectionChange]", inputs: { mode: ["dbxFirebaseCollectionChange", "mode"] }, usesInheritance: true, ngImport: i0 });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseCollectionChangeDirective, decorators: [{
46
+ type: Directive,
47
+ args: [{
48
+ selector: '[dbxFirebaseCollectionChange]'
49
+ }]
50
+ }], ctorParameters: function () { return [{ type: i1.DbxFirebaseCollectionStoreDirective }]; }, propDecorators: { mode: [{
51
+ type: Input,
52
+ args: ['dbxFirebaseCollectionChange']
53
+ }] } });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuY29sbGVjdGlvbi5jaGFuZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvc3RvcmUvc3RvcmUuY29sbGVjdGlvbi5jaGFuZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFjLFNBQVMsRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlJLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSWpELE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25GLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFRbEU7O0dBRUc7QUFJSCxNQUFNLE9BQU8sb0NBQ1gsU0FBUSw2QkFBNkI7SUFxQnJDLFlBQXFCLG1DQUFpRjtRQUNwRyxLQUFLLEVBQUUsQ0FBQztRQURXLHdDQUFtQyxHQUFuQyxtQ0FBbUMsQ0FBOEM7UUFuQjlGLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBMkMsUUFBUSxDQUFDLENBQUM7UUFDL0UsVUFBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUVoRCxXQUFNLEdBQTBELElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUM5SSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUM1QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxFQUFFLDhCQUE4QjtRQUM5RCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUcsc0RBQXNEO1FBQ2hFLFNBQVMsQ0FBQztZQUNSLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtZQUNoQixJQUFJLEVBQUUsTUFBa0Q7U0FDekQsQ0FBQyxDQUFDLENBQUMsRUFDTixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUVPLHdCQUFtQixHQUF3QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDbEUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsRUFDM0IsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFJRixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxHQUFHLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDbkUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksU0FBUyxDQUFDLENBQzVELENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUSxXQUFXO1FBQ2xCLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUNJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxJQUEwRDtRQUNqRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsbUNBQW1DLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNELENBQUM7O2lJQWxEVSxvQ0FBb0M7cUhBQXBDLG9DQUFvQzsyRkFBcEMsb0NBQW9DO2tCQUhoRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwrQkFBK0I7aUJBQzFDOzBIQXlDSyxJQUFJO3NCQURQLEtBQUs7dUJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdGFwTG9nIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAsIEJlaGF2aW9yU3ViamVjdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGNvbWJpbmVMYXRlc3QsIG1hcCwgZmlsdGVyLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaXJlc3RvcmVEb2N1bWVudCwgSXRlcmF0aW9uUXVlcnlEb2NDaGFuZ2VXYXRjaGVyQ2hhbmdlVHlwZSwgSXRlcmF0aW9uUXVlcnlEb2NDaGFuZ2VXYXRjaGVyRXZlbnQgfSBmcm9tIFwiQGRlcmVla2IvZmlyZWJhc2VcIjtcbmltcG9ydCB7IE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZSB9IGZyb20gXCIuL3N0b3JlLmNvbGxlY3Rpb25cIjtcbmltcG9ydCB7IERieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlRGlyZWN0aXZlIH0gZnJvbSAnLi9zdG9yZS5jb2xsZWN0aW9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBYnN0cmFjdFN1YnNjcmlwdGlvbkRpcmVjdGl2ZSB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcblxuLyoqXG4gKiBSZWZyZXNoIG1vZGVcbiAqL1xuZXhwb3J0IHR5cGUgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlRGlyZWN0aXZlTW9kZSA9ICdhdXRvJyB8ICdtYW51YWwnO1xuZXhwb3J0IHR5cGUgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlRGlyZWN0aXZlRXZlbnQgPSBQaWNrPEl0ZXJhdGlvblF1ZXJ5RG9jQ2hhbmdlV2F0Y2hlckV2ZW50PGFueT4sICd0aW1lJyB8ICd0eXBlJz47XG5cbi8qKlxuICogVXNlZCB0byB3YXRjaCBxdWVyeSBkb2MgY2hhbmdlcyBhbmQgcmVzcG9uZCB0byB0aGVtIGFjY29yZGluZ2x5LlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlXSdcbn0pXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlRGlyZWN0aXZlPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+LCBTIGV4dGVuZHMgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uU3RvcmU8VCwgRD4gPSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZTxULCBEPj5cbiAgZXh0ZW5kcyBBYnN0cmFjdFN1YnNjcmlwdGlvbkRpcmVjdGl2ZSB7XG5cbiAgcHJpdmF0ZSBfbW9kZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlRGlyZWN0aXZlTW9kZT4oJ21hbnVhbCcpO1xuICByZWFkb25seSBtb2RlJCA9IHRoaXMuX21vZGUucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICByZWFkb25seSBldmVudCQ6IE9ic2VydmFibGU8RGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlRGlyZWN0aXZlRXZlbnQ+ID0gdGhpcy5kYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZURpcmVjdGl2ZS5zdG9yZS5xdWVyeUNoYW5nZVdhdGNoZXIkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh4KSA9PiB4LmV2ZW50JC5waXBlKFxuICAgICAgZmlsdGVyKHggPT4geC50eXBlICE9PSAnbm9uZScpLCAvLyBkbyBub3Qgc2hhcmUgJ25vbmUnIGV2ZW50cy5cbiAgICAgIHRha2UoMSksICAvLyBvbmx5IG5lZWQgb25lIGV2ZW50IHRvIG1hcmsgYXMgY2hhbmdlIGlzIGF2YWlsYWJsZS5cbiAgICAgIHN0YXJ0V2l0aCh7XG4gICAgICAgIHRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgIHR5cGU6ICdub25lJyBhcyBJdGVyYXRpb25RdWVyeURvY0NoYW5nZVdhdGNoZXJDaGFuZ2VUeXBlXG4gICAgICB9KSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaGFzQ2hhbmdlQXZhaWxhYmxlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuZXZlbnQkLnBpcGUoXG4gICAgbWFwKHggPT4geC50eXBlICE9PSAnbm9uZScpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZGJ4RmlyZWJhc2VDb2xsZWN0aW9uU3RvcmVEaXJlY3RpdmU6IERieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlRGlyZWN0aXZlPFQsIEQsIFM+KSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3ViID0gY29tYmluZUxhdGVzdChbdGhpcy5tb2RlJCwgdGhpcy5oYXNDaGFuZ2VBdmFpbGFibGUkXSkucGlwZShcbiAgICAgIGZpbHRlcigoW21vZGUsIGhhc0NoYW5nZV0pID0+IG1vZGUgPT09ICdhdXRvJyAmJiBoYXNDaGFuZ2UpXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZXN0YXJ0KCk7XG4gICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuX21vZGUuY29tcGxldGUoKTtcbiAgfVxuXG4gIEBJbnB1dCgnZGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlJylcbiAgZ2V0IG1vZGUoKTogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlRGlyZWN0aXZlTW9kZSB7XG4gICAgcmV0dXJuIHRoaXMuX21vZGUudmFsdWU7XG4gIH1cblxuICBzZXQgbW9kZShtb2RlOiBNYXliZTxEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VEaXJlY3RpdmVNb2RlIHwgJyc+KSB7XG4gICAgdGhpcy5fbW9kZS5uZXh0KG1vZGUgfHwgJ21hbnVhbCcpO1xuICB9XG5cbiAgcmVzdGFydCgpIHtcbiAgICB0aGlzLmRieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlRGlyZWN0aXZlLnN0b3JlLnJlc3RhcnQoKTtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,57 @@
1
+ import { TemplateRef, ViewContainerRef, Directive, Input } from '@angular/core';
2
+ import { AbstractIfDirective } from '@dereekb/dbx-core';
3
+ import { shareReplay, BehaviorSubject, combineLatest, map } from 'rxjs';
4
+ import { DbxFirebaseCollectionChangeDirective } from './store.collection.change.directive';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "./store.collection.change.directive";
7
+ /**
8
+ * Structural directive that displays the content when the target change is detected.
9
+ *
10
+ * Can specify which changes to appear on.
11
+ */
12
+ export class DbxFirebaseCollectionHasChangeDirective extends AbstractIfDirective {
13
+ constructor(templateRef, viewContainer, directive) {
14
+ super(templateRef, viewContainer);
15
+ this.directive = directive;
16
+ this._mode = new BehaviorSubject('addedAndRemoved');
17
+ this.show$ = combineLatest([this._mode, this.directive.event$]).pipe(map(([mode, event]) => {
18
+ let show = false;
19
+ if (event.type !== 'none') {
20
+ switch (mode) {
21
+ case 'all':
22
+ show = true;
23
+ break;
24
+ case 'addedAndRemoved':
25
+ show = event.type === 'addedAndRemoved' || event.type === 'added' || event.type === 'removed';
26
+ break;
27
+ default:
28
+ show = event.type === mode;
29
+ break;
30
+ }
31
+ }
32
+ return show;
33
+ }), shareReplay(1));
34
+ }
35
+ get mode() {
36
+ return this._mode.value;
37
+ }
38
+ set mode(mode) {
39
+ this._mode.next(mode || 'addedAndRemoved');
40
+ }
41
+ ngOnDestroy() {
42
+ super.ngOnDestroy();
43
+ this._mode.complete();
44
+ }
45
+ }
46
+ DbxFirebaseCollectionHasChangeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseCollectionHasChangeDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.DbxFirebaseCollectionChangeDirective }], target: i0.ɵɵFactoryTarget.Directive });
47
+ DbxFirebaseCollectionHasChangeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.2", type: DbxFirebaseCollectionHasChangeDirective, selector: "[dbxFirebaseCollectionHasChange]", inputs: { mode: ["dbxFirebaseCollectionHasChange", "mode"] }, usesInheritance: true, ngImport: i0 });
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseCollectionHasChangeDirective, decorators: [{
49
+ type: Directive,
50
+ args: [{
51
+ selector: '[dbxFirebaseCollectionHasChange]'
52
+ }]
53
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1.DbxFirebaseCollectionChangeDirective }]; }, propDecorators: { mode: [{
54
+ type: Input,
55
+ args: ['dbxFirebaseCollectionHasChange']
56
+ }] } });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuY29sbGVjdGlvbi5jaGFuZ2UuaWYuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvc3RvcmUvc3RvcmUuY29sbGVjdGlvbi5jaGFuZ2UuaWYuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7QUFNM0Y7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyx1Q0FBd0MsU0FBUSxtQkFBbUI7SUEyQjlFLFlBQVksV0FBNkIsRUFBRSxhQUErQixFQUFrQixTQUFvRDtRQUM5SSxLQUFLLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRHdELGNBQVMsR0FBVCxTQUFTLENBQTJDO1FBekJ4SSxVQUFLLEdBQUcsSUFBSSxlQUFlLENBQThDLGlCQUFpQixDQUFDLENBQUM7UUFFM0YsVUFBSyxHQUF3QixhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzNGLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDcEIsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBRWpCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7Z0JBQ3pCLFFBQVEsSUFBSSxFQUFFO29CQUNaLEtBQUssS0FBSzt3QkFDUixJQUFJLEdBQUcsSUFBSSxDQUFDO3dCQUNaLE1BQU07b0JBQ1IsS0FBSyxpQkFBaUI7d0JBQ3BCLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxLQUFLLGlCQUFpQixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDO3dCQUM5RixNQUFNO29CQUNSO3dCQUNFLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQzt3QkFDM0IsTUFBTTtpQkFDVDthQUNGO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsRUFDRixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztJQUlGLENBQUM7SUFFRCxJQUNJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxJQUE2RDtRQUNwRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksaUJBQWlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRVEsV0FBVztRQUNsQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4QixDQUFDOztvSUEzQ1UsdUNBQXVDO3dIQUF2Qyx1Q0FBdUM7MkZBQXZDLHVDQUF1QztrQkFIbkQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0NBQWtDO2lCQUM3QztvTEFpQ0ssSUFBSTtzQkFEUCxLQUFLO3VCQUFDLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9uRGVzdHJveSwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYsIERpcmVjdGl2ZSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0SWZEaXJlY3RpdmUgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBzaGFyZVJlcGxheSwgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZURpcmVjdGl2ZSB9IGZyb20gJy4vc3RvcmUuY29sbGVjdGlvbi5jaGFuZ2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEl0ZXJhdGlvblF1ZXJ5RG9jQ2hhbmdlV2F0Y2hlckNoYW5nZVR5cGUgfSBmcm9tICdAZGVyZWVrYi9maXJlYmFzZSc7XG5pbXBvcnQgeyBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuXG5leHBvcnQgdHlwZSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25IYXNDaGFuZ2VEaXJlY3RpdmVNb2RlID0gJ2FsbCcgfCBJdGVyYXRpb25RdWVyeURvY0NoYW5nZVdhdGNoZXJDaGFuZ2VUeXBlO1xuXG4vKipcbiAqIFN0cnVjdHVyYWwgZGlyZWN0aXZlIHRoYXQgZGlzcGxheXMgdGhlIGNvbnRlbnQgd2hlbiB0aGUgdGFyZ2V0IGNoYW5nZSBpcyBkZXRlY3RlZC5cbiAqIFxuICogQ2FuIHNwZWNpZnkgd2hpY2ggY2hhbmdlcyB0byBhcHBlYXIgb24uXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tkYnhGaXJlYmFzZUNvbGxlY3Rpb25IYXNDaGFuZ2VdJ1xufSlcbmV4cG9ydCBjbGFzcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25IYXNDaGFuZ2VEaXJlY3RpdmUgZXh0ZW5kcyBBYnN0cmFjdElmRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwcml2YXRlIF9tb2RlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYnhGaXJlYmFzZUNvbGxlY3Rpb25IYXNDaGFuZ2VEaXJlY3RpdmVNb2RlPignYWRkZWRBbmRSZW1vdmVkJyk7XG5cbiAgcmVhZG9ubHkgc2hvdyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9tb2RlLCB0aGlzLmRpcmVjdGl2ZS5ldmVudCRdKS5waXBlKFxuICAgIG1hcCgoW21vZGUsIGV2ZW50XSkgPT4ge1xuICAgICAgbGV0IHNob3cgPSBmYWxzZTtcblxuICAgICAgaWYgKGV2ZW50LnR5cGUgIT09ICdub25lJykge1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICBjYXNlICdhbGwnOlxuICAgICAgICAgICAgc2hvdyA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdhZGRlZEFuZFJlbW92ZWQnOlxuICAgICAgICAgICAgc2hvdyA9IGV2ZW50LnR5cGUgPT09ICdhZGRlZEFuZFJlbW92ZWQnIHx8IGV2ZW50LnR5cGUgPT09ICdhZGRlZCcgfHwgZXZlbnQudHlwZSA9PT0gJ3JlbW92ZWQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHNob3cgPSBldmVudC50eXBlID09PSBtb2RlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNob3c7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBjb25zdHJ1Y3Rvcih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Piwgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgcHVibGljIHJlYWRvbmx5IGRpcmVjdGl2ZTogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlRGlyZWN0aXZlPGFueT4pIHtcbiAgICBzdXBlcih0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lcik7XG4gIH1cblxuICBASW5wdXQoJ2RieEZpcmViYXNlQ29sbGVjdGlvbkhhc0NoYW5nZScpXG4gIGdldCBtb2RlKCk6IERieEZpcmViYXNlQ29sbGVjdGlvbkhhc0NoYW5nZURpcmVjdGl2ZU1vZGUge1xuICAgIHJldHVybiB0aGlzLl9tb2RlLnZhbHVlO1xuICB9XG5cbiAgc2V0IG1vZGUobW9kZTogTWF5YmU8RGJ4RmlyZWJhc2VDb2xsZWN0aW9uSGFzQ2hhbmdlRGlyZWN0aXZlTW9kZSB8ICcnPikge1xuICAgIHRoaXMuX21vZGUubmV4dChtb2RlIHx8ICdhZGRlZEFuZFJlbW92ZWQnKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5fbW9kZS5jb21wbGV0ZSgpO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,52 @@
1
+ import { Directive, forwardRef, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Abstract directive that contains a DbxFirebaseCollectionStore and provides an interface for communicating with other directives.
5
+ */
6
+ export class DbxFirebaseCollectionStoreDirective {
7
+ constructor(store) {
8
+ this.store = store;
9
+ this.pageLoadingState$ = this.store.pageLoadingState$;
10
+ }
11
+ // MARK: Inputs
12
+ set maxPages(maxPages) {
13
+ this.store.setMaxPages(maxPages);
14
+ }
15
+ set itemsPerPage(itemsPerPage) {
16
+ this.store.setItemsPerPage(itemsPerPage);
17
+ }
18
+ set constraints(constraints) {
19
+ this.store.setConstraints(constraints);
20
+ }
21
+ next() {
22
+ this.store.next();
23
+ }
24
+ restart() {
25
+ this.store.restart();
26
+ }
27
+ setConstraints(constraints) {
28
+ this.store.setConstraints(constraints);
29
+ }
30
+ }
31
+ DbxFirebaseCollectionStoreDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseCollectionStoreDirective, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
32
+ DbxFirebaseCollectionStoreDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.2", type: DbxFirebaseCollectionStoreDirective, inputs: { maxPages: "maxPages", itemsPerPage: "itemsPerPage", constraints: "constraints" }, ngImport: i0 });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseCollectionStoreDirective, decorators: [{
34
+ type: Directive
35
+ }], ctorParameters: function () { return [{ type: undefined }]; }, propDecorators: { maxPages: [{
36
+ type: Input
37
+ }], itemsPerPage: [{
38
+ type: Input
39
+ }], constraints: [{
40
+ type: Input
41
+ }] } });
42
+ export function provideDbxFirebaseCollectionStoreDirective(sourceType, storeType) {
43
+ const providers = [{
44
+ provide: DbxFirebaseCollectionStoreDirective,
45
+ useExisting: forwardRef(() => sourceType)
46
+ }];
47
+ if (storeType) {
48
+ providers.push(storeType);
49
+ }
50
+ return providers;
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuY29sbGVjdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9zdG9yZS9zdG9yZS5jb2xsZWN0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQWtCLE1BQU0sZUFBZSxDQUFDOztBQUs3RTs7R0FFRztBQUVILE1BQU0sT0FBZ0IsbUNBQW1DO0lBRXZELFlBQXFCLEtBQVE7UUFBUixVQUFLLEdBQUwsS0FBSyxDQUFHO1FBRXBCLHNCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7SUFGekIsQ0FBQztJQUlsQyxlQUFlO0lBQ2YsSUFDSSxRQUFRLENBQUMsUUFBdUI7UUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQ0ksWUFBWSxDQUFDLFlBQTJCO1FBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUNJLFdBQVcsQ0FBQyxXQUEwRDtRQUN4RSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxjQUFjLENBQUMsV0FBMEQ7UUFDdkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekMsQ0FBQzs7Z0lBaENtQixtQ0FBbUM7b0hBQW5DLG1DQUFtQzsyRkFBbkMsbUNBQW1DO2tCQUR4RCxTQUFTOzZGQVNKLFFBQVE7c0JBRFgsS0FBSztnQkFNRixZQUFZO3NCQURmLEtBQUs7Z0JBTUYsV0FBVztzQkFEZCxLQUFLOztBQTRCUixNQUFNLFVBQVUsMENBQTBDLENBQWdLLFVBQW1CLEVBQUUsU0FBbUI7SUFDaFEsTUFBTSxTQUFTLEdBQWUsQ0FBQztZQUM3QixPQUFPLEVBQUUsbUNBQW1DO1lBQzVDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDO1NBQzFDLENBQUMsQ0FBQztJQUVILElBQUksU0FBUyxFQUFFO1FBQ2IsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUMzQjtJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGZvcndhcmRSZWYsIElucHV0LCBQcm92aWRlciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmlyZXN0b3JlRG9jdW1lbnQsIEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludCB9IGZyb20gXCJAZGVyZWVrYi9maXJlYmFzZVwiO1xuaW1wb3J0IHsgTWF5YmUsIEFycmF5T3JWYWx1ZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uU3RvcmUgfSBmcm9tIFwiLi9zdG9yZS5jb2xsZWN0aW9uXCI7XG5cbi8qKlxuICogQWJzdHJhY3QgZGlyZWN0aXZlIHRoYXQgY29udGFpbnMgYSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZSBhbmQgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvciBjb21tdW5pY2F0aW5nIHdpdGggb3RoZXIgZGlyZWN0aXZlcy5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uU3RvcmVEaXJlY3RpdmU8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4sIFMgZXh0ZW5kcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZTxULCBEPiA9IERieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlPFQsIEQ+PiB7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgc3RvcmU6IFMpIHsgfVxuXG4gIHJlYWRvbmx5IHBhZ2VMb2FkaW5nU3RhdGUkID0gdGhpcy5zdG9yZS5wYWdlTG9hZGluZ1N0YXRlJDtcblxuICAvLyBNQVJLOiBJbnB1dHNcbiAgQElucHV0KClcbiAgc2V0IG1heFBhZ2VzKG1heFBhZ2VzOiBNYXliZTxudW1iZXI+KSB7XG4gICAgdGhpcy5zdG9yZS5zZXRNYXhQYWdlcyhtYXhQYWdlcyk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgaXRlbXNQZXJQYWdlKGl0ZW1zUGVyUGFnZTogTWF5YmU8bnVtYmVyPikge1xuICAgIHRoaXMuc3RvcmUuc2V0SXRlbXNQZXJQYWdlKGl0ZW1zUGVyUGFnZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgY29uc3RyYWludHMoY29uc3RyYWludHM6IE1heWJlPEFycmF5T3JWYWx1ZTxGaXJlc3RvcmVRdWVyeUNvbnN0cmFpbnQ+Pikge1xuICAgIHRoaXMuc3RvcmUuc2V0Q29uc3RyYWludHMoY29uc3RyYWludHMpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICB0aGlzLnN0b3JlLm5leHQoKTtcbiAgfVxuXG4gIHJlc3RhcnQoKSB7XG4gICAgdGhpcy5zdG9yZS5yZXN0YXJ0KCk7XG4gIH1cblxuICBzZXRDb25zdHJhaW50cyhjb25zdHJhaW50czogTWF5YmU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludD4+KSB7XG4gICAgdGhpcy5zdG9yZS5zZXRDb25zdHJhaW50cyhjb25zdHJhaW50cyk7XG4gIH1cblxufVxuXG4vKipcbiAqIENvbmZpZ3VyZXMgcHJvdmlkZXJzIGZvciBhIERieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlRGlyZWN0aXZlLiBcbiAqIFxuICogQ2FuIG9wdGlvbmFsbHkgYWxzbyBwcm92aWRlIHRoZSBhY3R1YWwgc3RvcmUgdHlwZSB0byBpbmNsdWRlIGluIHRoZSBwcm92aWRlcnMgYXJyYXkgc28gaXQgaXMgaW5zdGFudGlhdGVkIGJ5IEFuZ3VsYXIuXG4gKiBcbiAqIEBwYXJhbSBzb3VyY2VUeXBlIFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZURieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlRGlyZWN0aXZlPFMgZXh0ZW5kcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZURpcmVjdGl2ZTxhbnksIGFueSwgYW55Pj4oc291cmNlVHlwZTogVHlwZTxTPik6IFByb3ZpZGVyW107XG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZURieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlRGlyZWN0aXZlPFMgZXh0ZW5kcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZTxhbnksIGFueT4sIEMgZXh0ZW5kcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZURpcmVjdGl2ZTxhbnksIGFueSwgUz4gPSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZURpcmVjdGl2ZTxhbnksIGFueSwgUz4+KHNvdXJjZVR5cGU6IFR5cGU8Qz4sIHN0b3JlVHlwZTogVHlwZTxTPik6IFByb3ZpZGVyW107XG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZURieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlRGlyZWN0aXZlPFMgZXh0ZW5kcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZTxhbnksIGFueT4sIEMgZXh0ZW5kcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZURpcmVjdGl2ZTxhbnksIGFueSwgUz4gPSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZURpcmVjdGl2ZTxhbnksIGFueSwgUz4+KHNvdXJjZVR5cGU6IFR5cGU8Qz4sIHN0b3JlVHlwZT86IFR5cGU8Uz4pOiBQcm92aWRlcltdIHtcbiAgY29uc3QgcHJvdmlkZXJzOiBQcm92aWRlcltdID0gW3tcbiAgICBwcm92aWRlOiBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZURpcmVjdGl2ZSxcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBzb3VyY2VUeXBlKVxuICB9XTtcblxuICBpZiAoc3RvcmVUeXBlKSB7XG4gICAgcHJvdmlkZXJzLnB1c2goc3RvcmVUeXBlKTtcbiAgfVxuXG4gIHJldHVybiBwcm92aWRlcnM7XG59XG4iXX0=
@@ -0,0 +1,27 @@
1
+ import { DbxListViewWrapper } from '@dereekb/dbx-web';
2
+ import { Directive, Host } from "@angular/core";
3
+ import { DbxFirebaseCollectionStoreDirective } from './store.collection.directive';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./store.collection.directive";
6
+ import * as i2 from "@dereekb/dbx-web";
7
+ /**
8
+ * Directive that connects a host DbxListView to a DbxFirebaseCollectionStoreDirective to pass data for rendering items from a collection and query parameters.
9
+ */
10
+ export class DbxFirebaseCollectionListDirective {
11
+ constructor(dbxFirebaseCollectionStoreDirective, dbxListViewWrapper) {
12
+ this.dbxFirebaseCollectionStoreDirective = dbxFirebaseCollectionStoreDirective;
13
+ this.dbxListViewWrapper = dbxListViewWrapper;
14
+ this.dbxListViewWrapper.state$ = this.dbxFirebaseCollectionStoreDirective.pageLoadingState$;
15
+ }
16
+ }
17
+ DbxFirebaseCollectionListDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseCollectionListDirective, deps: [{ token: i1.DbxFirebaseCollectionStoreDirective }, { token: i2.DbxListViewWrapper, host: true }], target: i0.ɵɵFactoryTarget.Directive });
18
+ DbxFirebaseCollectionListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.2", type: DbxFirebaseCollectionListDirective, selector: "[dbxFirebaseCollectionList]", ngImport: i0 });
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseCollectionListDirective, decorators: [{
20
+ type: Directive,
21
+ args: [{
22
+ selector: '[dbxFirebaseCollectionList]'
23
+ }]
24
+ }], ctorParameters: function () { return [{ type: i1.DbxFirebaseCollectionStoreDirective }, { type: i2.DbxListViewWrapper, decorators: [{
25
+ type: Host
26
+ }] }]; } });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuY29sbGVjdGlvbi5saXN0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL3N0b3JlL3N0b3JlLmNvbGxlY3Rpb24ubGlzdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7QUFFbkY7O0dBRUc7QUFJSCxNQUFNLE9BQU8sa0NBQWtDO0lBRTdDLFlBQXFCLG1DQUEyRSxFQUFtQixrQkFBeUM7UUFBdkksd0NBQW1DLEdBQW5DLG1DQUFtQyxDQUF3QztRQUFtQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXVCO1FBQzFKLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLGlCQUFpQixDQUFDO0lBQzlGLENBQUM7OytIQUpVLGtDQUFrQzttSEFBbEMsa0NBQWtDOzJGQUFsQyxrQ0FBa0M7a0JBSDlDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDZCQUE2QjtpQkFDeEM7OzBCQUdvRyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGJ4TGlzdFZpZXdXcmFwcGVyIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uU3RvcmVEaXJlY3RpdmUgfSBmcm9tICcuL3N0b3JlLmNvbGxlY3Rpb24uZGlyZWN0aXZlJztcblxuLyoqXG4gKiBEaXJlY3RpdmUgdGhhdCBjb25uZWN0cyBhIGhvc3QgRGJ4TGlzdFZpZXcgdG8gYSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZURpcmVjdGl2ZSB0byBwYXNzIGRhdGEgZm9yIHJlbmRlcmluZyBpdGVtcyBmcm9tIGEgY29sbGVjdGlvbiBhbmQgcXVlcnkgcGFyYW1ldGVycy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2RieEZpcmViYXNlQ29sbGVjdGlvbkxpc3RdJ1xufSlcbmV4cG9ydCBjbGFzcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25MaXN0RGlyZWN0aXZlPFQ+IHtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBkYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZURpcmVjdGl2ZTogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uU3RvcmVEaXJlY3RpdmU8VD4sIEBIb3N0KCkgcmVhZG9ubHkgZGJ4TGlzdFZpZXdXcmFwcGVyOiBEYnhMaXN0Vmlld1dyYXBwZXI8VD4pIHtcbiAgICB0aGlzLmRieExpc3RWaWV3V3JhcHBlci5zdGF0ZSQgPSB0aGlzLmRieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlRGlyZWN0aXZlLnBhZ2VMb2FkaW5nU3RhdGUkO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,50 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { shareReplay, distinctUntilChanged, exhaustMap, first, map, switchMap, tap } from 'rxjs';
3
+ import { cleanupDestroyable, filterMaybe } from '@dereekb/rxjs';
4
+ import { LockSetComponentStore } from '@dereekb/dbx-core';
5
+ import { dbxFirebaseCollectionLoaderInstance } from '../loader/collection.loader.instance';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * Used for storing the state of a Person and related email threads.
9
+ */
10
+ export class AbstractDbxFirebaseCollectionStore extends LockSetComponentStore {
11
+ constructor() {
12
+ super(...arguments);
13
+ // MARK: Effects
14
+ this.setMaxPages = this.effect((input) => {
15
+ return input.pipe(switchMap((maxPages) => this.loader$.pipe(tap((x) => x.maxPages = maxPages))));
16
+ });
17
+ this.setItemsPerPage = this.effect((input) => {
18
+ return input.pipe(switchMap((itemsPerPage) => this.loader$.pipe(tap((x) => x.itemsPerPage = itemsPerPage))));
19
+ });
20
+ this.setConstraints = this.effect((input) => {
21
+ return input.pipe(switchMap((constraints) => this.loader$.pipe(tap((x) => x.setConstraints(constraints)))));
22
+ });
23
+ this.next = this.effect((input) => {
24
+ return input.pipe(exhaustMap(() => this.loader$.pipe(first(), tap((x) => x.next()))));
25
+ });
26
+ this.restart = this.effect((input) => {
27
+ return input.pipe(exhaustMap(() => this.loader$.pipe(first(), tap((x) => x.restart()))));
28
+ });
29
+ // MARK: Accessors
30
+ this.currentFirestoreCollection$ = this.state$.pipe(map((x) => x.firestoreCollection), distinctUntilChanged(), shareReplay(1));
31
+ this.firestoreCollection$ = this.currentFirestoreCollection$.pipe(filterMaybe());
32
+ this.loader$ = this.currentFirestoreCollection$.pipe(switchMap((collection) => this.state$.pipe(first(), map(x => dbxFirebaseCollectionLoaderInstance({
33
+ collection,
34
+ maxPages: x.maxPages,
35
+ itemsPerPage: x.itemsPerPage,
36
+ constraints: x.constraints
37
+ })))), cleanupDestroyable(), distinctUntilChanged(), shareReplay(1));
38
+ this.firestoreIteration$ = this.loader$.pipe(switchMap(x => x.firestoreIteration$));
39
+ this.queryChangeWatcher$ = this.loader$.pipe(switchMap(x => x.queryChangeWatcher$));
40
+ this.accumulator$ = this.loader$.pipe(switchMap(x => x.accumulator$));
41
+ this.pageLoadingState$ = this.loader$.pipe(switchMap(x => x.pageLoadingState$));
42
+ this.setFirestoreCollection = this.updater((state, firestoreCollection) => ({ ...state, firestoreCollection }));
43
+ }
44
+ }
45
+ AbstractDbxFirebaseCollectionStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AbstractDbxFirebaseCollectionStore, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
46
+ AbstractDbxFirebaseCollectionStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AbstractDbxFirebaseCollectionStore });
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AbstractDbxFirebaseCollectionStore, decorators: [{
48
+ type: Injectable
49
+ }] });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL3N0b3JlL3N0b3JlLmNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsV0FBVyxFQUFFLG9CQUFvQixFQUFnQixVQUFVLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNILE9BQU8sRUFBcUIsa0JBQWtCLEVBQXdCLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQXVDLG1DQUFtQyxFQUEyQyxNQUFNLHNDQUFzQyxDQUFDOztBQTJCeks7O0dBRUc7QUFFSCxNQUFNLE9BQU8sa0NBQW9NLFNBQVEscUJBQXdCO0lBRGpQOztRQUdFLGdCQUFnQjtRQUNQLGdCQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQWdDLEVBQUUsRUFBRTtZQUN0RSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQ2YsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDdkMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUNsQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRU0sb0JBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBZ0MsRUFBRSxFQUFFO1lBQzFFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FDZixTQUFTLENBQUMsQ0FBQyxZ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QUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUM5RyxzQkFBaUIsR0FBd0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUVoSCwyQkFBc0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLG1CQUFpRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FFbks7OytIQTlFWSxrQ0FBa0M7bUlBQWxDLGtDQUFrQzsyRkFBbEMsa0NBQWtDO2tCQUQ5QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBTdWJzY3JpcHRpb24sIGV4aGF1c3RNYXAsIGZpcnN0LCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaXJlYmFzZVF1ZXJ5SXRlbUFjY3VtdWxhdG9yLCBGaXJlc3RvcmVDb2xsZWN0aW9uLCBGaXJlc3RvcmVEb2N1bWVudCwgRmlyZXN0b3JlSXRlbVBhZ2VJdGVyYXRpb25JbnN0YW5jZSwgRmlyZXN0b3JlUXVlcnlDb25zdHJhaW50LCBJdGVyYXRpb25RdWVyeURvY0NoYW5nZVdhdGNoZXIgfSBmcm9tICdAZGVyZWVrYi9maXJlYmFzZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlT3JWYWx1ZSwgY2xlYW51cERlc3Ryb3lhYmxlLCBQYWdlTGlzdExvYWRpbmdTdGF0ZSwgZmlsdGVyTWF5YmUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IEFycmF5T3JWYWx1ZSwgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IExvY2tTZXRDb21wb25lbnRTdG9yZSB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckluc3RhbmNlLCBkYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZSwgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVySW5zdGFuY2VEYXRhIH0gZnJvbSAnLi4vbG9hZGVyL2NvbGxlY3Rpb24ubG9hZGVyLmluc3RhbmNlJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZTxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPj4gZXh0ZW5kcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZURhdGE8VCwgRD4ge1xuICByZWFkb25seSBmaXJlc3RvcmVDb2xsZWN0aW9uJDogT2JzZXJ2YWJsZTxNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+Pj47XG4gIHJlYWRvbmx5IGxvYWRlciQ6IE9ic2VydmFibGU8RGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVySW5zdGFuY2U8VCwgRD4+O1xuXG4gIHJlYWRvbmx5IGZpcmVzdG9yZUl0ZXJhdGlvbiQ6IE9ic2VydmFibGU8RmlyZXN0b3JlSXRlbVBhZ2VJdGVyYXRpb25JbnN0YW5jZTxUPj47XG4gIHJlYWRvbmx5IHF1ZXJ5Q2hhbmdlV2F0Y2hlciQ6IE9ic2VydmFibGU8SXRlcmF0aW9uUXVlcnlEb2NDaGFuZ2VXYXRjaGVyPFQ+PjtcbiAgcmVhZG9ubHkgYWNjdW11bGF0b3IkOiBPYnNlcnZhYmxlPEZpcmViYXNlUXVlcnlJdGVtQWNjdW11bGF0b3I8VD4+O1xuICByZWFkb25seSBwYWdlTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxQYWdlTGlzdExvYWRpbmdTdGF0ZTxUPj47XG5cbiAgc2V0TWF4UGFnZXMob2JzZXJ2YWJsZU9yVmFsdWU6IE9ic2VydmFibGVPclZhbHVlPE1heWJlPG51bWJlcj4+KTogU3Vic2NyaXB0aW9uO1xuICBzZXRJdGVtc1BlclBhZ2Uob2JzZXJ2YWJsZU9yVmFsdWU6IE9ic2VydmFibGVPclZhbHVlPE1heWJlPG51bWJlcj4+KTogU3Vic2NyaXB0aW9uO1xuICBzZXRDb25zdHJhaW50cyhvYnNlcnZhYmxlT3JWYWx1ZTogT2JzZXJ2YWJsZU9yVmFsdWU8TWF5YmU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludDxUPj4+Pik6IFN1YnNjcmlwdGlvbjtcbiAgbmV4dChvYnNlcnZhYmxlT3JWYWx1ZTogT2JzZXJ2YWJsZU9yVmFsdWU8dm9pZD4pOiB2b2lkO1xuICByZXN0YXJ0KG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTx2b2lkPik6IHZvaWQ7XG5cbiAgcmVhZG9ubHkgc2V0RmlyZXN0b3JlQ29sbGVjdGlvbjogKCgpID0+IHZvaWQpIHwgKChvYnNlcnZhYmxlT3JWYWx1ZTogT2JzZXJ2YWJsZU9yVmFsdWU8TWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbjxULCBEPj4+KSA9PiBTdWJzY3JpcHRpb24pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlQ29udGV4dFN0YXRlPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+PiB7XG4gIHJlYWRvbmx5IGZpcmVzdG9yZUNvbGxlY3Rpb24/OiBNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+PjtcbiAgcmVhZG9ubHkgbWF4UGFnZXM/OiBNYXliZTxudW1iZXI+O1xuICByZWFkb25seSBpdGVtc1BlclBhZ2U/OiBNYXliZTxudW1iZXI+O1xuICByZWFkb25seSBjb25zdHJhaW50cz86IE1heWJlPEFycmF5T3JWYWx1ZTxGaXJlc3RvcmVRdWVyeUNvbnN0cmFpbnQ8VD4+Pjtcbn1cblxuLyoqXG4gKiBVc2VkIGZvciBzdG9yaW5nIHRoZSBzdGF0ZSBvZiBhIFBlcnNvbiBhbmQgcmVsYXRlZCBlbWFpbCB0aHJlYWRzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQWJzdHJhY3REYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZTxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPiwgQyBleHRlbmRzIERieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlQ29udGV4dFN0YXRlPFQsIEQ+ID0gRGJ4RmlyZWJhc2VDb2xsZWN0aW9uU3RvcmVDb250ZXh0U3RhdGU8VCwgRD4+IGV4dGVuZHMgTG9ja1NldENvbXBvbmVudFN0b3JlPEM+IGltcGxlbWVudHMgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uU3RvcmU8VCwgRD4ge1xuXG4gIC8vIE1BUks6IEVmZmVjdHNcbiAgcmVhZG9ubHkgc2V0TWF4UGFnZXMgPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8TWF5YmU8bnVtYmVyPj4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgobWF4UGFnZXMpID0+IHRoaXMubG9hZGVyJC5waXBlKFxuICAgICAgICB0YXAoKHgpID0+IHgubWF4UGFnZXMgPSBtYXhQYWdlcylcbiAgICAgICkpXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc2V0SXRlbXNQZXJQYWdlID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1heWJlPG51bWJlcj4+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGl0ZW1zUGVyUGFnZSkgPT4gdGhpcy5sb2FkZXIkLnBpcGUoXG4gICAgICAgIHRhcCgoeCkgPT4geC5pdGVtc1BlclBhZ2UgPSBpdGVtc1BlclBhZ2UpXG4gICAgICApKVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNldENvbnN0cmFpbnRzID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPE1heWJlPEFycmF5T3JWYWx1ZTxGaXJlc3RvcmVRdWVyeUNvbnN0cmFpbnQ8VD4+Pj4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoY29uc3RyYWludHMpID0+IHRoaXMubG9hZGVyJC5waXBlKFxuICAgICAgICB0YXAoKHgpID0+IHguc2V0Q29uc3RyYWludHMoY29uc3RyYWludHMpKVxuICAgICAgKSlcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSBuZXh0ID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPHZvaWQ+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMubG9hZGVyJC5waXBlKFxuICAgICAgICBmaXJzdCgpLFxuICAgICAgICB0YXAoKHgpID0+IHgubmV4dCgpKVxuICAgICAgKSlcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSByZXN0YXJ0ID0gdGhpcy5lZmZlY3QoKGlucHV0OiBPYnNlcnZhYmxlPHZvaWQ+KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMubG9hZGVyJC5waXBlKFxuICAgICAgICBmaXJzdCgpLFxuICAgICAgICB0YXAoKHgpID0+IHgucmVzdGFydCgpKVxuICAgICAgKSlcbiAgICApO1xuICB9KTtcblxuICAvLyBNQVJLOiBBY2Nlc3NvcnNcbiAgcmVhZG9ubHkgY3VycmVudEZpcmVzdG9yZUNvbGxlY3Rpb24kOiBPYnNlcnZhYmxlPE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmZpcmVzdG9yZUNvbGxlY3Rpb24pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBmaXJlc3RvcmVDb2xsZWN0aW9uJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+PiA9IHRoaXMuY3VycmVudEZpcmVzdG9yZUNvbGxlY3Rpb24kLnBpcGUoXG4gICAgZmlsdGVyTWF5YmUoKVxuICApO1xuXG4gIHJlYWRvbmx5IGxvYWRlciQ6IE9ic2VydmFibGU8RGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVySW5zdGFuY2U8VCwgRD4+ID0gdGhpcy5jdXJyZW50RmlyZXN0b3JlQ29sbGVjdGlvbiQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGNvbGxlY3Rpb24pID0+IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgICBmaXJzdCgpLFxuICAgICAgbWFwKHggPT4gZGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVySW5zdGFuY2Uoe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBtYXhQYWdlczogeC5tYXhQYWdlcyxcbiAgICAgICAgaXRlbXNQZXJQYWdlOiB4Lml0ZW1zUGVyUGFnZSxcbiAgICAgICAgY29uc3RyYWludHM6IHguY29uc3RyYWludHNcbiAgICAgIH0pKVxuICAgICkpLFxuICAgIGNsZWFudXBEZXN0cm95YWJsZSgpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBmaXJlc3RvcmVJdGVyYXRpb24kOiBPYnNlcnZhYmxlPEZpcmVzdG9yZUl0ZW1QYWdlSXRlcmF0aW9uSW5zdGFuY2U8VD4+ID0gdGhpcy5sb2FkZXIkLnBpcGUoc3dpdGNoTWFwKHggPT4geC5maXJlc3RvcmVJdGVyYXRpb24kKSk7XG4gIHJlYWRvbmx5IHF1ZXJ5Q2hhbmdlV2F0Y2hlciQ6IE9ic2VydmFibGU8SXRlcmF0aW9uUXVlcnlEb2NDaGFuZ2VXYXRjaGVyPFQ+PiA9IHRoaXMubG9hZGVyJC5waXBlKHN3aXRjaE1hcCh4ID0+IHgucXVlcnlDaGFuZ2VXYXRjaGVyJCkpO1xuICByZWFkb25seSBhY2N1bXVsYXRvciQ6IE9ic2VydmFibGU8RmlyZWJhc2VRdWVyeUl0ZW1BY2N1bXVsYXRvcjxUPj4gPSB0aGlzLmxvYWRlciQucGlwZShzd2l0Y2hNYXAoeCA9PiB4LmFjY3VtdWxhdG9yJCkpO1xuICByZWFkb25seSBwYWdlTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxQYWdlTGlzdExvYWRpbmdTdGF0ZTxUPj4gPSB0aGlzLmxvYWRlciQucGlwZShzd2l0Y2hNYXAoeCA9PiB4LnBhZ2VMb2FkaW5nU3RhdGUkKSk7XG5cbiAgcmVhZG9ubHkgc2V0RmlyZXN0b3JlQ29sbGVjdGlvbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGZpcmVzdG9yZUNvbGxlY3Rpb246IEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4gfCBudWxsIHwgdW5kZWZpbmVkKSA9PiAoeyAuLi5zdGF0ZSwgZmlyZXN0b3JlQ29sbGVjdGlvbiB9KSk7XG5cbn1cbiJdfQ==
@@ -0,0 +1,33 @@
1
+ import { Directive, Host } from "@angular/core";
2
+ import { AbstractSubscriptionDirective } from '@dereekb/dbx-core';
3
+ import { DbxFirebaseAuthService } from "../../auth/service/firebase.auth.service";
4
+ import { DbxFirebaseDocumentStoreDirective } from "./store.document.directive";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../auth/service/firebase.auth.service";
7
+ import * as i2 from "./store.document.directive";
8
+ /**
9
+ * Utility directive for a host DbxFirebaseDocumentStoreDirective that sets the document's ID to match the ID of the current user.
10
+ *
11
+ * This is useful for cases where each document is keyed by the user (I.E. implements UserRelatedById).
12
+ */
13
+ export class DbxFirebaseDocumentAuthIdDirective extends AbstractSubscriptionDirective {
14
+ constructor(dbxFirebaseAuthService, dbxFirebaseDocumentStoreDirective) {
15
+ super();
16
+ this.dbxFirebaseAuthService = dbxFirebaseAuthService;
17
+ this.dbxFirebaseDocumentStoreDirective = dbxFirebaseDocumentStoreDirective;
18
+ }
19
+ ngOnInit() {
20
+ this.sub = this.dbxFirebaseDocumentStoreDirective.store.setId(this.dbxFirebaseAuthService.userIdentifier$);
21
+ }
22
+ }
23
+ DbxFirebaseDocumentAuthIdDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseDocumentAuthIdDirective, deps: [{ token: i1.DbxFirebaseAuthService }, { token: i2.DbxFirebaseDocumentStoreDirective, host: true }], target: i0.ɵɵFactoryTarget.Directive });
24
+ DbxFirebaseDocumentAuthIdDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.2", type: DbxFirebaseDocumentAuthIdDirective, selector: "[dbxFirebaseDocumentAuthId]", usesInheritance: true, ngImport: i0 });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxFirebaseDocumentAuthIdDirective, decorators: [{
26
+ type: Directive,
27
+ args: [{
28
+ selector: '[dbxFirebaseDocumentAuthId]'
29
+ }]
30
+ }], ctorParameters: function () { return [{ type: i1.DbxFirebaseAuthService }, { type: i2.DbxFirebaseDocumentStoreDirective, decorators: [{
31
+ type: Host
32
+ }] }]; } });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuZG9jdW1lbnQuYXV0aC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9zdG9yZS9zdG9yZS5kb2N1bWVudC5hdXRoLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV4RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQUUvRTs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLGtDQUE2RixTQUFRLDZCQUE2QjtJQUU3SSxZQUFxQixzQkFBOEMsRUFBbUIsaUNBQTBFO1FBQzlKLEtBQUssRUFBRSxDQUFDO1FBRFcsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUFtQixzQ0FBaUMsR0FBakMsaUNBQWlDLENBQXlDO0lBRWhLLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsaUNBQWlDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0csQ0FBQzs7K0hBUlUsa0NBQWtDO21IQUFsQyxrQ0FBa0M7MkZBQWxDLGtDQUFrQztrQkFIOUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNkJBQTZCO2lCQUN4Qzs7MEJBR3VFLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3QsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGaXJlc3RvcmVEb2N1bWVudCB9IGZyb20gXCJAZGVyZWVrYi9maXJlYmFzZVwiO1xuaW1wb3J0IHsgQWJzdHJhY3RTdWJzY3JpcHRpb25EaXJlY3RpdmUgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2F1dGgvc2VydmljZS9maXJlYmFzZS5hdXRoLnNlcnZpY2VcIjtcbmltcG9ydCB7IERieEZpcmViYXNlRG9jdW1lbnRTdG9yZURpcmVjdGl2ZSB9IGZyb20gXCIuL3N0b3JlLmRvY3VtZW50LmRpcmVjdGl2ZVwiO1xuXG4vKipcbiAqIFV0aWxpdHkgZGlyZWN0aXZlIGZvciBhIGhvc3QgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlRGlyZWN0aXZlIHRoYXQgc2V0cyB0aGUgZG9jdW1lbnQncyBJRCB0byBtYXRjaCB0aGUgSUQgb2YgdGhlIGN1cnJlbnQgdXNlci5cbiAqIFxuICogVGhpcyBpcyB1c2VmdWwgZm9yIGNhc2VzIHdoZXJlIGVhY2ggZG9jdW1lbnQgaXMga2V5ZWQgYnkgdGhlIHVzZXIgKEkuRS4gaW1wbGVtZW50cyBVc2VyUmVsYXRlZEJ5SWQpLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZGJ4RmlyZWJhc2VEb2N1bWVudEF1dGhJZF0nXG59KVxuZXhwb3J0IGNsYXNzIERieEZpcmViYXNlRG9jdW1lbnRBdXRoSWREaXJlY3RpdmU8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4+IGV4dGVuZHMgQWJzdHJhY3RTdWJzY3JpcHRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGRieEZpcmViYXNlQXV0aFNlcnZpY2U6IERieEZpcmViYXNlQXV0aFNlcnZpY2UsIEBIb3N0KCkgcmVhZG9ubHkgZGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlRGlyZWN0aXZlOiBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVEaXJlY3RpdmU8VCwgRD4pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWIgPSB0aGlzLmRieEZpcmViYXNlRG9jdW1lbnRTdG9yZURpcmVjdGl2ZS5zdG9yZS5zZXRJZCh0aGlzLmRieEZpcmViYXNlQXV0aFNlcnZpY2UudXNlcklkZW50aWZpZXIkKTtcbiAgfVxuXG59XG4iXX0=