@ngrdt/core 0.0.3 → 0.0.5

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.
@@ -1,8 +1,9 @@
1
1
  import { DestroyRef, Directive, inject, } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
2
  import { RDT_CONTAINER, RDT_GUARDED_COMPONENT, } from '../models';
3
+ import { RdtComponentGuardStoreService } from '../services/rdt-component-guard-store.service';
4
4
  import * as i0 from "@angular/core";
5
5
  export class RdtChildDirective {
6
+ guardStore = inject(RdtComponentGuardStoreService);
6
7
  destroyRef = inject(DestroyRef);
7
8
  container = inject(RDT_CONTAINER, {
8
9
  optional: true,
@@ -13,10 +14,6 @@ export class RdtChildDirective {
13
14
  self: true,
14
15
  host: true,
15
16
  });
16
- willLeaveSubj$ = new Subject();
17
- willEnterSubj$ = new Subject();
18
- willLeave$ = this.willLeaveSubj$.asObservable();
19
- willEnter$ = this.willEnterSubj$.asObservable();
20
17
  ngOnInit() {
21
18
  if (!this.guardedComponent) {
22
19
  throw new Error(`
@@ -26,13 +23,21 @@ export class RdtChildDirective {
26
23
  This applies to both Child and Container directives.
27
24
  `);
28
25
  }
29
- this.container?.registerChild(this);
26
+ if (!this.container) {
27
+ this.guardStore.registerGuard(this);
28
+ }
29
+ else {
30
+ this.container?.registerChild(this);
31
+ }
30
32
  }
31
33
  ngOnDestroy() {
32
- this.willLeaveSubj$.complete();
33
- this.willEnterSubj$.complete();
34
+ this.guardStore.removeGuard(this);
34
35
  this.container?.removeChild(this);
35
36
  }
37
+ isActive() {
38
+ const comp = this.guardedComponent;
39
+ return comp?.rdtIsActive?.() ?? true;
40
+ }
36
41
  canEnterView() {
37
42
  const comp = this.guardedComponent;
38
43
  if (typeof comp?.rdtCanEnterView === 'function') {
@@ -52,12 +57,10 @@ export class RdtChildDirective {
52
57
  }
53
58
  }
54
59
  onViewWillEnter() {
55
- this.willEnterSubj$.next();
56
60
  const comp = this.guardedComponent;
57
61
  comp?.rdtOnViewWillEnter();
58
62
  }
59
63
  onViewWillLeave() {
60
- this.willLeaveSubj$.next();
61
64
  const comp = this.guardedComponent;
62
65
  comp?.rdtOnViewWillLeave();
63
66
  }
@@ -82,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
82
85
  standalone: true,
83
86
  }]
84
87
  }] });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWNoaWxkLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC9jb3JlL3NyYy9saWIvcmR0LWNvbXBvbmVudC1ndWFyZC9kaXJlY3RpdmVzL3JkdC1jaGlsZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixTQUFTLEVBQ1QsTUFBTSxHQUlQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUNMLGFBQWEsRUFDYixxQkFBcUIsR0FLdEIsTUFBTSxXQUFXLENBQUM7O0FBT25CLE1BQU0sT0FBTyxpQkFBaUI7SUFDbkIsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyxTQUFTLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRTtRQUN6QyxRQUFRLEVBQUUsSUFBSTtRQUNkLFFBQVEsRUFBRSxJQUFJO0tBQ2YsQ0FBQyxDQUFDO0lBQ00sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixFQUFFO1FBQ3hELFFBQVEsRUFBRSxJQUFJO1FBQ2QsSUFBSSxFQUFFLElBQUk7UUFDVixJQUFJLEVBQUUsSUFBSTtLQUNYLENBQUMsQ0FBQztJQUVjLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQ3JDLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRTdDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2hELFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRXpELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQzs7Ozs7U0FLYixDQUFDLENBQUM7UUFDUCxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQStDLENBQUM7UUFDbEUsSUFBSSxPQUFPLElBQUksRUFBRSxlQUFlLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDaEQsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDaEMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBK0MsQ0FBQztRQUNsRSxJQUFJLE9BQU8sSUFBSSxFQUFFLGVBQWUsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNoRCxPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNoQyxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWtELENBQUM7UUFDckUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBa0QsQ0FBQztRQUNyRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCLENBQ2QsV0FBb0I7UUFFcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLFlBQVksV0FBVyxFQUFFLENBQUM7WUFDakQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO3VHQTdFVSxpQkFBaUI7MkZBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFKN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGVzdHJveVJlZixcbiAgRGlyZWN0aXZlLFxuICBpbmplY3QsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBUeXBlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJkdEJvb2xlYW5SZXN1bHQgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQge1xuICBSRFRfQ09OVEFJTkVSLFxuICBSRFRfR1VBUkRFRF9DT01QT05FTlQsXG4gIFJkdENhbkVudGVyVmlldyxcbiAgUmR0Q2FuTGVhdmVWaWV3LFxuICBSZHRPblZpZXdXaWxsRW50ZXIsXG4gIFJkdE9uVmlld1dpbGxMZWF2ZSxcbn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFJkdENvbnRhaW5lckRpcmVjdGl2ZSB9IGZyb20gJy4vcmR0LWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbcmR0Q2hpbGRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgUmR0Q2hpbGREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHJlYWRvbmx5IGNvbnRhaW5lciA9IGluamVjdChSRFRfQ09OVEFJTkVSLCB7XG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgc2tpcFNlbGY6IHRydWUsXG4gIH0pO1xuICByZWFkb25seSBndWFyZGVkQ29tcG9uZW50ID0gaW5qZWN0KFJEVF9HVUFSREVEX0NPTVBPTkVOVCwge1xuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIHNlbGY6IHRydWUsXG4gICAgaG9zdDogdHJ1ZSxcbiAgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSB3aWxsTGVhdmVTdWJqJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgd2lsbEVudGVyU3ViaiQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHJlYWRvbmx5IHdpbGxMZWF2ZSQgPSB0aGlzLndpbGxMZWF2ZVN1YmokLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSB3aWxsRW50ZXIkID0gdGhpcy53aWxsRW50ZXJTdWJqJC5hc09ic2VydmFibGUoKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuZ3VhcmRlZENvbXBvbmVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBcbiAgICAgICAgUmR0Q2hpbGREaXJlY3RpdmUgdXNhZ2U6XG4gICAgICAgIEFwcGx5IGRpcmVjdGl2ZSBkaXJlY3RseSBvbiBjb21wb25lbnQgYW5kIHByb3ZpZGUgdGhlIHNhbWUgY29tcG9uZW50IGFzIFJEVF9HVUFSREVEX0NPTVBPTkVOVC5cbiAgICAgICAgVGhlIGNvbXBvbmVudCBjYW4gdGhlbiBpbXBsZW1lbnQgUmR0Q2FuTGVhdmVWaWV3IG9yIFJkdENhbkVudGVyVmlldy5cbiAgICAgICAgVGhpcyBhcHBsaWVzIHRvIGJvdGggQ2hpbGQgYW5kIENvbnRhaW5lciBkaXJlY3RpdmVzLlxuICAgICAgICBgKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRhaW5lcj8ucmVnaXN0ZXJDaGlsZCh0aGlzKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMud2lsbExlYXZlU3ViaiQuY29tcGxldGUoKTtcbiAgICB0aGlzLndpbGxFbnRlclN1YmokLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5jb250YWluZXI/LnJlbW92ZUNoaWxkKHRoaXMpO1xuICB9XG5cbiAgY2FuRW50ZXJWaWV3KCk6IFJkdEJvb2xlYW5SZXN1bHQge1xuICAgIGNvbnN0IGNvbXAgPSB0aGlzLmd1YXJkZWRDb21wb25lbnQgYXMgUmR0Q2FuRW50ZXJWaWV3IHwgdW5kZWZpbmVkO1xuICAgIGlmICh0eXBlb2YgY29tcD8ucmR0Q2FuRW50ZXJWaWV3ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gY29tcC5yZHRDYW5FbnRlclZpZXcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgY2FuTGVhdmVWaWV3KCk6IFJkdEJvb2xlYW5SZXN1bHQge1xuICAgIGNvbnN0IGNvbXAgPSB0aGlzLmd1YXJkZWRDb21wb25lbnQgYXMgUmR0Q2FuTGVhdmVWaWV3IHwgdW5kZWZpbmVkO1xuICAgIGlmICh0eXBlb2YgY29tcD8ucmR0Q2FuTGVhdmVWaWV3ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gY29tcC5yZHRDYW5MZWF2ZVZpZXcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgb25WaWV3V2lsbEVudGVyKCk6IHZvaWQge1xuICAgIHRoaXMud2lsbEVudGVyU3ViaiQubmV4dCgpO1xuICAgIGNvbnN0IGNvbXAgPSB0aGlzLmd1YXJkZWRDb21wb25lbnQgYXMgUmR0T25WaWV3V2lsbEVudGVyIHwgdW5kZWZpbmVkO1xuICAgIGNvbXA/LnJkdE9uVmlld1dpbGxFbnRlcigpO1xuICB9XG5cbiAgb25WaWV3V2lsbExlYXZlKCk6IHZvaWQge1xuICAgIHRoaXMud2lsbExlYXZlU3ViaiQubmV4dCgpO1xuICAgIGNvbnN0IGNvbXAgPSB0aGlzLmd1YXJkZWRDb21wb25lbnQgYXMgUmR0T25WaWV3V2lsbExlYXZlIHwgdW5kZWZpbmVkO1xuICAgIGNvbXA/LnJkdE9uVmlld1dpbGxMZWF2ZSgpO1xuICB9XG5cbiAgZ2V0UGFyZW50QnlDbGFzczxUIGV4dGVuZHMgUmR0Q29udGFpbmVyRGlyZWN0aXZlPihcbiAgICBwYXJlbnRDbGFzczogVHlwZTxUPlxuICApOiBUIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmNvbnRhaW5lcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbnRhaW5lciBpbnN0YW5jZW9mIHBhcmVudENsYXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250YWluZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lci5nZXRQYXJlbnRCeUNsYXNzKHBhcmVudENsYXNzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWNoaWxkLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC9jb3JlL3NyYy9saWIvcmR0LWNvbXBvbmVudC1ndWFyZC9kaXJlY3RpdmVzL3JkdC1jaGlsZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixTQUFTLEVBQ1QsTUFBTSxHQUlQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxhQUFhLEVBQ2IscUJBQXFCLEdBTXRCLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLCtDQUErQyxDQUFDOztBQU85RixNQUFNLE9BQU8saUJBQWlCO0lBQ25CLFVBQVUsR0FBRyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUNuRCxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLFNBQVMsR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFO1FBQ3pDLFFBQVEsRUFBRSxJQUFJO1FBQ2QsUUFBUSxFQUFFLElBQUk7S0FDZixDQUFDLENBQUM7SUFDTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUU7UUFDeEQsUUFBUSxFQUFFLElBQUk7UUFDZCxJQUFJLEVBQUUsSUFBSTtRQUNWLElBQUksRUFBRSxJQUFJO0tBQ1gsQ0FBQyxDQUFDO0lBRUgsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDOzs7OztTQUtiLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQTJDLENBQUM7UUFDOUQsT0FBTyxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQStDLENBQUM7UUFDbEUsSUFBSSxPQUFPLElBQUksRUFBRSxlQUFlLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDaEQsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDaEMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBK0MsQ0FBQztRQUNsRSxJQUFJLE9BQU8sSUFBSSxFQUFFLGVBQWUsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNoRCxPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNoQyxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFrRCxDQUFDO1FBQ3JFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFrRCxDQUFDO1FBQ3JFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxnQkFBZ0IsQ0FDZCxXQUFvQjtRQUVwQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsWUFBWSxXQUFXLEVBQUUsQ0FBQztZQUNqRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDeEIsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNILENBQUM7dUdBN0VVLGlCQUFpQjsyRkFBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUo3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEZXN0cm95UmVmLFxuICBEaXJlY3RpdmUsXG4gIGluamVjdCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFR5cGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmR0Qm9vbGVhblJlc3VsdCB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7XG4gIFJEVF9DT05UQUlORVIsXG4gIFJEVF9HVUFSREVEX0NPTVBPTkVOVCxcbiAgUmR0Q2FuRW50ZXJWaWV3LFxuICBSZHRDYW5MZWF2ZVZpZXcsXG4gIFJkdElzQWN0aXZlLFxuICBSZHRPblZpZXdXaWxsRW50ZXIsXG4gIFJkdE9uVmlld1dpbGxMZWF2ZSxcbn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFJkdENvbXBvbmVudEd1YXJkU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcmR0LWNvbXBvbmVudC1ndWFyZC1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJkdENvbnRhaW5lckRpcmVjdGl2ZSB9IGZyb20gJy4vcmR0LWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbcmR0Q2hpbGRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgUmR0Q2hpbGREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IGd1YXJkU3RvcmUgPSBpbmplY3QoUmR0Q29tcG9uZW50R3VhcmRTdG9yZVNlcnZpY2UpO1xuICByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICByZWFkb25seSBjb250YWluZXIgPSBpbmplY3QoUkRUX0NPTlRBSU5FUiwge1xuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIHNraXBTZWxmOiB0cnVlLFxuICB9KTtcbiAgcmVhZG9ubHkgZ3VhcmRlZENvbXBvbmVudCA9IGluamVjdChSRFRfR1VBUkRFRF9DT01QT05FTlQsIHtcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBzZWxmOiB0cnVlLFxuICAgIGhvc3Q6IHRydWUsXG4gIH0pO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5ndWFyZGVkQ29tcG9uZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFxuICAgICAgICBSZHRDaGlsZERpcmVjdGl2ZSB1c2FnZTpcbiAgICAgICAgQXBwbHkgZGlyZWN0aXZlIGRpcmVjdGx5IG9uIGNvbXBvbmVudCBhbmQgcHJvdmlkZSB0aGUgc2FtZSBjb21wb25lbnQgYXMgUkRUX0dVQVJERURfQ09NUE9ORU5ULlxuICAgICAgICBUaGUgY29tcG9uZW50IGNhbiB0aGVuIGltcGxlbWVudCBSZHRDYW5MZWF2ZVZpZXcgb3IgUmR0Q2FuRW50ZXJWaWV3LlxuICAgICAgICBUaGlzIGFwcGxpZXMgdG8gYm90aCBDaGlsZCBhbmQgQ29udGFpbmVyIGRpcmVjdGl2ZXMuXG4gICAgICAgIGApO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuY29udGFpbmVyKSB7XG4gICAgICB0aGlzLmd1YXJkU3RvcmUucmVnaXN0ZXJHdWFyZCh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb250YWluZXI/LnJlZ2lzdGVyQ2hpbGQodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5ndWFyZFN0b3JlLnJlbW92ZUd1YXJkKHRoaXMpO1xuICAgIHRoaXMuY29udGFpbmVyPy5yZW1vdmVDaGlsZCh0aGlzKTtcbiAgfVxuXG4gIGlzQWN0aXZlKCkge1xuICAgIGNvbnN0IGNvbXAgPSB0aGlzLmd1YXJkZWRDb21wb25lbnQgYXMgUmR0SXNBY3RpdmUgfCB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGNvbXA/LnJkdElzQWN0aXZlPy4oKSA/PyB0cnVlO1xuICB9XG5cbiAgY2FuRW50ZXJWaWV3KCk6IFJkdEJvb2xlYW5SZXN1bHQge1xuICAgIGNvbnN0IGNvbXAgPSB0aGlzLmd1YXJkZWRDb21wb25lbnQgYXMgUmR0Q2FuRW50ZXJWaWV3IHwgdW5kZWZpbmVkO1xuICAgIGlmICh0eXBlb2YgY29tcD8ucmR0Q2FuRW50ZXJWaWV3ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gY29tcC5yZHRDYW5FbnRlclZpZXcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgY2FuTGVhdmVWaWV3KCk6IFJkdEJvb2xlYW5SZXN1bHQge1xuICAgIGNvbnN0IGNvbXAgPSB0aGlzLmd1YXJkZWRDb21wb25lbnQgYXMgUmR0Q2FuTGVhdmVWaWV3IHwgdW5kZWZpbmVkO1xuICAgIGlmICh0eXBlb2YgY29tcD8ucmR0Q2FuTGVhdmVWaWV3ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gY29tcC5yZHRDYW5MZWF2ZVZpZXcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgb25WaWV3V2lsbEVudGVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXAgPSB0aGlzLmd1YXJkZWRDb21wb25lbnQgYXMgUmR0T25WaWV3V2lsbEVudGVyIHwgdW5kZWZpbmVkO1xuICAgIGNvbXA/LnJkdE9uVmlld1dpbGxFbnRlcigpO1xuICB9XG5cbiAgb25WaWV3V2lsbExlYXZlKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXAgPSB0aGlzLmd1YXJkZWRDb21wb25lbnQgYXMgUmR0T25WaWV3V2lsbExlYXZlIHwgdW5kZWZpbmVkO1xuICAgIGNvbXA/LnJkdE9uVmlld1dpbGxMZWF2ZSgpO1xuICB9XG5cbiAgZ2V0UGFyZW50QnlDbGFzczxUIGV4dGVuZHMgUmR0Q29udGFpbmVyRGlyZWN0aXZlPihcbiAgICBwYXJlbnRDbGFzczogVHlwZTxUPlxuICApOiBUIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmNvbnRhaW5lcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbnRhaW5lciBpbnN0YW5jZW9mIHBhcmVudENsYXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250YWluZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lci5nZXRQYXJlbnRCeUNsYXNzKHBhcmVudENsYXNzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -29,24 +29,26 @@ export class RdtContainerDirective extends RdtChildDirective {
29
29
  super.onViewWillLeave();
30
30
  this.rdtChildren.forEach((ch) => ch.onViewWillLeave());
31
31
  }
