@dereekb/dbx-firebase 9.19.5 → 9.20.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 (89) hide show
  1. package/esm2020/lib/model/index.mjs +2 -2
  2. package/esm2020/lib/model/model.module.mjs +6 -5
  3. package/esm2020/lib/model/modules/index.mjs +3 -0
  4. package/esm2020/lib/model/modules/model/index.mjs +6 -0
  5. package/esm2020/lib/model/modules/model/model.tracker.service.mjs +30 -0
  6. package/esm2020/lib/model/modules/model/model.types.list.component.mjs +67 -0
  7. package/esm2020/lib/model/modules/model/model.types.module.mjs +21 -0
  8. package/esm2020/lib/model/modules/model/model.types.service.mjs +114 -0
  9. package/esm2020/lib/model/modules/model/model.types.view.directive.mjs +48 -0
  10. package/esm2020/lib/model/modules/store/index.mjs +17 -0
  11. package/esm2020/lib/model/modules/store/model.store.module.mjs +23 -0
  12. package/esm2020/lib/model/modules/store/store.collection.change.directive.mjs +52 -0
  13. package/esm2020/lib/model/modules/store/store.collection.change.if.directive.mjs +57 -0
  14. package/esm2020/lib/model/modules/store/store.collection.directive.mjs +54 -0
  15. package/esm2020/lib/model/{store → modules/store}/store.collection.list.directive.mjs +1 -1
  16. package/esm2020/lib/model/modules/store/store.collection.mjs +55 -0
  17. package/esm2020/lib/model/modules/store/store.document.auth.directive.mjs +33 -0
  18. package/esm2020/lib/model/modules/store/store.document.crud.mjs +80 -0
  19. package/esm2020/lib/model/modules/store/store.document.directive.mjs +61 -0
  20. package/esm2020/lib/model/modules/store/store.document.mjs +109 -0
  21. package/esm2020/lib/model/modules/store/store.document.router.directive.mjs +67 -0
  22. package/esm2020/lib/model/modules/store/store.document.router.key.directive.mjs +67 -0
  23. package/esm2020/lib/model/modules/store/store.subcollection.directive.mjs +30 -0
  24. package/esm2020/lib/model/modules/store/store.subcollection.document.mjs +98 -0
  25. package/esm2020/lib/model/modules/store/store.subcollection.mjs +79 -0
  26. package/esm2020/lib/model/modules/store/store.subcollection.rxjs.mjs +23 -0
  27. package/esm2020/lib/model/service/index.mjs +3 -1
  28. package/esm2020/lib/model/service/model.context.instance.mjs +54 -0
  29. package/esm2020/lib/model/service/model.context.mjs +2 -35
  30. package/esm2020/lib/model/service/model.context.service.mjs +38 -0
  31. package/esm2020/lib/model/system/systemstate.collection.store.directive.mjs +2 -2
  32. package/esm2020/lib/model/system/systemstate.collection.store.mjs +2 -2
  33. package/esm2020/lib/model/system/systemstate.document.store.directive.mjs +2 -2
  34. package/esm2020/lib/model/system/systemstate.document.store.mjs +2 -2
  35. package/fesm2015/dereekb-dbx-firebase.mjs +361 -65
  36. package/fesm2015/dereekb-dbx-firebase.mjs.map +1 -1
  37. package/fesm2020/dereekb-dbx-firebase.mjs +362 -65
  38. package/fesm2020/dereekb-dbx-firebase.mjs.map +1 -1
  39. package/lib/model/index.d.ts +1 -1
  40. package/lib/model/model.module.d.ts +3 -2
  41. package/lib/model/modules/index.d.ts +2 -0
  42. package/lib/model/modules/model/index.d.ts +5 -0
  43. package/lib/model/modules/model/model.tracker.service.d.ts +13 -0
  44. package/lib/model/modules/model/model.types.list.component.d.ts +22 -0
  45. package/lib/model/modules/model/model.types.module.d.ts +10 -0
  46. package/lib/model/modules/model/model.types.service.d.ts +88 -0
  47. package/lib/model/modules/model/model.types.view.directive.d.ts +18 -0
  48. package/lib/model/{store → modules/store}/index.d.ts +0 -0
  49. package/lib/model/{store → modules/store}/model.store.module.d.ts +0 -0
  50. package/lib/model/{store → modules/store}/store.collection.change.directive.d.ts +1 -1
  51. package/lib/model/{store → modules/store}/store.collection.change.if.directive.d.ts +0 -0
  52. package/lib/model/{store → modules/store}/store.collection.d.ts +2 -2
  53. package/lib/model/{store → modules/store}/store.collection.directive.d.ts +1 -1
  54. package/lib/model/{store → modules/store}/store.collection.list.directive.d.ts +0 -0
  55. package/lib/model/{store → modules/store}/store.document.auth.directive.d.ts +1 -1
  56. package/lib/model/{store → modules/store}/store.document.crud.d.ts +0 -0
  57. package/lib/model/{store → modules/store}/store.document.d.ts +0 -0
  58. package/lib/model/{store → modules/store}/store.document.directive.d.ts +5 -3
  59. package/lib/model/{store → modules/store}/store.document.router.directive.d.ts +0 -0
  60. package/lib/model/{store → modules/store}/store.document.router.key.directive.d.ts +0 -0
  61. package/lib/model/{store → modules/store}/store.subcollection.d.ts +0 -0
  62. package/lib/model/{store → modules/store}/store.subcollection.directive.d.ts +0 -0
  63. package/lib/model/{store → modules/store}/store.subcollection.document.d.ts +0 -0
  64. package/lib/model/{store → modules/store}/store.subcollection.rxjs.d.ts +0 -0
  65. package/lib/model/service/index.d.ts +2 -0
  66. package/lib/model/service/model.context.d.ts +16 -16
  67. package/lib/model/service/model.context.instance.d.ts +31 -0
  68. package/lib/model/service/model.context.service.d.ts +31 -0
  69. package/lib/model/system/systemstate.collection.store.d.ts +1 -1
  70. package/lib/model/system/systemstate.collection.store.directive.d.ts +1 -1
  71. package/lib/model/system/systemstate.document.store.d.ts +1 -1
  72. package/lib/model/system/systemstate.document.store.directive.d.ts +1 -1
  73. package/package.json +5 -5
  74. package/esm2020/lib/model/store/index.mjs +0 -17
  75. package/esm2020/lib/model/store/model.store.module.mjs +0 -23
  76. package/esm2020/lib/model/store/store.collection.change.directive.mjs +0 -52
  77. package/esm2020/lib/model/store/store.collection.change.if.directive.mjs +0 -57
  78. package/esm2020/lib/model/store/store.collection.directive.mjs +0 -54
  79. package/esm2020/lib/model/store/store.collection.mjs +0 -55
  80. package/esm2020/lib/model/store/store.document.auth.directive.mjs +0 -33
  81. package/esm2020/lib/model/store/store.document.crud.mjs +0 -80
  82. package/esm2020/lib/model/store/store.document.directive.mjs +0 -59
  83. package/esm2020/lib/model/store/store.document.mjs +0 -109
  84. package/esm2020/lib/model/store/store.document.router.directive.mjs +0 -67
  85. package/esm2020/lib/model/store/store.document.router.key.directive.mjs +0 -67
  86. package/esm2020/lib/model/store/store.subcollection.directive.mjs +0 -30
  87. package/esm2020/lib/model/store/store.subcollection.document.mjs +0 -98
  88. package/esm2020/lib/model/store/store.subcollection.mjs +0 -79
  89. package/esm2020/lib/model/store/store.subcollection.rxjs.mjs +0 -23
@@ -1,7 +1,7 @@
1
1
  export * from './loader';
2
2
  export * from './service';
3
- export * from './store';
3
+ export * from './modules';
4
4
  export * from './system';
5
5
  export * from './error';
6
6
  export * from './model.module';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9sb2FkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zeXN0ZW0nO1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvcic7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsLm1vZHVsZSc7XG4iXX0=
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9sb2FkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kdWxlcyc7XG5leHBvcnQgKiBmcm9tICcuL3N5c3RlbSc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9yJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwubW9kdWxlJztcbiJdfQ==
@@ -1,15 +1,16 @@
1
1
  import { NgModule } from '@angular/core';
2
- import { DbxFirebaseModelStoreModule } from './store/model.store.module';
2
+ import { DbxFirebaseModelTypesModule } from './modules/model/model.types.module';
3
+ import { DbxFirebaseModelStoreModule } from './modules/store/model.store.module';
3
4
  import * as i0 from "@angular/core";
4
5
  export class DbxFirebaseModelModule {
5
6
  }
6
7
  DbxFirebaseModelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
- DbxFirebaseModelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelModule, exports: [DbxFirebaseModelStoreModule] });
8
- DbxFirebaseModelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelModule, imports: [DbxFirebaseModelStoreModule] });
8
+ DbxFirebaseModelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelModule, exports: [DbxFirebaseModelStoreModule, DbxFirebaseModelTypesModule] });
9
+ DbxFirebaseModelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelModule, imports: [DbxFirebaseModelStoreModule, DbxFirebaseModelTypesModule] });
9
10
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelModule, decorators: [{
10
11
  type: NgModule,
11
12
  args: [{
12
- exports: [DbxFirebaseModelStoreModule]
13
+ exports: [DbxFirebaseModelStoreModule, DbxFirebaseModelTypesModule]
13
14
  }]
14
15
  }] });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbW9kZWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBS3pFLE1BQU0sT0FBTyxzQkFBc0I7O29IQUF0QixzQkFBc0I7cUhBQXRCLHNCQUFzQixZQUZ2QiwyQkFBMkI7cUhBRTFCLHNCQUFzQixZQUZ2QiwyQkFBMkI7NEZBRTFCLHNCQUFzQjtrQkFIbEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztpQkFDdkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VNb2RlbFN0b3JlTW9kdWxlIH0gZnJvbSAnLi9zdG9yZS9tb2RlbC5zdG9yZS5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBleHBvcnRzOiBbRGJ4RmlyZWJhc2VNb2RlbFN0b3JlTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBEYnhGaXJlYmFzZU1vZGVsTW9kdWxlIHt9XG4iXX0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbW9kZWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDakYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBS2pGLE1BQU0sT0FBTyxzQkFBc0I7O29IQUF0QixzQkFBc0I7cUhBQXRCLHNCQUFzQixZQUZ2QiwyQkFBMkIsRUFBRSwyQkFBMkI7cUhBRXZELHNCQUFzQixZQUZ2QiwyQkFBMkIsRUFBRSwyQkFBMkI7NEZBRXZELHNCQUFzQjtrQkFIbEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSwyQkFBMkIsQ0FBQztpQkFDcEUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzTW9kdWxlIH0gZnJvbSAnLi9tb2R1bGVzL21vZGVsL21vZGVsLnR5cGVzLm1vZHVsZSc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZU1vZGVsU3RvcmVNb2R1bGUgfSBmcm9tICcuL21vZHVsZXMvc3RvcmUvbW9kZWwuc3RvcmUubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogW0RieEZpcmViYXNlTW9kZWxTdG9yZU1vZHVsZSwgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBEYnhGaXJlYmFzZU1vZGVsTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './model';