32
- getChildrenRecursive() {
32
+ getChildrenRecursive(filter) {
33
33
  const res = [];
34
- this._getChildrenRecursive(res);
34
+ this._getChildrenRecursive(res, filter);
35
35
  return res;
36
36
  }
37
37
  getActiveChildren() {
38
- return this.getChildrenRecursive();
38
+ return this.getChildrenRecursive((ch) => ch.isActive());
39
39
  }
40
40
  getChildrenByClass(childClass) {
41
41
  const res = [];
42
42
  this._getChildrenByClassRecursive(childClass, res);
43
43
  return res;
44
44
  }
45
- _getChildrenRecursive(res) {
46
- res.push(...this.rdtChildren);
47
- this.rdtChildren.forEach((child) => {
45
+ _getChildrenRecursive(res, filter) {
46
+ const children = Array.from(this.rdtChildren);
47
+ const filteredChildren = filter ? children.filter(filter) : children;
48
+ res.push(...filteredChildren);
49
+ filteredChildren.forEach((child) => {
48
50
  if (child instanceof RdtContainerDirective) {
49
- child._getChildrenRecursive(res);
51
+ child._getChildrenRecursive(res, filter);
50
52
  }
51
53
  });
52
54
  }
@@ -90,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
90
92
  ],
91
93
  }]
92
94
  }] });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWNvbnRhaW5lci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvY29yZS9zcmMvbGliL3JkdC1jb21wb25lbnQtZ3VhcmQvZGlyZWN0aXZlcy9yZHQtY29udGFpbmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQWdCMUQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGlCQUFpQjtJQUNqRCxXQUFXLEdBQTJCLElBQUksR0FBRyxFQUFxQixDQUFDO0lBRTVFLGFBQWEsQ0FBQyxLQUF3QjtRQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXdCO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxxQkFBcUIsQ0FDMUIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQ3pFLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztNQU1FO0lBRU8sZUFBZTtRQUN0QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFUSxlQUFlO1FBQ3RCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixNQUFNLEdBQUcsR0FBd0IsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFUyxpQkFBaUI7UUFDekIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsa0JBQWtCLENBQUksVUFBbUI7UUFDdkMsTUFBTSxHQUFHLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU8scUJBQXFCLENBQUMsR0FBd0I7UUFDcEQsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2pDLElBQUksS0FBSyxZQUFZLHFCQUFxQixFQUFFLENBQUM7Z0JBQzNDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sNEJBQTRCLENBQUksVUFBbUIsRUFBRSxHQUFRO1FBQ25FLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDakMsTUFBTSxJQUFJLEdBQUksS0FBMkIsQ0FBQyxnQkFBZ0IsQ0FBQztZQUMzRCxJQUFJLElBQUksWUFBWSxVQUFVLEVBQUUsQ0FBQztnQkFDL0IsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqQixDQUFDO2lCQUFNLElBQUksS0FBSyxZQUFZLHFCQUFxQixFQUFFLENBQUM7Z0JBQ2xELEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdEQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0FyRVUscUJBQXFCOzJGQUFyQixxQkFBcUIsNkRBWHJCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLHFCQUFxQjthQUNuQztZQUNEO2dCQUNFLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixXQUFXLEVBQUUscUJBQXFCO2FBQ25DO1NBQ0Y7OzJGQUVVLHFCQUFxQjtrQkFkakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsdUJBQXVCO3lCQUNuQzt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyx1QkFBdUI7eUJBQ25DO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyByZHRHZXRBbGxSZXN1bHRzVHJ1ZSQgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBSRFRfQ09OVEFJTkVSIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFJkdENoaWxkRGlyZWN0aXZlIH0gZnJvbSAnLi9yZHQtY2hpbGQuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3JkdENvbnRhaW5lcl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBSZHRDaGlsZERpcmVjdGl2ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBSZHRDb250YWluZXJEaXJlY3RpdmUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBSRFRfQ09OVEFJTkVSLFxuICAgICAgdXNlRXhpc3Rpbmc6IFJkdENvbnRhaW5lckRpcmVjdGl2ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBSZHRDb250YWluZXJEaXJlY3RpdmUgZXh0ZW5kcyBSZHRDaGlsZERpcmVjdGl2ZSB7XG4gIHJlYWRvbmx5IHJkdENoaWxkcmVuOiBTZXQ8UmR0Q2hpbGREaXJlY3RpdmU+ID0gbmV3IFNldDxSZHRDaGlsZERpcmVjdGl2ZT4oKTtcblxuICByZWdpc3RlckNoaWxkKGNoaWxkOiBSZHRDaGlsZERpcmVjdGl2ZSkge1xuICAgIHRoaXMucmR0Q2hpbGRyZW4uYWRkKGNoaWxkKTtcbiAgfVxuXG4gIHJlbW92ZUNoaWxkKGNoaWxkOiBSZHRDaGlsZERpcmVjdGl2ZSkge1xuICAgIHRoaXMucmR0Q2hpbGRyZW4uZGVsZXRlKGNoaWxkKTtcbiAgfVxuXG4gIGNoZWNrQ2FuTGVhdmUkKCkge1xuICAgIHJldHVybiByZHRHZXRBbGxSZXN1bHRzVHJ1ZSQoXG4gICAgICBbdGhpcywgLi4udGhpcy5nZXRBY3RpdmVDaGlsZHJlbigpXS5tYXAoKGNoKSA9PiAoKSA9PiBjaC5jYW5MZWF2ZVZpZXcoKSlcbiAgICApO1xuICB9XG5cbiAgLyogVE9ET1xuICBjaGVja0NhbkVudGVyJCgpIHtcbiAgICByZXR1cm4gZ2V0Q2FuJChcbiAgICAgIFt0aGlzLCAuLi50aGlzLmdldEFjdGl2ZUNoaWxkcmVuKCldLm1hcCgoY2gpID0+ICgpID0+IGNoLmNhbkVudGVyVmlldygpKVxuICAgICk7XG4gIH1cbiAgKi9cblxuICBvdmVycmlkZSBvblZpZXdXaWxsRW50ZXIoKSB7XG4gICAgc3VwZXIub25WaWV3V2lsbEVudGVyKCk7XG4gICAgdGhpcy5yZHRDaGlsZHJlbi5mb3JFYWNoKChjaCkgPT4gY2gub25WaWV3V2lsbEVudGVyKCkpO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25WaWV3V2lsbExlYXZlKCkge1xuICAgIHN1cGVyLm9uVmlld1dpbGxMZWF2ZSgpO1xuICAgIHRoaXMucmR0Q2hpbGRyZW4uZm9yRWFjaCgoY2gpID0+IGNoLm9uVmlld1dpbGxMZWF2ZSgpKTtcbiAgfVxuXG4gIGdldENoaWxkcmVuUmVjdXJzaXZlKCkge1xuICAgIGNvbnN0IHJlczogUmR0Q2hpbGREaXJlY3RpdmVbXSA9IFtdO1xuICAgIHRoaXMuX2dldENoaWxkcmVuUmVjdXJzaXZlKHJlcyk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRBY3RpdmVDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDaGlsZHJlblJlY3Vyc2l2ZSgpO1xuICB9XG5cbiAgZ2V0Q2hpbGRyZW5CeUNsYXNzPFQ+KGNoaWxkQ2xhc3M6IFR5cGU8VD4pIHtcbiAgICBjb25zdCByZXM6IFRbXSA9IFtdO1xuICAgIHRoaXMuX2dldENoaWxkcmVuQnlDbGFzc1JlY3Vyc2l2ZShjaGlsZENsYXNzLCByZXMpO1xuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBwcml2YXRlIF9nZXRDaGlsZHJlblJlY3Vyc2l2ZShyZXM6IFJkdENoaWxkRGlyZWN0aXZlW10pIHtcbiAgICByZXMucHVzaCguLi50aGlzLnJkdENoaWxkcmVuKTtcbiAgICB0aGlzLnJkdENoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBSZHRDb250YWluZXJEaXJlY3RpdmUpIHtcbiAgICAgICAgY2hpbGQuX2dldENoaWxkcmVuUmVjdXJzaXZlKHJlcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRDaGlsZHJlbkJ5Q2xhc3NSZWN1cnNpdmU8VD4oY2hpbGRDbGFzczogVHlwZTxUPiwgcmVzOiBUW10pIHtcbiAgICB0aGlzLnJkdENoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICBjb25zdCBjb21wID0gKGNoaWxkIGFzIFJkdENoaWxkRGlyZWN0aXZlKS5ndWFyZGVkQ29tcG9uZW50O1xuICAgICAgaWYgKGNvbXAgaW5zdGFuY2VvZiBjaGlsZENsYXNzKSB7XG4gICAgICAgIHJlcy5wdXNoKGNvbXApO1xuICAgICAgfSBlbHNlIGlmIChjaGlsZCBpbnN0YW5jZW9mIFJkdENvbnRhaW5lckRpcmVjdGl2ZSkge1xuICAgICAgICBjaGlsZC5fZ2V0Q2hpbGRyZW5CeUNsYXNzUmVjdXJzaXZlKGNoaWxkQ2xhc3MsIHJlcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWNvbnRhaW5lci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvY29yZS9zcmMvbGliL3JkdC1jb21wb25lbnQtZ3VhcmQvZGlyZWN0aXZlcy9yZHQtY29udGFpbmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQWdCMUQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGlCQUFpQjtJQUNqRCxXQUFXLEdBQTJCLElBQUksR0FBRyxFQUFxQixDQUFDO0lBRTVFLGFBQWEsQ0FBQyxLQUF3QjtRQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXdCO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxxQkFBcUIsQ0FDMUIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQ3pFLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztNQU1FO0lBRU8sZUFBZTtRQUN0QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUs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JztcbmltcG9ydCB7IHJkdEdldEFsbFJlc3VsdHNUcnVlJCB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IFJEVF9DT05UQUlORVIgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgUmR0Q2hpbGREaXJlY3RpdmUgfSBmcm9tICcuL3JkdC1jaGlsZC5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbcmR0Q29udGFpbmVyXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFJkdENoaWxkRGlyZWN0aXZlLFxuICAgICAgdXNlRXhpc3Rpbmc6IFJkdENvbnRhaW5lckRpcmVjdGl2ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFJEVF9DT05UQUlORVIsXG4gICAgICB1c2VFeGlzdGluZzogUmR0Q29udGFpbmVyRGlyZWN0aXZlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFJkdENvbnRhaW5lckRpcmVjdGl2ZSBleHRlbmRzIFJkdENoaWxkRGlyZWN0aXZlIHtcbiAgcmVhZG9ubHkgcmR0Q2hpbGRyZW46IFNldDxSZHRDaGlsZERpcmVjdGl2ZT4gPSBuZXcgU2V0PFJkdENoaWxkRGlyZWN0aXZlPigpO1xuXG4gIHJlZ2lzdGVyQ2hpbGQoY2hpbGQ6IFJkdENoaWxkRGlyZWN0aXZlKSB7XG4gICAgdGhpcy5yZHRDaGlsZHJlbi5hZGQoY2hpbGQpO1xuICB9XG5cbiAgcmVtb3ZlQ2hpbGQoY2hpbGQ6IFJkdENoaWxkRGlyZWN0aXZlKSB7XG4gICAgdGhpcy5yZHRDaGlsZHJlbi5kZWxldGUoY2hpbGQpO1xuICB9XG5cbiAgY2hlY2tDYW5MZWF2ZSQoKSB7XG4gICAgcmV0dXJuIHJkdEdldEFsbFJlc3VsdHNUcnVlJChcbiAgICAgIFt0aGlzLCAuLi50aGlzLmdldEFjdGl2ZUNoaWxkcmVuKCldLm1hcCgoY2gpID0+ICgpID0+IGNoLmNhbkxlYXZlVmlldygpKVxuICAgICk7XG4gIH1cblxuICAvKiBUT0RPXG4gIGNoZWNrQ2FuRW50ZXIkKCkge1xuICAgIHJldHVybiBnZXRDYW4kKFxuICAgICAgW3RoaXMsIC4uLnRoaXMuZ2V0QWN0aXZlQ2hpbGRyZW4oKV0ubWFwKChjaCkgPT4gKCkgPT4gY2guY2FuRW50ZXJWaWV3KCkpXG4gICAgKTtcbiAgfVxuICAqL1xuXG4gIG92ZXJyaWRlIG9uVmlld1dpbGxFbnRlcigpIHtcbiAgICBzdXBlci5vblZpZXdXaWxsRW50ZXIoKTtcbiAgICB0aGlzLnJkdENoaWxkcmVuLmZvckVhY2goKGNoKSA9PiBjaC5vblZpZXdXaWxsRW50ZXIoKSk7XG4gIH1cblxuICBvdmVycmlkZSBvblZpZXdXaWxsTGVhdmUoKSB7XG4gICAgc3VwZXIub25WaWV3V2lsbExlYXZlKCk7XG4gICAgdGhpcy5yZHRDaGlsZHJlbi5mb3JFYWNoKChjaCkgPT4gY2gub25WaWV3V2lsbExlYXZlKCkpO1xuICB9XG5cbiAgZ2V0Q2hpbGRyZW5SZWN1cnNpdmUoZmlsdGVyPzogKGNoOiBSZHRDaGlsZERpcmVjdGl2ZSkgPT4gYm9vbGVhbikge1xuICAgIGNvbnN0IHJlczogUmR0Q2hpbGREaXJlY3RpdmVbXSA9IFtdO1xuICAgIHRoaXMuX2dldENoaWxkcmVuUmVjdXJzaXZlKHJlcywgZmlsdGVyKTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEFjdGl2ZUNoaWxkcmVuKCkge1xuICAgIHJldHVybiB0aGlzLmdldENoaWxkcmVuUmVjdXJzaXZlKChjaCkgPT4gY2guaXNBY3RpdmUoKSk7XG4gIH1cblxuICBnZXRDaGlsZHJlbkJ5Q2xhc3M8VD4oY2hpbGRDbGFzczogVHlwZTxUPikge1xuICAgIGNvbnN0IHJlczogVFtdID0gW107XG4gICAgdGhpcy5fZ2V0Q2hpbGRyZW5CeUNsYXNzUmVjdXJzaXZlKGNoaWxkQ2xhc3MsIHJlcyk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHByaXZhdGUgX2dldENoaWxkcmVuUmVjdXJzaXZlKFxuICAgIHJlczogUmR0Q2hpbGREaXJlY3RpdmVbXSxcbiAgICBmaWx0ZXI/OiAoY2g6IFJkdENoaWxkRGlyZWN0aXZlKSA9PiBib29sZWFuXG4gICkge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gQXJyYXkuZnJvbSh0aGlzLnJkdENoaWxkcmVuKTtcbiAgICBjb25zdCBmaWx0ZXJlZENoaWxkcmVuID0gZmlsdGVyID8gY2hpbGRyZW4uZmlsdGVyKGZpbHRlcikgOiBjaGlsZHJlbjtcbiAgICByZXMucHVzaCguLi5maWx0ZXJlZENoaWxkcmVuKTtcbiAgICBmaWx0ZXJlZENoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBSZHRDb250YWluZXJEaXJlY3RpdmUpIHtcbiAgICAgICAgY2hpbGQuX2dldENoaWxkcmVuUmVjdXJzaXZlKHJlcywgZmlsdGVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldENoaWxkcmVuQnlDbGFzc1JlY3Vyc2l2ZTxUPihjaGlsZENsYXNzOiBUeXBlPFQ+LCByZXM6IFRbXSkge1xuICAgIHRoaXMucmR0Q2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgIGNvbnN0IGNvbXAgPSAoY2hpbGQgYXMgUmR0Q2hpbGREaXJlY3RpdmUpLmd1YXJkZWRDb21wb25lbnQ7XG4gICAgICBpZiAoY29tcCBpbnN0YW5jZW9mIGNoaWxkQ2xhc3MpIHtcbiAgICAgICAgcmVzLnB1c2goY29tcCk7XG4gICAgICB9IGVsc2UgaWYgKGNoaWxkIGluc3RhbmNlb2YgUmR0Q29udGFpbmVyRGlyZWN0aXZlKSB7XG4gICAgICAgIGNoaWxkLl9nZXRDaGlsZHJlbkJ5Q2xhc3NSZWN1cnNpdmUoY2hpbGRDbGFzcywgcmVzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,4 +1,5 @@