2
+ export * from './store';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlJztcbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export * from './model.tracker.service';
2
+ export * from './model.types.service';
3
+ export * from './model.types.module';
4
+ export * from './model.types.list.component';
5
+ export * from './model.types.view.directive';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL21vZGVsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbW9kZWwudHJhY2tlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwudHlwZXMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsLnR5cGVzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsLnR5cGVzLmxpc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwudHlwZXMudmlldy5kaXJlY3RpdmUnO1xuIl19
@@ -0,0 +1,30 @@
1
+ import { map, switchMap } from 'rxjs';
2
+ import { Injectable } from '@angular/core';
3
+ import { allDbxModelViewTrackerEventModelKeys, DbxModelTrackerService } from '@dereekb/dbx-web';
4
+ import { DbxFirebaseModelTypesService } from './model.types.service';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@dereekb/dbx-web";
7
+ import * as i2 from "./model.types.service";
8
+ export class DbxFirebaseModelTrackerService {
9
+ constructor(dbxModelTrackerService, dbxFirebaseModelTypesService) {
10
+ this.dbxModelTrackerService = dbxModelTrackerService;
11
+ this.dbxFirebaseModelTypesService = dbxFirebaseModelTypesService;
12
+ }
13
+ // TODO: Expose as observables directly that update when history events change.
14
+ loadHistoryKeys() {
15
+ return this.dbxModelTrackerService.getAllViewEvents().pipe(map(allDbxModelViewTrackerEventModelKeys));
16
+ }
17
+ loadHistoryPairs() {
18
+ const historyKeys$ = this.loadHistoryKeys();
19
+ return historyKeys$.pipe(switchMap((x) => this.dbxFirebaseModelTypesService.instancePairsForKeys(x)));
20
+ }
21
+ }
22
+ DbxFirebaseModelTrackerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTrackerService, deps: [{ token: i1.DbxModelTrackerService }, { token: i2.DbxFirebaseModelTypesService }], target: i0.ɵɵFactoryTarget.Injectable });
23
+ DbxFirebaseModelTrackerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTrackerService, providedIn: 'root' });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTrackerService, decorators: [{
25
+ type: Injectable,
26
+ args: [{
27
+ providedIn: 'root'
28
+ }]
29
+ }], ctorParameters: function () { return [{ type: i1.DbxModelTrackerService }, { type: i2.DbxFirebaseModelTypesService }]; } });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwudHJhY2tlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbW9kdWxlcy9tb2RlbC9tb2RlbC50cmFja2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRyxPQUFPLEVBQUUsNEJBQTRCLEVBQTRDLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFLL0csTUFBTSxPQUFPLDhCQUE4QjtJQVl6QyxZQUFxQixzQkFBOEMsRUFBVyw0QkFBMEQ7UUFBbkgsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUFXLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBOEI7SUFBRyxDQUFDO0lBWDVJLCtFQUErRTtJQUUvRSxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsQ0FBQztJQUN4RyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzVDLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEcsQ0FBQzs7NEhBVlUsOEJBQThCO2dJQUE5Qiw4QkFBOEIsY0FGN0IsTUFBTTs0RkFFUCw4QkFBOEI7a0JBSDFDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFsbERieE1vZGVsVmlld1RyYWNrZXJFdmVudE1vZGVsS2V5cywgRGJ4TW9kZWxUcmFja2VyU2VydmljZSB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWInO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSwgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpciB9IGZyb20gJy4vbW9kZWwudHlwZXMuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERieEZpcmViYXNlTW9kZWxUcmFja2VyU2VydmljZSB7XG4gIC8vIFRPRE86IEV4cG9zZSBhcyBvYnNlcnZhYmxlcyBkaXJlY3RseSB0aGF0IHVwZGF0ZSB3aGVuIGhpc3RvcnkgZXZlbnRzIGNoYW5nZS5cblxuICBsb2FkSGlzdG9yeUtleXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGJ4TW9kZWxUcmFja2VyU2VydmljZS5nZXRBbGxWaWV3RXZlbnRzKCkucGlwZShtYXAoYWxsRGJ4TW9kZWxWaWV3VHJhY2tlckV2ZW50TW9kZWxLZXlzKSk7XG4gIH1cblxuICBsb2FkSGlzdG9yeVBhaXJzKCk6IE9ic2VydmFibGU8RGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpcltdPiB7XG4gICAgY29uc3QgaGlzdG9yeUtleXMkID0gdGhpcy5sb2FkSGlzdG9yeUtleXMoKTtcbiAgICByZXR1cm4gaGlzdG9yeUtleXMkLnBpcGUoc3dpdGNoTWFwKCh4KSA9PiB0aGlzLmRieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2UuaW5zdGFuY2VQYWlyc0ZvcktleXMoeCkpKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGRieE1vZGVsVHJhY2tlclNlcnZpY2U6IERieE1vZGVsVHJhY2tlclNlcnZpY2UsIHJlYWRvbmx5IGRieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2U6IERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2UpIHt9XG59XG4iXX0=
@@ -0,0 +1,67 @@
1
+ import { Component } from '@angular/core';
2
+ import { AbstractDbxSelectionListWrapperDirective, AbstractDbxValueListViewItemComponent, AbstractDbxSelectionListViewDirective, DEFAULT_LIST_WRAPPER_DIRECTIVE_TEMPLATE, provideDbxListView, DEFAULT_DBX_SELECTION_VALUE_LIST_DIRECTIVE_TEMPLATE, provideDbxListViewWrapper } from '@dereekb/dbx-web';
3
+ import { of } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@dereekb/dbx-web";
6
+ import * as i2 from "@angular/common";
7
+ /**
8
+ * Renders an item as configured from the DbxFirebaseModelTypesServiceInstancePair.
9
+ */
10
+ export class DbxFirebaseModelTypeInstanceComponent extends AbstractDbxSelectionListWrapperDirective {
11
+ constructor() {
12
+ super({
13
+ componentClass: DbxFirebaseModelTypeInstanceViewComponent,
14
+ defaultSelectionMode: 'view'
15
+ });
16
+ }
17
+ }
18
+ DbxFirebaseModelTypeInstanceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypeInstanceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
+ DbxFirebaseModelTypeInstanceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxFirebaseModelTypeInstanceComponent, selector: "dbx-firebase-model-type-instance-list", providers: provideDbxListViewWrapper(DbxFirebaseModelTypeInstanceComponent), usesInheritance: true, ngImport: i0, template: "\n<dbx-list [state$]=\"state$\" [config]=\"config$ | async\" [disabled]=\"disabled\" [selectionMode]=\"selectionMode\">\n <ng-content top select=\"[top]\"></ng-content>\n <ng-content bottom select=\"[bottom]\"></ng-content>\n <ng-content empty select=\"[empty]\"></ng-content>\n</dbx-list>\n", isInline: true, dependencies: [{ kind: "component", type: i1.DbxListComponent, selector: "dbx-list", inputs: ["padded", "state$", "config", "disabled", "selectionMode"], outputs: ["contentScrolled"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypeInstanceComponent, decorators: [{
21
+ type: Component,
22
+ args: [{
23
+ selector: 'dbx-firebase-model-type-instance-list',
24
+ template: DEFAULT_LIST_WRAPPER_DIRECTIVE_TEMPLATE,
25
+ providers: provideDbxListViewWrapper(DbxFirebaseModelTypeInstanceComponent)
26
+ }]
27
+ }], ctorParameters: function () { return []; } });
28
+ export class DbxFirebaseModelTypeInstanceViewComponent extends AbstractDbxSelectionListViewDirective {
29
+ constructor() {
30
+ super(...arguments);
31
+ this.config = {
32
+ componentClass: DbxFirebaseModelTypeInstanceViewItemComponent,
33
+ mapValuesToItemValues: (x) => of(x.map((y) => ({ itemValue: y, icon: y.displayInfo.icon ?? y.icon, anchor: y.segueRef })))
34
+ };
35
+ }
36
+ }
37
+ DbxFirebaseModelTypeInstanceViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypeInstanceViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
38
+ DbxFirebaseModelTypeInstanceViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxFirebaseModelTypeInstanceViewComponent, selector: "ng-component", providers: provideDbxListView(DbxFirebaseModelTypeInstanceViewComponent), usesInheritance: true, ngImport: i0, template: "<dbx-selection-list-view [config]=\"config\"></dbx-selection-list-view>", isInline: true, dependencies: [{ kind: "component", type: i1.DbxSelectionValueListViewComponent, selector: "dbx-selection-list-view" }] });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypeInstanceViewComponent, decorators: [{
40
+ type: Component,
41
+ args: [{
42
+ template: DEFAULT_DBX_SELECTION_VALUE_LIST_DIRECTIVE_TEMPLATE,
43
+ providers: provideDbxListView(DbxFirebaseModelTypeInstanceViewComponent)
44
+ }]
45
+ }] });
46
+ export class DbxFirebaseModelTypeInstanceViewItemComponent extends AbstractDbxValueListViewItemComponent {
47
+ get title() {
48
+ return this.itemValue.displayInfo.title;
49
+ }
50
+ }
51
+ DbxFirebaseModelTypeInstanceViewItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypeInstanceViewItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
52
+ DbxFirebaseModelTypeInstanceViewItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxFirebaseModelTypeInstanceViewItemComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
53
+ <div>
54
+ <p>{{ title }}</p>
55
+ </div>
56
+ `, isInline: true });
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypeInstanceViewItemComponent, decorators: [{
58
+ type: Component,
59
+ args: [{
60
+ template: `
61
+ <div>
62
+ <p>{{ title }}</p>
63
+ </div>
64
+ `
65
+ }]
66
+ }] });
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwudHlwZXMubGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL21vZGVsL21vZGVsLnR5cGVzLmxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLHFDQUFxQyxFQUFFLHFDQUFxQyxFQUFFLHVDQUF1QyxFQUFtQyxrQkFBa0IsRUFBRSxtREFBbUQsRUFBc0IseUJBQXlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1VixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBSzFCOztHQUVHO0FBTUgsTUFBTSxPQUFPLHFDQUFzQyxTQUFRLHdDQUFrRjtJQUMzSTtRQUNFLEtBQUssQ0FBQztZQUNKLGNBQWMsRUFBRSx5Q0FBeUM7WUFDekQsb0JBQW9CLEVBQUUsTUFBTTtTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDOzttSUFOVSxxQ0FBcUM7dUhBQXJDLHFDQUFxQyxnRUFGckMseUJBQXlCLENBQUMscUNBQXFDLENBQUM7NEZBRWhFLHFDQUFxQztrQkFMakQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUNBQXVDO29CQUNqRCxRQUFRLEVBQUUsdUNBQXVDO29CQUNqRCxTQUFTLEVBQUUseUJBQXlCLHVDQUF1QztpQkFDNUU7O0FBY0QsTUFBTSxPQUFPLHlDQUEwQyxTQUFRLHFDQUErRTtJQUo5STs7UUFLVyxXQUFNLEdBQXVFO1lBQ3BGLGNBQWMsRUFBRSw2Q0FBNkM7WUFDN0QscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMzSCxDQUFDO0tBQ0g7O3VJQUxZLHlDQUF5QzsySEFBekMseUNBQXlDLHVDQUZ6QyxrQkFBa0IsQ0FBQyx5Q0FBeUMsQ0FBQzs0RkFFN0QseUNBQXlDO2tCQUpyRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtREFBbUQ7b0JBQzdELFNBQVMsRUFBRSxrQkFBa0IsMkNBQTJDO2lCQUN6RTs7QUFlRCxNQUFNLE9BQU8sNkNBQThDLFNBQVEscUNBQStFO0lBQ2hKLElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQzFDLENBQUM7OzJJQUhVLDZDQUE2QzsrSEFBN0MsNkNBQTZDLDJFQU45Qzs7OztHQUlUOzRGQUVVLDZDQUE2QztrQkFQekQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUU7Ozs7R0FJVDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3REYnhTZWxlY3Rpb25MaXN0V3JhcHBlckRpcmVjdGl2ZSwgQWJzdHJhY3REYnhWYWx1ZUxpc3RWaWV3SXRlbUNvbXBvbmVudCwgQWJzdHJhY3REYnhTZWxlY3Rpb25MaXN0Vmlld0RpcmVjdGl2ZSwgREVGQVVMVF9MSVNUX1dSQVBQRVJfRElSRUNUSVZFX1RFTVBMQVRFLCBEYnhTZWxlY3Rpb25WYWx1ZUxpc3RWaWV3Q29uZmlnLCBwcm92aWRlRGJ4TGlzdFZpZXcsIERFRkFVTFRfREJYX1NFTEVDVElPTl9WQUxVRV9MSVNUX0RJUkVDVElWRV9URU1QTEFURSwgRGJ4VmFsdWVBc0xpc3RJdGVtLCBwcm92aWRlRGJ4TGlzdFZpZXdXcmFwcGVyIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpciB9IGZyb20gJy4vbW9kZWwudHlwZXMuc2VydmljZSc7XG5cbmV4cG9ydCB0eXBlIERieEZpcmVzdG9yZU1vZGVsVHlwZUluc3RhbmNlSXRlbSA9IERieFZhbHVlQXNMaXN0SXRlbTxEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyPjtcblxuLyoqXG4gKiBSZW5kZXJzIGFuIGl0ZW0gYXMgY29uZmlndXJlZCBmcm9tIHRoZSBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYngtZmlyZWJhc2UtbW9kZWwtdHlwZS1pbnN0YW5jZS1saXN0JyxcbiAgdGVtcGxhdGU6IERFRkFVTFRfTElTVF9XUkFQUEVSX0RJUkVDVElWRV9URU1QTEFURSxcbiAgcHJvdmlkZXJzOiBwcm92aWRlRGJ4TGlzdFZpZXdXcmFwcGVyKERieEZpcmViYXNlTW9kZWxUeXBlSW5zdGFuY2VDb21wb25lbnQpXG59KVxuZXhwb3J0IGNsYXNzIERieEZpcmViYXNlTW9kZWxUeXBlSW5zdGFuY2VDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdERieFNlbGVjdGlvbkxpc3RXcmFwcGVyRGlyZWN0aXZlPERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXI+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoe1xuICAgICAgY29tcG9uZW50Q2xhc3M6IERieEZpcmViYXNlTW9kZWxUeXBlSW5zdGFuY2VWaWV3Q29tcG9uZW50LFxuICAgICAgZGVmYXVsdFNlbGVjdGlvbk1vZGU6ICd2aWV3J1xuICAgIH0pO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogREVGQVVMVF9EQlhfU0VMRUNUSU9OX1ZBTFVFX0xJU1RfRElSRUNUSVZFX1RFTVBMQVRFLFxuICBwcm92aWRlcnM6IHByb3ZpZGVEYnhMaXN0VmlldyhEYnhGaXJlYmFzZU1vZGVsVHlwZUluc3RhbmNlVmlld0NvbXBvbmVudClcbn0pXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VNb2RlbFR5cGVJbnN0YW5jZVZpZXdDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdERieFNlbGVjdGlvbkxpc3RWaWV3RGlyZWN0aXZlPERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXI+IHtcbiAgcmVhZG9ubHkgY29uZmlnOiBEYnhTZWxlY3Rpb25WYWx1ZUxpc3RWaWV3Q29uZmlnPERieEZpcmVzdG9yZU1vZGVsVHlwZUluc3RhbmNlSXRlbT4gPSB7XG4gICAgY29tcG9uZW50Q2xhc3M6IERieEZpcmViYXNlTW9kZWxUeXBlSW5zdGFuY2VWaWV3SXRlbUNvbXBvbmVudCxcbiAgICBtYXBWYWx1ZXNUb0l0ZW1WYWx1ZXM6ICh4KSA9PiBvZih4Lm1hcCgoeSkgPT4gKHsgaXRlbVZhbHVlOiB5LCBpY29uOiB5LmRpc3BsYXlJbmZvLmljb24gPz8geS5pY29uLCBhbmNob3I6IHkuc2VndWVSZWYgfSkpKVxuICB9O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2PlxuICAgICAgPHA+e3sgdGl0bGUgfX08L3A+XG4gICAgPC9kaXY+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VNb2RlbFR5cGVJbnN0YW5jZVZpZXdJdGVtQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3REYnhWYWx1ZUxpc3RWaWV3SXRlbUNvbXBvbmVudDxEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyPiB7XG4gIGdldCB0aXRsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtVmFsdWUuZGlzcGxheUluZm8udGl0bGU7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,21 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { DbxListLayoutModule, DbxModelInfoModule } from '@dereekb/dbx-web';
4
+ import { DbxFirebaseModelTypeInstanceComponent, DbxFirebaseModelTypeInstanceViewComponent, DbxFirebaseModelTypeInstanceViewItemComponent } from './model.types.list.component';
5
+ import { DbxfirebaseModelViewedEventDirective } from './model.types.view.directive';
6
+ import * as i0 from "@angular/core";
7
+ const declarations = [DbxfirebaseModelViewedEventDirective, DbxFirebaseModelTypeInstanceComponent, DbxFirebaseModelTypeInstanceViewComponent, DbxFirebaseModelTypeInstanceViewItemComponent];
8
+ export class DbxFirebaseModelTypesModule {
9
+ }
10
+ DbxFirebaseModelTypesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
+ DbxFirebaseModelTypesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypesModule, declarations: [DbxfirebaseModelViewedEventDirective, DbxFirebaseModelTypeInstanceComponent, DbxFirebaseModelTypeInstanceViewComponent, DbxFirebaseModelTypeInstanceViewItemComponent], imports: [CommonModule, DbxModelInfoModule, DbxListLayoutModule], exports: [DbxfirebaseModelViewedEventDirective, DbxFirebaseModelTypeInstanceComponent, DbxFirebaseModelTypeInstanceViewComponent, DbxFirebaseModelTypeInstanceViewItemComponent] });
12
+ DbxFirebaseModelTypesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypesModule, imports: [CommonModule, DbxModelInfoModule, DbxListLayoutModule] });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypesModule, decorators: [{
14
+ type: NgModule,
15
+ args: [{
16
+ imports: [CommonModule, DbxModelInfoModule, DbxListLayoutModule],
17
+ declarations,
18
+ exports: declarations
19
+ }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwudHlwZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbW9kdWxlcy9tb2RlbC9tb2RlbC50eXBlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLHlDQUF5QyxFQUFFLDZDQUE2QyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0ssT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBRXBGLE1BQU0sWUFBWSxHQUFHLENBQUMsb0NBQW9DLEVBQUUscUNBQXFDLEVBQUUseUNBQXlDLEVBQUUsNkNBQTZDLENBQUMsQ0FBQztBQU83TCxNQUFNLE9BQU8sMkJBQTJCOzt5SEFBM0IsMkJBQTJCOzBIQUEzQiwyQkFBMkIsaUJBUGxCLG9DQUFvQyxFQUFFLHFDQUFxQyxFQUFFLHlDQUF5QyxFQUFFLDZDQUE2QyxhQUcvSyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLGFBSDNDLG9DQUFvQyxFQUFFLHFDQUFxQyxFQUFFLHlDQUF5QyxFQUFFLDZDQUE2QzswSEFPOUssMkJBQTJCLFlBSjVCLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUI7NEZBSXBELDJCQUEyQjtrQkFMdkMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUM7b0JBQ2hFLFlBQVk7b0JBQ1osT0FBTyxFQUFFLFlBQVk7aUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYnhMaXN0TGF5b3V0TW9kdWxlLCBEYnhNb2RlbEluZm9Nb2R1bGUgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IERieEZpcmViYXNlTW9kZWxUeXBlSW5zdGFuY2VDb21wb25lbnQsIERieEZpcmViYXNlTW9kZWxUeXBlSW5zdGFuY2VWaWV3Q29tcG9uZW50LCBEYnhGaXJlYmFzZU1vZGVsVHlwZUluc3RhbmNlVmlld0l0ZW1Db21wb25lbnQgfSBmcm9tICcuL21vZGVsLnR5cGVzLmxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IERieGZpcmViYXNlTW9kZWxWaWV3ZWRFdmVudERpcmVjdGl2ZSB9IGZyb20gJy4vbW9kZWwudHlwZXMudmlldy5kaXJlY3RpdmUnO1xuXG5jb25zdCBkZWNsYXJhdGlvbnMgPSBbRGJ4ZmlyZWJhc2VNb2RlbFZpZXdlZEV2ZW50RGlyZWN0aXZlLCBEYnhGaXJlYmFzZU1vZGVsVHlwZUluc3RhbmNlQ29tcG9uZW50LCBEYnhGaXJlYmFzZU1vZGVsVHlwZUluc3RhbmNlVmlld0NvbXBvbmVudCwgRGJ4RmlyZWJhc2VNb2RlbFR5cGVJbnN0YW5jZVZpZXdJdGVtQ29tcG9uZW50XTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRGJ4TW9kZWxJbmZvTW9kdWxlLCBEYnhMaXN0TGF5b3V0TW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zLFxuICBleHBvcnRzOiBkZWNsYXJhdGlvbnNcbn0pXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,114 @@
1
+ import { distinctUntilChanged, map, shareReplay, switchMap, combineLatest } from 'rxjs';
2
+ import { DbxModelTypesService } from '@dereekb/dbx-web';
3
+ import { asArray } from '@dereekb/util';
4
+ import { Optional, Injectable } from '@angular/core';
5
+ import { DbxFirebaseModelContextService } from '../../service/model.context.service';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../service/model.context.service";
8
+ import * as i2 from "@dereekb/dbx-web";
9
+ /**
10
+ * Configuration provided in the root module for configuring entries.
11
+ */
12
+ export class DbxFirebaseModelTypesServiceConfig {
13
+ }
14
+ /**
15
+ * Provides model type information about models registered within Firebase.
16
+ *
17
+ * Automatically configures the DbxModelTypesService.
18
+ */
19
+ export class DbxFirebaseModelTypesService {
20
+ constructor(dbxFirebaseModelContextService, dbxModelTypesService, config) {
21
+ this.dbxFirebaseModelContextService = dbxFirebaseModelContextService;
22
+ this.dbxModelTypesService = dbxModelTypesService;
23
+ if (config) {
24
+ this.register(config.entries);
25
+ }
26
+ }
27
+ getDisplayInfo(typeInfo, data) {
28
+ let displayInfo;
29
+ if (data != null) {
30
+ displayInfo = typeInfo.displayInfoFactory(data);
31
+ displayInfo.icon = displayInfo.icon || typeInfo.icon; // set default icon
32
+ }
33
+ else {
34
+ displayInfo = this.getDefaultDisplayInfo(typeInfo);
35
+ }
36
+ return displayInfo;
37
+ }
38
+ getDefaultDisplayInfo(typeInfo) {
39
+ // TODO: Make configurable
40
+ return {
41
+ title: typeInfo.label ?? '',
42
+ icon: 'warning'
43
+ };
44
+ }
45
+ // MARK: Register
46
+ register(entries) {
47
+ const typeConfigs = asArray(entries).map((x) => ({ ...x, modelType: x.identity.modelType }));
48
+ this.dbxModelTypesService.addTypeConfigs(typeConfigs);
49
+ }
50
+ // MARK: Retrieval
51
+ currentInfoForType(type) {
52
+ return this.dbxModelTypesService.typesMap$.pipe(map((x) => x[type]));
53
+ }
54
+ infoForType(type) {
55
+ return this.currentInfoForType(type).pipe(map((x) => {
56
+ if (!x) {
57
+ console.error(`DbxFirebaseModelTypesService: contained no info for type "${type}". Ensure the correct type was entered, and that the type is registered with the DbxFirebaseModelTypesService.`);
58
+ throw x;
59
+ }
60
+ return x;
61
+ }));
62
+ }
63
+ instanceForKey(key$) {
64
+ return new DbxFirebaseModelTypesServiceInstance(this.dbxFirebaseModelContextService.modelInfoInstance(key$), this);
65
+ }
66
+ instancePairsForKeys(keys) {
67
+ return dbxFirebaseModelTypesServiceInstancePairForKeysFactory(this)(keys);
68
+ }
69
+ }
70
+ DbxFirebaseModelTypesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypesService, deps: [{ token: i1.DbxFirebaseModelContextService }, { token: i2.DbxModelTypesService }, { token: DbxFirebaseModelTypesServiceConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
71
+ DbxFirebaseModelTypesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypesService, providedIn: 'root' });
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypesService, decorators: [{
73
+ type: Injectable,
74
+ args: [{
75
+ providedIn: 'root'
76
+ }]
77
+ }], ctorParameters: function () { return [{ type: i1.DbxFirebaseModelContextService }, { type: i2.DbxModelTypesService }, { type: DbxFirebaseModelTypesServiceConfig, decorators: [{
78
+ type: Optional
79
+ }] }]; } });
80
+ export function dbxFirebaseModelTypesServiceInstancePairForKeysFactory(service) {
81
+ return (keys) => {
82
+ const instances = asArray(keys).map((x) => service.instanceForKey(x).instancePair$);
83
+ return combineLatest(instances);
84
+ };
85
+ }
86
+ /**
87
+ * DbxFirebaseModelTypesService instance
88
+ */
89
+ export class DbxFirebaseModelTypesServiceInstance {
90
+ constructor(modelInfoInstance$, dbxFirebaseModelTypesService) {
91
+ this.modelInfoInstance$ = modelInfoInstance$;
92
+ this.dbxFirebaseModelTypesService = dbxFirebaseModelTypesService;
93
+ this.key$ = this.modelInfoInstance$.pipe(switchMap((x) => x.key$));
94
+ this.modelType$ = this.modelInfoInstance$.pipe(switchMap((x) => x.modelType$));
95
+ this.snapshotData$ = this.modelInfoInstance$.pipe(switchMap((x) => x.snapshotData$));
96
+ this.typeInfo$ = this.modelType$.pipe(switchMap((x) => this.dbxFirebaseModelTypesService.infoForType(x)), distinctUntilChanged(), shareReplay(1));
97
+ this.identity$ = this.typeInfo$.pipe(map((x) => x.identity), distinctUntilChanged());
98
+ this.segueRef$ = combineLatest([this.key$, this.typeInfo$]).pipe(map(([key, info]) => (info.sref ? info.sref(key) : undefined)), shareReplay(1));
99
+ this.displayInfo$ = combineLatest([this.typeInfo$, this.snapshotData$]).pipe(map(([typeInfo, data]) => this.dbxFirebaseModelTypesService.getDisplayInfo(typeInfo, data)), shareReplay(1));
100
+ this.clickableSegueRef$ = combineLatest([this.segueRef$, this.displayInfo$]).pipe(map(([segueRef, displayInfo]) => {
101
+ let ref = undefined;
102
+ if (segueRef) {
103
+ ref = {
104
+ ...segueRef,
105
+ title: displayInfo.title,
106
+ icon: displayInfo.icon
107
+ };
108
+ }
109
+ return ref;
110
+ }), shareReplay(1));
111
+ this.instancePair$ = combineLatest([this.clickableSegueRef$, this.displayInfo$, this.key$]).pipe(map(([segueRef, displayInfo, key]) => ({ segueRef, displayInfo, key, instance: this })), shareReplay(1));
112
+ }
113
+ }
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwudHlwZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL21vZHVsZXMvbW9kZWwvbW9kZWwudHlwZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFjLFdBQVcsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBHLE9BQU8sRUFBc0Msb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RixPQUFPLEVBQWdCLE9BQU8sRUFBb0QsTUFBTSxlQUFlLENBQUM7QUFJeEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7QUFHckY7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGtDQUFrQztDQUV2RDtBQXdCRDs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLDRCQUE0QjtJQUN2QyxZQUFxQiw4QkFBOEQsRUFBVyxvQkFBb0UsRUFBYyxNQUEyQztRQUF0TSxtQ0FBOEIsR0FBOUIsOEJBQThCLENBQWdDO1FBQVcseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFnRDtRQUNoSyxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBSSxRQUFxQyxFQUFFLElBQU87UUFDOUQsSUFBSSxXQUF3QyxDQUFDO1FBRTdDLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtZQUNoQixXQUFXLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hELFdBQVcsQ0FBQyxJQUFJLEdBQUcsV0FB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bWFwLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaXJlc3RvcmVDb2xsZWN0aW9uVHlwZSwgRmlyZXN0b3JlRG9jdW1lbnQsIEZpcmVzdG9yZU1vZGVsSWRlbnRpdHksIEZpcmVzdG9yZU1vZGVsS2V5IH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgRGJ4TW9kZWxUeXBlSW5mbywgRGJ4TW9kZWxUeXBlc01hcCwgRGJ4TW9kZWxUeXBlc1NlcnZpY2UgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IEFycmF5T3JWYWx1ZSwgYXNBcnJheSwgRmFjdG9yeVdpdGhSZXF1aXJlZElucHV0LCBNYXliZSwgTW9kZWxUeXBlU3RyaW5nIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBDbGlja2FibGVBbmNob3JMaW5rU2VndWVSZWYsIEljb25BbmRUaXRsZSwgU2VndWVSZWYgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlT3JWYWx1ZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgR3JhbnRlZFJvbGUgfSBmcm9tICdAZGVyZWVrYi9tb2RlbCc7XG5pbXBvcnQgeyBPcHRpb25hbCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9tb2RlbC5jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VJbkNvbnRleHRGaXJlYmFzZU1vZGVsSW5mb1NlcnZpY2VJbnN0YW5jZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvbW9kZWwuY29udGV4dCc7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBwcm92aWRlZCBpbiB0aGUgcm9vdCBtb2R1bGUgZm9yIGNvbmZpZ3VyaW5nIGVudHJpZXMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlQ29uZmlnIHtcbiAgYWJzdHJhY3QgZW50cmllczogRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUVudHJ5W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUVudHJ5PFQgPSB1bmtub3duPiBleHRlbmRzIE9taXQ8RGJ4TW9kZWxUeXBlSW5mbywgJ2NhblNlZ3VlVG9WaWV3JyB8ICdtb2RlbFR5cGUnPiB7XG4gIC8qKlxuICAgKiBJZGVudGl0eSBvZiB0aGUgaXRlbSBiZWluZyByZWdpc3RlcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaWRlbnRpdHk6IEZpcmVzdG9yZU1vZGVsSWRlbnRpdHk7XG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBEYnhGaXJlYmFzZU1vZGVsRGlzcGxheUluZm8gZm9yIHRoZSBpbnB1dCBkYXRhLlxuICAgKlxuICAgKiBJZiBubyBpY29uIGlzIHByb3ZpZGVkLCBpdCB1c2VzIHRoZSBkZWZhdWx0IGljb24gY29uZmlndXJlZCBpbiB0aGlzIGVudHJ5LlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICogQHJldHVybnNcbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXlJbmZvRmFjdG9yeTogRmFjdG9yeVdpdGhSZXF1aXJlZElucHV0PERieEZpcmViYXNlTW9kZWxEaXNwbGF5SW5mbywgVD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VNb2RlbERpc3BsYXlJbmZvIGV4dGVuZHMgSWNvbkFuZFRpdGxlIHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VNb2RlbFR5cGVJbmZvPFQgPSB1bmtub3duPiBleHRlbmRzIERieE1vZGVsVHlwZUluZm8sIFBpY2s8RGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUVudHJ5PFQ+LCAnaWRlbnRpdHknIHwgJ2Rpc3BsYXlJbmZvRmFjdG9yeSc+IHt9XG5cbmV4cG9ydCB0eXBlIERieEZpcmViYXNlTW9kZWxUeXBlc01hcCA9IERieE1vZGVsVHlwZXNNYXA8RGJ4RmlyZWJhc2VNb2RlbFR5cGVJbmZvPjtcblxuLyoqXG4gKiBQcm92aWRlcyBtb2RlbCB0eXBlIGluZm9ybWF0aW9uIGFib3V0IG1vZGVscyByZWdpc3RlcmVkIHdpdGhpbiBGaXJlYmFzZS5cbiAqXG4gKiBBdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZXMgdGhlIERieE1vZGVsVHlwZXNTZXJ2aWNlLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlOiBEYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2UsIHJlYWRvbmx5IGRieE1vZGVsVHlwZXNTZXJ2aWNlOiBEYnhNb2RlbFR5cGVzU2VydmljZTxEYnhGaXJlYmFzZU1vZGVsVHlwZUluZm8+LCBAT3B0aW9uYWwoKSBjb25maWc/OiBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlQ29uZmlnKSB7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5yZWdpc3Rlcihjb25maWcuZW50cmllcyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RGlzcGxheUluZm88VD4odHlwZUluZm86IERieEZpcmViYXNlTW9kZWxUeXBlSW5mbzxUPiwgZGF0YTogVCkge1xuICAgIGxldCBkaXNwbGF5SW5mbzogRGJ4RmlyZWJhc2VNb2RlbERpc3BsYXlJbmZvO1xuXG4gICAgaWYgKGRhdGEgIT0gbnVsbCkge1xuICAgICAgZGlzcGxheUluZm8gPSB0eXBlSW5mby5kaXNwbGF5SW5mb0ZhY3RvcnkoZGF0YSk7XG4gICAgICBkaXNwbGF5SW5mby5pY29uID0gZGlzcGxheUluZm8uaWNvbiB8fCB0eXBlSW5mby5pY29uOyAvLyBzZXQgZGVmYXVsdCBpY29uXG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BsYXlJbmZvID0gdGhpcy5nZXREZWZhdWx0RGlzcGxheUluZm8odHlwZUluZm8pO1xuICAgIH1cblxuICAgIHJldHVybiBkaXNwbGF5SW5mbztcbiAgfVxuXG4gIGdldERlZmF1bHREaXNwbGF5SW5mbzxUID0gdW5rbm93bj4odHlwZUluZm86IERieEZpcmViYXNlTW9kZWxUeXBlSW5mbzxUPikge1xuICAgIC8vIFRPRE86IE1ha2UgY29uZmlndXJhYmxlXG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiB0eXBlSW5mby5sYWJlbCA/PyAnJyxcbiAgICAgIGljb246ICd3YXJuaW5nJ1xuICAgIH07XG4gIH1cblxuICAvLyBNQVJLOiBSZWdpc3RlclxuICByZWdpc3RlcihlbnRyaWVzOiBBcnJheU9yVmFsdWU8RGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUVudHJ5Pikge1xuICAgIGNvbnN0IHR5cGVDb25maWdzID0gYXNBcnJheShlbnRyaWVzKS5tYXAoKHgpID0+ICh7IC4uLngsIG1vZGVsVHlwZTogeC5pZGVudGl0eS5tb2RlbFR5cGUgfSkpO1xuICAgIHRoaXMuZGJ4TW9kZWxUeXBlc1NlcnZpY2UuYWRkVHlwZUNvbmZpZ3ModHlwZUNvbmZpZ3MpO1xuICB9XG5cbiAgLy8gTUFSSzogUmV0cmlldmFsXG4gIGN1cnJlbnRJbmZvRm9yVHlwZSh0eXBlOiBNb2RlbFR5cGVTdHJpbmcgfCBGaXJlc3RvcmVDb2xsZWN0aW9uVHlwZSk6IE9ic2VydmFibGU8TWF5YmU8RGJ4RmlyZWJhc2VNb2RlbFR5cGVJbmZvPj4ge1xuICAgIHJldHVybiB0aGlzLmRieE1vZGVsVHlwZXNTZXJ2aWNlLnR5cGVzTWFwJC5waXBlKG1hcCgoeCkgPT4geFt0eXBlXSkpO1xuICB9XG5cbiAgaW5mb0ZvclR5cGUodHlwZTogTW9kZWxUeXBlU3RyaW5nIHwgRmlyZXN0b3JlQ29sbGVjdGlvblR5cGUpOiBPYnNlcnZhYmxlPERieEZpcmViYXNlTW9kZWxUeXBlSW5mbz4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRJbmZvRm9yVHlwZSh0eXBlKS5waXBlKFxuICAgICAgbWFwKCh4KSA9PiB7XG4gICAgICAgIGlmICgheCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2U6IGNvbnRhaW5lZCBubyBpbmZvIGZvciB0eXBlIFwiJHt0eXBlfVwiLiBFbnN1cmUgdGhlIGNvcnJlY3QgdHlwZSB3YXMgZW50ZXJlZCwgYW5kIHRoYXQgdGhlIHR5cGUgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlLmApO1xuICAgICAgICAgIHRocm93IHg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geCBhcyBEYnhGaXJlYmFzZU1vZGVsVHlwZUluZm87XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBpbnN0YW5jZUZvcktleTxEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8YW55PiA9IGFueSwgUiBleHRlbmRzIEdyYW50ZWRSb2xlID0gR3JhbnRlZFJvbGU+KGtleSQ6IE9ic2VydmFibGVPclZhbHVlPEZpcmVzdG9yZU1vZGVsS2V5Pik6IERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZTxELCBSPiB7XG4gICAgcmV0dXJuIG5ldyBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2U8RCwgUj4odGhpcy5kYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2UubW9kZWxJbmZvSW5zdGFuY2U8RCwgUj4oa2V5JCksIHRoaXMpO1xuICB9XG5cbiAgaW5zdGFuY2VQYWlyc0ZvcktleXMoa2V5czogQXJyYXlPclZhbHVlPE9ic2VydmFibGVPclZhbHVlPEZpcmVzdG9yZU1vZGVsS2V5Pj4pIHtcbiAgICByZXR1cm4gZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpckZvcktleXNGYWN0b3J5KHRoaXMpKGtleXMpO1xuICB9XG59XG5cbi8qKlxuICogSW5mb3JtYXRpb24gcGFpciBmb3IgYW4gaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpcjxEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8YW55PiA9IGFueSwgUiBleHRlbmRzIEdyYW50ZWRSb2xlID0gR3JhbnRlZFJvbGU+IHtcbiAgcmVhZG9ubHkga2V5OiBGaXJlc3RvcmVNb2RlbEtleTtcbiAgcmVhZG9ubHkgaW5zdGFuY2U6IERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZTxELCBSPjtcbiAgcmVhZG9ubHkgZGlzcGxheUluZm86IERieEZpcmViYXNlTW9kZWxEaXNwbGF5SW5mbztcbiAgcmVhZG9ubHkgc2VndWVSZWY6IE1heWJlPENsaWNrYWJsZUFuY2hvckxpbmtTZWd1ZVJlZj47XG59XG5cbmV4cG9ydCB0eXBlIERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXJGb3JLZXlzRmFjdG9yeSA9IChrZXlzOiBBcnJheU9yVmFsdWU8T2JzZXJ2YWJsZU9yVmFsdWU8RmlyZXN0b3JlTW9kZWxLZXk+PikgPT4gT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyW10+O1xuXG5leHBvcnQgZnVuY3Rpb24gZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpckZvcktleXNGYWN0b3J5KHNlcnZpY2U6IERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2UpOiBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyRm9yS2V5c0ZhY3Rvcnkge1xuICByZXR1cm4gKGtleXM6IEFycmF5T3JWYWx1ZTxPYnNlcnZhYmxlT3JWYWx1ZTxGaXJlc3RvcmVNb2RlbEtleT4+KSA9PiB7XG4gICAgY29uc3QgaW5zdGFuY2VzID0gYXNBcnJheShrZXlzKS5tYXAoKHgpID0+IHNlcnZpY2UuaW5zdGFuY2VGb3JLZXkoeCkuaW5zdGFuY2VQYWlyJCk7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoaW5zdGFuY2VzKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlIGluc3RhbmNlXG4gKi9cbmV4cG9ydCBjbGFzcyBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2U8RCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PGFueT4gPSBhbnksIFIgZXh0ZW5kcyBHcmFudGVkUm9sZSA9IEdyYW50ZWRSb2xlPiB7XG4gIHJlYWRvbmx5IGtleSQgPSB0aGlzLm1vZGVsSW5mb0luc3RhbmNlJC5waXBlKHN3aXRjaE1hcCgoeCkgPT4geC5rZXkkKSk7XG4gIHJlYWRvbmx5IG1vZGVsVHlwZSQgPSB0aGlzLm1vZGVsSW5mb0luc3RhbmNlJC5waXBlKHN3aXRjaE1hcCgoeCkgPT4geC5tb2RlbFR5cGUkKSk7XG4gIHJlYWRvbmx5IHNuYXBzaG90RGF0YSQgPSB0aGlzLm1vZGVsSW5mb0luc3RhbmNlJC5waXBlKHN3aXRjaE1hcCgoeCkgPT4geC5zbmFwc2hvdERhdGEkKSk7XG5cbiAgcmVhZG9ubHkgdHlwZUluZm8kID0gdGhpcy5tb2RlbFR5cGUkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh4KSA9PiB0aGlzLmRieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2UuaW5mb0ZvclR5cGUoeCkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpZGVudGl0eSQgPSB0aGlzLnR5cGVJbmZvJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5pZGVudGl0eSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICApO1xuXG4gIHJlYWRvbmx5IHNlZ3VlUmVmJDogT2JzZXJ2YWJsZTxNYXliZTxTZWd1ZVJlZj4+ID0gY29tYmluZUxhdGVzdChbdGhpcy5rZXkkLCB0aGlzLnR5cGVJbmZvJF0pLnBpcGUoXG4gICAgbWFwKChba2V5LCBpbmZvXSkgPT4gKGluZm8uc3JlZiA/IGluZm8uc3JlZihrZXkpIDogdW5kZWZpbmVkKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkaXNwbGF5SW5mbyQ6IE9ic2VydmFibGU8RGJ4RmlyZWJhc2VNb2RlbERpc3BsYXlJbmZvPiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMudHlwZUluZm8kLCB0aGlzLnNuYXBzaG90RGF0YSRdKS5waXBlKFxuICAgIG1hcCgoW3R5cGVJbmZvLCBkYXRhXSkgPT4gdGhpcy5kYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlLmdldERpc3BsYXlJbmZvKHR5cGVJbmZvLCBkYXRhKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjbGlja2FibGVTZWd1ZVJlZiQ6IE9ic2VydmFibGU8TWF5YmU8Q2xpY2thYmxlQW5jaG9yTGlua1NlZ3VlUmVmPj4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnNlZ3VlUmVmJCwgdGhpcy5kaXNwbGF5SW5mbyRdKS5waXBlKFxuICAgIG1hcCgoW3NlZ3VlUmVmLCBkaXNwbGF5SW5mb10pID0+IHtcbiAgICAgIGxldCByZWY6IE1heWJlPENsaWNrYWJsZUFuY2hvckxpbmtTZWd1ZVJlZj4gPSB1bmRlZmluZWQ7XG5cbiAgICAgIGlmIChzZWd1ZVJlZikge1xuICAgICAgICByZWYgPSB7XG4gICAgICAgICAgLi4uc2VndWVSZWYsXG4gICAgICAgICAgdGl0bGU6IGRpc3BsYXlJbmZvLnRpdGxlLFxuICAgICAgICAgIGljb246IGRpc3BsYXlJbmZvLmljb25cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlZjtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGluc3RhbmNlUGFpciQ6IE9ic2VydmFibGU8RGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpcj4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmNsaWNrYWJsZVNlZ3VlUmVmJCwgdGhpcy5kaXNwbGF5SW5mbyQsIHRoaXMua2V5JF0pLnBpcGUoXG4gICAgbWFwKChbc2VndWVSZWYsIGRpc3BsYXlJbmZvLCBrZXldKSA9PiAoeyBzZWd1ZVJlZiwgZGlzcGxheUluZm8sIGtleSwgaW5zdGFuY2U6IHRoaXMgfSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgbW9kZWxJbmZvSW5zdGFuY2UkOiBPYnNlcnZhYmxlPERieEZpcmViYXNlSW5Db250ZXh0RmlyZWJhc2VNb2RlbEluZm9TZXJ2aWNlSW5zdGFuY2U8RCwgUj4+LCByZWFkb25seSBkYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlOiBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlKSB7fVxufVxuIl19
@@ -0,0 +1,48 @@
1
+ import { distinctUntilModelKeyChange } from '@dereekb/rxjs';
2
+ import { DbxModelObjectStateService } from '@dereekb/dbx-web';
3
+ import { Directive } from '@angular/core';
4
+ import { AbstractSubscriptionDirective } from '@dereekb/dbx-core';
5
+ import { combineLatestWith, first, map, switchMap } from 'rxjs';
6
+ import { DbxFirebaseDocumentStoreDirective } from '../store/store.document.directive';
7
+ import { DbxFirebaseModelTypesService } from './model.types.service';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../store/store.document.directive";
10
+ import * as i2 from "@dereekb/dbx-web";
11
+ import * as i3 from "./model.types.service";
12
+ /**
13
+ * Used with a DbxFirebaseDocumentStoreDirective to emit model viewed events.
14
+ */
15
+ export class DbxfirebaseModelViewedEventDirective extends AbstractSubscriptionDirective {
16
+ constructor(dbxFirebaseDocumentStoreDirective, dbxModelObjectStateService, dbxFirebaseModelTypesService) {
17
+ super();
18
+ this.dbxFirebaseDocumentStoreDirective = dbxFirebaseDocumentStoreDirective;
19
+ this.dbxModelObjectStateService = dbxModelObjectStateService;
20
+ this.dbxFirebaseModelTypesService = dbxFirebaseModelTypesService;
21
+ }
22
+ ngOnInit() {
23
+ this.sub = this.dbxFirebaseDocumentStoreDirective.data$
24
+ .pipe(
25
+ //
26
+ distinctUntilModelKeyChange(), combineLatestWith(this.dbxFirebaseDocumentStoreDirective.modelIdentity$.pipe(switchMap((x) => this.dbxFirebaseModelTypesService.infoForType(x.modelType)), first()), this.dbxFirebaseDocumentStoreDirective.key$), map(([data, typeInfo, key]) => {
27
+ const displayInfo = this.dbxFirebaseModelTypesService.getDisplayInfo(typeInfo, data);
28
+ const pair = {
29
+ key,
30
+ type: typeInfo.modelType,
31
+ name: displayInfo.title
32
+ };
33
+ return pair;
34
+ }))
35
+ .subscribe((modelKeyTypeNamePair) => {
36
+ this.dbxModelObjectStateService.emitModelViewEvent({ modelKeyTypeNamePair });
37
+ });
38
+ }
39
+ }
40
+ DbxfirebaseModelViewedEventDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxfirebaseModelViewedEventDirective, deps: [{ token: i1.DbxFirebaseDocumentStoreDirective }, { token: i2.DbxModelObjectStateService }, { token: i3.DbxFirebaseModelTypesService }], target: i0.ɵɵFactoryTarget.Directive });
41
+ DbxfirebaseModelViewedEventDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: DbxfirebaseModelViewedEventDirective, selector: "[dbxFirebaseModelViewedEvent]", usesInheritance: true, ngImport: i0 });
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxfirebaseModelViewedEventDirective, decorators: [{
43
+ type: Directive,
44
+ args: [{
45
+ selector: '[dbxFirebaseModelViewedEvent]'
46
+ }]
47
+ }], ctorParameters: function () { return [{ type: i1.DbxFirebaseDocumentStoreDirective }, { type: i2.DbxModelObjectStateService }, { type: i3.DbxFirebaseModelTypesService }]; } });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwudHlwZXMudmlldy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL21vZGVsL21vZGVsLnR5cGVzLnZpZXcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7QUFHckU7O0dBRUc7QUFJSCxNQUFNLE9BQU8sb0NBQXFDLFNBQVEsNkJBQTZCO0lBQ3JGLFlBQXFCLGlDQUFvRSxFQUFXLDBCQUFzRCxFQUFXLDRCQUEwRDtRQUM3TixLQUFLLEVBQUUsQ0FBQztRQURXLHNDQUFpQyxHQUFqQyxpQ0FBaUMsQ0FBbUM7UUFBVywrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBQVcsaUNBQTRCLEdBQTVCLDRCQUE0QixDQUE4QjtJQUUvTixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLEtBQUs7YUFDcEQsSUFBSTtRQUNILEVBQUU7UUFDRiwyQkFBMkIsRUFBRSxFQUM3QixpQkFBaUIsQ0FDZixJQUFJLENBQUMsaUNBQWlDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDeEQsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUM1RSxLQUFLLEVBQUUsQ0FDUixFQUNELElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxJQUFJLENBQzVDLEVBQ0QsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7WUFDNUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFckYsTUFBTSxJQUFJLEdBQXlCO2dCQUNqQyxHQUFHO2dCQUNILElBQUksRUFBRSxRQUFRLENBQUMsU0FBUztnQkFDeEIsSUFBSSxFQUFFLFdBQVcsQ0FBQyxLQUFLO2FBQ3hCLENBQUM7WUFFRixPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxDQUFDLENBQUMsb0JBQW9CLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsa0JBQWtCLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7UUFDL0UsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztrSUFoQ1Usb0NBQW9DO3NIQUFwQyxvQ0FBb0M7NEZBQXBDLG9DQUFvQztrQkFIaEQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsK0JBQStCO2lCQUMxQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpc3RpbmN0VW50aWxNb2RlbEtleUNoYW5nZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgRGJ4TW9kZWxPYmplY3RTdGF0ZVNlcnZpY2UgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdFN1YnNjcmlwdGlvbkRpcmVjdGl2ZSB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3RXaXRoLCBmaXJzdCwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERieEZpcmViYXNlRG9jdW1lbnRTdG9yZURpcmVjdGl2ZSB9IGZyb20gJy4uL3N0b3JlL3N0b3JlLmRvY3VtZW50LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlIH0gZnJvbSAnLi9tb2RlbC50eXBlcy5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZGVsS2V5VHlwZU5hbWVQYWlyIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5cbi8qKlxuICogVXNlZCB3aXRoIGEgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlRGlyZWN0aXZlIHRvIGVtaXQgbW9kZWwgdmlld2VkIGV2ZW50cy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2RieEZpcmViYXNlTW9kZWxWaWV3ZWRFdmVudF0nXG59KVxuZXhwb3J0IGNsYXNzIERieGZpcmViYXNlTW9kZWxWaWV3ZWRFdmVudERpcmVjdGl2ZSBleHRlbmRzIEFic3RyYWN0U3Vic2NyaXB0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlRGlyZWN0aXZlOiBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVEaXJlY3RpdmUsIHJlYWRvbmx5IGRieE1vZGVsT2JqZWN0U3RhdGVTZXJ2aWNlOiBEYnhNb2RlbE9iamVjdFN0YXRlU2VydmljZSwgcmVhZG9ubHkgZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZTogRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YiA9IHRoaXMuZGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlRGlyZWN0aXZlLmRhdGEkXG4gICAgICAucGlwZShcbiAgICAgICAgLy9cbiAgICAgICAgZGlzdGluY3RVbnRpbE1vZGVsS2V5Q2hhbmdlKCksXG4gICAgICAgIGNvbWJpbmVMYXRlc3RXaXRoKFxuICAgICAgICAgIHRoaXMuZGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlRGlyZWN0aXZlLm1vZGVsSWRlbnRpdHkkLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHgpID0+IHRoaXMuZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZS5pbmZvRm9yVHlwZSh4Lm1vZGVsVHlwZSkpLFxuICAgICAgICAgICAgZmlyc3QoKVxuICAgICAgICAgICksXG4gICAgICAgICAgdGhpcy5kYnhGaXJlYmFzZURvY3VtZW50U3RvcmVEaXJlY3RpdmUua2V5JFxuICAgICAgICApLFxuICAgICAgICBtYXAoKFtkYXRhLCB0eXBlSW5mbywga2V5XSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRpc3BsYXlJbmZvID0gdGhpcy5kYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlLmdldERpc3BsYXlJbmZvKHR5cGVJbmZvLCBkYXRhKTtcblxuICAgICAgICAgIGNvbnN0IHBhaXI6IE1vZGVsS2V5VHlwZU5hbWVQYWlyID0ge1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgdHlwZTogdHlwZUluZm8ubW9kZWxUeXBlLFxuICAgICAgICAgICAgbmFtZTogZGlzcGxheUluZm8udGl0bGVcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgcmV0dXJuIHBhaXI7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChtb2RlbEtleVR5cGVOYW1lUGFpcikgPT4ge1xuICAgICAgICB0aGlzLmRieE1vZGVsT2JqZWN0U3RhdGVTZXJ2aWNlLmVtaXRNb2RlbFZpZXdFdmVudCh7IG1vZGVsS2V5VHlwZU5hbWVQYWlyIH0pO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,17 @@
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.crud';
9
+ export * from './store.document.auth.directive';
10
+ export * from './store.document.directive';
11
+ export * from './store.document.router.directive';
12
+ export * from './store.document.router.key.directive';
13
+ export * from './store.subcollection';
14
+ export * from './store.subcollection.document';
15
+ export * from './store.subcollection.directive';
16
+ export * from './store.subcollection.rxjs';
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL3N0b3JlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21vZGVsLnN0b3JlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmNvbGxlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5jb2xsZWN0aW9uLmNoYW5nZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5jb2xsZWN0aW9uLmNoYW5nZS5pZi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5jb2xsZWN0aW9uLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmNvbGxlY3Rpb24ubGlzdC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5kb2N1bWVudCc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmRvY3VtZW50LmNydWQnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5kb2N1bWVudC5hdXRoLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmRvY3VtZW50LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmRvY3VtZW50LnJvdXRlci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5kb2N1bWVudC5yb3V0ZXIua2V5LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLnN1YmNvbGxlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5zdWJjb2xsZWN0aW9uLmRvY3VtZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuc3ViY29sbGVjdGlvbi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5zdWJjb2xsZWN0aW9uLnJ4anMnO1xuIl19
@@ -0,0 +1,23 @@
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 { DbxFirebaseDocumentStoreRouteKeyDirective } from './store.document.router.key.directive';
8
+ import * as i0 from "@angular/core";
9
+ const declarations = [DbxFirebaseDocumentStoreRouteKeyDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseDocumentStoreRouteIdDirective, DbxFirebaseDocumentAuthIdDirective];
10
+ export class DbxFirebaseModelStoreModule {
11
+ }
12
+ DbxFirebaseModelStoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelStoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
+ DbxFirebaseModelStoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelStoreModule, declarations: [DbxFirebaseDocumentStoreRouteKeyDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseDocumentStoreRouteIdDirective, DbxFirebaseDocumentAuthIdDirective], exports: [DbxFirebaseDocumentStoreRouteKeyDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseDocumentStoreRouteIdDirective, DbxFirebaseDocumentAuthIdDirective] });
14
+ DbxFirebaseModelStoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelStoreModule });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelStoreModule, decorators: [{
16
+ type: NgModule,
17
+ args: [{
18
+ imports: [],
19
+ declarations,
20
+ exports: declarations
21
+ }]
22
+ }] });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuc3RvcmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbW9kdWxlcy9zdG9yZS9tb2RlbC5zdG9yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzRixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RixPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RixPQUFPLEVBQUUseUNBQXlDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFFbEcsTUFBTSxZQUFZLEdBQUcsQ0FBQyx5Q0FBeUMsRUFBRSxrQ0FBa0MsRUFBRSxvQ0FBb0MsRUFBRSx1Q0FBdUMsRUFBRSx3Q0FBd0MsRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDO0FBT2xRLE1BQU0sT0FBTywyQkFBMkI7O3lIQUEzQiwyQkFBMkI7MEhBQTNCLDJCQUEyQixpQkFQbEIseUNBQXlDLEVBQUUsa0NBQWtDLEVBQUUsb0NBQW9DLEVBQUUsdUNBQXVDLEVBQUUsd0NBQXdDLEVBQUUsa0NBQWtDLGFBQTFPLHlDQUF5QyxFQUFFLGtDQUFrQyxFQUFFLG9DQUFvQyxFQUFFLHVDQUF1QyxFQUFFLHdDQUF3QyxFQUFFLGtDQUFrQzswSEFPblAsMkJBQTJCOzRGQUEzQiwyQkFBMkI7a0JBTHZDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsWUFBWTtvQkFDWixPQUFPLEVBQUUsWUFBWTtpQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlRGlyZWN0aXZlIH0gZnJvbSAnLi9zdG9yZS5jb2xsZWN0aW9uLmNoYW5nZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uSGFzQ2hhbmdlRGlyZWN0aXZlIH0gZnJvbSAnLi9zdG9yZS5jb2xsZWN0aW9uLmNoYW5nZS5pZi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTGlzdERpcmVjdGl2ZSB9IGZyb20gJy4vc3RvcmUuY29sbGVjdGlvbi5saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZURvY3VtZW50QXV0aElkRGlyZWN0aXZlIH0gZnJvbSAnLi9zdG9yZS5kb2N1bWVudC5hdXRoLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVSb3V0ZUlkRGlyZWN0aXZlIH0gZnJvbSAnLi9zdG9yZS5kb2N1bWVudC5yb3V0ZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IERieEZpcmViYXNlRG9jdW1lbnRTdG9yZVJvdXRlS2V5RGlyZWN0aXZlIH0gZnJvbSAnLi9zdG9yZS5kb2N1bWVudC5yb3V0ZXIua2V5LmRpcmVjdGl2ZSc7XG5cbmNvbnN0IGRlY2xhcmF0aW9ucyA9IFtEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVSb3V0ZUtleURpcmVjdGl2ZSwgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTGlzdERpcmVjdGl2ZSwgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlRGlyZWN0aXZlLCBEYnhGaXJlYmFzZUNvbGxlY3Rpb25IYXNDaGFuZ2VEaXJlY3RpdmUsIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZVJvdXRlSWREaXJlY3RpdmUsIERieEZpcmViYXNlRG9jdW1lbnRBdXRoSWREaXJlY3RpdmVdO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXSxcbiAgZGVjbGFyYXRpb25zLFxuICBleHBvcnRzOiBkZWNsYXJhdGlvbnNcbn0pXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VNb2RlbFN0b3JlTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,52 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import { DbxFirebaseCollectionStoreDirective } from './store.collection.directive';
3
+ import { dbxFirebaseCollectionChangeWatcher } from '../../loader/collection.change.watcher';
4
+ import { dbxFirebaseCollectionChangeTriggerForWatcher } from '../../loader/collection.change.trigger';
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 {
11
+ constructor(dbxFirebaseCollectionStoreDirective) {
12
+ this.dbxFirebaseCollectionStoreDirective = dbxFirebaseCollectionStoreDirective;
13
+ this._watcher = dbxFirebaseCollectionChangeWatcher(this.dbxFirebaseCollectionStoreDirective.store);
14
+ this._trigger = dbxFirebaseCollectionChangeTriggerForWatcher(this._watcher, () => this.restart());
15
+ this.mode$ = this._watcher.mode$;
16
+ this.event$ = this._watcher.event$;
17
+ this.hasChangeAvailable$ = this._watcher.hasChangeAvailable$;
18
+ this.triggered$ = this._watcher.triggered$;
19
+ this.trigger$ = this._watcher.trigger$;
20
+ }
21
+ get store() {
22
+ return this._watcher.store;
23
+ }
24
+ ngOnInit() {
25
+ this._trigger.init();
26
+ }
27
+ ngOnDestroy() {
28
+ this._watcher.destroy();
29
+ this._trigger.destroy();
30
+ }
31
+ get mode() {
32
+ return this._watcher.mode;
33
+ }
34
+ set mode(mode) {
35
+ this._watcher.mode = mode || 'off';
36
+ }
37
+ restart() {
38
+ this.dbxFirebaseCollectionStoreDirective.store.restart();
39
+ }
40
+ }
41
+ DbxFirebaseCollectionChangeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseCollectionChangeDirective, deps: [{ token: i1.DbxFirebaseCollectionStoreDirective }], target: i0.ɵɵFactoryTarget.Directive });
42
+ DbxFirebaseCollectionChangeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: DbxFirebaseCollectionChangeDirective, selector: "[dbxFirebaseCollectionChange]", inputs: { mode: ["dbxFirebaseCollectionChange", "mode"] }, ngImport: i0 });
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseCollectionChangeDirective, decorators: [{
44
+ type: Directive,
45
+ args: [{
46
+ selector: '[dbxFirebaseCollectionChange]'
47
+ }]
48
+ }], ctorParameters: function () { return [{ type: i1.DbxFirebaseCollectionStoreDirective }]; }, propDecorators: { mode: [{
49
+ type: Input,
50
+ args: ['dbxFirebaseCollectionChange']
51
+ }] } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuY29sbGVjdGlvbi5jaGFuZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbW9kdWxlcy9zdG9yZS9zdG9yZS5jb2xsZWN0aW9uLmNoYW5nZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBSXBFLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25GLE9BQU8sRUFBc0Msa0NBQWtDLEVBQTBGLE1BQU0sd0NBQXdDLENBQUM7QUFFeE4sT0FBTyxFQUFFLDRDQUE0QyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7OztBQUV0Rzs7R0FFRztBQUlILE1BQU0sT0FBTyxvQ0FBb0M7SUFjL0MsWUFBcUIsbUNBQWlGO1FBQWpGLHdDQUFtQyxHQUFuQyxtQ0FBbUMsQ0FBOEM7UUFiOUYsYUFBUSxHQUFHLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5RixhQUFRLEdBQUcsNENBQTRDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUU1RixVQUFLLEdBQThELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ3ZGLFdBQU0sR0FBd0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDbkYsd0JBQW1CLEdBQXdCLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUM7UUFDN0UsZUFBVSxHQUF3QixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztRQUMzRCxhQUFRLEdBQXFCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBTTRDLENBQUM7SUFKMUcsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBSUQsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQ0ksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLElBQStEO1FBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxLQUFLLENBQUM7SUFDckMsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsbUNBQW1DLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNELENBQUM7O2tJQXBDVSxvQ0FBb0M7c0hBQXBDLG9DQUFvQzs0RkFBcEMsb0NBQW9DO2tCQUhoRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwrQkFBK0I7aUJBQzFDOzBIQTJCSyxJQUFJO3NCQURQLEtBQUs7dUJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpcmVzdG9yZURvY3VtZW50IH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IERieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlIH0gZnJvbSAnLi9zdG9yZS5jb2xsZWN0aW9uJztcbmltcG9ydCB7IERieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlRGlyZWN0aXZlIH0gZnJvbSAnLi9zdG9yZS5jb2xsZWN0aW9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VXYXRjaGVyLCBkYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VXYXRjaGVyLCBEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VXYXRjaGVyRXZlbnQsIERieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVdhdGNoZXJUcmlnZ2VyTW9kZSB9IGZyb20gJy4uLy4uL2xvYWRlci9jb2xsZWN0aW9uLmNoYW5nZS53YXRjaGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVRyaWdnZXJGb3JXYXRjaGVyIH0gZnJvbSAnLi4vLi4vbG9hZGVyL2NvbGxlY3Rpb24uY2hhbmdlLnRyaWdnZXInO1xuXG4vKipcbiAqIFVzZWQgdG8gd2F0Y2ggcXVlcnkgZG9jIGNoYW5nZXMgYW5kIHJlc3BvbmQgdG8gdGhlbSBhY2NvcmRpbmdseS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2RieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZV0nXG59KVxuZXhwb3J0IGNsYXNzIERieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZURpcmVjdGl2ZTxUID0gdW5rbm93biwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4sIFMgZXh0ZW5kcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZTxULCBEPiA9IERieEZpcmViYXNlQ29sbGVjdGlvblN0b3JlPFQsIEQ+PiBpbXBsZW1lbnRzIERieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVdhdGNoZXI8Uz4sIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfd2F0Y2hlciA9IGRieEZpcmViYXNlQ29sbGVjdGlvbkNoYW5nZVdhdGNoZXIodGhpcy5kYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZURpcmVjdGl2ZS5zdG9yZSk7XG4gIHByaXZhdGUgX3RyaWdnZXIgPSBkYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VUcmlnZ2VyRm9yV2F0Y2hlcih0aGlzLl93YXRjaGVyLCAoKSA9PiB0aGlzLnJlc3RhcnQoKSk7XG5cbiAgcmVhZG9ubHkgbW9kZSQ6IE9ic2VydmFibGU8RGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlV2F0Y2hlclRyaWdnZXJNb2RlPiA9IHRoaXMuX3dhdGNoZXIubW9kZSQ7XG4gIHJlYWRvbmx5IGV2ZW50JDogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZUNvbGxlY3Rpb25DaGFuZ2VXYXRjaGVyRXZlbnQ+ID0gdGhpcy5fd2F0Y2hlci5ldmVudCQ7XG4gIHJlYWRvbmx5IGhhc0NoYW5nZUF2YWlsYWJsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl93YXRjaGVyLmhhc0NoYW5nZUF2YWlsYWJsZSQ7XG4gIHJlYWRvbmx5IHRyaWdnZXJlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl93YXRjaGVyLnRyaWdnZXJlZCQ7XG4gIHJlYWRvbmx5IHRyaWdnZXIkOiBPYnNlcnZhYmxlPHZvaWQ+ID0gdGhpcy5fd2F0Y2hlci50cmlnZ2VyJDtcblxuICBnZXQgc3RvcmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dhdGNoZXIuc3RvcmU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBkYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZURpcmVjdGl2ZTogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uU3RvcmVEaXJlY3RpdmU8VCwgRCwgUz4pIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fdHJpZ2dlci5pbml0KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl93YXRjaGVyLmRlc3Ryb3koKTtcbiAgICB0aGlzLl90cmlnZ2VyLmRlc3Ryb3koKTtcbiAgfVxuXG4gIEBJbnB1dCgnZGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlJylcbiAgZ2V0IG1vZGUoKTogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlV2F0Y2hlclRyaWdnZXJNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fd2F0Y2hlci5tb2RlO1xuICB9XG5cbiAgc2V0IG1vZGUobW9kZTogTWF5YmU8RGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlV2F0Y2hlclRyaWdnZXJNb2RlIHwgJyc+KSB7XG4gICAgdGhpcy5fd2F0Y2hlci5tb2RlID0gbW9kZSB8fCAnb2ZmJztcbiAgfVxuXG4gIHJlc3RhcnQoKSB7XG4gICAgdGhpcy5kYnhGaXJlYmFzZUNvbGxlY3Rpb25TdG9yZURpcmVjdGl2ZS5zdG9yZS5yZXN0YXJ0KCk7XG4gIH1cbn1cbiJdfQ==
@@ -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: "14.2.12", ngImport: i0, type: DbxFirebaseCollectionHasChangeDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.DbxFirebaseCollectionChangeDirective }], target: i0.ɵɵFactoryTarget.Directive });
47
+ DbxFirebaseCollectionHasChangeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: DbxFirebaseCollectionHasChangeDirective, selector: "[dbxFirebaseCollectionHasChange]", inputs: { mode: ["dbxFirebaseCollectionHasChange", "mode"] }, usesInheritance: true, ngImport: i0 });
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuY29sbGVjdGlvbi5jaGFuZ2UuaWYuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbW9kdWxlcy9zdG9yZS9zdG9yZS5jb2xsZWN0aW9uLmNoYW5nZS5pZi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEYsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0scUNBQXFDLENBQUM7OztBQU0zRjs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLHVDQUF3QyxTQUFRLG1CQUFtQjtJQTBCOUUsWUFBWSxXQUFpQyxFQUFFLGFBQStCLEVBQWtCLFNBQXdEO1FBQ3RKLEtBQUssQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFENEQsY0FBUyxHQUFULFNBQVMsQ0FBK0M7UUF6QmhKLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBOEMsaUJBQWlCLENBQUMsQ0FBQztRQUUzRixVQUFLLEdBQXdCLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDM0YsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUNwQixJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7WUFFakIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtnQkFDekIsUUFBUSxJQUFJLEVBQUU7b0JBQ1osS0FBSyxLQUFLO3dCQUNSLElBQUksR0FBRyxJQUFJLENBQUM7d0JBQ1osTUFBTTtvQkFDUixLQUFLLGlCQUFpQjt3QkFDcEIsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLEtBQUssaUJBQWlCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUM7d0JBQzlGLE1BQU07b0JBQ1I7d0JBQ0UsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDO3dCQUMzQixNQUFNO2lCQUNUO2FBQ0Y7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxFQUNGLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBSUYsQ0FBQztJQUVELElBQ0ksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLElBQTZEO1FBQ3BFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFUSxXQUFXO1FBQ2xCLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3hCLENBQUM7O3FJQTFDVSx1Q0FBdUM7eUhBQXZDLHVDQUF1Qzs0RkFBdkMsdUNBQXVDO2tCQUhuRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQ0FBa0M7aUJBQzdDO29MQWdDSyxJQUFJO3NCQURQLEtBQUs7dUJBQUMsZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT25EZXN0cm95LCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiwgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RJZkRpcmVjdGl2ZSB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IHNoYXJlUmVwbGF5LCBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlRGlyZWN0aXZlIH0gZnJvbSAnLi9zdG9yZS5jb2xsZWN0aW9uLmNoYW5nZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSXRlcmF0aW9uUXVlcnlEb2NDaGFuZ2VXYXRjaGVyQ2hhbmdlVHlwZSB9IGZyb20gJ0BkZXJlZWtiL2ZpcmViYXNlJztcbmltcG9ydCB7IE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5cbmV4cG9ydCB0eXBlIERieEZpcmViYXNlQ29sbGVjdGlvbkhhc0NoYW5nZURpcmVjdGl2ZU1vZGUgPSAnYWxsJyB8IEl0ZXJhdGlvblF1ZXJ5RG9jQ2hhbmdlV2F0Y2hlckNoYW5nZVR5cGU7XG5cbi8qKlxuICogU3RydWN0dXJhbCBkaXJlY3RpdmUgdGhhdCBkaXNwbGF5cyB0aGUgY29udGVudCB3aGVuIHRoZSB0YXJnZXQgY2hhbmdlIGlzIGRldGVjdGVkLlxuICpcbiAqIENhbiBzcGVjaWZ5IHdoaWNoIGNoYW5nZXMgdG8gYXBwZWFyIG9uLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZGJ4RmlyZWJhc2VDb2xsZWN0aW9uSGFzQ2hhbmdlXSdcbn0pXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uSGFzQ2hhbmdlRGlyZWN0aXZlIGV4dGVuZHMgQWJzdHJhY3RJZkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX21vZGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERieEZpcmViYXNlQ29sbGVjdGlvbkhhc0NoYW5nZURpcmVjdGl2ZU1vZGU+KCdhZGRlZEFuZFJlbW92ZWQnKTtcblxuICByZWFkb25seSBzaG93JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX21vZGUsIHRoaXMuZGlyZWN0aXZlLmV2ZW50JF0pLnBpcGUoXG4gICAgbWFwKChbbW9kZSwgZXZlbnRdKSA9PiB7XG4gICAgICBsZXQgc2hvdyA9IGZhbHNlO1xuXG4gICAgICBpZiAoZXZlbnQudHlwZSAhPT0gJ25vbmUnKSB7XG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgIGNhc2UgJ2FsbCc6XG4gICAgICAgICAgICBzaG93ID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2FkZGVkQW5kUmVtb3ZlZCc6XG4gICAgICAgICAgICBzaG93ID0gZXZlbnQudHlwZSA9PT0gJ2FkZGVkQW5kUmVtb3ZlZCcgfHwgZXZlbnQudHlwZSA9PT0gJ2FkZGVkJyB8fCBldmVudC50eXBlID09PSAncmVtb3ZlZCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgc2hvdyA9IGV2ZW50LnR5cGUgPT09IG1vZGU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2hvdztcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiwgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgcHVibGljIHJlYWRvbmx5IGRpcmVjdGl2ZTogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uQ2hhbmdlRGlyZWN0aXZlPHVua25vd24+KSB7XG4gICAgc3VwZXIodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXIpO1xuICB9XG5cbiAgQElucHV0KCdkYnhGaXJlYmFzZUNvbGxlY3Rpb25IYXNDaGFuZ2UnKVxuICBnZXQgbW9kZSgpOiBEYnhGaXJlYmFzZUNvbGxlY3Rpb25IYXNDaGFuZ2VEaXJlY3RpdmVNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZS52YWx1ZTtcbiAgfVxuXG4gIHNldCBtb2RlKG1vZGU6IE1heWJlPERieEZpcmViYXNlQ29sbGVjdGlvbkhhc0NoYW5nZURpcmVjdGl2ZU1vZGUgfCAnJz4pIHtcbiAgICB0aGlzLl9tb2RlLm5leHQobW9kZSB8fCAnYWRkZWRBbmRSZW1vdmVkJyk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuX21vZGUuY29tcGxldGUoKTtcbiAgfVxufVxuIl19