1
1
  export * from './directives/rdt-child.directive';
2
2
  export * from './directives/rdt-container.directive';
3
3
  export * from './models';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvY29yZS9zcmMvbGliL3JkdC1jb21wb25lbnQtZ3VhcmQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL3JkdC1jaGlsZC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL3JkdC1jb250YWluZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzJztcbiJdfQ==
4
+ export * from './services/rdt-component-guard-store.service';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvY29yZS9zcmMvbGliL3JkdC1jb21wb25lbnQtZ3VhcmQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsOENBQThDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvcmR0LWNoaWxkLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvcmR0LWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9yZHQtY29tcG9uZW50LWd1YXJkLXN0b3JlLnNlcnZpY2UnO1xuIl19
@@ -3,6 +3,10 @@ import { of } from 'rxjs';
3
3
  export const RDT_GUARDED_COMPONENT = new InjectionToken('');
4
4
  export const RDT_CONTAINER = new InjectionToken('');
5
5
  export function canTransition$(from, to) {
6
+ console.log('canTransition$', from, to);
7
+ if (to === from) {
8
+ return of(true);
9
+ }
6
10
  const canLeave$ = from ? from.checkCanLeave$() : of(true);
7
11
  return canLeave$;
8
12
  /*
@@ -18,4 +22,4 @@ export function canTransition$(from, to) {
18
22
  })
19
23
  );*/
20
24
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L2NvcmUvc3JjL2xpYi9yZHQtY29tcG9uZW50LWd1YXJkL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFvQjFCLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUVyRCxFQUFFLENBQUMsQ0FBQztBQUVOLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBd0IsRUFBRSxDQUFDLENBQUM7QUFFM0UsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsSUFBcUMsRUFDckMsRUFBbUM7SUFFbkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxRCxPQUFPLFNBQVMsQ0FBQztJQUNqQjs7Ozs7Ozs7Ozs7UUFXSTtBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAbmdyZHQvdXRpbHMnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJkdEJvb2xlYW5SZXN1bHQgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBSZHRDb250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvcmR0LWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJkdENhbkxlYXZlVmlldyB7XG4gIHJkdENhbkxlYXZlVmlldygpOiBSZHRCb29sZWFuUmVzdWx0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJkdENhbkVudGVyVmlldyB7XG4gIHJkdENhbkVudGVyVmlldygpOiBSZHRCb29sZWFuUmVzdWx0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJkdE9uVmlld1dpbGxMZWF2ZSB7XG4gIHJkdE9uVmlld1dpbGxMZWF2ZSgpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJkdE9uVmlld1dpbGxFbnRlciB7XG4gIHJkdE9uVmlld1dpbGxFbnRlcigpOiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgUkRUX0dVQVJERURfQ09NUE9ORU5UID0gbmV3IEluamVjdGlvblRva2VuPFxuICBSZHRDYW5MZWF2ZVZpZXcgfCBSZHRDYW5FbnRlclZpZXcgfCBSZHRPblZpZXdXaWxsRW50ZXIgfCBSZHRPblZpZXdXaWxsTGVhdmVcbj4oJycpO1xuXG5leHBvcnQgY29uc3QgUkRUX0NPTlRBSU5FUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZHRDb250YWluZXJEaXJlY3RpdmU+KCcnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNhblRyYW5zaXRpb24kKFxuICBmcm9tOiBOdWxsYWJsZTxSZHRDb250YWluZXJEaXJlY3RpdmU+LFxuICB0bzogTnVsbGFibGU8UmR0Q29udGFpbmVyRGlyZWN0aXZlPlxuKSB7XG4gIGNvbnN0IGNhbkxlYXZlJCA9IGZyb20gPyBmcm9tLmNoZWNrQ2FuTGVhdmUkKCkgOiBvZih0cnVlKTtcbiAgcmV0dXJuIGNhbkxlYXZlJDtcbiAgLypcbiAgY29uc3QgY2FuRW50ZXIkID0gdG8gPyB0by5jaGVja0NhbkVudGVyJCgpIDogb2YodHJ1ZSk7XG5cbiAgcmV0dXJuIGNhbkxlYXZlJC5waXBlKFxuICAgIHN3aXRjaE1hcCgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIHJldHVybiBjYW5FbnRlciQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gb2YocmVzKTtcbiAgICAgIH1cbiAgICB9KVxuICApOyovXG59XG4iXX0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L2NvcmUvc3JjL2xpYi9yZHQtY29tcG9uZW50LWd1YXJkL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUF3QjFCLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQU1yRCxFQUFFLENBQUMsQ0FBQztBQUVOLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBd0IsRUFBRSxDQUFDLENBQUM7QUFFM0UsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsSUFBcUMsRUFDckMsRUFBbUM7SUFFbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEMsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDaEIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUQsT0FBTyxTQUFTLENBQUM7SUFDakI7Ozs7Ozs7Ozs7O1FBV0k7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQG5ncmR0L3V0aWxzJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZHRCb29sZWFuUmVzdWx0IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUmR0Q29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3JkdC1jb250YWluZXIuZGlyZWN0aXZlJztcblxuZXhwb3J0IGludGVyZmFjZSBSZHRJc0FjdGl2ZSB7XG4gIHJkdElzQWN0aXZlKCk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmR0Q2FuTGVhdmVWaWV3IHtcbiAgcmR0Q2FuTGVhdmVWaWV3KCk6IFJkdEJvb2xlYW5SZXN1bHQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmR0Q2FuRW50ZXJWaWV3IHtcbiAgcmR0Q2FuRW50ZXJWaWV3KCk6IFJkdEJvb2xlYW5SZXN1bHQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmR0T25WaWV3V2lsbExlYXZlIHtcbiAgcmR0T25WaWV3V2lsbExlYXZlKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmR0T25WaWV3V2lsbEVudGVyIHtcbiAgcmR0T25WaWV3V2lsbEVudGVyKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBSRFRfR1VBUkRFRF9DT01QT05FTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48XG4gIHwgUmR0Q2FuTGVhdmVWaWV3XG4gIHwgUmR0Q2FuRW50ZXJWaWV3XG4gIHwgUmR0T25WaWV3V2lsbEVudGVyXG4gIHwgUmR0T25WaWV3V2lsbExlYXZlXG4gIHwgUmR0SXNBY3RpdmVcbj4oJycpO1xuXG5leHBvcnQgY29uc3QgUkRUX0NPTlRBSU5FUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZHRDb250YWluZXJEaXJlY3RpdmU+KCcnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNhblRyYW5zaXRpb24kKFxuICBmcm9tOiBOdWxsYWJsZTxSZHRDb250YWluZXJEaXJlY3RpdmU+LFxuICB0bzogTnVsbGFibGU8UmR0Q29udGFpbmVyRGlyZWN0aXZlPlxuKSB7XG4gIGNvbnNvbGUubG9nKCdjYW5UcmFuc2l0aW9uJCcsIGZyb20sIHRvKTtcbiAgaWYgKHRvID09PSBmcm9tKSB7XG4gICAgcmV0dXJuIG9mKHRydWUpO1xuICB9XG4gIGNvbnN0IGNhbkxlYXZlJCA9IGZyb20gPyBmcm9tLmNoZWNrQ2FuTGVhdmUkKCkgOiBvZih0cnVlKTtcbiAgcmV0dXJuIGNhbkxlYXZlJDtcbiAgLypcbiAgY29uc3QgY2FuRW50ZXIkID0gdG8gPyB0by5jaGVja0NhbkVudGVyJCgpIDogb2YodHJ1ZSk7XG5cbiAgcmV0dXJuIGNhbkxlYXZlJC5waXBlKFxuICAgIHN3aXRjaE1hcCgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIHJldHVybiBjYW5FbnRlciQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gb2YocmVzKTtcbiAgICAgIH1cbiAgICB9KVxuICApOyovXG59XG4iXX0=
@@ -0,0 +1,36 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { rdtGetAllResultsTrue$ } from '../../utils';
3
+ import * as i0 from "@angular/core";
4
+ export class RdtComponentGuardStoreService {
5
+ guards = new Set();
6
+ registerGuard(guard) {
7
+ this.guards.add(guard);
8
+ }
9
+ removeGuard(guard) {
10
+ this.guards.delete(guard);
11
+ }
12
+ getGuards() {
13
+ return Array.from(this.guards);
14
+ }
15
+ checkCanLeaveGlobal$() {
16
+ return rdtGetAllResultsTrue$(this.getGuards().map((ch) => () => {
17
+ // @ts-ignore
18
+ if (typeof ch.checkCanLeave$ === 'function') {
19
+ // @ts-ignore
20
+ return ch.checkCanLeave$();
21
+ }
22
+ else {
23
+ return ch.canLeaveView();
24
+ }
25
+ }));
26
+ }
27
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtComponentGuardStoreService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
28
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtComponentGuardStoreService, providedIn: 'root' });
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtComponentGuardStoreService, decorators: [{
31
+ type: Injectable,
32
+ args: [{
33
+ providedIn: 'root',
34
+ }]
35
+ }] });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWNvbXBvbmVudC1ndWFyZC1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L2NvcmUvc3JjL2xpYi9yZHQtY29tcG9uZW50LWd1YXJkL3NlcnZpY2VzL3JkdC1jb21wb25lbnQtZ3VhcmQtc3RvcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFNcEQsTUFBTSxPQUFPLDZCQUE2QjtJQUN2QixNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQXFCLENBQUM7SUFFdkQsYUFBYSxDQUFDLEtBQXdCO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBd0I7UUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsT0FBTyxxQkFBcUIsQ0FDMUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFO1lBQ2hDLGFBQWE7WUFDYixJQUFJLE9BQU8sRUFBRSxDQUFDLGNBQWMsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDNUMsYUFBYTtnQkFDYixPQUFPLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUM3QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDM0IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO3VHQTNCVSw2QkFBNkI7MkdBQTdCLDZCQUE2QixjQUY1QixNQUFNOzsyRkFFUCw2QkFBNkI7a0JBSHpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcmR0R2V0QWxsUmVzdWx0c1RydWUkIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgUmR0Q2hpbGREaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3JkdC1jaGlsZC5kaXJlY3RpdmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUmR0Q29tcG9uZW50R3VhcmRTdG9yZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGd1YXJkcyA9IG5ldyBTZXQ8UmR0Q2hpbGREaXJlY3RpdmU+KCk7XG5cbiAgcmVnaXN0ZXJHdWFyZChndWFyZDogUmR0Q2hpbGREaXJlY3RpdmUpIHtcbiAgICB0aGlzLmd1YXJkcy5hZGQoZ3VhcmQpO1xuICB9XG5cbiAgcmVtb3ZlR3VhcmQoZ3VhcmQ6IFJkdENoaWxkRGlyZWN0aXZlKSB7XG4gICAgdGhpcy5ndWFyZHMuZGVsZXRlKGd1YXJkKTtcbiAgfVxuXG4gIGdldEd1YXJkcygpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmd1YXJkcyk7XG4gIH1cblxuICBjaGVja0NhbkxlYXZlR2xvYmFsJCgpIHtcbiAgICByZXR1cm4gcmR0R2V0QWxsUmVzdWx0c1RydWUkKFxuICAgICAgdGhpcy5nZXRHdWFyZHMoKS5tYXAoKGNoKSA9PiAoKSA9PiB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKHR5cGVvZiBjaC5jaGVja0NhbkxlYXZlJCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICByZXR1cm4gY2guY2hlY2tDYW5MZWF2ZSQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gY2guY2FuTGVhdmVWaWV3KCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, Directive, DestroyRef } from '@angular/core';
3
- import { of, Subject, concat, filter, map, catchError, defer } from 'rxjs';
2
+ import { InjectionToken, inject, Directive, Injectable, DestroyRef } from '@angular/core';
3
+ import { of, concat, filter, map, catchError, defer } from 'rxjs';
4
4
  import { fromPromise } from 'rxjs/internal/observable/innerFrom';
5
5
 
6
6
  const RDT_AUTOFOCUSABLE_COMPONENT = new InjectionToken('');
@@ -41,6 +41,10 @@ function getRdtAutofocusable(src) {
41
41
  const RDT_GUARDED_COMPONENT = new InjectionToken('');
42
42
  const RDT_CONTAINER = new InjectionToken('');
43
43
  function canTransition$(from, to) {
44
+ console.log('canTransition$', from, to);
45
+ if (to === from) {
46
+ return of(true);
47
+ }
44
48
  const canLeave$ = from ? from.checkCanLeave$() : of(true);
45
49
  return canLeave$;
46
50
  /*
@@ -57,7 +61,64 @@ function canTransition$(from, to) {
57
61
  );*/
58
62
  }
59
63
 
64
+ function rdtGetAllResultsTrue$(inputFactories) {
65
+ const can$ = inputFactories.map((fn) => rdtGetResult$(fn));
66
+ const last = Symbol('last');
67
+ return concat(...can$, of(last)).pipe(filter((res) => res === last), map(() => true), catchError(() => of(false)));
68
+ }
69
+ function rdtGetResult$(inputFactory) {
70
+ return defer(() => {
71
+ const input = inputFactory();
72
+ if (typeof input === 'boolean') {
73
+ return of(input);
74
+ }
75
+ if (input instanceof Promise) {
76
+ return fromPromise(input);
77
+ }
78
+ return input;
79
+ }).pipe(map((res) => {
80
+ if (res) {
81
+ return res;
82
+ }
83
+ throw res;
84
+ }));
85
+ }
86
+
87
+ class RdtComponentGuardStoreService {
88
+ guards = new Set();
89
+ registerGuard(guard) {
90
+ this.guards.add(guard);
91
+ }
92
+ removeGuard(guard) {
93
+ this.guards.delete(guard);
94
+ }
95
+ getGuards() {
96
+ return Array.from(this.guards);
97
+ }
98
+ checkCanLeaveGlobal$() {
99
+ return rdtGetAllResultsTrue$(this.getGuards().map((ch) => () => {
100
+ // @ts-ignore
101
+ if (typeof ch.checkCanLeave$ === 'function') {
102
+ // @ts-ignore
103
+ return ch.checkCanLeave$();
104
+ }
105
+ else {
106
+ return ch.canLeaveView();
107
+ }
108
+ }));
109
+ }
110
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtComponentGuardStoreService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
111
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtComponentGuardStoreService, providedIn: 'root' });
112
+ }
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtComponentGuardStoreService, decorators: [{
114
+ type: Injectable,
115
+ args: [{
116
+ providedIn: 'root',
117
+ }]
118
+ }] });
119
+
60
120
  class RdtChildDirective {
121
+ guardStore = inject(RdtComponentGuardStoreService);
61
122
  destroyRef = inject(DestroyRef);
62
123
  container = inject(RDT_CONTAINER, {
63
124
  optional: true,
@@ -68,10 +129,6 @@ class RdtChildDirective {
68
129
  self: true,
69
130
  host: true,
70
131
  });
71
- willLeaveSubj$ = new Subject();
72
- willEnterSubj$ = new Subject();
73
- willLeave$ = this.willLeaveSubj$.asObservable();
74
- willEnter$ = this.willEnterSubj$.asObservable();
75
132
  ngOnInit() {
76
133
  if (!this.guardedComponent) {
77
134
  throw new Error(`
@@ -81,13 +138,21 @@ class RdtChildDirective {
81
138
  This applies to both Child and Container directives.
82
139
  `);
83
140
  }
84
- this.container?.registerChild(this);
141
+ if (!this.container) {
142
+ this.guardStore.registerGuard(this);
143
+ }
144
+ else {
145
+ this.container?.registerChild(this);
146
+ }
85
147
  }
86
148
  ngOnDestroy() {
87
- this.willLeaveSubj$.complete();
88
- this.willEnterSubj$.complete();
149
+ this.guardStore.removeGuard(this);
89
150
  this.container?.removeChild(this);
90
151
  }
152
+ isActive() {
153
+ const comp = this.guardedComponent;
154
+ return comp?.rdtIsActive?.() ?? true;
155
+ }
91
156
  canEnterView() {
92
157
  const comp = this.guardedComponent;
93
158
  if (typeof comp?.rdtCanEnterView === 'function') {
@@ -107,12 +172,10 @@ class RdtChildDirective {
107
172
  }
108
173
  }
109
174
  onViewWillEnter() {
110
- this.willEnterSubj$.next();
111
175
  const comp = this.guardedComponent;
112
176
  comp?.rdtOnViewWillEnter();
113
177
  }
114
178
  onViewWillLeave() {
115
- this.willLeaveSubj$.next();
116
179
  const comp = this.guardedComponent;
117
180
  comp?.rdtOnViewWillLeave();
118
181
  }
@@ -138,29 +201,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
138
201
  }]
139
202
  }] });
140
203
 
141
- function rdtGetAllResultsTrue$(inputFactories) {
142
- const can$ = inputFactories.map((fn) => rdtGetResult$(fn));
143
- const last = Symbol('last');
144
- return concat(...can$, of(last)).pipe(filter((res) => res === last), map(() => true), catchError(() => of(false)));
145
- }
146
- function rdtGetResult$(inputFactory) {
147
- return defer(() => {
148
- const input = inputFactory();
149
- if (typeof input === 'boolean') {
150
- return of(input);
151
- }
152
- if (input instanceof Promise) {
153
- return fromPromise(input);
154
- }
155
- return input;
156
- }).pipe(map((res) => {
157
- if (res) {
158
- return res;
159
- }
160
- throw res;
161
- }));
162
- }
163
-
164
204
  class RdtContainerDirective extends RdtChildDirective {
165
205
  rdtChildren = new Set();
166
206
  registerChild(child) {
@@ -187,24 +227,26 @@ class RdtContainerDirective extends RdtChildDirective {
187
227
  super.onViewWillLeave();
188
228
  this.rdtChildren.forEach((ch) => ch.onViewWillLeave());
189
229
  }
190
- getChildrenRecursive() {
230
+ getChildrenRecursive(filter) {
191
231
  const res = [];
192
- this._getChildrenRecursive(res);
232
+ this._getChildrenRecursive(res, filter);
193
233
  return res;
194
234
  }
195
235
  getActiveChildren() {
196
- return this.getChildrenRecursive();
236
+ return this.getChildrenRecursive((ch) => ch.isActive());
197
237
  }
198
238
  getChildrenByClass(childClass) {
199
239
  const res = [];
200
240
  this._getChildrenByClassRecursive(childClass, res);
201
241
  return res;
202
242
  }
203
- _getChildrenRecursive(res) {
204
- res.push(...this.rdtChildren);
205
- this.rdtChildren.forEach((child) => {
243
+ _getChildrenRecursive(res, filter) {
244
+ const children = Array.from(this.rdtChildren);
245
+ const filteredChildren = filter ? children.filter(filter) : children;
246
+ res.push(...filteredChildren);
247
+ filteredChildren.forEach((child) => {
206
248
  if (child instanceof RdtContainerDirective) {
207
- child._getChildrenRecursive(res);
249
+ child._getChildrenRecursive(res, filter);
208
250
  }
209
251
  });
210
252
  }
@@ -253,5 +295,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
253
295
  * Generated bundle index. Do not edit.
254
296
  */
255
297
 
256
- export { RDT_AUTOFOCUSABLE_COMPONENT, RDT_CONTAINER, RDT_GUARDED_COMPONENT, RdtAutofocusableDirective, RdtChildDirective, RdtContainerDirective, canTransition$, getRdtAutofocusable, rdtGetAllResultsTrue$, rdtGetResult$ };
298
+ export { RDT_AUTOFOCUSABLE_COMPONENT, RDT_CONTAINER, RDT_GUARDED_COMPONENT, RdtAutofocusableDirective, RdtChildDirective, RdtComponentGuardStoreService, RdtContainerDirective, canTransition$, getRdtAutofocusable, rdtGetAllResultsTrue$, rdtGetResult$ };
257
299
  //# sourceMappingURL=ngrdt-core.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngrdt-core.mjs","sources":["../../../../@ngrdt/core/src/lib/rdt-autofocus/models.ts","../../../../@ngrdt/core/src/lib/rdt-autofocus/rdt-autofocusable.directive.ts","../../../../@ngrdt/core/src/lib/rdt-autofocus/utils.ts","../../../../@ngrdt/core/src/lib/rdt-component-guard/models.ts","../../../../@ngrdt/core/src/lib/rdt-component-guard/directives/rdt-child.directive.ts","../../../../@ngrdt/core/src/lib/utils/rdt-boolean-result.ts","../../../../@ngrdt/core/src/lib/rdt-component-guard/directives/rdt-container.directive.ts","../../../../@ngrdt/core/src/ngrdt-core.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { RdtBooleanResult } from '../utils';\n\nexport interface RdtAutocusable {\n rdtFocus(): void;\n rdtCanFocus(): RdtBooleanResult;\n rdtGetAutofocusPriority?(): number;\n}\n\nexport const RDT_AUTOFOCUSABLE_COMPONENT = new InjectionToken<RdtAutocusable>(\n ''\n);\n","import { Directive, inject, OnInit } from '@angular/core';\nimport { RDT_AUTOFOCUSABLE_COMPONENT } from './models';\n\n@Directive({\n selector: '[rdtAutofocusable]',\n})\nexport class RdtAutofocusableDirective implements OnInit {\n readonly component = inject(RDT_AUTOFOCUSABLE_COMPONENT, {\n host: true,\n optional: true,\n self: true,\n });\n\n ngOnInit() {\n if (!this.component) {\n throw new Error(`\n RdtAutofocusableDirective usage:\n Apply directive directly on component and provide the same component as RDT_AUTOFOCUSABLE_COMPONENT.\n The component must then implement RdtAutocusable.`);\n }\n }\n}\n","import { RdtAutocusable } from './models';\nimport { RdtAutofocusableDirective } from './rdt-autofocusable.directive';\n\nexport function getRdtAutofocusable(\n src: Iterable<RdtAutofocusableDirective>\n): RdtAutocusable | null {\n const withPrios = Array.from(src).map((dir) => ({\n cmp: dir.component,\n prio: dir.component?.rdtGetAutofocusPriority?.() ?? 0,\n }));\n withPrios.sort((a, b) => b.prio - a.prio);\n return withPrios[0]?.cmp;\n}\n","import { InjectionToken } from '@angular/core';\nimport { Nullable } from '@ngrdt/utils';\nimport { of } from 'rxjs';\nimport { RdtBooleanResult } from '../utils';\nimport { RdtContainerDirective } from './directives/rdt-container.directive';\n\nexport interface RdtCanLeaveView {\n rdtCanLeaveView(): RdtBooleanResult;\n}\n\nexport interface RdtCanEnterView {\n rdtCanEnterView(): RdtBooleanResult;\n}\n\nexport interface RdtOnViewWillLeave {\n rdtOnViewWillLeave(): void;\n}\n\nexport interface RdtOnViewWillEnter {\n rdtOnViewWillEnter(): void;\n}\n\nexport const RDT_GUARDED_COMPONENT = new InjectionToken<\n RdtCanLeaveView | RdtCanEnterView | RdtOnViewWillEnter | RdtOnViewWillLeave\n>('');\n\nexport const RDT_CONTAINER = new InjectionToken<RdtContainerDirective>('');\n\nexport function canTransition$(\n from: Nullable<RdtContainerDirective>,\n to: Nullable<RdtContainerDirective>\n) {\n const canLeave$ = from ? from.checkCanLeave$() : of(true);\n return canLeave$;\n /*\n const canEnter$ = to ? to.checkCanEnter$() : of(true);\n\n return canLeave$.pipe(\n switchMap((res) => {\n if (res) {\n return canEnter$;\n } else {\n return of(res);\n }\n })\n );*/\n}\n","import {\n DestroyRef,\n Directive,\n inject,\n OnDestroy,\n OnInit,\n Type,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { RdtBooleanResult } from '../../utils';\nimport {\n RDT_CONTAINER,\n RDT_GUARDED_COMPONENT,\n RdtCanEnterView,\n RdtCanLeaveView,\n RdtOnViewWillEnter,\n RdtOnViewWillLeave,\n} from '../models';\nimport { RdtContainerDirective } from './rdt-container.directive';\n\n@Directive({\n selector: '[rdtChild]',\n standalone: true,\n})\nexport class RdtChildDirective implements OnInit, OnDestroy {\n readonly destroyRef = inject(DestroyRef);\n readonly container = inject(RDT_CONTAINER, {\n optional: true,\n skipSelf: true,\n });\n readonly guardedComponent = inject(RDT_GUARDED_COMPONENT, {\n optional: true,\n self: true,\n host: true,\n });\n\n private readonly willLeaveSubj$ = new Subject<void>();\n private readonly willEnterSubj$ = new Subject<void>();\n\n readonly willLeave$ = this.willLeaveSubj$.asObservable();\n readonly willEnter$ = this.willEnterSubj$.asObservable();\n\n ngOnInit() {\n if (!this.guardedComponent) {\n throw new Error(`\n RdtChildDirective usage:\n Apply directive directly on component and provide the same component as RDT_GUARDED_COMPONENT.\n The component can then implement RdtCanLeaveView or RdtCanEnterView.\n This applies to both Child and Container directives.\n `);\n }\n\n this.container?.registerChild(this);\n }\n\n ngOnDestroy() {\n this.willLeaveSubj$.complete();\n this.willEnterSubj$.complete();\n this.container?.removeChild(this);\n }\n\n canEnterView(): RdtBooleanResult {\n const comp = this.guardedComponent as RdtCanEnterView | undefined;\n if (typeof comp?.rdtCanEnterView === 'function') {\n return comp.rdtCanEnterView();\n } else {\n return true;\n }\n }\n\n canLeaveView(): RdtBooleanResult {\n const comp = this.guardedComponent as RdtCanLeaveView | undefined;\n if (typeof comp?.rdtCanLeaveView === 'function') {\n return comp.rdtCanLeaveView();\n } else {\n return true;\n }\n }\n\n onViewWillEnter(): void {\n this.willEnterSubj$.next();\n const comp = this.guardedComponent as RdtOnViewWillEnter | undefined;\n comp?.rdtOnViewWillEnter();\n }\n\n onViewWillLeave(): void {\n this.willLeaveSubj$.next();\n const comp = this.guardedComponent as RdtOnViewWillLeave | undefined;\n comp?.rdtOnViewWillLeave();\n }\n\n getParentByClass<T extends RdtContainerDirective>(\n parentClass: Type<T>\n ): T | null {\n if (!this.container) {\n return null;\n } else if (this.container instanceof parentClass) {\n return this.container;\n } else {\n return this.container.getParentByClass(parentClass);\n }\n }\n}\n","import { catchError, concat, defer, filter, map, Observable, of } from 'rxjs';\nimport { fromPromise } from 'rxjs/internal/observable/innerFrom';\n\nexport type RdtBooleanResult = Observable<boolean> | Promise<boolean> | boolean;\n\nexport function rdtGetAllResultsTrue$(\n inputFactories: (() => RdtBooleanResult)[]\n) {\n const can$ = inputFactories.map((fn) => rdtGetResult$(fn));\n const last = Symbol('last');\n\n return concat(...can$, of(last)).pipe(\n filter((res) => res === last),\n map(() => true),\n catchError(() => of(false))\n );\n}\n\nexport function rdtGetResult$(inputFactory: () => RdtBooleanResult) {\n return defer(() => {\n const input = inputFactory();\n\n if (typeof input === 'boolean') {\n return of(input);\n }\n if (input instanceof Promise) {\n return fromPromise(input);\n }\n return input;\n }).pipe(\n map((res) => {\n if (res) {\n return res;\n }\n throw res;\n })\n );\n}\n","import { Directive, Type } from '@angular/core';\nimport { rdtGetAllResultsTrue$ } from '../../utils';\nimport { RDT_CONTAINER } from '../models';\nimport { RdtChildDirective } from './rdt-child.directive';\n\n@Directive({\n selector: '[rdtContainer]',\n standalone: true,\n providers: [\n {\n provide: RdtChildDirective,\n useExisting: RdtContainerDirective,\n },\n {\n provide: RDT_CONTAINER,\n useExisting: RdtContainerDirective,\n },\n ],\n})\nexport class RdtContainerDirective extends RdtChildDirective {\n readonly rdtChildren: Set<RdtChildDirective> = new Set<RdtChildDirective>();\n\n registerChild(child: RdtChildDirective) {\n this.rdtChildren.add(child);\n }\n\n removeChild(child: RdtChildDirective) {\n this.rdtChildren.delete(child);\n }\n\n checkCanLeave$() {\n return rdtGetAllResultsTrue$(\n [this, ...this.getActiveChildren()].map((ch) => () => ch.canLeaveView())\n );\n }\n\n /* TODO\n checkCanEnter$() {\n return getCan$(\n [this, ...this.getActiveChildren()].map((ch) => () => ch.canEnterView())\n );\n }\n */\n\n override onViewWillEnter() {\n super.onViewWillEnter();\n this.rdtChildren.forEach((ch) => ch.onViewWillEnter());\n }\n\n override onViewWillLeave() {\n super.onViewWillLeave();\n this.rdtChildren.forEach((ch) => ch.onViewWillLeave());\n }\n\n getChildrenRecursive() {\n const res: RdtChildDirective[] = [];\n this._getChildrenRecursive(res);\n return res;\n }\n\n protected getActiveChildren() {\n return this.getChildrenRecursive();\n }\n\n getChildrenByClass<T>(childClass: Type<T>) {\n const res: T[] = [];\n this._getChildrenByClassRecursive(childClass, res);\n return res;\n }\n\n private _getChildrenRecursive(res: RdtChildDirective[]) {\n res.push(...this.rdtChildren);\n this.rdtChildren.forEach((child) => {\n if (child instanceof RdtContainerDirective) {\n child._getChildrenRecursive(res);\n }\n });\n }\n\n private _getChildrenByClassRecursive<T>(childClass: Type<T>, res: T[]) {\n this.rdtChildren.forEach((child) => {\n const comp = (child as RdtChildDirective).guardedComponent;\n if (comp instanceof childClass) {\n res.push(comp);\n } else if (child instanceof RdtContainerDirective) {\n child._getChildrenByClassRecursive(childClass, res);\n }\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngrdt-core.mjs","sources":["../../../../@ngrdt/core/src/lib/rdt-autofocus/models.ts","../../../../@ngrdt/core/src/lib/rdt-autofocus/rdt-autofocusable.directive.ts","../../../../@ngrdt/core/src/lib/rdt-autofocus/utils.ts","../../../../@ngrdt/core/src/lib/rdt-component-guard/models.ts","../../../../@ngrdt/core/src/lib/utils/rdt-boolean-result.ts","../../../../@ngrdt/core/src/lib/rdt-component-guard/services/rdt-component-guard-store.service.ts","../../../../@ngrdt/core/src/lib/rdt-component-guard/directives/rdt-child.directive.ts","../../../../@ngrdt/core/src/lib/rdt-component-guard/directives/rdt-container.directive.ts","../../../../@ngrdt/core/src/ngrdt-core.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { RdtBooleanResult } from '../utils';\n\nexport interface RdtAutocusable {\n rdtFocus(): void;\n rdtCanFocus(): RdtBooleanResult;\n rdtGetAutofocusPriority?(): number;\n}\n\nexport const RDT_AUTOFOCUSABLE_COMPONENT = new InjectionToken<RdtAutocusable>(\n ''\n);\n","import { Directive, inject, OnInit } from '@angular/core';\nimport { RDT_AUTOFOCUSABLE_COMPONENT } from './models';\n\n@Directive({\n selector: '[rdtAutofocusable]',\n})\nexport class RdtAutofocusableDirective implements OnInit {\n readonly component = inject(RDT_AUTOFOCUSABLE_COMPONENT, {\n host: true,\n optional: true,\n self: true,\n });\n\n ngOnInit() {\n if (!this.component) {\n throw new Error(`\n RdtAutofocusableDirective usage:\n Apply directive directly on component and provide the same component as RDT_AUTOFOCUSABLE_COMPONENT.\n The component must then implement RdtAutocusable.`);\n }\n }\n}\n","import { RdtAutocusable } from './models';\nimport { RdtAutofocusableDirective } from './rdt-autofocusable.directive';\n\nexport function getRdtAutofocusable(\n src: Iterable<RdtAutofocusableDirective>\n): RdtAutocusable | null {\n const withPrios = Array.from(src).map((dir) => ({\n cmp: dir.component,\n prio: dir.component?.rdtGetAutofocusPriority?.() ?? 0,\n }));\n withPrios.sort((a, b) => b.prio - a.prio);\n return withPrios[0]?.cmp;\n}\n","import { InjectionToken } from '@angular/core';\nimport { Nullable } from '@ngrdt/utils';\nimport { of } from 'rxjs';\nimport { RdtBooleanResult } from '../utils';\nimport { RdtContainerDirective } from './directives/rdt-container.directive';\n\nexport interface RdtIsActive {\n rdtIsActive(): boolean;\n}\n\nexport interface RdtCanLeaveView {\n rdtCanLeaveView(): RdtBooleanResult;\n}\n\nexport interface RdtCanEnterView {\n rdtCanEnterView(): RdtBooleanResult;\n}\n\nexport interface RdtOnViewWillLeave {\n rdtOnViewWillLeave(): void;\n}\n\nexport interface RdtOnViewWillEnter {\n rdtOnViewWillEnter(): void;\n}\n\nexport const RDT_GUARDED_COMPONENT = new InjectionToken<\n | RdtCanLeaveView\n | RdtCanEnterView\n | RdtOnViewWillEnter\n | RdtOnViewWillLeave\n | RdtIsActive\n>('');\n\nexport const RDT_CONTAINER = new InjectionToken<RdtContainerDirective>('');\n\nexport function canTransition$(\n from: Nullable<RdtContainerDirective>,\n to: Nullable<RdtContainerDirective>\n) {\n console.log('canTransition$', from, to);\n if (to === from) {\n return of(true);\n }\n const canLeave$ = from ? from.checkCanLeave$() : of(true);\n return canLeave$;\n /*\n const canEnter$ = to ? to.checkCanEnter$() : of(true);\n\n return canLeave$.pipe(\n switchMap((res) => {\n if (res) {\n return canEnter$;\n } else {\n return of(res);\n }\n })\n );*/\n}\n","import { catchError, concat, defer, filter, map, Observable, of } from 'rxjs';\nimport { fromPromise } from 'rxjs/internal/observable/innerFrom';\n\nexport type RdtBooleanResult = Observable<boolean> | Promise<boolean> | boolean;\n\nexport function rdtGetAllResultsTrue$(\n inputFactories: (() => RdtBooleanResult)[]\n) {\n const can$ = inputFactories.map((fn) => rdtGetResult$(fn));\n const last = Symbol('last');\n\n return concat(...can$, of(last)).pipe(\n filter((res) => res === last),\n map(() => true),\n catchError(() => of(false))\n );\n}\n\nexport function rdtGetResult$(inputFactory: () => RdtBooleanResult) {\n return defer(() => {\n const input = inputFactory();\n\n if (typeof input === 'boolean') {\n return of(input);\n }\n if (input instanceof Promise) {\n return fromPromise(input);\n }\n return input;\n }).pipe(\n map((res) => {\n if (res) {\n return res;\n }\n throw res;\n })\n );\n}\n","import { Injectable } from '@angular/core';\nimport { rdtGetAllResultsTrue$ } from '../../utils';\nimport { RdtChildDirective } from '../directives/rdt-child.directive';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RdtComponentGuardStoreService {\n private readonly guards = new Set<RdtChildDirective>();\n\n registerGuard(guard: RdtChildDirective) {\n this.guards.add(guard);\n }\n\n removeGuard(guard: RdtChildDirective) {\n this.guards.delete(guard);\n }\n\n getGuards() {\n return Array.from(this.guards);\n }\n\n checkCanLeaveGlobal$() {\n return rdtGetAllResultsTrue$(\n this.getGuards().map((ch) => () => {\n // @ts-ignore\n if (typeof ch.checkCanLeave$ === 'function') {\n // @ts-ignore\n return ch.checkCanLeave$();\n } else {\n return ch.canLeaveView();\n }\n })\n );\n }\n}\n","import {\n DestroyRef,\n Directive,\n inject,\n OnDestroy,\n OnInit,\n Type,\n} from '@angular/core';\nimport { RdtBooleanResult } from '../../utils';\nimport {\n RDT_CONTAINER,\n RDT_GUARDED_COMPONENT,\n RdtCanEnterView,\n RdtCanLeaveView,\n RdtIsActive,\n RdtOnViewWillEnter,\n RdtOnViewWillLeave,\n} from '../models';\nimport { RdtComponentGuardStoreService } from '../services/rdt-component-guard-store.service';\nimport { RdtContainerDirective } from './rdt-container.directive';\n\n@Directive({\n selector: '[rdtChild]',\n standalone: true,\n})\nexport class RdtChildDirective implements OnInit, OnDestroy {\n readonly guardStore = inject(RdtComponentGuardStoreService);\n readonly destroyRef = inject(DestroyRef);\n readonly container = inject(RDT_CONTAINER, {\n optional: true,\n skipSelf: true,\n });\n readonly guardedComponent = inject(RDT_GUARDED_COMPONENT, {\n optional: true,\n self: true,\n host: true,\n });\n\n ngOnInit() {\n if (!this.guardedComponent) {\n throw new Error(`\n RdtChildDirective usage:\n Apply directive directly on component and provide the same component as RDT_GUARDED_COMPONENT.\n The component can then implement RdtCanLeaveView or RdtCanEnterView.\n This applies to both Child and Container directives.\n `);\n }\n if (!this.container) {\n this.guardStore.registerGuard(this);\n } else {\n this.container?.registerChild(this);\n }\n }\n\n ngOnDestroy() {\n this.guardStore.removeGuard(this);\n this.container?.removeChild(this);\n }\n\n isActive() {\n const comp = this.guardedComponent as RdtIsActive | undefined;\n return comp?.rdtIsActive?.() ?? true;\n }\n\n canEnterView(): RdtBooleanResult {\n const comp = this.guardedComponent as RdtCanEnterView | undefined;\n if (typeof comp?.rdtCanEnterView === 'function') {\n return comp.rdtCanEnterView();\n } else {\n return true;\n }\n }\n\n canLeaveView(): RdtBooleanResult {\n const comp = this.guardedComponent as RdtCanLeaveView | undefined;\n if (typeof comp?.rdtCanLeaveView === 'function') {\n return comp.rdtCanLeaveView();\n } else {\n return true;\n }\n }\n\n onViewWillEnter(): void {\n const comp = this.guardedComponent as RdtOnViewWillEnter | undefined;\n comp?.rdtOnViewWillEnter();\n }\n\n onViewWillLeave(): void {\n const comp = this.guardedComponent as RdtOnViewWillLeave | undefined;\n comp?.rdtOnViewWillLeave();\n }\n\n getParentByClass<T extends RdtContainerDirective>(\n parentClass: Type<T>\n ): T | null {\n if (!this.container) {\n return null;\n } else if (this.container instanceof parentClass) {\n return this.container;\n } else {\n return this.container.getParentByClass(parentClass);\n }\n }\n}\n","import { Directive, Type } from '@angular/core';\nimport { rdtGetAllResultsTrue$ } from '../../utils';\nimport { RDT_CONTAINER } from '../models';\nimport { RdtChildDirective } from './rdt-child.directive';\n\n@Directive({\n selector: '[rdtContainer]',\n standalone: true,\n providers: [\n {\n provide: RdtChildDirective,\n useExisting: RdtContainerDirective,\n },\n {\n provide: RDT_CONTAINER,\n useExisting: RdtContainerDirective,\n },\n ],\n})\nexport class RdtContainerDirective extends RdtChildDirective {\n readonly rdtChildren: Set<RdtChildDirective> = new Set<RdtChildDirective>();\n\n registerChild(child: RdtChildDirective) {\n this.rdtChildren.add(child);\n }\n\n removeChild(child: RdtChildDirective) {\n this.rdtChildren.delete(child);\n }\n\n checkCanLeave$() {\n return rdtGetAllResultsTrue$(\n [this, ...this.getActiveChildren()].map((ch) => () => ch.canLeaveView())\n );\n }\n\n /* TODO\n checkCanEnter$() {\n return getCan$(\n [this, ...this.getActiveChildren()].map((ch) => () => ch.canEnterView())\n );\n }\n */\n\n override onViewWillEnter() {\n super.onViewWillEnter();\n this.rdtChildren.forEach((ch) => ch.onViewWillEnter());\n }\n\n override onViewWillLeave() {\n super.onViewWillLeave();\n this.rdtChildren.forEach((ch) => ch.onViewWillLeave());\n }\n\n getChildrenRecursive(filter?: (ch: RdtChildDirective) => boolean) {\n const res: RdtChildDirective[] = [];\n this._getChildrenRecursive(res, filter);\n return res;\n }\n\n protected getActiveChildren() {\n return this.getChildrenRecursive((ch) => ch.isActive());\n }\n\n getChildrenByClass<T>(childClass: Type<T>) {\n const res: T[] = [];\n this._getChildrenByClassRecursive(childClass, res);\n return res;\n }\n\n private _getChildrenRecursive(\n res: RdtChildDirective[],\n filter?: (ch: RdtChildDirective) => boolean\n ) {\n const children = Array.from(this.rdtChildren);\n const filteredChildren = filter ? children.filter(filter) : children;\n res.push(...filteredChildren);\n filteredChildren.forEach((child) => {\n if (child instanceof RdtContainerDirective) {\n child._getChildrenRecursive(res, filter);\n }\n });\n }\n\n private _getChildrenByClassRecursive<T>(childClass: Type<T>, res: T[]) {\n this.rdtChildren.forEach((child) => {\n const comp = (child as RdtChildDirective).guardedComponent;\n if (comp instanceof childClass) {\n res.push(comp);\n } else if (child instanceof RdtContainerDirective) {\n child._getChildrenByClassRecursive(childClass, res);\n }\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,18 +1,17 @@
1
1
  import { DestroyRef, OnDestroy, OnInit, Type } from '@angular/core';
2
2
  import { RdtBooleanResult } from '../../utils';
3
- import { RdtCanEnterView, RdtCanLeaveView, RdtOnViewWillEnter, RdtOnViewWillLeave } from '../models';
3
+ import { RdtCanEnterView, RdtCanLeaveView, RdtIsActive, RdtOnViewWillEnter, RdtOnViewWillLeave } from '../models';
4
+ import { RdtComponentGuardStoreService } from '../services/rdt-component-guard-store.service';
4
5
  import { RdtContainerDirective } from './rdt-container.directive';
5
6
  import * as i0 from "@angular/core";
6
7
  export declare class RdtChildDirective implements OnInit, OnDestroy {
8
+ readonly guardStore: RdtComponentGuardStoreService;
7
9
  readonly destroyRef: DestroyRef;
8
10
  readonly container: RdtContainerDirective | null;
9
- readonly guardedComponent: RdtCanLeaveView | RdtCanEnterView | RdtOnViewWillEnter | RdtOnViewWillLeave | null;
10
- private readonly willLeaveSubj$;
11
- private readonly willEnterSubj$;
12
- readonly willLeave$: import("rxjs").Observable<void>;
13
- readonly willEnter$: import("rxjs").Observable<void>;
11
+ readonly guardedComponent: RdtIsActive | RdtCanLeaveView | RdtCanEnterView | RdtOnViewWillEnter | RdtOnViewWillLeave | null;
14
12
  ngOnInit(): void;
15
13
  ngOnDestroy(): void;
14
+ isActive(): boolean;
16
15
  canEnterView(): RdtBooleanResult;
17
16
  canLeaveView(): RdtBooleanResult;
18
17
  onViewWillEnter(): void;
@@ -8,7 +8,7 @@ export declare class RdtContainerDirective extends RdtChildDirective {
8
8
  checkCanLeave$(): import("rxjs").Observable<boolean>;
9
9
  onViewWillEnter(): void;
10
10
  onViewWillLeave(): void;
11
- getChildrenRecursive(): RdtChildDirective[];
11
+ getChildrenRecursive(filter?: (ch: RdtChildDirective) => boolean): RdtChildDirective[];
12
12
  protected getActiveChildren(): RdtChildDirective[];
13
13
  getChildrenByClass<T>(childClass: Type<T>): T[];
14
14
  private _getChildrenRecursive;
@@ -1,3 +1,4 @@
1
1
  export * from './directives/rdt-child.directive';
2
2
  export * from './directives/rdt-container.directive';
3
3
  export * from './models';
4
+ export * from './services/rdt-component-guard-store.service';
@@ -2,6 +2,9 @@ import { InjectionToken } from '@angular/core';
2
2
  import { Nullable } from '@ngrdt/utils';
3
3
  import { RdtBooleanResult } from '../utils';
4
4
  import { RdtContainerDirective } from './directives/rdt-container.directive';
5
+ export interface RdtIsActive {
6
+ rdtIsActive(): boolean;
7
+ }
5
8
  export interface RdtCanLeaveView {
6
9
  rdtCanLeaveView(): RdtBooleanResult;
7
10
  }
@@ -14,6 +17,6 @@ export interface RdtOnViewWillLeave {
14
17
  export interface RdtOnViewWillEnter {
15
18
  rdtOnViewWillEnter(): void;
16
19
  }
17
- export declare const RDT_GUARDED_COMPONENT: InjectionToken<RdtCanLeaveView | RdtCanEnterView | RdtOnViewWillEnter | RdtOnViewWillLeave>;
20
+ export declare const RDT_GUARDED_COMPONENT: InjectionToken<RdtIsActive | RdtCanLeaveView | RdtCanEnterView | RdtOnViewWillEnter | RdtOnViewWillLeave>;
18
21
  export declare const RDT_CONTAINER: InjectionToken<RdtContainerDirective>;
19
22
  export declare function canTransition$(from: Nullable<RdtContainerDirective>, to: Nullable<RdtContainerDirective>): import("rxjs").Observable<boolean>;
@@ -0,0 +1,11 @@
1
+ import { RdtChildDirective } from '../directives/rdt-child.directive';
2
+ import * as i0 from "@angular/core";
3
+ export declare class RdtComponentGuardStoreService {
4
+ private readonly guards;
5
+ registerGuard(guard: RdtChildDirective): void;
6
+ removeGuard(guard: RdtChildDirective): void;
7
+ getGuards(): RdtChildDirective[];
8
+ checkCanLeaveGlobal$(): import("rxjs").Observable<boolean>;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<RdtComponentGuardStoreService, never>;
10
+ static ɵprov: i0.ɵɵInjectableDeclaration<RdtComponentGuardStoreService>;
11
+ }
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@ngrdt/core",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "peerDependencies": {
5
- "@angular/core": "^18.2.0",
6
- "rxjs": "~7.8.0",
7
- "@ngrdt/utils": "0.0.7"
5
+ "@angular/core": ">=18.2.0",
6
+ "rxjs": ">=7.0.0",
7
+ "@ngrdt/utils": ">=0.0.8"
8
8
  },
9
9
  "sideEffects": false,
10
10
  "module": "fesm2022/ngrdt-core.mjs",