@theseam/ui-common 0.4.21 → 0.4.23

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,4 +1,6 @@
1
1
  import { Component, ContentChildren, EventEmitter, Input, Output } from '@angular/core';
2
+ import { BehaviorSubject, combineLatest, shareReplay, tap } from 'rxjs';
3
+ import { isNullOrUndefined } from '@theseam/ui-common/utils';
2
4
  import { TabbedItemComponent } from './tabbed-item/tabbed-item.component';
3
5
  import { TabbedService } from './tabbed.service';
4
6
  import * as i0 from "@angular/core";
@@ -8,6 +10,12 @@ import * as i3 from "@angular/common";
8
10
  import * as i4 from "@angular/flex-layout/flex";
9
11
  import * as i5 from "./tabbed-content/tabbed-content.component";
10
12
  export class TabbedComponent {
13
+ set tabbedItems(val) {
14
+ this._tabbedItems.next(val);
15
+ }
16
+ get tabbedItems() {
17
+ return this._tabbedItems.value;
18
+ }
11
19
  set direction(val) {
12
20
  this._direction = val;
13
21
  }
@@ -31,20 +39,12 @@ export class TabbedComponent {
31
39
  }
32
40
  }
33
41
  else {
34
- return this._selectedTab;
42
+ return this._selectedTab.value;
35
43
  }
36
44
  }
37
- set selectedTab(tab) { this._selectedTab = tab; }
45
+ set selectedTab(tab) { this._selectedTab.next(tab); }
38
46
  set activeTabName(val) {
39
- clearTimeout(this._activeTabNameTimeout);
40
- this._activeTabNameTimeout = setTimeout(() => {
41
- if (!val) {
42
- this.selectedTab = undefined;
43
- }
44
- else {
45
- this.selectTab(val);
46
- }
47
- });
47
+ this._activeTabName.next(val);
48
48
  }
49
49
  constructor(tabbedService, router, route) {
50
50
  this.tabbedService = tabbedService;
@@ -52,8 +52,14 @@ export class TabbedComponent {
52
52
  this.route = route;
53
53
  this._direction = 'vertical';
54
54
  this._hideTabs = false;
55
+ this._tabbedItems = new BehaviorSubject(undefined);
56
+ this.tabbedItems$ = this._tabbedItems.asObservable();
55
57
  this.tabChanged = new EventEmitter();
56
58
  this.onlyRouteContent = false;
59
+ this._selectedTab = new BehaviorSubject(undefined);
60
+ this.selectedTab$ = this._selectedTab.asObservable().pipe(shareReplay({ bufferSize: 1, refCount: true }));
61
+ this._activeTabName = new BehaviorSubject(undefined);
62
+ this.activeTabName$ = this._activeTabName.asObservable();
57
63
  }
58
64
  ngOnInit() {
59
65
  this.tabbedService.registerTab(this, 'main');
@@ -62,9 +68,7 @@ export class TabbedComponent {
62
68
  this.tabbedService.unregisterTab(this, 'main');
63
69
  }
64
70
  ngAfterContentInit() {
65
- if (this.tabbedItems && this.tabbedItems.length > 0) {
66
- this.selectedTab = this.tabbedItems.first;
67
- }
71
+ combineLatest([this.tabbedItems$, this.activeTabName$]).pipe(tap(([_, activeTabName]) => this.selectTab(activeTabName))).subscribe();
68
72
  }
69
73
  /**
70
74
  *
@@ -81,20 +85,23 @@ export class TabbedComponent {
81
85
  * to select a tab
82
86
  */
83
87
  selectTab(name) {
88
+ if (isNullOrUndefined(name) || name === this.selectedTab?.name) {
89
+ return;
90
+ }
84
91
  const tab = this.tabbedItems?.find(t => t.name === name);
85
92
  if (tab) {
86
93
  this.selectedTab = tab;
87
94
  }
88
95
  else {
89
- throw new Error(`Tab with name '${name}' not found`);
96
+ console.warn(`Tab with name '${name}' not found`);
90
97
  }
91
98
  }
92
99
  }
93
100
  TabbedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabbedComponent, deps: [{ token: i1.TabbedService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
94
- TabbedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TabbedComponent, selector: "seam-tabbed", inputs: { direction: "direction", hideTabs: "hideTabs", onlyRouteContent: "onlyRouteContent", activeTabName: "activeTabName" }, outputs: { tabChanged: "tabChanged" }, providers: [TabbedService], queries: [{ propertyName: "tabbedItems", predicate: TabbedItemComponent }], ngImport: i0, template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === selectedTab\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"!selectedTab; else findContentTpl\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItems?.first\"></seam-tabbed-content>\n </ng-container>\n <ng-template #findContentTpl>\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <ng-container *ngIf=\"selectedTab === tabbedItem\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItem\"></seam-tabbed-content>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: i5.TabbedContentComponent, selector: "seam-tabbed-content", inputs: ["tabbedItem"] }] });
101
+ TabbedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TabbedComponent, selector: "seam-tabbed", inputs: { direction: "direction", hideTabs: "hideTabs", onlyRouteContent: "onlyRouteContent", activeTabName: "activeTabName" }, outputs: { tabChanged: "tabChanged" }, providers: [TabbedService], queries: [{ propertyName: "tabbedItems", predicate: TabbedItemComponent }], ngImport: i0, template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: i5.TabbedContentComponent, selector: "seam-tabbed-content", inputs: ["tabbedItem"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
95
102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabbedComponent, decorators: [{
96
103
  type: Component,
97
- args: [{ selector: 'seam-tabbed', providers: [TabbedService], template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === selectedTab\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"!selectedTab; else findContentTpl\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItems?.first\"></seam-tabbed-content>\n </ng-container>\n <ng-template #findContentTpl>\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <ng-container *ngIf=\"selectedTab === tabbedItem\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItem\"></seam-tabbed-content>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"] }]
104
+ args: [{ selector: 'seam-tabbed', providers: [TabbedService], template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"] }]
98
105
  }], ctorParameters: function () { return [{ type: i1.TabbedService }, { type: i2.Router }, { type: i2.ActivatedRoute }]; }, propDecorators: { tabbedItems: [{
99
106
  type: ContentChildren,
100
107
  args: [TabbedItemComponent]
@@ -109,4 +116,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
109
116
  }], activeTabName: [{
110
117
  type: Input
111
118
  }] } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiYmVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJiZWQvdGFiYmVkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJiZWQvdGFiYmVkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDYSxTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFDN0YsTUFBTSxlQUFlLENBQUE7QUFHdEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUE7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBaUIsTUFBTSxrQkFBa0IsQ0FBQTs7Ozs7OztBQVEvRCxNQUFNLE9BQU8sZUFBZTtJQVMxQixJQUNJLFNBQVMsQ0FBQyxHQUFrQjtRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQTtJQUN2QixDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFBO0lBQ3hCLENBQUM7SUFFRCxJQUNJLFFBQVEsQ0FBQyxHQUFZO1FBQ3ZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQTtRQUN0QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUE7SUFDdkIsQ0FBQztJQUtELElBQUksV0FBVztRQUNiLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFD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RSxhQUFhLGFBR1osQ0FBRSxhQUFhLENBQUU7c0pBT1UsV0FBVztzQkFBaEQsZUFBZTt1QkFBQyxtQkFBbUI7Z0JBRTFCLFVBQVU7c0JBQW5CLE1BQU07Z0JBR0gsU0FBUztzQkFEWixLQUFLO2dCQVNGLFFBQVE7c0JBRFgsS0FBSztnQkFXQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBbUJGLGFBQWE7c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xuXG5pbXBvcnQgeyBUYWJiZWRJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi90YWJiZWQtaXRlbS90YWJiZWQtaXRlbS5jb21wb25lbnQnXG5pbXBvcnQgeyBUYWJiZWRTZXJ2aWNlLCBUYWJzRGlyZWN0aW9uIH0gZnJvbSAnLi90YWJiZWQuc2VydmljZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS10YWJiZWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFiYmVkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFiYmVkLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogWyBUYWJiZWRTZXJ2aWNlIF1cbn0pXG5leHBvcnQgY2xhc3MgVGFiYmVkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgX2RpcmVjdGlvbjogVGFic0RpcmVjdGlvbiA9ICd2ZXJ0aWNhbCdcbiAgcHJpdmF0ZSBfaGlkZVRhYnMgPSBmYWxzZVxuXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFiYmVkSXRlbUNvbXBvbmVudCkgdGFiYmVkSXRlbXM/OiBRdWVyeUxpc3Q8VGFiYmVkSXRlbUNvbXBvbmVudD5cblxuICBAT3V0cHV0KCkgdGFiQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VGFiYmVkSXRlbUNvbXBvbmVudD4oKVxuXG4gIEBJbnB1dCgpXG4gIHNldCBkaXJlY3Rpb24odmFsOiBUYWJzRGlyZWN0aW9uKSB7XG4gICAgdGhpcy5fZGlyZWN0aW9uID0gdmFsXG4gIH1cbiAgZ2V0IGRpcmVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlyZWN0aW9uXG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgaGlkZVRhYnModmFsOiBib29sZWFuKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLl9oaWRlVGFicyA9IHZhbFxuICAgIH0pXG4gIH1cbiAgZ2V0IGhpZGVUYWJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oaWRlVGFic1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIG9ubHlSb3V0ZUNvbnRlbnQgPSBmYWxzZVxuXG4gIGdldCBzZWxlY3RlZFRhYigpOiBUYWJiZWRJdGVtQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5vbmx5Um91dGVDb250ZW50KSB7XG4gICAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMucm91dGUuc25hcHNob3QuY2hpbGRyZW5bMF0ucm91dGVDb25maWdcbiAgICAgICAgY29uc3QgY2hpbGRQYXRoID0gY29uZmlnICYmIGNvbmZpZy5wYXRoXG4gICAgICAgIHJldHVybiB0aGlzLnRhYmJlZEl0ZW1zPy5maW5kKHQgPT4gdC5uYW1lID09PSBjaGlsZFBhdGgpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZFRhYlxuICAgIH1cbiAgfVxuICBzZXQgc2VsZWN0ZWRUYWIodGFiOiBUYWJiZWRJdGVtQ29tcG9uZW50IHwgdW5kZWZpbmVkKSB7IHRoaXMuX3NlbGVjdGVkVGFiID0gdGFiIH1cbiAgcHJpdmF0ZSBfc2VsZWN0ZWRUYWI6IFRhYmJlZEl0ZW1Db21wb25lbnQgfCB1bmRlZmluZWRcblxuICBwcml2YXRlIF9hY3RpdmVUYWJOYW1lVGltZW91dDogYW55XG4gIEBJbnB1dCgpXG4gIHNldCBhY3RpdmVUYWJOYW1lKHZhbDogc3RyaW5nKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX2FjdGl2ZVRhYk5hbWVUaW1lb3V0KVxuICAgIHRoaXMuX2FjdGl2ZVRhYk5hbWVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXZhbCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGFiID0gdW5kZWZpbmVkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdFRhYih2YWwpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWJiZWRTZXJ2aWNlOiBUYWJiZWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnRhYmJlZFNlcnZpY2UucmVnaXN0ZXJUYWIodGhpcywgJ21haW4nKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy50YWJiZWRTZXJ2aWNlLnVucmVnaXN0ZXJUYWIodGhpcywgJ21haW4nKVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGlmICh0aGlzLnRhYmJlZEl0ZW1zICYmIHRoaXMudGFiYmVkSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFRhYiA9IHRoaXMudGFiYmVkSXRlbXMuZmlyc3RcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICovXG4gIHB1YmxpYyBvbkNsaWNrVGFiKGV2ZW50OiBhbnksIHRhYjogVGFiYmVkSXRlbUNvbXBvbmVudCkge1xuICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSB0YWJcbiAgICBpZiAodGhpcy5vbmx5Um91dGVDb250ZW50KSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbIHRhYi5uYW1lIF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KVxuICAgIH1cbiAgICB0aGlzLnRhYkNoYW5nZWQuZW1pdCh0YWIpXG4gIH1cblxuICAvKipcbiAgICogVE9ETzogTWFrZSBtb3JlIGdlbmVyaWMsIHNvIHRoYXQgdGhlIG5hbWUgaXNuJ3QgdGhlIG9ubHkgd2F5XG4gICAqICB0byBzZWxlY3QgYSB0YWJcbiAgICovXG4gIHB1YmxpYyBzZWxlY3RUYWIobmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgdGFiID0gdGhpcy50YWJiZWRJdGVtcz8uZmluZCh0ID0+IHQubmFtZSA9PT0gbmFtZSlcbiAgICBpZiAodGFiKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiID0gdGFiXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGFiIHdpdGggbmFtZSAnJHtuYW1lfScgbm90IGZvdW5kYClcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiBbZnhMYXlvdXRdPVwiKGRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnKSA/ICdjb2x1bW4nIDogJ3JvdydcIiBmeEZsZXhGaWxsPlxuXG4gIDwhLS0gVGFicyAtLT5cbiAgPGRpdiAqbmdJZj1cIiFoaWRlVGFic1wiXG4gICAgW2Z4TGF5b3V0XT1cIihkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykgPyAncm93JyA6ICdjb2x1bW4nXCJcbiAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWJiZWRJdGVtIG9mIHRhYmJlZEl0ZW1zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGFiYmVkLXRhYiBwdC0yIHBiLTIgcGwtNCBwci00IGJnLWxpZ2h0IHRleHQtbm93cmFwXCJcbiAgICAgICAgW2NsYXNzLnRhYi1kaXItaG9yaXpvbnRhbF09XCJkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJ1wiXG4gICAgICAgIFtjbGFzcy50YWItZGlyLXZlcnRpY2FsXT1cImRpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJ1wiXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrVGFiKCRldmVudCwgdGFiYmVkSXRlbSlcIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInRhYmJlZEl0ZW0gPT09IHNlbGVjdGVkVGFiXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInRhYmJlZEl0ZW0udGFiYmVkVGFiVHBsOyBlbHNlIHRhYkxhYmVsVHBsXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFiYmVkSXRlbS50YWJiZWRUYWJUcGxcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RhYkxhYmVsVHBsPnt7IHRhYmJlZEl0ZW0/LmxhYmVsIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImFjdGl2ZS1pbmRpY2F0b3JcIlxuICAgICAgW2NsYXNzLmFjdGl2ZS1pbmRpY2F0b3ItaG9yaXpvbnRhbF09XCJkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJ1wiXG4gICAgICBbY2xhc3MuYWN0aXZlLWluZGljYXRvci12ZXJ0aWNhbF09XCJkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCdcIj5cbiAgICA8L2Rpdj4gLS0+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVGFicyBDb250ZW50IC0tPlxuICA8ZGl2IGNsYXNzPVwidGFiYmVkLXRhYnMtY29udGVudCBiZy1saWdodFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvbmx5Um91dGVDb250ZW50OyBlbHNlIG5vdE9ubHlSb3V0ZUNvbnRlbnRcIj5cbiAgICAgIDwhLS0gPGFwcC1zbGlkZS1vdmVyLXJvdXRlci1vdXRsZXQ+PC9hcHAtc2xpZGUtb3Zlci1yb3V0ZXItb3V0bGV0PiAtLT5cbiAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vdE9ubHlSb3V0ZUNvbnRlbnQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlbGVjdGVkVGFiOyBlbHNlIGZpbmRDb250ZW50VHBsXCI+XG4gICAgICAgIDxzZWFtLXRhYmJlZC1jb250ZW50IGZ4RmxleEZpbGwgW3RhYmJlZEl0ZW1dPVwidGFiYmVkSXRlbXM/LmZpcnN0XCI+PC9zZWFtLXRhYmJlZC1jb250ZW50PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2ZpbmRDb250ZW50VHBsPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWJiZWRJdGVtIG9mIHRhYmJlZEl0ZW1zXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkVGFiID09PSB0YWJiZWRJdGVtXCI+XG4gICAgICAgICAgICA8c2VhbS10YWJiZWQtY29udGVudCBmeEZsZXhGaWxsIFt0YWJiZWRJdGVtXT1cInRhYmJlZEl0ZW1cIj48L3NlYW0tdGFiYmVkLWNvbnRlbnQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuPC9kaXY+XG4iXX0=
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiYmVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJiZWQvdGFiYmVkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJiZWQvdGFiYmVkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDYSxTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFDN0YsTUFBTSxlQUFlLENBQUE7QUFFdEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUV2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUU1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFpQixNQUFNLGtCQUFrQixDQUFBOzs7Ozs7O0FBUS9ELE1BQU0sT0FBTyxlQUFlO0lBSzFCLElBQ0ksV0FBVyxDQUFDLEdBQStDO1FBQzdELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzdCLENBQUM7SUFDRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFBO0lBQ2hDLENBQUM7SUFNRCxJQUNJLFNBQVMsQ0FBQyxHQUFrQjtRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQTtJQUN2QixDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFBO0lBQ3hCLENBQUM7SUFFRCxJQUNJLFFBQVEsQ0FBQyxHQUFZO1FBQ3ZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQTtR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dENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzJ1xuXG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi91dGlscydcblxuaW1wb3J0IHsgVGFiYmVkSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vdGFiYmVkLWl0ZW0vdGFiYmVkLWl0ZW0uY29tcG9uZW50J1xuaW1wb3J0IHsgVGFiYmVkU2VydmljZSwgVGFic0RpcmVjdGlvbiB9IGZyb20gJy4vdGFiYmVkLnNlcnZpY2UnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tdGFiYmVkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmJlZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmJlZC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFsgVGFiYmVkU2VydmljZSBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmJlZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIF9kaXJlY3Rpb246IFRhYnNEaXJlY3Rpb24gPSAndmVydGljYWwnXG4gIHByaXZhdGUgX2hpZGVUYWJzID0gZmFsc2VcblxuICBAQ29udGVudENoaWxkcmVuKFRhYmJlZEl0ZW1Db21wb25lbnQpXG4gIHNldCB0YWJiZWRJdGVtcyh2YWw6IFF1ZXJ5TGlzdDxUYWJiZWRJdGVtQ29tcG9uZW50PiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3RhYmJlZEl0ZW1zLm5leHQodmFsKVxuICB9XG4gIGdldCB0YWJiZWRJdGVtcygpOiBRdWVyeUxpc3Q8VGFiYmVkSXRlbUNvbXBvbmVudD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl90YWJiZWRJdGVtcy52YWx1ZVxuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RhYmJlZEl0ZW1zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdWVyeUxpc3Q8VGFiYmVkSXRlbUNvbXBvbmVudD4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgcHVibGljIHJlYWRvbmx5IHRhYmJlZEl0ZW1zJCA9IHRoaXMuX3RhYmJlZEl0ZW1zLmFzT2JzZXJ2YWJsZSgpXG5cbiAgQE91dHB1dCgpIHRhYkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmJlZEl0ZW1Db21wb25lbnQ+KClcblxuICBASW5wdXQoKVxuICBzZXQgZGlyZWN0aW9uKHZhbDogVGFic0RpcmVjdGlvbikge1xuICAgIHRoaXMuX2RpcmVjdGlvbiA9IHZhbFxuICB9XG4gIGdldCBkaXJlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RpcmVjdGlvblxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGhpZGVUYWJzKHZhbDogYm9vbGVhbikge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5faGlkZVRhYnMgPSB2YWxcbiAgICB9KVxuICB9XG4gIGdldCBoaWRlVGFicygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faGlkZVRhYnNcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvbmx5Um91dGVDb250ZW50ID0gZmFsc2VcblxuICBnZXQgc2VsZWN0ZWRUYWIoKTogVGFiYmVkSXRlbUNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMub25seVJvdXRlQ29udGVudCkge1xuICAgICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmNoaWxkcmVuWzBdLnJvdXRlQ29uZmlnXG4gICAgICAgIGNvbnN0IGNoaWxkUGF0aCA9IGNvbmZpZyAmJiBjb25maWcucGF0aFxuICAgICAgICByZXR1cm4gdGhpcy50YWJiZWRJdGVtcz8uZmluZCh0ID0+IHQubmFtZSA9PT0gY2hpbGRQYXRoKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRUYWIudmFsdWVcbiAgICB9XG4gIH1cbiAgc2V0IHNlbGVjdGVkVGFiKHRhYjogVGFiYmVkSXRlbUNvbXBvbmVudCB8IHVuZGVmaW5lZCkgeyB0aGlzLl9zZWxlY3RlZFRhYi5uZXh0KHRhYikgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3RlZFRhYiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFiYmVkSXRlbUNvbXBvbmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRUYWIkID0gdGhpcy5fc2VsZWN0ZWRUYWIuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gIClcblxuICBASW5wdXQoKVxuICBzZXQgYWN0aXZlVGFiTmFtZSh2YWw6IHN0cmluZykge1xuICAgIHRoaXMuX2FjdGl2ZVRhYk5hbWUubmV4dCh2YWwpXG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlVGFiTmFtZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZlVGFiTmFtZSQgPSB0aGlzLl9hY3RpdmVUYWJOYW1lLmFzT2JzZXJ2YWJsZSgpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhYmJlZFNlcnZpY2U6IFRhYmJlZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudGFiYmVkU2VydmljZS5yZWdpc3RlclRhYih0aGlzLCAnbWFpbicpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnRhYmJlZFNlcnZpY2UudW5yZWdpc3RlclRhYih0aGlzLCAnbWFpbicpXG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgY29tYmluZUxhdGVzdChbIHRoaXMudGFiYmVkSXRlbXMkLCB0aGlzLmFjdGl2ZVRhYk5hbWUkIF0pLnBpcGUoXG4gICAgICB0YXAoKFsgXywgYWN0aXZlVGFiTmFtZSBdKSA9PiB0aGlzLnNlbGVjdFRhYihhY3RpdmVUYWJOYW1lKSlcbiAgICApLnN1YnNjcmliZSgpXG4gIH1cblxuICAvKipcbiAgICpcbiAgICovXG4gIHB1YmxpYyBvbkNsaWNrVGFiKGV2ZW50OiBhbnksIHRhYjogVGFiYmVkSXRlbUNvbXBvbmVudCkge1xuICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSB0YWJcbiAgICBpZiAodGhpcy5vbmx5Um91dGVDb250ZW50KSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbIHRhYi5uYW1lIF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KVxuICAgIH1cbiAgICB0aGlzLnRhYkNoYW5nZWQuZW1pdCh0YWIpXG4gIH1cblxuICAvKipcbiAgICogVE9ETzogTWFrZSBtb3JlIGdlbmVyaWMsIHNvIHRoYXQgdGhlIG5hbWUgaXNuJ3QgdGhlIG9ubHkgd2F5XG4gICAqICB0byBzZWxlY3QgYSB0YWJcbiAgICovXG4gIHB1YmxpYyBzZWxlY3RUYWIobmFtZT86IHN0cmluZykge1xuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChuYW1lKSB8fCBuYW1lID09PSB0aGlzLnNlbGVjdGVkVGFiPy5uYW1lKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCB0YWIgPSB0aGlzLnRhYmJlZEl0ZW1zPy5maW5kKHQgPT4gdC5uYW1lID09PSBuYW1lKVxuICAgIGlmICh0YWIpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSB0YWJcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oYFRhYiB3aXRoIG5hbWUgJyR7bmFtZX0nIG5vdCBmb3VuZGApXG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgW2Z4TGF5b3V0XT1cIihkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykgPyAnY29sdW1uJyA6ICdyb3cnXCIgZnhGbGV4RmlsbD5cblxuICA8IS0tIFRhYnMgLS0+XG4gIDxkaXYgKm5nSWY9XCIhaGlkZVRhYnNcIlxuICAgIFtmeExheW91dF09XCIoZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcpID8gJ3JvdycgOiAnY29sdW1uJ1wiXG4gICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiYmVkSXRlbSBvZiB0YWJiZWRJdGVtcyQgfCBhc3luY1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInRhYmJlZC10YWIgcHQtMiBwYi0yIHBsLTQgcHItNCBiZy1saWdodCB0ZXh0LW5vd3JhcFwiXG4gICAgICAgIFtjbGFzcy50YWItZGlyLWhvcml6b250YWxdPVwiZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCdcIlxuICAgICAgICBbY2xhc3MudGFiLWRpci12ZXJ0aWNhbF09XCJkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCdcIlxuICAgICAgICAoY2xpY2spPVwib25DbGlja1RhYigkZXZlbnQsIHRhYmJlZEl0ZW0pXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJ0YWJiZWRJdGVtID09PSAoc2VsZWN0ZWRUYWIkIHwgYXN5bmMpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInRhYmJlZEl0ZW0udGFiYmVkVGFiVHBsOyBlbHNlIHRhYkxhYmVsVHBsXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFiYmVkSXRlbS50YWJiZWRUYWJUcGxcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RhYkxhYmVsVHBsPnt7IHRhYmJlZEl0ZW0/LmxhYmVsIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImFjdGl2ZS1pbmRpY2F0b3JcIlxuICAgICAgW2NsYXNzLmFjdGl2ZS1pbmRpY2F0b3ItaG9yaXpvbnRhbF09XCJkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJ1wiXG4gICAgICBbY2xhc3MuYWN0aXZlLWluZGljYXRvci12ZXJ0aWNhbF09XCJkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCdcIj5cbiAgICA8L2Rpdj4gLS0+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVGFicyBDb250ZW50IC0tPlxuICA8ZGl2IGNsYXNzPVwidGFiYmVkLXRhYnMtY29udGVudCBiZy1saWdodFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvbmx5Um91dGVDb250ZW50OyBlbHNlIG5vdE9ubHlSb3V0ZUNvbnRlbnRcIj5cbiAgICAgIDwhLS0gPGFwcC1zbGlkZS1vdmVyLXJvdXRlci1vdXRsZXQ+PC9hcHAtc2xpZGUtb3Zlci1yb3V0ZXItb3V0bGV0PiAtLT5cbiAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vdE9ubHlSb3V0ZUNvbnRlbnQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRUYWIkIHwgYXN5bmMgYXMgc2VsZWN0ZWRUYWJcIj5cbiAgICAgICAgPHNlYW0tdGFiYmVkLWNvbnRlbnQgZnhGbGV4RmlsbCBbdGFiYmVkSXRlbV09XCJzZWxlY3RlZFRhYlwiPjwvc2VhbS10YWJiZWQtY29udGVudD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuXG48L2Rpdj5cbiJdfQ==
@@ -58,6 +58,7 @@ export class ToggleGroupDirective {
58
58
  .pipe(tap(opt => { this._updateDirectiveState(opt); }))))
59
59
  .subscribe();
60
60
  });
61
+ this.optionDirectives?.changes.subscribe(() => this._updateDirectiveStates());
61
62
  }
62
63
  get value() {
63
64
  return this.val;
@@ -195,4 +196,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
195
196
  type: ContentChildren,
196
197
  args: [ToggleGroupOptionDirective]
197
198
  }] } });
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWdyb3VwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90b2dnbGUtZ3JvdXAvdG9nZ2xlLWdyb3VwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFnQixXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNqRSxPQUFPLEVBQWlCLGVBQWUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFBO0FBQ3hJLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWxGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUV0RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTs7QUFFNUUsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQVE7SUFDOUMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO0lBQ25ELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQTtBQU9ELE1BQU0sT0FBTyxvQkFBb0I7SUFMakM7UUFVbUIsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFBO1FBSzVCLGFBQVEsR0FBRyxLQUFLLENBQUE7UUFDaEIsYUFBUSxHQUFHLEtBQUssQ0FBQTtRQUNoQix3QkFBbUIsR0FBRyxJQUFJLENBQUE7UUFFbkQsNkVB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RjtJQUNILENBQUM7O2lIQWhMVSxvQkFBb0I7cUdBQXBCLG9CQUFvQixzTUFGcEIsQ0FBRSwyQkFBMkIsQ0FBRSwyREFxQnpCLDBCQUEwQjtBQVRsQjtJQUFmLFlBQVksRUFBRTtzREFBaUI7QUFDaEI7SUFBZixZQUFZLEVBQUU7c0RBQWlCO0FBQ2hCO0lBQWYsWUFBWSxFQUFFO2lFQUEyQjsyRkFaeEMsb0JBQW9CO2tCQUxoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFNBQVMsRUFBRSxDQUFFLDJCQUEyQixDQUFFO2lCQUMzQzs4QkFTaUIsR0FBRztzQkFBbEIsS0FBSzt1QkFBQyxPQUFPO2dCQUVXLFFBQVE7c0JBQWhDLEtBQUs7Z0JBQ21CLFFBQVE7c0JBQWhDLEtBQUs7Z0JBQ21CLG1CQUFtQjtzQkFBM0MsS0FBSztnQkFLYSxNQUFNO3NCQUF4QixNQUFNO2dCQUVzQyxnQkFBZ0I7c0JBQTVELGVBQWU7dUJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VBcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbidcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbnRlbnRDaGlsZHJlbiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZnJvbSwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vY29yZSdcblxuaW1wb3J0IHsgVG9nZ2xlR3JvdXBPcHRpb25EaXJlY3RpdmUgfSBmcm9tICcuL3RvZ2dsZS1ncm91cC1vcHRpb24uZGlyZWN0aXZlJ1xuXG5leHBvcnQgY29uc3QgVE9HR0xFX0dST1VQX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUb2dnbGVHcm91cERpcmVjdGl2ZSksXG4gIG11bHRpOiB0cnVlLFxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2VhbVRvZ2dsZUdyb3VwXScsXG4gIGV4cG9ydEFzOiAnc2VhbVRvZ2dsZUdyb3VwJyxcbiAgcHJvdmlkZXJzOiBbIFRPR0dMRV9HUk9VUF9WQUxVRV9BQ0NFU1NPUiBdXG59KVxuZXhwb3J0IGNsYXNzIFRvZ2dsZUdyb3VwRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9tdWx0aXBsZTogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zZWxlY3Rpb25Ub2dnbGVhYmxlOiBCb29sZWFuSW5wdXRcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgndmFsdWUnKSB2YWw6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBkaXNhYmxlZCA9IGZhbHNlXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBtdWx0aXBsZSA9IGZhbHNlXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzZWxlY3Rpb25Ub2dnbGVhYmxlID0gdHJ1ZVxuXG4gIC8vIFRPRE86IEFkZCBtaW4vbWF4IHNlbGVjdGVkIGlucHV0cyB0byBtYWtlIHRvZ2dsaW5nIGJldHRlciBmb3IgbXVsdGkgc2VsZWN0XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIEBPdXRwdXQoKSByZWFkb25seSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHwgbnVsbD4oKVxuXG4gIEBDb250ZW50Q2hpbGRyZW4oVG9nZ2xlR3JvdXBPcHRpb25EaXJlY3RpdmUpIG9wdGlvbkRpcmVjdGl2ZXM/OiBRdWVyeUxpc3Q8VG9nZ2xlR3JvdXBPcHRpb25EaXJlY3RpdmU+XG5cbiAgcHVibGljIG9wdGlvbnM/OiBPYnNlcnZhYmxlPFRvZ2dsZUdyb3VwT3B0aW9uRGlyZWN0aXZlW10+XG5cbiAgb25DaGFuZ2U6IGFueVxuICBvblRvdWNoZWQ6IGFueVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUubmV4dCgpXG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpXG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLl91cGRhdGVEaXJlY3RpdmVTdGF0ZXMoKVxuXG4gICAgICBpZiAodGhpcy5vcHRpb25EaXJlY3RpdmVzKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9uRGlyZWN0aXZlcy5jaGFuZ2VzXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgIC5waXBlKHN0YXJ0V2l0aCh0aGlzLm9wdGlvbkRpcmVjdGl2ZXMpKVxuICAgICAgICAgIC5waXBlKG1hcCh2ID0+IHYudG9BcnJheSgpIGFzIFRvZ2dsZUdyb3VwT3B0aW9uRGlyZWN0aXZlW10pKVxuXG4gICAgICAgIHRoaXMub3B0aW9ucy5waXBlKHN3aXRjaE1hcChvcHRzID0+IHtcbiAgICAgICAgICBjb25zdCBfdG1wID0gb2YodW5kZWZpbmVkKVxuICAgICAgICAgIGlmIChvcHRzKSB7XG4gICAgICAgICAgICBjb25zdCBfdjogT2JzZXJ2YWJsZTxib29sZWFuPltdID0gW11cbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3B0IG9mIG9wdHMpIHtcbiAgICAgICAgICAgICAgX3YucHVzaChvcHQuc2VsZWN0aW9uQ2hhbmdlLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKHYgPT4gb3B0LnNlbGVjdGVkICE9PSB0aGlzLmlzU2VsZWN0ZWQob3B0LnZhbHVlKSksXG4gICAgICAgICAgICAgICAgdGFwKHYgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZChvcHQudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5zZWxlY3RWYWx1ZShvcHQudmFsdWUpXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFZhbHVlKG9wdC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoX3YpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBfdG1wXG4gICAgICAgIH0pKS5zdWJzY3JpYmUoKVxuICAgICAgfVxuXG4gICAgICB0aGlzLmNoYW5nZVxuICAgICAgICAucGlwZShzd2l0Y2hNYXAoXyA9PiBmcm9tKHRoaXMub3B0aW9uRGlyZWN0aXZlcz8udG9BcnJheSgpIHx8IFtdKVxuICAgICAgICAgIC5waXBlKHRhcChvcHQgPT4geyB0aGlzLl91cGRhdGVEaXJlY3RpdmVTdGF0ZShvcHQpIH0pKVxuICAgICAgICApKVxuICAgICAgICAuc3Vic2NyaWJlKClcbiAgICB9KVxuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMudmFsXG4gIH1cblxuICBzZXQgdmFsdWUodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGNvbnN0IF92YWx1ZSA9IHRoaXMubXVsdGlwbGVcbiAgICAgID8gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGNvZXJjZUFycmF5KHZhbHVlKVxuICAgICAgICA6IHZhbHVlXG4gICAgICA6IHZhbHVlXG5cbiAgICB0aGlzLnZhbCA9ICh0aGlzLm11bHRpcGxlKSA/IFsgLi4uKF92YWx1ZSBhcyBzdHJpbmdbXSB8fCBbXSkgXSA6IF92YWx1ZSB8fCAnJ1xuICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy52YWwpXG4gICAgaWYgKHRoaXMub25DaGFuZ2UpIHsgdGhpcy5vbkNoYW5nZShfdmFsdWUpIH1cbiAgICBpZiAodGhpcy5vblRvdWNoZWQpIHsgdGhpcy5vblRvdWNoZWQoKSB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWVcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmblxuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm5cbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkXG4gIH1cblxuICBpc1NlbGVjdGVkKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIGNvbnN0IGlkeCA9ICh0aGlzLnZhbHVlIGFzIHN0cmluZ1tdIHx8IFtdKS5maW5kSW5kZXgodiA9PiB2ID09PSB2YWx1ZSlcbiAgICAgIHJldHVybiBpZHggIT09IC0xXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRPRE86IENsZWFuIHRoaXMgdXAgd2hlbiB0aGUgZGlyZWN0aXZlIG5vIGxvbmdlciBhbGxvd3MgYXJyYXkgdmFsdWUgdHlwZSB3aGVuIG11bHRpcGxlIGlzIGZhbHNlXG4gICAgICBjb25zdCB2ID0gQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMVxuICAgICAgICA/IHRoaXMudmFsdWVbMF1cbiAgICAgICAgOiB0aGlzLnZhbHVlXG4gICAgICByZXR1cm4gdiA9PT0gdmFsdWVcbiAgICB9XG4gIH1cblxuICB1bnNlbGVjdFZhbHVlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSAodGhpcy52YWx1ZSBhcyBzdHJpbmdbXSB8fCBbXSkuZmlsdGVyKHYgPT4gdiAhPT0gdmFsdWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWRcbiAgICB9XG4gIH1cblxuICBzZWxlY3RWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICBjb25zdCBfdmFsdWUgPSBbIC4uLih0aGlzLnZhbHVlIGFzIHN0cmluZ1tdIHx8IFtdKSBdXG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWUgPyBbIC4uLl92YWx1ZSwgdmFsdWUgXSA6IF92YWx1ZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWVcbiAgICB9XG4gIH1cblxuICBnZXRPcHRpb25EaXJlY3RpdmVCeVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMub3B0aW9uRGlyZWN0aXZlcyB8fCB0aGlzLm9wdGlvbkRpcmVjdGl2ZXMubGVuZ3RoIDwgMSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5vcHRpb25EaXJlY3RpdmVzLnRvQXJyYXkoKVxuICAgICAgLmZpbmQob3B0ID0+IG9wdC52YWx1ZSA9PT0gdmFsdWUpXG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVEaXJlY3RpdmVTdGF0ZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9uRGlyZWN0aXZlcykge1xuICAgICAgZm9yIChjb25zdCBvcHQgb2YgdGhpcy5vcHRpb25EaXJlY3RpdmVzLnRvQXJyYXkoKSkge1xuICAgICAgICB0aGlzLl91cGRhdGVEaXJlY3RpdmVTdGF0ZShvcHQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRGlyZWN0aXZlU3RhdGUob3B0OiBUb2dnbGVHcm91cE9wdGlvbkRpcmVjdGl2ZSk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5pc1NlbGVjdGVkKG9wdC52YWx1ZSlcbiAgICBpZiAob3B0LnNlbGVjdGVkICE9PSBzZWxlY3RlZCkge1xuICAgICAgaWYgKCFvcHQuX2NhblVuc2VsZWN0KSB7XG4gICAgICAgIG9wdC5fY2FuVW5zZWxlY3QgPSB0cnVlXG4gICAgICB9XG4gICAgICBvcHQuc2VsZWN0ZWQgPSBzZWxlY3RlZFxuICAgIH1cbiAgICBpZiAoIXRoaXMuc2VsZWN0aW9uVG9nZ2xlYWJsZSkge1xuICAgICAgaWYgKCF0aGlzLm11bHRpcGxlIHx8ICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoIDw9IDEpKSB7XG4gICAgICAgIGlmIChvcHQuc2VsZWN0ZWQpIHtcbiAgICAgICAgICBpZiAob3B0Ll9jYW5VbnNlbGVjdCkge1xuICAgICAgICAgICAgb3B0Ll9jYW5VbnNlbGVjdCA9IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghb3B0Ll9jYW5VbnNlbGVjdCkge1xuICAgICAgICAgICAgb3B0Ll9jYW5VbnNlbGVjdCA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghb3B0Ll9jYW5VbnNlbGVjdCkge1xuICAgICAgICAgIG9wdC5fY2FuVW5zZWxlY3QgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuIl19
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWdyb3VwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90b2dnbGUtZ3JvdXAvdG9nZ2xlLWdyb3VwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFnQixXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNqRSxPQUFPLEVBQWlCLGVBQWUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFBO0FBQ3hJLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWxGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUV0RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTs7QUFFNUUsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQVE7SUFDOUMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO0lBQ25ELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQTtBQU9ELE1BQU0sT0FBTyxvQkFBb0I7SUFMakM7UUFVbUIsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFBO1FBSzVCLGFBQVEsR0FBRyxLQUFLLENBQUE7UUFDaEIsYUFBUSxHQUFHLEtBQUssQ0FBQTtRQUNoQix3QkFBbUIsR0FBRyxJQUFJLENBQUE7UUFFbkQsNkVB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O2lCQUFNO2dCQUNMLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFO29CQUNyQixHQUFHLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtpQkFDeEI7YUFDRjtTQUNGO0lBQ0gsQ0FBQzs7aUhBbExVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLHNNQUZwQixDQUFFLDJCQUEyQixDQUFFLDJEQXFCekIsMEJBQTBCO0FBVGxCO0lBQWYsWUFBWSxFQUFFO3NEQUFpQjtBQUNoQjtJQUFmLFlBQVksRUFBRTtzREFBaUI7QUFDaEI7SUFBZixZQUFZLEVBQUU7aUVBQTJCOzJGQVp4QyxvQkFBb0I7a0JBTGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsU0FBUyxFQUFFLENBQUUsMkJBQTJCLENBQUU7aUJBQzNDOzhCQVNpQixHQUFHO3NCQUFsQixLQUFLO3VCQUFDLE9BQU87Z0JBRVcsUUFBUTtzQkFBaEMsS0FBSztnQkFDbUIsUUFBUTtzQkFBaEMsS0FBSztnQkFDbUIsbUJBQW1CO3NCQUEzQyxLQUFLO2dCQUthLE1BQU07c0JBQXhCLE1BQU07Z0JBRXNDLGdCQUFnQjtzQkFBNUQsZUFBZTt1QkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9jb3JlJ1xuXG5pbXBvcnQgeyBUb2dnbGVHcm91cE9wdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vdG9nZ2xlLWdyb3VwLW9wdGlvbi5kaXJlY3RpdmUnXG5cbmV4cG9ydCBjb25zdCBUT0dHTEVfR1JPVVBfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRvZ2dsZUdyb3VwRGlyZWN0aXZlKSxcbiAgbXVsdGk6IHRydWUsXG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzZWFtVG9nZ2xlR3JvdXBdJyxcbiAgZXhwb3J0QXM6ICdzZWFtVG9nZ2xlR3JvdXAnLFxuICBwcm92aWRlcnM6IFsgVE9HR0xFX0dST1VQX1ZBTFVFX0FDQ0VTU09SIF1cbn0pXG5leHBvcnQgY2xhc3MgVG9nZ2xlR3JvdXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVkOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX211bHRpcGxlOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3NlbGVjdGlvblRvZ2dsZWFibGU6IEJvb2xlYW5JbnB1dFxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCd2YWx1ZScpIHZhbDogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGRpc2FibGVkID0gZmFsc2VcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG11bHRpcGxlID0gZmFsc2VcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHNlbGVjdGlvblRvZ2dsZWFibGUgPSB0cnVlXG5cbiAgLy8gVE9ETzogQWRkIG1pbi9tYXggc2VsZWN0ZWQgaW5wdXRzIHRvIG1ha2UgdG9nZ2xpbmcgYmV0dGVyIGZvciBtdWx0aSBzZWxlY3RcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQgfCBudWxsPigpXG5cbiAgQENvbnRlbnRDaGlsZHJlbihUb2dnbGVHcm91cE9wdGlvbkRpcmVjdGl2ZSkgb3B0aW9uRGlyZWN0aXZlcz86IFF1ZXJ5TGlzdDxUb2dnbGVHcm91cE9wdGlvbkRpcmVjdGl2ZT5cblxuICBwdWJsaWMgb3B0aW9ucz86IE9ic2VydmFibGU8VG9nZ2xlR3JvdXBPcHRpb25EaXJlY3RpdmVbXT5cblxuICBvbkNoYW5nZTogYW55XG4gIG9uVG91Y2hlZDogYW55XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5uZXh0KClcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKClcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuX3VwZGF0ZURpcmVjdGl2ZVN0YXRlcygpXG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbkRpcmVjdGl2ZXMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5vcHRpb25EaXJlY3RpdmVzLmNoYW5nZXNcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgLnBpcGUoc3RhcnRXaXRoKHRoaXMub3B0aW9uRGlyZWN0aXZlcykpXG4gICAgICAgICAgLnBpcGUobWFwKHYgPT4gdi50b0FycmF5KCkgYXMgVG9nZ2xlR3JvdXBPcHRpb25EaXJlY3RpdmVbXSkpXG5cbiAgICAgICAgdGhpcy5vcHRpb25zLnBpcGUoc3dpdGNoTWFwKG9wdHMgPT4ge1xuICAgICAgICAgIGNvbnN0IF90bXAgPSBvZih1bmRlZmluZWQpXG4gICAgICAgICAgaWYgKG9wdHMpIHtcbiAgICAgICAgICAgIGNvbnN0IF92OiBPYnNlcnZhYmxlPGJvb2xlYW4+W10gPSBbXVxuICAgICAgICAgICAgZm9yIChjb25zdCBvcHQgb2Ygb3B0cykge1xuICAgICAgICAgICAgICBfdi5wdXNoKG9wdC5zZWxlY3Rpb25DaGFuZ2UucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIodiA9PiBvcHQuc2VsZWN0ZWQgIT09IHRoaXMuaXNTZWxlY3RlZChvcHQudmFsdWUpKSxcbiAgICAgICAgICAgICAgICB0YXAodiA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKG9wdC52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51bnNlbGVjdFZhbHVlKG9wdC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0VmFsdWUob3B0LnZhbHVlKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChfdilcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIF90bXBcbiAgICAgICAgfSkpLnN1YnNjcmliZSgpXG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2hhbmdlXG4gICAgICAgIC5waXBlKHN3aXRjaE1hcChfID0+IGZyb20odGhpcy5vcHRpb25EaXJlY3RpdmVzPy50b0FycmF5KCkgfHwgW10pXG4gICAgICAgICAgLnBpcGUodGFwKG9wdCA9PiB7IHRoaXMuX3VwZGF0ZURpcmVjdGl2ZVN0YXRlKG9wdCkgfSkpXG4gICAgICAgICkpXG4gICAgICAgIC5zdWJzY3JpYmUoKVxuICAgIH0pXG5cbiAgICB0aGlzLm9wdGlvbkRpcmVjdGl2ZXM/LmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3VwZGF0ZURpcmVjdGl2ZVN0YXRlcygpKVxuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMudmFsXG4gIH1cblxuICBzZXQgdmFsdWUodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGNvbnN0IF92YWx1ZSA9IHRoaXMubXVsdGlwbGVcbiAgICAgID8gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGNvZXJjZUFycmF5KHZhbHVlKVxuICAgICAgICA6IHZhbHVlXG4gICAgICA6IHZhbHVlXG5cbiAgICB0aGlzLnZhbCA9ICh0aGlzLm11bHRpcGxlKSA/IFsgLi4uKF92YWx1ZSBhcyBzdHJpbmdbXSB8fCBbXSkgXSA6IF92YWx1ZSB8fCAnJ1xuICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy52YWwpXG4gICAgaWYgKHRoaXMub25DaGFuZ2UpIHsgdGhpcy5vbkNoYW5nZShfdmFsdWUpIH1cbiAgICBpZiAodGhpcy5vblRvdWNoZWQpIHsgdGhpcy5vblRvdWNoZWQoKSB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWVcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmblxuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm5cbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkXG4gIH1cblxuICBpc1NlbGVjdGVkKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIGNvbnN0IGlkeCA9ICh0aGlzLnZhbHVlIGFzIHN0cmluZ1tdIHx8IFtdKS5maW5kSW5kZXgodiA9PiB2ID09PSB2YWx1ZSlcbiAgICAgIHJldHVybiBpZHggIT09IC0xXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRPRE86IENsZWFuIHRoaXMgdXAgd2hlbiB0aGUgZGlyZWN0aXZlIG5vIGxvbmdlciBhbGxvd3MgYXJyYXkgdmFsdWUgdHlwZSB3aGVuIG11bHRpcGxlIGlzIGZhbHNlXG4gICAgICBjb25zdCB2ID0gQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMVxuICAgICAgICA/IHRoaXMudmFsdWVbMF1cbiAgICAgICAgOiB0aGlzLnZhbHVlXG4gICAgICByZXR1cm4gdiA9PT0gdmFsdWVcbiAgICB9XG4gIH1cblxuICB1bnNlbGVjdFZhbHVlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSAodGhpcy52YWx1ZSBhcyBzdHJpbmdbXSB8fCBbXSkuZmlsdGVyKHYgPT4gdiAhPT0gdmFsdWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWRcbiAgICB9XG4gIH1cblxuICBzZWxlY3RWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICBjb25zdCBfdmFsdWUgPSBbIC4uLih0aGlzLnZhbHVlIGFzIHN0cmluZ1tdIHx8IFtdKSBdXG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWUgPyBbIC4uLl92YWx1ZSwgdmFsdWUgXSA6IF92YWx1ZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWVcbiAgICB9XG4gIH1cblxuICBnZXRPcHRpb25EaXJlY3RpdmVCeVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMub3B0aW9uRGlyZWN0aXZlcyB8fCB0aGlzLm9wdGlvbkRpcmVjdGl2ZXMubGVuZ3RoIDwgMSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5vcHRpb25EaXJlY3RpdmVzLnRvQXJyYXkoKVxuICAgICAgLmZpbmQob3B0ID0+IG9wdC52YWx1ZSA9PT0gdmFsdWUpXG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVEaXJlY3RpdmVTdGF0ZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9uRGlyZWN0aXZlcykge1xuICAgICAgZm9yIChjb25zdCBvcHQgb2YgdGhpcy5vcHRpb25EaXJlY3RpdmVzLnRvQXJyYXkoKSkge1xuICAgICAgICB0aGlzLl91cGRhdGVEaXJlY3RpdmVTdGF0ZShvcHQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRGlyZWN0aXZlU3RhdGUob3B0OiBUb2dnbGVHcm91cE9wdGlvbkRpcmVjdGl2ZSk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5pc1NlbGVjdGVkKG9wdC52YWx1ZSlcbiAgICBpZiAob3B0LnNlbGVjdGVkICE9PSBzZWxlY3RlZCkge1xuICAgICAgaWYgKCFvcHQuX2NhblVuc2VsZWN0KSB7XG4gICAgICAgIG9wdC5fY2FuVW5zZWxlY3QgPSB0cnVlXG4gICAgICB9XG4gICAgICBvcHQuc2VsZWN0ZWQgPSBzZWxlY3RlZFxuICAgIH1cbiAgICBpZiAoIXRoaXMuc2VsZWN0aW9uVG9nZ2xlYWJsZSkge1xuICAgICAgaWYgKCF0aGlzLm11bHRpcGxlIHx8ICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoIDw9IDEpKSB7XG4gICAgICAgIGlmIChvcHQuc2VsZWN0ZWQpIHtcbiAgICAgICAgICBpZiAob3B0Ll9jYW5VbnNlbGVjdCkge1xuICAgICAgICAgICAgb3B0Ll9jYW5VbnNlbGVjdCA9IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghb3B0Ll9jYW5VbnNlbGVjdCkge1xuICAgICAgICAgICAgb3B0Ll9jYW5VbnNlbGVjdCA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghb3B0Ll9jYW5VbnNlbGVjdCkge1xuICAgICAgICAgIG9wdC5fY2FuVW5zZWxlY3QgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuIl19
@@ -8,6 +8,8 @@ import { FlexLayoutModule } from '@angular/flex-layout';
8
8
  import * as i4 from '@angular/flex-layout/flex';
9
9
  import { __decorate } from 'tslib';
10
10
  import { InputBoolean } from '@theseam/ui-common/core';
11
+ import { BehaviorSubject, shareReplay, combineLatest, tap } from 'rxjs';
12
+ import { isNullOrUndefined } from '@theseam/ui-common/utils';
11
13
 
12
14
  class TabbedContentComponent {
13
15
  }
@@ -125,6 +127,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
125
127
  }] } });
126
128
 
127
129
  class TabbedComponent {
130
+ set tabbedItems(val) {
131
+ this._tabbedItems.next(val);
132
+ }
133
+ get tabbedItems() {
134
+ return this._tabbedItems.value;
135
+ }
128
136
  set direction(val) {
129
137
  this._direction = val;
130
138
  }
@@ -149,20 +157,12 @@ class TabbedComponent {
149
157
  }
150
158
  }
151
159
  else {
152
- return this._selectedTab;
160
+ return this._selectedTab.value;
153
161
  }
154
162
  }
155
- set selectedTab(tab) { this._selectedTab = tab; }
163
+ set selectedTab(tab) { this._selectedTab.next(tab); }
156
164
  set activeTabName(val) {
157
- clearTimeout(this._activeTabNameTimeout);
158
- this._activeTabNameTimeout = setTimeout(() => {
159
- if (!val) {
160
- this.selectedTab = undefined;
161
- }
162
- else {
163
- this.selectTab(val);
164
- }
165
- });
165
+ this._activeTabName.next(val);
166
166
  }
167
167
  constructor(tabbedService, router, route) {
168
168
  this.tabbedService = tabbedService;
@@ -170,8 +170,14 @@ class TabbedComponent {
170
170
  this.route = route;
171
171
  this._direction = 'vertical';
172
172
  this._hideTabs = false;
173
+ this._tabbedItems = new BehaviorSubject(undefined);
174
+ this.tabbedItems$ = this._tabbedItems.asObservable();
173
175
  this.tabChanged = new EventEmitter();
174
176
  this.onlyRouteContent = false;
177
+ this._selectedTab = new BehaviorSubject(undefined);
178
+ this.selectedTab$ = this._selectedTab.asObservable().pipe(shareReplay({ bufferSize: 1, refCount: true }));
179
+ this._activeTabName = new BehaviorSubject(undefined);
180
+ this.activeTabName$ = this._activeTabName.asObservable();
175
181
  }
176
182
  ngOnInit() {
177
183
  this.tabbedService.registerTab(this, 'main');
@@ -180,9 +186,7 @@ class TabbedComponent {
180
186
  this.tabbedService.unregisterTab(this, 'main');
181
187
  }
182
188
  ngAfterContentInit() {
183
- if (this.tabbedItems && this.tabbedItems.length > 0) {
184
- this.selectedTab = this.tabbedItems.first;
185
- }
189
+ combineLatest([this.tabbedItems$, this.activeTabName$]).pipe(tap(([_, activeTabName]) => this.selectTab(activeTabName))).subscribe();
186
190
  }
187
191
  /**
188
192
  *
@@ -199,21 +203,24 @@ class TabbedComponent {
199
203
  * to select a tab
200
204
  */
201
205
  selectTab(name) {
202
- var _a;
203
- const tab = (_a = this.tabbedItems) === null || _a === void 0 ? void 0 : _a.find(t => t.name === name);
206
+ var _a, _b;
207
+ if (isNullOrUndefined(name) || name === ((_a = this.selectedTab) === null || _a === void 0 ? void 0 : _a.name)) {
208
+ return;
209
+ }
210
+ const tab = (_b = this.tabbedItems) === null || _b === void 0 ? void 0 : _b.find(t => t.name === name);
204
211
  if (tab) {
205
212
  this.selectedTab = tab;
206
213
  }
207
214
  else {
208
- throw new Error(`Tab with name '${name}' not found`);
215
+ console.warn(`Tab with name '${name}' not found`);
209
216
  }
210
217
  }
211
218
  }
212
219
  TabbedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabbedComponent, deps: [{ token: TabbedService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
213
- TabbedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TabbedComponent, selector: "seam-tabbed", inputs: { direction: "direction", hideTabs: "hideTabs", onlyRouteContent: "onlyRouteContent", activeTabName: "activeTabName" }, outputs: { tabChanged: "tabChanged" }, providers: [TabbedService], queries: [{ propertyName: "tabbedItems", predicate: TabbedItemComponent }], ngImport: i0, template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === selectedTab\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"!selectedTab; else findContentTpl\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItems?.first\"></seam-tabbed-content>\n </ng-container>\n <ng-template #findContentTpl>\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <ng-container *ngIf=\"selectedTab === tabbedItem\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItem\"></seam-tabbed-content>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: TabbedContentComponent, selector: "seam-tabbed-content", inputs: ["tabbedItem"] }] });
220
+ TabbedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TabbedComponent, selector: "seam-tabbed", inputs: { direction: "direction", hideTabs: "hideTabs", onlyRouteContent: "onlyRouteContent", activeTabName: "activeTabName" }, outputs: { tabChanged: "tabChanged" }, providers: [TabbedService], queries: [{ propertyName: "tabbedItems", predicate: TabbedItemComponent }], ngImport: i0, template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: TabbedContentComponent, selector: "seam-tabbed-content", inputs: ["tabbedItem"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
214
221
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabbedComponent, decorators: [{
215
222
  type: Component,
216
- args: [{ selector: 'seam-tabbed', providers: [TabbedService], template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === selectedTab\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"!selectedTab; else findContentTpl\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItems?.first\"></seam-tabbed-content>\n </ng-container>\n <ng-template #findContentTpl>\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <ng-container *ngIf=\"selectedTab === tabbedItem\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItem\"></seam-tabbed-content>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"] }]
223
+ args: [{ selector: 'seam-tabbed', providers: [TabbedService], template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"] }]
217
224
  }], ctorParameters: function () { return [{ type: TabbedService }, { type: i2.Router }, { type: i2.ActivatedRoute }]; }, propDecorators: { tabbedItems: [{
218
225
  type: ContentChildren,
219
226
  args: [TabbedItemComponent]
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-tabbed.mjs","sources":["../../../projects/ui-common/tabbed/tabbed-content/tabbed-content.component.ts","../../../projects/ui-common/tabbed/tabbed-content/tabbed-content.component.html","../../../projects/ui-common/tabbed/directives/tabbed-tab-content.directive.ts","../../../projects/ui-common/tabbed/tabbed.service.ts","../../../projects/ui-common/tabbed/directives/tabbed-tab.directive.ts","../../../projects/ui-common/tabbed/tabbed-item/tabbed-item.component.ts","../../../projects/ui-common/tabbed/tabbed-item/tabbed-item.component.html","../../../projects/ui-common/tabbed/tabbed.component.ts","../../../projects/ui-common/tabbed/tabbed.component.html","../../../projects/ui-common/tabbed/tabbed.module.ts","../../../projects/ui-common/tabbed/theseam-ui-common-tabbed.ts"],"sourcesContent":["import { Component, Input } from '@angular/core'\n\nimport { TabbedItemAccessor } from '../tabbed-models'\n\n@Component({\n selector: 'seam-tabbed-content',\n templateUrl: './tabbed-content.component.html',\n styleUrls: ['./tabbed-content.component.scss']\n})\nexport class TabbedContentComponent {\n\n @Input() tabbedItem?: TabbedItemAccessor\n\n}\n","<!-- <div class=\"fade-left\" fxFlexFill> -->\n<div fxFlexFill>\n <ng-container *ngIf=\"tabbedItem\">\n <ng-template *ngIf=\"tabbedItem.tabbedContentTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedContentTpl\"></ng-template>\n <ng-container *ngIf=\"tabbedItem.contentFromRoute\"><router-outlet></router-outlet></ng-container>\n </ng-container>\n</div>\n","import { Directive } from '@angular/core'\n\nimport { TabbedTabContentAccessor } from '../tabbed-models'\n\n@Directive({\n selector: '[seamTabbedTabContent]',\n exportAs: 'seamTabbedTabContent'\n})\nexport class TabbedTabContentDirective implements TabbedTabContentAccessor {\n\n public isActive = false\n\n}\n","import { Injectable } from '@angular/core'\n\nimport { TabbedComponent } from './tabbed.component'\n\nexport declare type TabsDirection = 'horizontal' | 'vertical'\n\n@Injectable()\nexport class TabbedService {\n\n private _tabGroups: { [groupName: string]: TabbedComponent[] } = {}\n\n public registerTab(tab: TabbedComponent, groupName: string) {\n if (!this._tabGroups[groupName]) {\n this._tabGroups[groupName] = []\n }\n\n for (const t of this._tabGroups[groupName]) {\n t.hideTabs = true\n }\n\n this._tabGroups[groupName].push(tab)\n }\n\n public unregisterTab(tab: TabbedComponent, groupName: string) {\n if (this._tabGroups[groupName]) {\n this._tabGroups[groupName] = this._tabGroups[groupName].filter(\n t => t !== tab\n )\n\n if (this._tabGroups[groupName].length > 0) {\n this._tabGroups[groupName][this._tabGroups[groupName].length - 1].hideTabs = false\n }\n }\n }\n\n}\n","import { Directive, ElementRef, HostBinding, OnInit } from '@angular/core'\n\nimport { TabbedTabAccessor } from '../tabbed-models'\nimport { TabbedComponent } from '../tabbed.component'\nimport { TabbedService } from '../tabbed.service'\n\n@Directive({\n selector: '[seamTabbedTab]',\n exportAs: 'seamTabbedTab'\n})\nexport class TabbedTabDirective implements OnInit, TabbedTabAccessor {\n\n // @HostBinding('class.custom-invalid')\n // get customInvalid() { return this.control.invalid }\n\n public isActive = false\n\n constructor(\n public elementRef: ElementRef,\n // public host: TabbedComponent,\n public tabbedService: TabbedService\n ) { }\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n ngOnInit() {\n // this.tabbedService.selectedTab.subscribe(tab => {\n // console.log('tab: ', tab)\n // console.log('tab.tabbedTabTpl.elementRef: ', tab.tabbedTabTpl.elementRef)\n // console.log('this.elementRef: ', this.elementRef)\n // if (tab.tabbedTabTpl.elementRef.na === this.elementRef) {\n // this.isActive = true\n // } else {\n // this.isActive = false\n // }\n // })\n }\n\n}\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { Component, ContentChild, Input, TemplateRef } from '@angular/core'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\nimport { TabbedTabContentDirective } from '../directives/tabbed-tab-content.directive'\nimport { TabbedTabDirective } from '../directives/tabbed-tab.directive'\nimport { TabbedItemAccessor } from '../tabbed-models'\n\n@Component({\n selector: 'seam-tabbed-item',\n templateUrl: './tabbed-item.component.html',\n styleUrls: ['./tabbed-item.component.scss']\n})\nexport class TabbedItemComponent implements TabbedItemAccessor {\n static ngAcceptInputType_contentFromRoute: BooleanInput\n\n @ContentChild(TabbedTabDirective, { read: TemplateRef, static: true })\n public tabbedTabTpl?: TemplateRef<TabbedTabDirective>\n\n @ContentChild(TabbedTabContentDirective, { read: TemplateRef, static: true })\n public tabbedContentTpl?: TemplateRef<TabbedTabContentDirective>\n\n @Input() name: string | undefined | null\n @Input() label: string | undefined | null\n @Input() @InputBoolean() contentFromRoute = false\n}\n","<p>\n tabbed-item works!\n</p>","import {\n AfterContentInit, Component, ContentChildren, EventEmitter, Input, OnDestroy, OnInit, Output, QueryList\n} from '@angular/core'\nimport { ActivatedRoute, Router } from '@angular/router'\n\nimport { TabbedItemComponent } from './tabbed-item/tabbed-item.component'\nimport { TabbedService, TabsDirection } from './tabbed.service'\n\n@Component({\n selector: 'seam-tabbed',\n templateUrl: './tabbed.component.html',\n styleUrls: ['./tabbed.component.scss'],\n providers: [ TabbedService ]\n})\nexport class TabbedComponent implements OnInit, AfterContentInit, OnDestroy {\n\n private _direction: TabsDirection = 'vertical'\n private _hideTabs = false\n\n @ContentChildren(TabbedItemComponent) tabbedItems?: QueryList<TabbedItemComponent>\n\n @Output() tabChanged = new EventEmitter<TabbedItemComponent>()\n\n @Input()\n set direction(val: TabsDirection) {\n this._direction = val\n }\n get direction() {\n return this._direction\n }\n\n @Input()\n set hideTabs(val: boolean) {\n setTimeout(() => {\n this._hideTabs = val\n })\n }\n get hideTabs(): boolean {\n return this._hideTabs\n }\n\n @Input()\n public onlyRouteContent = false\n\n get selectedTab(): TabbedItemComponent | undefined {\n if (this.onlyRouteContent) {\n if (this.route.snapshot.children.length > 0) {\n const config = this.route.snapshot.children[0].routeConfig\n const childPath = config && config.path\n return this.tabbedItems?.find(t => t.name === childPath)\n }\n } else {\n return this._selectedTab\n }\n }\n set selectedTab(tab: TabbedItemComponent | undefined) { this._selectedTab = tab }\n private _selectedTab: TabbedItemComponent | undefined\n\n private _activeTabNameTimeout: any\n @Input()\n set activeTabName(val: string) {\n clearTimeout(this._activeTabNameTimeout)\n this._activeTabNameTimeout = setTimeout(() => {\n if (!val) {\n this.selectedTab = undefined\n } else {\n this.selectTab(val)\n }\n })\n }\n\n constructor(\n public tabbedService: TabbedService,\n private router: Router,\n private route: ActivatedRoute\n ) { }\n\n ngOnInit() {\n this.tabbedService.registerTab(this, 'main')\n }\n\n ngOnDestroy() {\n this.tabbedService.unregisterTab(this, 'main')\n }\n\n ngAfterContentInit() {\n if (this.tabbedItems && this.tabbedItems.length > 0) {\n this.selectedTab = this.tabbedItems.first\n }\n }\n\n /**\n *\n */\n public onClickTab(event: any, tab: TabbedItemComponent) {\n this.selectedTab = tab\n if (this.onlyRouteContent) {\n this.router.navigate([ tab.name ], { relativeTo: this.route })\n }\n this.tabChanged.emit(tab)\n }\n\n /**\n * TODO: Make more generic, so that the name isn't the only way\n * to select a tab\n */\n public selectTab(name: string) {\n const tab = this.tabbedItems?.find(t => t.name === name)\n if (tab) {\n this.selectedTab = tab\n } else {\n throw new Error(`Tab with name '${name}' not found`)\n }\n }\n\n}\n","<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === selectedTab\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"!selectedTab; else findContentTpl\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItems?.first\"></seam-tabbed-content>\n </ng-container>\n <ng-template #findContentTpl>\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <ng-container *ngIf=\"selectedTab === tabbedItem\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItem\"></seam-tabbed-content>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-template>\n </div>\n\n</div>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { FlexLayoutModule } from '@angular/flex-layout'\n\nimport { TabbedContentComponent } from './tabbed-content/tabbed-content.component'\nimport { TabbedItemComponent } from './tabbed-item/tabbed-item.component'\nimport { TabbedComponent } from './tabbed.component'\n\nimport { TabbedTabContentDirective } from './directives/tabbed-tab-content.directive'\nimport { TabbedTabDirective } from './directives/tabbed-tab.directive'\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FlexLayoutModule,\n ],\n declarations: [\n TabbedComponent,\n TabbedTabContentDirective,\n TabbedTabDirective,\n TabbedItemComponent,\n TabbedContentComponent,\n TabbedContentComponent,\n],\n exports: [\n TabbedComponent,\n TabbedTabContentDirective,\n TabbedTabDirective,\n TabbedItemComponent,\n TabbedContentComponent,\n ]\n})\nexport class TheSeamTabbedModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i1.TabbedService","i5.TabbedContentComponent"],"mappings":";;;;;;;;;;;MASa,sBAAsB,CAAA;;mHAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,iGCTnC,uWAOA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDEa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,qBAAqB,EAAA,QAAA,EAAA,uWAAA,EAAA,CAAA;8BAMtB,UAAU,EAAA,CAAA;sBAAlB,KAAK;;;MEHK,yBAAyB,CAAA;AAJtC,IAAA,WAAA,GAAA;AAMS,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAA;KAExB;;sHAJY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;0GAAzB,yBAAyB,EAAA,QAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,sBAAsB;iBACjC,CAAA;;;MCAY,aAAa,CAAA;AAD1B,IAAA,WAAA,GAAA;AAGU,QAAA,IAAU,CAAA,UAAA,GAA+C,EAAE,CAAA;KA0BpE;IAxBQ,WAAW,CAAC,GAAoB,EAAE,SAAiB,EAAA;AACxD,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,CAAA;AAChC,SAAA;QAED,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AAC1C,YAAA,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAA;AAClB,SAAA;QAED,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KACrC;IAEM,aAAa,CAAC,GAAoB,EAAE,SAAiB,EAAA;AAC1D,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAC9B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAC5D,CAAC,IAAI,CAAC,KAAK,GAAG,CACf,CAAA;YAED,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAA;AACnF,aAAA;AACF,SAAA;KACF;;0GA1BU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8GAAb,aAAa,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;MCIE,kBAAkB,CAAA;AAO7B,IAAA,WAAA,CACS,UAAsB;;IAEtB,aAA4B,EAAA;AAF5B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAEtB,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;;;AAL9B,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAA;KAMlB;;IAGL,QAAQ,GAAA;;;;;;;;;;;KAWP;;+GAzBU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,eAAe;iBAC1B,CAAA;;;MCKY,mBAAmB,CAAA;AALhC,IAAA,WAAA,GAAA;AAgB2B,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAA;KAClD;;gHAZY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oGAAnB,mBAAmB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGhB,kBAAkB,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,8EAGvC,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,WAAW,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpB9D,iCAEI,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;ADuBuB,UAAA,CAAA;AAAf,IAAA,YAAY,EAAE;CAAyB,EAAA,mBAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;2FAXtC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,iCAAA,EAAA,CAAA;8BAQrB,YAAY,EAAA,CAAA;sBADlB,YAAY;uBAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAI9D,gBAAgB,EAAA,CAAA;sBADtB,YAAY;uBAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAGnE,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACmB,gBAAgB,EAAA,CAAA;sBAAxC,KAAK;;;MEXK,eAAe,CAAA;IAS1B,IACI,SAAS,CAAC,GAAkB,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAA;KACtB;AACD,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAA;KACvB;IAED,IACI,QAAQ,CAAC,GAAY,EAAA;QACvB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAA;AACtB,SAAC,CAAC,CAAA;KACH;AACD,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAA;KACtB;AAKD,IAAA,IAAI,WAAW,GAAA;;QACb,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;AAC1D,gBAAA,MAAM,SAAS,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,CAAA;AACvC,gBAAA,OAAO,MAAA,IAAI,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;AACzD,aAAA;AACF,SAAA;AAAM,aAAA;YACL,OAAO,IAAI,CAAC,YAAY,CAAA;AACzB,SAAA;KACF;IACD,IAAI,WAAW,CAAC,GAAoC,EAAI,EAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAA,EAAE;IAIjF,IACI,aAAa,CAAC,GAAW,EAAA;AAC3B,QAAA,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;AACxC,QAAA,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC,MAAK;YAC3C,IAAI,CAAC,GAAG,EAAE;AACR,gBAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;AAC7B,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;AACpB,aAAA;AACH,SAAC,CAAC,CAAA;KACH;AAED,IAAA,WAAA,CACS,aAA4B,EAC3B,MAAc,EACd,KAAqB,EAAA;AAFtB,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAC3B,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AACd,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AA1DvB,QAAA,IAAU,CAAA,UAAA,GAAkB,UAAU,CAAA;AACtC,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAA;AAIf,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAuB,CAAA;AAqBvD,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAA;KAiC1B;IAEL,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;KAC7C;IAED,WAAW,GAAA;QACT,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;KAC/C;IAED,kBAAkB,GAAA;QAChB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACnD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAA;AAC1C,SAAA;KACF;AAED;;AAEG;IACI,UAAU,CAAC,KAAU,EAAE,GAAwB,EAAA;AACpD,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAA;QACtB,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAE,GAAG,CAAC,IAAI,CAAE,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;AAC/D,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KAC1B;AAED;;;AAGG;AACI,IAAA,SAAS,CAAC,IAAY,EAAA;;AAC3B,QAAA,MAAM,GAAG,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AACxD,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAA;AACvB,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAA,WAAA,CAAa,CAAC,CAAA;AACrD,SAAA;KACF;;4GAnGU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,6MAFf,CAAE,aAAa,CAAE,EAOX,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,mBAAmB,6BCnBtC,k6DA2CA,EAAA,MAAA,EAAA,CAAA,soCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD7Ba,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACE,aAAa,EAAA,SAAA,EAGZ,CAAE,aAAa,CAAE,EAAA,QAAA,EAAA,k6DAAA,EAAA,MAAA,EAAA,CAAA,soCAAA,CAAA,EAAA,CAAA;mJAOU,WAAW,EAAA,CAAA;sBAAhD,eAAe;uBAAC,mBAAmB,CAAA;gBAE1B,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAGH,SAAS,EAAA,CAAA;sBADZ,KAAK;gBASF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAWC,gBAAgB,EAAA,CAAA;sBADtB,KAAK;gBAmBF,aAAa,EAAA,CAAA;sBADhB,KAAK;;;MExBK,mBAAmB,CAAA;;gHAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,iBAf5B,eAAe;QACf,yBAAyB;QACzB,kBAAkB;QAClB,mBAAmB;QACnB,sBAAsB;AACtB,QAAA,sBAAsB,aAVtB,YAAY;QACZ,YAAY;AACZ,QAAA,gBAAgB,aAWhB,eAAe;QACf,yBAAyB;QACzB,kBAAkB;QAClB,mBAAmB;QACnB,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAGb,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YApB5B,YAAY;QACZ,YAAY;QACZ,gBAAgB,CAAA,EAAA,CAAA,CAAA;2FAkBP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAtB/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,YAAY;wBACZ,gBAAgB;AACjB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,eAAe;wBACf,yBAAyB;wBACzB,kBAAkB;wBAClB,mBAAmB;wBACnB,sBAAsB;wBACtB,sBAAsB;AACzB,qBAAA;AACC,oBAAA,OAAO,EAAE;wBACP,eAAe;wBACf,yBAAyB;wBACzB,kBAAkB;wBAClB,mBAAmB;wBACnB,sBAAsB;AACvB,qBAAA;iBACF,CAAA;;;AClCD;;AAEG;;;;"}
1
+ {"version":3,"file":"theseam-ui-common-tabbed.mjs","sources":["../../../projects/ui-common/tabbed/tabbed-content/tabbed-content.component.ts","../../../projects/ui-common/tabbed/tabbed-content/tabbed-content.component.html","../../../projects/ui-common/tabbed/directives/tabbed-tab-content.directive.ts","../../../projects/ui-common/tabbed/tabbed.service.ts","../../../projects/ui-common/tabbed/directives/tabbed-tab.directive.ts","../../../projects/ui-common/tabbed/tabbed-item/tabbed-item.component.ts","../../../projects/ui-common/tabbed/tabbed-item/tabbed-item.component.html","../../../projects/ui-common/tabbed/tabbed.component.ts","../../../projects/ui-common/tabbed/tabbed.component.html","../../../projects/ui-common/tabbed/tabbed.module.ts","../../../projects/ui-common/tabbed/theseam-ui-common-tabbed.ts"],"sourcesContent":["import { Component, Input } from '@angular/core'\n\nimport { TabbedItemAccessor } from '../tabbed-models'\n\n@Component({\n selector: 'seam-tabbed-content',\n templateUrl: './tabbed-content.component.html',\n styleUrls: ['./tabbed-content.component.scss']\n})\nexport class TabbedContentComponent {\n\n @Input() tabbedItem?: TabbedItemAccessor\n\n}\n","<!-- <div class=\"fade-left\" fxFlexFill> -->\n<div fxFlexFill>\n <ng-container *ngIf=\"tabbedItem\">\n <ng-template *ngIf=\"tabbedItem.tabbedContentTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedContentTpl\"></ng-template>\n <ng-container *ngIf=\"tabbedItem.contentFromRoute\"><router-outlet></router-outlet></ng-container>\n </ng-container>\n</div>\n","import { Directive } from '@angular/core'\n\nimport { TabbedTabContentAccessor } from '../tabbed-models'\n\n@Directive({\n selector: '[seamTabbedTabContent]',\n exportAs: 'seamTabbedTabContent'\n})\nexport class TabbedTabContentDirective implements TabbedTabContentAccessor {\n\n public isActive = false\n\n}\n","import { Injectable } from '@angular/core'\n\nimport { TabbedComponent } from './tabbed.component'\n\nexport declare type TabsDirection = 'horizontal' | 'vertical'\n\n@Injectable()\nexport class TabbedService {\n\n private _tabGroups: { [groupName: string]: TabbedComponent[] } = {}\n\n public registerTab(tab: TabbedComponent, groupName: string) {\n if (!this._tabGroups[groupName]) {\n this._tabGroups[groupName] = []\n }\n\n for (const t of this._tabGroups[groupName]) {\n t.hideTabs = true\n }\n\n this._tabGroups[groupName].push(tab)\n }\n\n public unregisterTab(tab: TabbedComponent, groupName: string) {\n if (this._tabGroups[groupName]) {\n this._tabGroups[groupName] = this._tabGroups[groupName].filter(\n t => t !== tab\n )\n\n if (this._tabGroups[groupName].length > 0) {\n this._tabGroups[groupName][this._tabGroups[groupName].length - 1].hideTabs = false\n }\n }\n }\n\n}\n","import { Directive, ElementRef, HostBinding, OnInit } from '@angular/core'\n\nimport { TabbedTabAccessor } from '../tabbed-models'\nimport { TabbedComponent } from '../tabbed.component'\nimport { TabbedService } from '../tabbed.service'\n\n@Directive({\n selector: '[seamTabbedTab]',\n exportAs: 'seamTabbedTab'\n})\nexport class TabbedTabDirective implements OnInit, TabbedTabAccessor {\n\n // @HostBinding('class.custom-invalid')\n // get customInvalid() { return this.control.invalid }\n\n public isActive = false\n\n constructor(\n public elementRef: ElementRef,\n // public host: TabbedComponent,\n public tabbedService: TabbedService\n ) { }\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n ngOnInit() {\n // this.tabbedService.selectedTab.subscribe(tab => {\n // console.log('tab: ', tab)\n // console.log('tab.tabbedTabTpl.elementRef: ', tab.tabbedTabTpl.elementRef)\n // console.log('this.elementRef: ', this.elementRef)\n // if (tab.tabbedTabTpl.elementRef.na === this.elementRef) {\n // this.isActive = true\n // } else {\n // this.isActive = false\n // }\n // })\n }\n\n}\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { Component, ContentChild, Input, TemplateRef } from '@angular/core'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\nimport { TabbedTabContentDirective } from '../directives/tabbed-tab-content.directive'\nimport { TabbedTabDirective } from '../directives/tabbed-tab.directive'\nimport { TabbedItemAccessor } from '../tabbed-models'\n\n@Component({\n selector: 'seam-tabbed-item',\n templateUrl: './tabbed-item.component.html',\n styleUrls: ['./tabbed-item.component.scss']\n})\nexport class TabbedItemComponent implements TabbedItemAccessor {\n static ngAcceptInputType_contentFromRoute: BooleanInput\n\n @ContentChild(TabbedTabDirective, { read: TemplateRef, static: true })\n public tabbedTabTpl?: TemplateRef<TabbedTabDirective>\n\n @ContentChild(TabbedTabContentDirective, { read: TemplateRef, static: true })\n public tabbedContentTpl?: TemplateRef<TabbedTabContentDirective>\n\n @Input() name: string | undefined | null\n @Input() label: string | undefined | null\n @Input() @InputBoolean() contentFromRoute = false\n}\n","<p>\n tabbed-item works!\n</p>","import {\n AfterContentInit, Component, ContentChildren, EventEmitter, Input, OnDestroy, OnInit, Output, QueryList\n} from '@angular/core'\nimport { ActivatedRoute, Router } from '@angular/router'\nimport { BehaviorSubject, combineLatest, shareReplay, tap } from 'rxjs'\n\nimport { isNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { TabbedItemComponent } from './tabbed-item/tabbed-item.component'\nimport { TabbedService, TabsDirection } from './tabbed.service'\n\n@Component({\n selector: 'seam-tabbed',\n templateUrl: './tabbed.component.html',\n styleUrls: ['./tabbed.component.scss'],\n providers: [ TabbedService ]\n})\nexport class TabbedComponent implements OnInit, AfterContentInit, OnDestroy {\n\n private _direction: TabsDirection = 'vertical'\n private _hideTabs = false\n\n @ContentChildren(TabbedItemComponent)\n set tabbedItems(val: QueryList<TabbedItemComponent> | undefined) {\n this._tabbedItems.next(val)\n }\n get tabbedItems(): QueryList<TabbedItemComponent> | undefined {\n return this._tabbedItems.value\n }\n private readonly _tabbedItems = new BehaviorSubject<QueryList<TabbedItemComponent> | undefined>(undefined)\n public readonly tabbedItems$ = this._tabbedItems.asObservable()\n\n @Output() tabChanged = new EventEmitter<TabbedItemComponent>()\n\n @Input()\n set direction(val: TabsDirection) {\n this._direction = val\n }\n get direction() {\n return this._direction\n }\n\n @Input()\n set hideTabs(val: boolean) {\n setTimeout(() => {\n this._hideTabs = val\n })\n }\n get hideTabs(): boolean {\n return this._hideTabs\n }\n\n @Input()\n public onlyRouteContent = false\n\n get selectedTab(): TabbedItemComponent | undefined {\n if (this.onlyRouteContent) {\n if (this.route.snapshot.children.length > 0) {\n const config = this.route.snapshot.children[0].routeConfig\n const childPath = config && config.path\n return this.tabbedItems?.find(t => t.name === childPath)\n }\n } else {\n return this._selectedTab.value\n }\n }\n set selectedTab(tab: TabbedItemComponent | undefined) { this._selectedTab.next(tab) }\n private readonly _selectedTab = new BehaviorSubject<TabbedItemComponent | undefined>(undefined)\n public readonly selectedTab$ = this._selectedTab.asObservable().pipe(\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n @Input()\n set activeTabName(val: string) {\n this._activeTabName.next(val)\n }\n private readonly _activeTabName = new BehaviorSubject<string | undefined>(undefined)\n private readonly activeTabName$ = this._activeTabName.asObservable()\n\n constructor(\n public tabbedService: TabbedService,\n private router: Router,\n private route: ActivatedRoute\n ) { }\n\n ngOnInit() {\n this.tabbedService.registerTab(this, 'main')\n }\n\n ngOnDestroy() {\n this.tabbedService.unregisterTab(this, 'main')\n }\n\n ngAfterContentInit() {\n combineLatest([ this.tabbedItems$, this.activeTabName$ ]).pipe(\n tap(([ _, activeTabName ]) => this.selectTab(activeTabName))\n ).subscribe()\n }\n\n /**\n *\n */\n public onClickTab(event: any, tab: TabbedItemComponent) {\n this.selectedTab = tab\n if (this.onlyRouteContent) {\n this.router.navigate([ tab.name ], { relativeTo: this.route })\n }\n this.tabChanged.emit(tab)\n }\n\n /**\n * TODO: Make more generic, so that the name isn't the only way\n * to select a tab\n */\n public selectTab(name?: string) {\n if (isNullOrUndefined(name) || name === this.selectedTab?.name) {\n return\n }\n\n const tab = this.tabbedItems?.find(t => t.name === name)\n if (tab) {\n this.selectedTab = tab\n }\n else {\n console.warn(`Tab with name '${name}' not found`)\n }\n }\n\n}\n","<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { FlexLayoutModule } from '@angular/flex-layout'\n\nimport { TabbedContentComponent } from './tabbed-content/tabbed-content.component'\nimport { TabbedItemComponent } from './tabbed-item/tabbed-item.component'\nimport { TabbedComponent } from './tabbed.component'\n\nimport { TabbedTabContentDirective } from './directives/tabbed-tab-content.directive'\nimport { TabbedTabDirective } from './directives/tabbed-tab.directive'\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FlexLayoutModule,\n ],\n declarations: [\n TabbedComponent,\n TabbedTabContentDirective,\n TabbedTabDirective,\n TabbedItemComponent,\n TabbedContentComponent,\n TabbedContentComponent,\n],\n exports: [\n TabbedComponent,\n TabbedTabContentDirective,\n TabbedTabDirective,\n TabbedItemComponent,\n TabbedContentComponent,\n ]\n})\nexport class TheSeamTabbedModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i1.TabbedService","i5.TabbedContentComponent"],"mappings":"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"}
@@ -72,6 +72,7 @@ class ToggleGroupDirective {
72
72
  this._ngUnsubscribe.complete();
73
73
  }
74
74
  ngAfterViewInit() {
75
+ var _a;
75
76
  setTimeout(() => {
76
77
  this._updateDirectiveStates();
77
78
  if (this.optionDirectives) {
@@ -106,6 +107,7 @@ class ToggleGroupDirective {
106
107
  }))
107
108
  .subscribe();
108
109
  });
110
+ (_a = this.optionDirectives) === null || _a === void 0 ? void 0 : _a.changes.subscribe(() => this._updateDirectiveStates());
109
111
  }
110
112
  get value() {
111
113
  return this.val;
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-toggle-group.mjs","sources":["../../../projects/ui-common/toggle-group/toggle-group-option.directive.ts","../../../projects/ui-common/toggle-group/toggle-group.directive.ts","../../../projects/ui-common/toggle-group/toggle-group.module.ts","../../../projects/ui-common/toggle-group/theseam-ui-common-toggle-group.ts"],"sourcesContent":["import { coerceBooleanProperty } from '@angular/cdk/coercion'\nimport { ChangeDetectorRef, Directive, ElementRef, EventEmitter, HostBinding, Input, Output } from '@angular/core'\n\n@Directive({\n selector: '[seamToggleGroupOption]',\n exportAs: 'seamToggleGroupOption'\n})\nexport class ToggleGroupOptionDirective {\n\n @Input() seamToggleGroupOption: string | undefined | null\n\n @Input()\n get selected(): boolean { return this._selected }\n set selected(value: boolean) {\n if (!this._canUnselect && !value) { return }\n this._selected = coerceBooleanProperty(value)\n this.selectionChange.emit(this._selected)\n this._cdr.markForCheck()\n }\n private _selected = false\n\n /** Internal use only for now. */\n _canUnselect = true\n\n @Output() selectionChange = new EventEmitter<boolean>()\n\n @HostBinding('class.lib-toggle-group-option-selected') get _checkioSelectedClass() {\n return this._selected\n }\n\n constructor(\n private readonly _elementRef: ElementRef,\n private readonly _cdr: ChangeDetectorRef\n ) { }\n\n get value(): string | undefined | null {\n return this.seamToggleGroupOption\n }\n\n}\n","import { BooleanInput, coerceArray } from '@angular/cdk/coercion'\nimport { AfterViewInit, ContentChildren, Directive, EventEmitter, forwardRef, Input, OnDestroy, Output, QueryList } from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { combineLatest, from, Observable, of, Subject } from 'rxjs'\nimport { filter, map, startWith, switchMap, takeUntil, tap } from 'rxjs/operators'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\nimport { ToggleGroupOptionDirective } from './toggle-group-option.directive'\n\nexport const TOGGLE_GROUP_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ToggleGroupDirective),\n multi: true,\n}\n\n@Directive({\n selector: '[seamToggleGroup]',\n exportAs: 'seamToggleGroup',\n providers: [ TOGGLE_GROUP_VALUE_ACCESSOR ]\n})\nexport class ToggleGroupDirective implements OnDestroy, AfterViewInit, ControlValueAccessor {\n static ngAcceptInputType_disabled: BooleanInput\n static ngAcceptInputType_multiple: BooleanInput\n static ngAcceptInputType_selectionToggleable: BooleanInput\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('value') val: string | string[] | undefined | null\n\n @Input() @InputBoolean() disabled = false\n @Input() @InputBoolean() multiple = false\n @Input() @InputBoolean() selectionToggleable = true\n\n // TODO: Add min/max selected inputs to make toggling better for multi select\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() readonly change = new EventEmitter<string | string[] | undefined | null>()\n\n @ContentChildren(ToggleGroupOptionDirective) optionDirectives?: QueryList<ToggleGroupOptionDirective>\n\n public options?: Observable<ToggleGroupOptionDirective[]>\n\n onChange: any\n onTouched: any\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this._updateDirectiveStates()\n\n if (this.optionDirectives) {\n this.options = this.optionDirectives.changes\n .pipe(takeUntil(this._ngUnsubscribe))\n .pipe(startWith(this.optionDirectives))\n .pipe(map(v => v.toArray() as ToggleGroupOptionDirective[]))\n\n this.options.pipe(switchMap(opts => {\n const _tmp = of(undefined)\n if (opts) {\n const _v: Observable<boolean>[] = []\n for (const opt of opts) {\n _v.push(opt.selectionChange.pipe(\n filter(v => opt.selected !== this.isSelected(opt.value)),\n tap(v => {\n if (this.isSelected(opt.value)) {\n this.unselectValue(opt.value)\n } else {\n this.selectValue(opt.value)\n }\n })\n ))\n }\n return combineLatest(_v)\n }\n return _tmp\n })).subscribe()\n }\n\n this.change\n .pipe(switchMap(_ => from(this.optionDirectives?.toArray() || [])\n .pipe(tap(opt => { this._updateDirectiveState(opt) }))\n ))\n .subscribe()\n })\n }\n\n get value(): string | string[] | undefined | null {\n return this.val\n }\n\n set value(value: string | string[] | undefined | null) {\n const _value = this.multiple\n ? value !== null && value !== undefined\n ? coerceArray(value)\n : value\n : value\n\n this.val = (this.multiple) ? [ ...(_value as string[] || []) ] : _value || ''\n this.change.emit(this.val)\n if (this.onChange) { this.onChange(_value) }\n if (this.onTouched) { this.onTouched() }\n }\n\n writeValue(value: any): void {\n this.value = value\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled\n }\n\n isSelected(value: string | undefined | null) {\n if (this.multiple) {\n const idx = (this.value as string[] || []).findIndex(v => v === value)\n return idx !== -1\n } else {\n // TODO: Clean this up when the directive no longer allows array value type when multiple is false\n const v = Array.isArray(this.value) && this.value.length === 1\n ? this.value[0]\n : this.value\n return v === value\n }\n }\n\n unselectValue(value: string | undefined | null) {\n if (this.multiple) {\n this.value = (this.value as string[] || []).filter(v => v !== value)\n } else {\n this.value = undefined\n }\n }\n\n selectValue(value: string | undefined | null) {\n if (this.multiple) {\n const _value = [ ...(this.value as string[] || []) ]\n this.value = value ? [ ..._value, value ] : _value\n } else {\n this.value = value\n }\n }\n\n getOptionDirectiveByValue(value: string) {\n if (!this.optionDirectives || this.optionDirectives.length < 1) {\n return null\n }\n\n return this.optionDirectives.toArray()\n .find(opt => opt.value === value)\n }\n\n private _updateDirectiveStates(): void {\n if (this.optionDirectives) {\n for (const opt of this.optionDirectives.toArray()) {\n this._updateDirectiveState(opt)\n }\n }\n }\n\n private _updateDirectiveState(opt: ToggleGroupOptionDirective): void {\n const selected = this.isSelected(opt.value)\n if (opt.selected !== selected) {\n if (!opt._canUnselect) {\n opt._canUnselect = true\n }\n opt.selected = selected\n }\n if (!this.selectionToggleable) {\n if (!this.multiple || (this.value && this.value.length <= 1)) {\n if (opt.selected) {\n if (opt._canUnselect) {\n opt._canUnselect = false\n }\n } else {\n if (!opt._canUnselect) {\n opt._canUnselect = true\n }\n }\n } else {\n if (!opt._canUnselect) {\n opt._canUnselect = true\n }\n }\n }\n }\n\n}\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { ReactiveFormsModule } from '@angular/forms'\n\nimport { ToggleGroupOptionDirective } from './toggle-group-option.directive'\nimport { ToggleGroupDirective } from './toggle-group.directive'\n\n@NgModule({\n declarations: [\n ToggleGroupDirective,\n ToggleGroupOptionDirective\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule\n ],\n exports: [\n ToggleGroupDirective,\n ToggleGroupOptionDirective\n ]\n})\nexport class TheSeamToggleGroupModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theseam-ui-common-toggle-group.mjs","sources":["../../../projects/ui-common/toggle-group/toggle-group-option.directive.ts","../../../projects/ui-common/toggle-group/toggle-group.directive.ts","../../../projects/ui-common/toggle-group/toggle-group.module.ts","../../../projects/ui-common/toggle-group/theseam-ui-common-toggle-group.ts"],"sourcesContent":["import { coerceBooleanProperty } from '@angular/cdk/coercion'\nimport { ChangeDetectorRef, Directive, ElementRef, EventEmitter, HostBinding, Input, Output } from '@angular/core'\n\n@Directive({\n selector: '[seamToggleGroupOption]',\n exportAs: 'seamToggleGroupOption'\n})\nexport class ToggleGroupOptionDirective {\n\n @Input() seamToggleGroupOption: string | undefined | null\n\n @Input()\n get selected(): boolean { return this._selected }\n set selected(value: boolean) {\n if (!this._canUnselect && !value) { return }\n this._selected = coerceBooleanProperty(value)\n this.selectionChange.emit(this._selected)\n this._cdr.markForCheck()\n }\n private _selected = false\n\n /** Internal use only for now. */\n _canUnselect = true\n\n @Output() selectionChange = new EventEmitter<boolean>()\n\n @HostBinding('class.lib-toggle-group-option-selected') get _checkioSelectedClass() {\n return this._selected\n }\n\n constructor(\n private readonly _elementRef: ElementRef,\n private readonly _cdr: ChangeDetectorRef\n ) { }\n\n get value(): string | undefined | null {\n return this.seamToggleGroupOption\n }\n\n}\n","import { BooleanInput, coerceArray } from '@angular/cdk/coercion'\nimport { AfterViewInit, ContentChildren, Directive, EventEmitter, forwardRef, Input, OnDestroy, Output, QueryList } from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { combineLatest, from, Observable, of, Subject } from 'rxjs'\nimport { filter, map, startWith, switchMap, takeUntil, tap } from 'rxjs/operators'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\nimport { ToggleGroupOptionDirective } from './toggle-group-option.directive'\n\nexport const TOGGLE_GROUP_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ToggleGroupDirective),\n multi: true,\n}\n\n@Directive({\n selector: '[seamToggleGroup]',\n exportAs: 'seamToggleGroup',\n providers: [ TOGGLE_GROUP_VALUE_ACCESSOR ]\n})\nexport class ToggleGroupDirective implements OnDestroy, AfterViewInit, ControlValueAccessor {\n static ngAcceptInputType_disabled: BooleanInput\n static ngAcceptInputType_multiple: BooleanInput\n static ngAcceptInputType_selectionToggleable: BooleanInput\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('value') val: string | string[] | undefined | null\n\n @Input() @InputBoolean() disabled = false\n @Input() @InputBoolean() multiple = false\n @Input() @InputBoolean() selectionToggleable = true\n\n // TODO: Add min/max selected inputs to make toggling better for multi select\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() readonly change = new EventEmitter<string | string[] | undefined | null>()\n\n @ContentChildren(ToggleGroupOptionDirective) optionDirectives?: QueryList<ToggleGroupOptionDirective>\n\n public options?: Observable<ToggleGroupOptionDirective[]>\n\n onChange: any\n onTouched: any\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this._updateDirectiveStates()\n\n if (this.optionDirectives) {\n this.options = this.optionDirectives.changes\n .pipe(takeUntil(this._ngUnsubscribe))\n .pipe(startWith(this.optionDirectives))\n .pipe(map(v => v.toArray() as ToggleGroupOptionDirective[]))\n\n this.options.pipe(switchMap(opts => {\n const _tmp = of(undefined)\n if (opts) {\n const _v: Observable<boolean>[] = []\n for (const opt of opts) {\n _v.push(opt.selectionChange.pipe(\n filter(v => opt.selected !== this.isSelected(opt.value)),\n tap(v => {\n if (this.isSelected(opt.value)) {\n this.unselectValue(opt.value)\n } else {\n this.selectValue(opt.value)\n }\n })\n ))\n }\n return combineLatest(_v)\n }\n return _tmp\n })).subscribe()\n }\n\n this.change\n .pipe(switchMap(_ => from(this.optionDirectives?.toArray() || [])\n .pipe(tap(opt => { this._updateDirectiveState(opt) }))\n ))\n .subscribe()\n })\n\n this.optionDirectives?.changes.subscribe(() => this._updateDirectiveStates())\n }\n\n get value(): string | string[] | undefined | null {\n return this.val\n }\n\n set value(value: string | string[] | undefined | null) {\n const _value = this.multiple\n ? value !== null && value !== undefined\n ? coerceArray(value)\n : value\n : value\n\n this.val = (this.multiple) ? [ ...(_value as string[] || []) ] : _value || ''\n this.change.emit(this.val)\n if (this.onChange) { this.onChange(_value) }\n if (this.onTouched) { this.onTouched() }\n }\n\n writeValue(value: any): void {\n this.value = value\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled\n }\n\n isSelected(value: string | undefined | null) {\n if (this.multiple) {\n const idx = (this.value as string[] || []).findIndex(v => v === value)\n return idx !== -1\n } else {\n // TODO: Clean this up when the directive no longer allows array value type when multiple is false\n const v = Array.isArray(this.value) && this.value.length === 1\n ? this.value[0]\n : this.value\n return v === value\n }\n }\n\n unselectValue(value: string | undefined | null) {\n if (this.multiple) {\n this.value = (this.value as string[] || []).filter(v => v !== value)\n } else {\n this.value = undefined\n }\n }\n\n selectValue(value: string | undefined | null) {\n if (this.multiple) {\n const _value = [ ...(this.value as string[] || []) ]\n this.value = value ? [ ..._value, value ] : _value\n } else {\n this.value = value\n }\n }\n\n getOptionDirectiveByValue(value: string) {\n if (!this.optionDirectives || this.optionDirectives.length < 1) {\n return null\n }\n\n return this.optionDirectives.toArray()\n .find(opt => opt.value === value)\n }\n\n private _updateDirectiveStates(): void {\n if (this.optionDirectives) {\n for (const opt of this.optionDirectives.toArray()) {\n this._updateDirectiveState(opt)\n }\n }\n }\n\n private _updateDirectiveState(opt: ToggleGroupOptionDirective): void {\n const selected = this.isSelected(opt.value)\n if (opt.selected !== selected) {\n if (!opt._canUnselect) {\n opt._canUnselect = true\n }\n opt.selected = selected\n }\n if (!this.selectionToggleable) {\n if (!this.multiple || (this.value && this.value.length <= 1)) {\n if (opt.selected) {\n if (opt._canUnselect) {\n opt._canUnselect = false\n }\n } else {\n if (!opt._canUnselect) {\n opt._canUnselect = true\n }\n }\n } else {\n if (!opt._canUnselect) {\n opt._canUnselect = true\n }\n }\n }\n }\n\n}\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { ReactiveFormsModule } from '@angular/forms'\n\nimport { ToggleGroupOptionDirective } from './toggle-group-option.directive'\nimport { ToggleGroupDirective } from './toggle-group.directive'\n\n@NgModule({\n declarations: [\n ToggleGroupDirective,\n ToggleGroupOptionDirective\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule\n ],\n exports: [\n ToggleGroupDirective,\n ToggleGroupOptionDirective\n ]\n})\nexport class TheSeamToggleGroupModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -8,6 +8,8 @@ import { FlexLayoutModule } from '@angular/flex-layout';
8
8
  import * as i4 from '@angular/flex-layout/flex';
9
9
  import { __decorate } from 'tslib';
10
10
  import { InputBoolean } from '@theseam/ui-common/core';
11
+ import { BehaviorSubject, shareReplay, combineLatest, tap } from 'rxjs';
12
+ import { isNullOrUndefined } from '@theseam/ui-common/utils';
11
13
 
12
14
  class TabbedContentComponent {
13
15
  }
@@ -125,6 +127,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
125
127
  }] } });
126
128
 
127
129
  class TabbedComponent {
130
+ set tabbedItems(val) {
131
+ this._tabbedItems.next(val);
132
+ }
133
+ get tabbedItems() {
134
+ return this._tabbedItems.value;
135
+ }
128
136
  set direction(val) {
129
137
  this._direction = val;
130
138
  }
@@ -148,20 +156,12 @@ class TabbedComponent {
148
156
  }
149
157
  }
150
158
  else {
151
- return this._selectedTab;
159
+ return this._selectedTab.value;
152
160
  }
153
161
  }
154
- set selectedTab(tab) { this._selectedTab = tab; }
162
+ set selectedTab(tab) { this._selectedTab.next(tab); }
155
163
  set activeTabName(val) {
156
- clearTimeout(this._activeTabNameTimeout);
157
- this._activeTabNameTimeout = setTimeout(() => {
158
- if (!val) {
159
- this.selectedTab = undefined;
160
- }
161
- else {
162
- this.selectTab(val);
163
- }
164
- });
164
+ this._activeTabName.next(val);
165
165
  }
166
166
  constructor(tabbedService, router, route) {
167
167
  this.tabbedService = tabbedService;
@@ -169,8 +169,14 @@ class TabbedComponent {
169
169
  this.route = route;
170
170
  this._direction = 'vertical';
171
171
  this._hideTabs = false;
172
+ this._tabbedItems = new BehaviorSubject(undefined);
173
+ this.tabbedItems$ = this._tabbedItems.asObservable();
172
174
  this.tabChanged = new EventEmitter();
173
175
  this.onlyRouteContent = false;
176
+ this._selectedTab = new BehaviorSubject(undefined);
177
+ this.selectedTab$ = this._selectedTab.asObservable().pipe(shareReplay({ bufferSize: 1, refCount: true }));
178
+ this._activeTabName = new BehaviorSubject(undefined);
179
+ this.activeTabName$ = this._activeTabName.asObservable();
174
180
  }
175
181
  ngOnInit() {
176
182
  this.tabbedService.registerTab(this, 'main');
@@ -179,9 +185,7 @@ class TabbedComponent {
179
185
  this.tabbedService.unregisterTab(this, 'main');
180
186
  }
181
187
  ngAfterContentInit() {
182
- if (this.tabbedItems && this.tabbedItems.length > 0) {
183
- this.selectedTab = this.tabbedItems.first;
184
- }
188
+ combineLatest([this.tabbedItems$, this.activeTabName$]).pipe(tap(([_, activeTabName]) => this.selectTab(activeTabName))).subscribe();
185
189
  }
186
190
  /**
187
191
  *
@@ -198,20 +202,23 @@ class TabbedComponent {
198
202
  * to select a tab
199
203
  */
200
204
  selectTab(name) {
205
+ if (isNullOrUndefined(name) || name === this.selectedTab?.name) {
206
+ return;
207
+ }
201
208
  const tab = this.tabbedItems?.find(t => t.name === name);
202
209
  if (tab) {
203
210
  this.selectedTab = tab;
204
211
  }
205
212
  else {
206
- throw new Error(`Tab with name '${name}' not found`);
213
+ console.warn(`Tab with name '${name}' not found`);
207
214
  }
208
215
  }
209
216
  }
210
217
  TabbedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabbedComponent, deps: [{ token: TabbedService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
211
- TabbedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TabbedComponent, selector: "seam-tabbed", inputs: { direction: "direction", hideTabs: "hideTabs", onlyRouteContent: "onlyRouteContent", activeTabName: "activeTabName" }, outputs: { tabChanged: "tabChanged" }, providers: [TabbedService], queries: [{ propertyName: "tabbedItems", predicate: TabbedItemComponent }], ngImport: i0, template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === selectedTab\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"!selectedTab; else findContentTpl\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItems?.first\"></seam-tabbed-content>\n </ng-container>\n <ng-template #findContentTpl>\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <ng-container *ngIf=\"selectedTab === tabbedItem\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItem\"></seam-tabbed-content>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: TabbedContentComponent, selector: "seam-tabbed-content", inputs: ["tabbedItem"] }] });
218
+ TabbedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TabbedComponent, selector: "seam-tabbed", inputs: { direction: "direction", hideTabs: "hideTabs", onlyRouteContent: "onlyRouteContent", activeTabName: "activeTabName" }, outputs: { tabChanged: "tabChanged" }, providers: [TabbedService], queries: [{ propertyName: "tabbedItems", predicate: TabbedItemComponent }], ngImport: i0, template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: TabbedContentComponent, selector: "seam-tabbed-content", inputs: ["tabbedItem"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
212
219
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabbedComponent, decorators: [{
213
220
  type: Component,
214
- args: [{ selector: 'seam-tabbed', providers: [TabbedService], template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === selectedTab\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"!selectedTab; else findContentTpl\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItems?.first\"></seam-tabbed-content>\n </ng-container>\n <ng-template #findContentTpl>\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <ng-container *ngIf=\"selectedTab === tabbedItem\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItem\"></seam-tabbed-content>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"] }]
221
+ args: [{ selector: 'seam-tabbed', providers: [TabbedService], template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"] }]
215
222
  }], ctorParameters: function () { return [{ type: TabbedService }, { type: i2.Router }, { type: i2.ActivatedRoute }]; }, propDecorators: { tabbedItems: [{
216
223
  type: ContentChildren,
217
224
  args: [TabbedItemComponent]
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-tabbed.mjs","sources":["../../../projects/ui-common/tabbed/tabbed-content/tabbed-content.component.ts","../../../projects/ui-common/tabbed/tabbed-content/tabbed-content.component.html","../../../projects/ui-common/tabbed/directives/tabbed-tab-content.directive.ts","../../../projects/ui-common/tabbed/tabbed.service.ts","../../../projects/ui-common/tabbed/directives/tabbed-tab.directive.ts","../../../projects/ui-common/tabbed/tabbed-item/tabbed-item.component.ts","../../../projects/ui-common/tabbed/tabbed-item/tabbed-item.component.html","../../../projects/ui-common/tabbed/tabbed.component.ts","../../../projects/ui-common/tabbed/tabbed.component.html","../../../projects/ui-common/tabbed/tabbed.module.ts","../../../projects/ui-common/tabbed/theseam-ui-common-tabbed.ts"],"sourcesContent":["import { Component, Input } from '@angular/core'\n\nimport { TabbedItemAccessor } from '../tabbed-models'\n\n@Component({\n selector: 'seam-tabbed-content',\n templateUrl: './tabbed-content.component.html',\n styleUrls: ['./tabbed-content.component.scss']\n})\nexport class TabbedContentComponent {\n\n @Input() tabbedItem?: TabbedItemAccessor\n\n}\n","<!-- <div class=\"fade-left\" fxFlexFill> -->\n<div fxFlexFill>\n <ng-container *ngIf=\"tabbedItem\">\n <ng-template *ngIf=\"tabbedItem.tabbedContentTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedContentTpl\"></ng-template>\n <ng-container *ngIf=\"tabbedItem.contentFromRoute\"><router-outlet></router-outlet></ng-container>\n </ng-container>\n</div>\n","import { Directive } from '@angular/core'\n\nimport { TabbedTabContentAccessor } from '../tabbed-models'\n\n@Directive({\n selector: '[seamTabbedTabContent]',\n exportAs: 'seamTabbedTabContent'\n})\nexport class TabbedTabContentDirective implements TabbedTabContentAccessor {\n\n public isActive = false\n\n}\n","import { Injectable } from '@angular/core'\n\nimport { TabbedComponent } from './tabbed.component'\n\nexport declare type TabsDirection = 'horizontal' | 'vertical'\n\n@Injectable()\nexport class TabbedService {\n\n private _tabGroups: { [groupName: string]: TabbedComponent[] } = {}\n\n public registerTab(tab: TabbedComponent, groupName: string) {\n if (!this._tabGroups[groupName]) {\n this._tabGroups[groupName] = []\n }\n\n for (const t of this._tabGroups[groupName]) {\n t.hideTabs = true\n }\n\n this._tabGroups[groupName].push(tab)\n }\n\n public unregisterTab(tab: TabbedComponent, groupName: string) {\n if (this._tabGroups[groupName]) {\n this._tabGroups[groupName] = this._tabGroups[groupName].filter(\n t => t !== tab\n )\n\n if (this._tabGroups[groupName].length > 0) {\n this._tabGroups[groupName][this._tabGroups[groupName].length - 1].hideTabs = false\n }\n }\n }\n\n}\n","import { Directive, ElementRef, HostBinding, OnInit } from '@angular/core'\n\nimport { TabbedTabAccessor } from '../tabbed-models'\nimport { TabbedComponent } from '../tabbed.component'\nimport { TabbedService } from '../tabbed.service'\n\n@Directive({\n selector: '[seamTabbedTab]',\n exportAs: 'seamTabbedTab'\n})\nexport class TabbedTabDirective implements OnInit, TabbedTabAccessor {\n\n // @HostBinding('class.custom-invalid')\n // get customInvalid() { return this.control.invalid }\n\n public isActive = false\n\n constructor(\n public elementRef: ElementRef,\n // public host: TabbedComponent,\n public tabbedService: TabbedService\n ) { }\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n ngOnInit() {\n // this.tabbedService.selectedTab.subscribe(tab => {\n // console.log('tab: ', tab)\n // console.log('tab.tabbedTabTpl.elementRef: ', tab.tabbedTabTpl.elementRef)\n // console.log('this.elementRef: ', this.elementRef)\n // if (tab.tabbedTabTpl.elementRef.na === this.elementRef) {\n // this.isActive = true\n // } else {\n // this.isActive = false\n // }\n // })\n }\n\n}\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { Component, ContentChild, Input, TemplateRef } from '@angular/core'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\nimport { TabbedTabContentDirective } from '../directives/tabbed-tab-content.directive'\nimport { TabbedTabDirective } from '../directives/tabbed-tab.directive'\nimport { TabbedItemAccessor } from '../tabbed-models'\n\n@Component({\n selector: 'seam-tabbed-item',\n templateUrl: './tabbed-item.component.html',\n styleUrls: ['./tabbed-item.component.scss']\n})\nexport class TabbedItemComponent implements TabbedItemAccessor {\n static ngAcceptInputType_contentFromRoute: BooleanInput\n\n @ContentChild(TabbedTabDirective, { read: TemplateRef, static: true })\n public tabbedTabTpl?: TemplateRef<TabbedTabDirective>\n\n @ContentChild(TabbedTabContentDirective, { read: TemplateRef, static: true })\n public tabbedContentTpl?: TemplateRef<TabbedTabContentDirective>\n\n @Input() name: string | undefined | null\n @Input() label: string | undefined | null\n @Input() @InputBoolean() contentFromRoute = false\n}\n","<p>\n tabbed-item works!\n</p>","import {\n AfterContentInit, Component, ContentChildren, EventEmitter, Input, OnDestroy, OnInit, Output, QueryList\n} from '@angular/core'\nimport { ActivatedRoute, Router } from '@angular/router'\n\nimport { TabbedItemComponent } from './tabbed-item/tabbed-item.component'\nimport { TabbedService, TabsDirection } from './tabbed.service'\n\n@Component({\n selector: 'seam-tabbed',\n templateUrl: './tabbed.component.html',\n styleUrls: ['./tabbed.component.scss'],\n providers: [ TabbedService ]\n})\nexport class TabbedComponent implements OnInit, AfterContentInit, OnDestroy {\n\n private _direction: TabsDirection = 'vertical'\n private _hideTabs = false\n\n @ContentChildren(TabbedItemComponent) tabbedItems?: QueryList<TabbedItemComponent>\n\n @Output() tabChanged = new EventEmitter<TabbedItemComponent>()\n\n @Input()\n set direction(val: TabsDirection) {\n this._direction = val\n }\n get direction() {\n return this._direction\n }\n\n @Input()\n set hideTabs(val: boolean) {\n setTimeout(() => {\n this._hideTabs = val\n })\n }\n get hideTabs(): boolean {\n return this._hideTabs\n }\n\n @Input()\n public onlyRouteContent = false\n\n get selectedTab(): TabbedItemComponent | undefined {\n if (this.onlyRouteContent) {\n if (this.route.snapshot.children.length > 0) {\n const config = this.route.snapshot.children[0].routeConfig\n const childPath = config && config.path\n return this.tabbedItems?.find(t => t.name === childPath)\n }\n } else {\n return this._selectedTab\n }\n }\n set selectedTab(tab: TabbedItemComponent | undefined) { this._selectedTab = tab }\n private _selectedTab: TabbedItemComponent | undefined\n\n private _activeTabNameTimeout: any\n @Input()\n set activeTabName(val: string) {\n clearTimeout(this._activeTabNameTimeout)\n this._activeTabNameTimeout = setTimeout(() => {\n if (!val) {\n this.selectedTab = undefined\n } else {\n this.selectTab(val)\n }\n })\n }\n\n constructor(\n public tabbedService: TabbedService,\n private router: Router,\n private route: ActivatedRoute\n ) { }\n\n ngOnInit() {\n this.tabbedService.registerTab(this, 'main')\n }\n\n ngOnDestroy() {\n this.tabbedService.unregisterTab(this, 'main')\n }\n\n ngAfterContentInit() {\n if (this.tabbedItems && this.tabbedItems.length > 0) {\n this.selectedTab = this.tabbedItems.first\n }\n }\n\n /**\n *\n */\n public onClickTab(event: any, tab: TabbedItemComponent) {\n this.selectedTab = tab\n if (this.onlyRouteContent) {\n this.router.navigate([ tab.name ], { relativeTo: this.route })\n }\n this.tabChanged.emit(tab)\n }\n\n /**\n * TODO: Make more generic, so that the name isn't the only way\n * to select a tab\n */\n public selectTab(name: string) {\n const tab = this.tabbedItems?.find(t => t.name === name)\n if (tab) {\n this.selectedTab = tab\n } else {\n throw new Error(`Tab with name '${name}' not found`)\n }\n }\n\n}\n","<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === selectedTab\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"!selectedTab; else findContentTpl\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItems?.first\"></seam-tabbed-content>\n </ng-container>\n <ng-template #findContentTpl>\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <ng-container *ngIf=\"selectedTab === tabbedItem\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItem\"></seam-tabbed-content>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-template>\n </div>\n\n</div>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { FlexLayoutModule } from '@angular/flex-layout'\n\nimport { TabbedContentComponent } from './tabbed-content/tabbed-content.component'\nimport { TabbedItemComponent } from './tabbed-item/tabbed-item.component'\nimport { TabbedComponent } from './tabbed.component'\n\nimport { TabbedTabContentDirective } from './directives/tabbed-tab-content.directive'\nimport { TabbedTabDirective } from './directives/tabbed-tab.directive'\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FlexLayoutModule,\n ],\n declarations: [\n TabbedComponent,\n TabbedTabContentDirective,\n TabbedTabDirective,\n TabbedItemComponent,\n TabbedContentComponent,\n TabbedContentComponent,\n],\n exports: [\n TabbedComponent,\n TabbedTabContentDirective,\n TabbedTabDirective,\n TabbedItemComponent,\n TabbedContentComponent,\n ]\n})\nexport class TheSeamTabbedModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i1.TabbedService","i5.TabbedContentComponent"],"mappings":"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"}
1
+ {"version":3,"file":"theseam-ui-common-tabbed.mjs","sources":["../../../projects/ui-common/tabbed/tabbed-content/tabbed-content.component.ts","../../../projects/ui-common/tabbed/tabbed-content/tabbed-content.component.html","../../../projects/ui-common/tabbed/directives/tabbed-tab-content.directive.ts","../../../projects/ui-common/tabbed/tabbed.service.ts","../../../projects/ui-common/tabbed/directives/tabbed-tab.directive.ts","../../../projects/ui-common/tabbed/tabbed-item/tabbed-item.component.ts","../../../projects/ui-common/tabbed/tabbed-item/tabbed-item.component.html","../../../projects/ui-common/tabbed/tabbed.component.ts","../../../projects/ui-common/tabbed/tabbed.component.html","../../../projects/ui-common/tabbed/tabbed.module.ts","../../../projects/ui-common/tabbed/theseam-ui-common-tabbed.ts"],"sourcesContent":["import { Component, Input } from '@angular/core'\n\nimport { TabbedItemAccessor } from '../tabbed-models'\n\n@Component({\n selector: 'seam-tabbed-content',\n templateUrl: './tabbed-content.component.html',\n styleUrls: ['./tabbed-content.component.scss']\n})\nexport class TabbedContentComponent {\n\n @Input() tabbedItem?: TabbedItemAccessor\n\n}\n","<!-- <div class=\"fade-left\" fxFlexFill> -->\n<div fxFlexFill>\n <ng-container *ngIf=\"tabbedItem\">\n <ng-template *ngIf=\"tabbedItem.tabbedContentTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedContentTpl\"></ng-template>\n <ng-container *ngIf=\"tabbedItem.contentFromRoute\"><router-outlet></router-outlet></ng-container>\n </ng-container>\n</div>\n","import { Directive } from '@angular/core'\n\nimport { TabbedTabContentAccessor } from '../tabbed-models'\n\n@Directive({\n selector: '[seamTabbedTabContent]',\n exportAs: 'seamTabbedTabContent'\n})\nexport class TabbedTabContentDirective implements TabbedTabContentAccessor {\n\n public isActive = false\n\n}\n","import { Injectable } from '@angular/core'\n\nimport { TabbedComponent } from './tabbed.component'\n\nexport declare type TabsDirection = 'horizontal' | 'vertical'\n\n@Injectable()\nexport class TabbedService {\n\n private _tabGroups: { [groupName: string]: TabbedComponent[] } = {}\n\n public registerTab(tab: TabbedComponent, groupName: string) {\n if (!this._tabGroups[groupName]) {\n this._tabGroups[groupName] = []\n }\n\n for (const t of this._tabGroups[groupName]) {\n t.hideTabs = true\n }\n\n this._tabGroups[groupName].push(tab)\n }\n\n public unregisterTab(tab: TabbedComponent, groupName: string) {\n if (this._tabGroups[groupName]) {\n this._tabGroups[groupName] = this._tabGroups[groupName].filter(\n t => t !== tab\n )\n\n if (this._tabGroups[groupName].length > 0) {\n this._tabGroups[groupName][this._tabGroups[groupName].length - 1].hideTabs = false\n }\n }\n }\n\n}\n","import { Directive, ElementRef, HostBinding, OnInit } from '@angular/core'\n\nimport { TabbedTabAccessor } from '../tabbed-models'\nimport { TabbedComponent } from '../tabbed.component'\nimport { TabbedService } from '../tabbed.service'\n\n@Directive({\n selector: '[seamTabbedTab]',\n exportAs: 'seamTabbedTab'\n})\nexport class TabbedTabDirective implements OnInit, TabbedTabAccessor {\n\n // @HostBinding('class.custom-invalid')\n // get customInvalid() { return this.control.invalid }\n\n public isActive = false\n\n constructor(\n public elementRef: ElementRef,\n // public host: TabbedComponent,\n public tabbedService: TabbedService\n ) { }\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n ngOnInit() {\n // this.tabbedService.selectedTab.subscribe(tab => {\n // console.log('tab: ', tab)\n // console.log('tab.tabbedTabTpl.elementRef: ', tab.tabbedTabTpl.elementRef)\n // console.log('this.elementRef: ', this.elementRef)\n // if (tab.tabbedTabTpl.elementRef.na === this.elementRef) {\n // this.isActive = true\n // } else {\n // this.isActive = false\n // }\n // })\n }\n\n}\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { Component, ContentChild, Input, TemplateRef } from '@angular/core'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\nimport { TabbedTabContentDirective } from '../directives/tabbed-tab-content.directive'\nimport { TabbedTabDirective } from '../directives/tabbed-tab.directive'\nimport { TabbedItemAccessor } from '../tabbed-models'\n\n@Component({\n selector: 'seam-tabbed-item',\n templateUrl: './tabbed-item.component.html',\n styleUrls: ['./tabbed-item.component.scss']\n})\nexport class TabbedItemComponent implements TabbedItemAccessor {\n static ngAcceptInputType_contentFromRoute: BooleanInput\n\n @ContentChild(TabbedTabDirective, { read: TemplateRef, static: true })\n public tabbedTabTpl?: TemplateRef<TabbedTabDirective>\n\n @ContentChild(TabbedTabContentDirective, { read: TemplateRef, static: true })\n public tabbedContentTpl?: TemplateRef<TabbedTabContentDirective>\n\n @Input() name: string | undefined | null\n @Input() label: string | undefined | null\n @Input() @InputBoolean() contentFromRoute = false\n}\n","<p>\n tabbed-item works!\n</p>","import {\n AfterContentInit, Component, ContentChildren, EventEmitter, Input, OnDestroy, OnInit, Output, QueryList\n} from '@angular/core'\nimport { ActivatedRoute, Router } from '@angular/router'\nimport { BehaviorSubject, combineLatest, shareReplay, tap } from 'rxjs'\n\nimport { isNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { TabbedItemComponent } from './tabbed-item/tabbed-item.component'\nimport { TabbedService, TabsDirection } from './tabbed.service'\n\n@Component({\n selector: 'seam-tabbed',\n templateUrl: './tabbed.component.html',\n styleUrls: ['./tabbed.component.scss'],\n providers: [ TabbedService ]\n})\nexport class TabbedComponent implements OnInit, AfterContentInit, OnDestroy {\n\n private _direction: TabsDirection = 'vertical'\n private _hideTabs = false\n\n @ContentChildren(TabbedItemComponent)\n set tabbedItems(val: QueryList<TabbedItemComponent> | undefined) {\n this._tabbedItems.next(val)\n }\n get tabbedItems(): QueryList<TabbedItemComponent> | undefined {\n return this._tabbedItems.value\n }\n private readonly _tabbedItems = new BehaviorSubject<QueryList<TabbedItemComponent> | undefined>(undefined)\n public readonly tabbedItems$ = this._tabbedItems.asObservable()\n\n @Output() tabChanged = new EventEmitter<TabbedItemComponent>()\n\n @Input()\n set direction(val: TabsDirection) {\n this._direction = val\n }\n get direction() {\n return this._direction\n }\n\n @Input()\n set hideTabs(val: boolean) {\n setTimeout(() => {\n this._hideTabs = val\n })\n }\n get hideTabs(): boolean {\n return this._hideTabs\n }\n\n @Input()\n public onlyRouteContent = false\n\n get selectedTab(): TabbedItemComponent | undefined {\n if (this.onlyRouteContent) {\n if (this.route.snapshot.children.length > 0) {\n const config = this.route.snapshot.children[0].routeConfig\n const childPath = config && config.path\n return this.tabbedItems?.find(t => t.name === childPath)\n }\n } else {\n return this._selectedTab.value\n }\n }\n set selectedTab(tab: TabbedItemComponent | undefined) { this._selectedTab.next(tab) }\n private readonly _selectedTab = new BehaviorSubject<TabbedItemComponent | undefined>(undefined)\n public readonly selectedTab$ = this._selectedTab.asObservable().pipe(\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n @Input()\n set activeTabName(val: string) {\n this._activeTabName.next(val)\n }\n private readonly _activeTabName = new BehaviorSubject<string | undefined>(undefined)\n private readonly activeTabName$ = this._activeTabName.asObservable()\n\n constructor(\n public tabbedService: TabbedService,\n private router: Router,\n private route: ActivatedRoute\n ) { }\n\n ngOnInit() {\n this.tabbedService.registerTab(this, 'main')\n }\n\n ngOnDestroy() {\n this.tabbedService.unregisterTab(this, 'main')\n }\n\n ngAfterContentInit() {\n combineLatest([ this.tabbedItems$, this.activeTabName$ ]).pipe(\n tap(([ _, activeTabName ]) => this.selectTab(activeTabName))\n ).subscribe()\n }\n\n /**\n *\n */\n public onClickTab(event: any, tab: TabbedItemComponent) {\n this.selectedTab = tab\n if (this.onlyRouteContent) {\n this.router.navigate([ tab.name ], { relativeTo: this.route })\n }\n this.tabChanged.emit(tab)\n }\n\n /**\n * TODO: Make more generic, so that the name isn't the only way\n * to select a tab\n */\n public selectTab(name?: string) {\n if (isNullOrUndefined(name) || name === this.selectedTab?.name) {\n return\n }\n\n const tab = this.tabbedItems?.find(t => t.name === name)\n if (tab) {\n this.selectedTab = tab\n }\n else {\n console.warn(`Tab with name '${name}' not found`)\n }\n }\n\n}\n","<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { FlexLayoutModule } from '@angular/flex-layout'\n\nimport { TabbedContentComponent } from './tabbed-content/tabbed-content.component'\nimport { TabbedItemComponent } from './tabbed-item/tabbed-item.component'\nimport { TabbedComponent } from './tabbed.component'\n\nimport { TabbedTabContentDirective } from './directives/tabbed-tab-content.directive'\nimport { TabbedTabDirective } from './directives/tabbed-tab.directive'\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FlexLayoutModule,\n ],\n declarations: [\n TabbedComponent,\n TabbedTabContentDirective,\n TabbedTabDirective,\n TabbedItemComponent,\n TabbedContentComponent,\n TabbedContentComponent,\n],\n exports: [\n TabbedComponent,\n TabbedTabContentDirective,\n TabbedTabDirective,\n TabbedItemComponent,\n TabbedContentComponent,\n ]\n})\nexport class TheSeamTabbedModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i1.TabbedService","i5.TabbedContentComponent"],"mappings":"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"}
@@ -103,6 +103,7 @@ class ToggleGroupDirective {
103
103
  .pipe(tap(opt => { this._updateDirectiveState(opt); }))))
104
104
  .subscribe();
105
105
  });
106
+ this.optionDirectives?.changes.subscribe(() => this._updateDirectiveStates());
106
107
  }
107
108
  get value() {
108
109
  return this.val;
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-toggle-group.mjs","sources":["../../../projects/ui-common/toggle-group/toggle-group-option.directive.ts","../../../projects/ui-common/toggle-group/toggle-group.directive.ts","../../../projects/ui-common/toggle-group/toggle-group.module.ts","../../../projects/ui-common/toggle-group/theseam-ui-common-toggle-group.ts"],"sourcesContent":["import { coerceBooleanProperty } from '@angular/cdk/coercion'\nimport { ChangeDetectorRef, Directive, ElementRef, EventEmitter, HostBinding, Input, Output } from '@angular/core'\n\n@Directive({\n selector: '[seamToggleGroupOption]',\n exportAs: 'seamToggleGroupOption'\n})\nexport class ToggleGroupOptionDirective {\n\n @Input() seamToggleGroupOption: string | undefined | null\n\n @Input()\n get selected(): boolean { return this._selected }\n set selected(value: boolean) {\n if (!this._canUnselect && !value) { return }\n this._selected = coerceBooleanProperty(value)\n this.selectionChange.emit(this._selected)\n this._cdr.markForCheck()\n }\n private _selected = false\n\n /** Internal use only for now. */\n _canUnselect = true\n\n @Output() selectionChange = new EventEmitter<boolean>()\n\n @HostBinding('class.lib-toggle-group-option-selected') get _checkioSelectedClass() {\n return this._selected\n }\n\n constructor(\n private readonly _elementRef: ElementRef,\n private readonly _cdr: ChangeDetectorRef\n ) { }\n\n get value(): string | undefined | null {\n return this.seamToggleGroupOption\n }\n\n}\n","import { BooleanInput, coerceArray } from '@angular/cdk/coercion'\nimport { AfterViewInit, ContentChildren, Directive, EventEmitter, forwardRef, Input, OnDestroy, Output, QueryList } from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { combineLatest, from, Observable, of, Subject } from 'rxjs'\nimport { filter, map, startWith, switchMap, takeUntil, tap } from 'rxjs/operators'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\nimport { ToggleGroupOptionDirective } from './toggle-group-option.directive'\n\nexport const TOGGLE_GROUP_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ToggleGroupDirective),\n multi: true,\n}\n\n@Directive({\n selector: '[seamToggleGroup]',\n exportAs: 'seamToggleGroup',\n providers: [ TOGGLE_GROUP_VALUE_ACCESSOR ]\n})\nexport class ToggleGroupDirective implements OnDestroy, AfterViewInit, ControlValueAccessor {\n static ngAcceptInputType_disabled: BooleanInput\n static ngAcceptInputType_multiple: BooleanInput\n static ngAcceptInputType_selectionToggleable: BooleanInput\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('value') val: string | string[] | undefined | null\n\n @Input() @InputBoolean() disabled = false\n @Input() @InputBoolean() multiple = false\n @Input() @InputBoolean() selectionToggleable = true\n\n // TODO: Add min/max selected inputs to make toggling better for multi select\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() readonly change = new EventEmitter<string | string[] | undefined | null>()\n\n @ContentChildren(ToggleGroupOptionDirective) optionDirectives?: QueryList<ToggleGroupOptionDirective>\n\n public options?: Observable<ToggleGroupOptionDirective[]>\n\n onChange: any\n onTouched: any\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this._updateDirectiveStates()\n\n if (this.optionDirectives) {\n this.options = this.optionDirectives.changes\n .pipe(takeUntil(this._ngUnsubscribe))\n .pipe(startWith(this.optionDirectives))\n .pipe(map(v => v.toArray() as ToggleGroupOptionDirective[]))\n\n this.options.pipe(switchMap(opts => {\n const _tmp = of(undefined)\n if (opts) {\n const _v: Observable<boolean>[] = []\n for (const opt of opts) {\n _v.push(opt.selectionChange.pipe(\n filter(v => opt.selected !== this.isSelected(opt.value)),\n tap(v => {\n if (this.isSelected(opt.value)) {\n this.unselectValue(opt.value)\n } else {\n this.selectValue(opt.value)\n }\n })\n ))\n }\n return combineLatest(_v)\n }\n return _tmp\n })).subscribe()\n }\n\n this.change\n .pipe(switchMap(_ => from(this.optionDirectives?.toArray() || [])\n .pipe(tap(opt => { this._updateDirectiveState(opt) }))\n ))\n .subscribe()\n })\n }\n\n get value(): string | string[] | undefined | null {\n return this.val\n }\n\n set value(value: string | string[] | undefined | null) {\n const _value = this.multiple\n ? value !== null && value !== undefined\n ? coerceArray(value)\n : value\n : value\n\n this.val = (this.multiple) ? [ ...(_value as string[] || []) ] : _value || ''\n this.change.emit(this.val)\n if (this.onChange) { this.onChange(_value) }\n if (this.onTouched) { this.onTouched() }\n }\n\n writeValue(value: any): void {\n this.value = value\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled\n }\n\n isSelected(value: string | undefined | null) {\n if (this.multiple) {\n const idx = (this.value as string[] || []).findIndex(v => v === value)\n return idx !== -1\n } else {\n // TODO: Clean this up when the directive no longer allows array value type when multiple is false\n const v = Array.isArray(this.value) && this.value.length === 1\n ? this.value[0]\n : this.value\n return v === value\n }\n }\n\n unselectValue(value: string | undefined | null) {\n if (this.multiple) {\n this.value = (this.value as string[] || []).filter(v => v !== value)\n } else {\n this.value = undefined\n }\n }\n\n selectValue(value: string | undefined | null) {\n if (this.multiple) {\n const _value = [ ...(this.value as string[] || []) ]\n this.value = value ? [ ..._value, value ] : _value\n } else {\n this.value = value\n }\n }\n\n getOptionDirectiveByValue(value: string) {\n if (!this.optionDirectives || this.optionDirectives.length < 1) {\n return null\n }\n\n return this.optionDirectives.toArray()\n .find(opt => opt.value === value)\n }\n\n private _updateDirectiveStates(): void {\n if (this.optionDirectives) {\n for (const opt of this.optionDirectives.toArray()) {\n this._updateDirectiveState(opt)\n }\n }\n }\n\n private _updateDirectiveState(opt: ToggleGroupOptionDirective): void {\n const selected = this.isSelected(opt.value)\n if (opt.selected !== selected) {\n if (!opt._canUnselect) {\n opt._canUnselect = true\n }\n opt.selected = selected\n }\n if (!this.selectionToggleable) {\n if (!this.multiple || (this.value && this.value.length <= 1)) {\n if (opt.selected) {\n if (opt._canUnselect) {\n opt._canUnselect = false\n }\n } else {\n if (!opt._canUnselect) {\n opt._canUnselect = true\n }\n }\n } else {\n if (!opt._canUnselect) {\n opt._canUnselect = true\n }\n }\n }\n }\n\n}\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { ReactiveFormsModule } from '@angular/forms'\n\nimport { ToggleGroupOptionDirective } from './toggle-group-option.directive'\nimport { ToggleGroupDirective } from './toggle-group.directive'\n\n@NgModule({\n declarations: [\n ToggleGroupDirective,\n ToggleGroupOptionDirective\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule\n ],\n exports: [\n ToggleGroupDirective,\n ToggleGroupOptionDirective\n ]\n})\nexport class TheSeamToggleGroupModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theseam-ui-common-toggle-group.mjs","sources":["../../../projects/ui-common/toggle-group/toggle-group-option.directive.ts","../../../projects/ui-common/toggle-group/toggle-group.directive.ts","../../../projects/ui-common/toggle-group/toggle-group.module.ts","../../../projects/ui-common/toggle-group/theseam-ui-common-toggle-group.ts"],"sourcesContent":["import { coerceBooleanProperty } from '@angular/cdk/coercion'\nimport { ChangeDetectorRef, Directive, ElementRef, EventEmitter, HostBinding, Input, Output } from '@angular/core'\n\n@Directive({\n selector: '[seamToggleGroupOption]',\n exportAs: 'seamToggleGroupOption'\n})\nexport class ToggleGroupOptionDirective {\n\n @Input() seamToggleGroupOption: string | undefined | null\n\n @Input()\n get selected(): boolean { return this._selected }\n set selected(value: boolean) {\n if (!this._canUnselect && !value) { return }\n this._selected = coerceBooleanProperty(value)\n this.selectionChange.emit(this._selected)\n this._cdr.markForCheck()\n }\n private _selected = false\n\n /** Internal use only for now. */\n _canUnselect = true\n\n @Output() selectionChange = new EventEmitter<boolean>()\n\n @HostBinding('class.lib-toggle-group-option-selected') get _checkioSelectedClass() {\n return this._selected\n }\n\n constructor(\n private readonly _elementRef: ElementRef,\n private readonly _cdr: ChangeDetectorRef\n ) { }\n\n get value(): string | undefined | null {\n return this.seamToggleGroupOption\n }\n\n}\n","import { BooleanInput, coerceArray } from '@angular/cdk/coercion'\nimport { AfterViewInit, ContentChildren, Directive, EventEmitter, forwardRef, Input, OnDestroy, Output, QueryList } from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { combineLatest, from, Observable, of, Subject } from 'rxjs'\nimport { filter, map, startWith, switchMap, takeUntil, tap } from 'rxjs/operators'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\nimport { ToggleGroupOptionDirective } from './toggle-group-option.directive'\n\nexport const TOGGLE_GROUP_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ToggleGroupDirective),\n multi: true,\n}\n\n@Directive({\n selector: '[seamToggleGroup]',\n exportAs: 'seamToggleGroup',\n providers: [ TOGGLE_GROUP_VALUE_ACCESSOR ]\n})\nexport class ToggleGroupDirective implements OnDestroy, AfterViewInit, ControlValueAccessor {\n static ngAcceptInputType_disabled: BooleanInput\n static ngAcceptInputType_multiple: BooleanInput\n static ngAcceptInputType_selectionToggleable: BooleanInput\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('value') val: string | string[] | undefined | null\n\n @Input() @InputBoolean() disabled = false\n @Input() @InputBoolean() multiple = false\n @Input() @InputBoolean() selectionToggleable = true\n\n // TODO: Add min/max selected inputs to make toggling better for multi select\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() readonly change = new EventEmitter<string | string[] | undefined | null>()\n\n @ContentChildren(ToggleGroupOptionDirective) optionDirectives?: QueryList<ToggleGroupOptionDirective>\n\n public options?: Observable<ToggleGroupOptionDirective[]>\n\n onChange: any\n onTouched: any\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this._updateDirectiveStates()\n\n if (this.optionDirectives) {\n this.options = this.optionDirectives.changes\n .pipe(takeUntil(this._ngUnsubscribe))\n .pipe(startWith(this.optionDirectives))\n .pipe(map(v => v.toArray() as ToggleGroupOptionDirective[]))\n\n this.options.pipe(switchMap(opts => {\n const _tmp = of(undefined)\n if (opts) {\n const _v: Observable<boolean>[] = []\n for (const opt of opts) {\n _v.push(opt.selectionChange.pipe(\n filter(v => opt.selected !== this.isSelected(opt.value)),\n tap(v => {\n if (this.isSelected(opt.value)) {\n this.unselectValue(opt.value)\n } else {\n this.selectValue(opt.value)\n }\n })\n ))\n }\n return combineLatest(_v)\n }\n return _tmp\n })).subscribe()\n }\n\n this.change\n .pipe(switchMap(_ => from(this.optionDirectives?.toArray() || [])\n .pipe(tap(opt => { this._updateDirectiveState(opt) }))\n ))\n .subscribe()\n })\n\n this.optionDirectives?.changes.subscribe(() => this._updateDirectiveStates())\n }\n\n get value(): string | string[] | undefined | null {\n return this.val\n }\n\n set value(value: string | string[] | undefined | null) {\n const _value = this.multiple\n ? value !== null && value !== undefined\n ? coerceArray(value)\n : value\n : value\n\n this.val = (this.multiple) ? [ ...(_value as string[] || []) ] : _value || ''\n this.change.emit(this.val)\n if (this.onChange) { this.onChange(_value) }\n if (this.onTouched) { this.onTouched() }\n }\n\n writeValue(value: any): void {\n this.value = value\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled\n }\n\n isSelected(value: string | undefined | null) {\n if (this.multiple) {\n const idx = (this.value as string[] || []).findIndex(v => v === value)\n return idx !== -1\n } else {\n // TODO: Clean this up when the directive no longer allows array value type when multiple is false\n const v = Array.isArray(this.value) && this.value.length === 1\n ? this.value[0]\n : this.value\n return v === value\n }\n }\n\n unselectValue(value: string | undefined | null) {\n if (this.multiple) {\n this.value = (this.value as string[] || []).filter(v => v !== value)\n } else {\n this.value = undefined\n }\n }\n\n selectValue(value: string | undefined | null) {\n if (this.multiple) {\n const _value = [ ...(this.value as string[] || []) ]\n this.value = value ? [ ..._value, value ] : _value\n } else {\n this.value = value\n }\n }\n\n getOptionDirectiveByValue(value: string) {\n if (!this.optionDirectives || this.optionDirectives.length < 1) {\n return null\n }\n\n return this.optionDirectives.toArray()\n .find(opt => opt.value === value)\n }\n\n private _updateDirectiveStates(): void {\n if (this.optionDirectives) {\n for (const opt of this.optionDirectives.toArray()) {\n this._updateDirectiveState(opt)\n }\n }\n }\n\n private _updateDirectiveState(opt: ToggleGroupOptionDirective): void {\n const selected = this.isSelected(opt.value)\n if (opt.selected !== selected) {\n if (!opt._canUnselect) {\n opt._canUnselect = true\n }\n opt.selected = selected\n }\n if (!this.selectionToggleable) {\n if (!this.multiple || (this.value && this.value.length <= 1)) {\n if (opt.selected) {\n if (opt._canUnselect) {\n opt._canUnselect = false\n }\n } else {\n if (!opt._canUnselect) {\n opt._canUnselect = true\n }\n }\n } else {\n if (!opt._canUnselect) {\n opt._canUnselect = true\n }\n }\n }\n }\n\n}\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { ReactiveFormsModule } from '@angular/forms'\n\nimport { ToggleGroupOptionDirective } from './toggle-group-option.directive'\nimport { ToggleGroupDirective } from './toggle-group.directive'\n\n@NgModule({\n declarations: [\n ToggleGroupDirective,\n ToggleGroupOptionDirective\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule\n ],\n exports: [\n ToggleGroupDirective,\n ToggleGroupOptionDirective\n ]\n})\nexport class TheSeamToggleGroupModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theseam/ui-common",
3
- "version": "0.4.21",
3
+ "version": "0.4.23",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": "^15.0.0",
6
6
  "@angular/common": "^15.0.0",
@@ -9,7 +9,10 @@ export declare class TabbedComponent implements OnInit, AfterContentInit, OnDest
9
9
  private route;
10
10
  private _direction;
11
11
  private _hideTabs;
12
- tabbedItems?: QueryList<TabbedItemComponent>;
12
+ set tabbedItems(val: QueryList<TabbedItemComponent> | undefined);
13
+ get tabbedItems(): QueryList<TabbedItemComponent> | undefined;
14
+ private readonly _tabbedItems;
15
+ readonly tabbedItems$: import("rxjs").Observable<QueryList<TabbedItemComponent> | undefined>;
13
16
  tabChanged: EventEmitter<TabbedItemComponent>;
14
17
  set direction(val: TabsDirection);
15
18
  get direction(): TabsDirection;
@@ -18,9 +21,11 @@ export declare class TabbedComponent implements OnInit, AfterContentInit, OnDest
18
21
  onlyRouteContent: boolean;
19
22
  get selectedTab(): TabbedItemComponent | undefined;
20
23
  set selectedTab(tab: TabbedItemComponent | undefined);
21
- private _selectedTab;
22
- private _activeTabNameTimeout;
24
+ private readonly _selectedTab;
25
+ readonly selectedTab$: import("rxjs").Observable<TabbedItemComponent | undefined>;
23
26
  set activeTabName(val: string);
27
+ private readonly _activeTabName;
28
+ private readonly activeTabName$;
24
29
  constructor(tabbedService: TabbedService, router: Router, route: ActivatedRoute);
25
30
  ngOnInit(): void;
26
31
  ngOnDestroy(): void;
@@ -33,7 +38,7 @@ export declare class TabbedComponent implements OnInit, AfterContentInit, OnDest
33
38
  * TODO: Make more generic, so that the name isn't the only way
34
39
  * to select a tab
35
40
  */
36
- selectTab(name: string): void;
41
+ selectTab(name?: string): void;
37
42
  static ɵfac: i0.ɵɵFactoryDeclaration<TabbedComponent, never>;
38
43
  static ɵcmp: i0.ɵɵComponentDeclaration<TabbedComponent, "seam-tabbed", never, { "direction": "direction"; "hideTabs": "hideTabs"; "onlyRouteContent": "onlyRouteContent"; "activeTabName": "activeTabName"; }, { "tabChanged": "tabChanged"; }, ["tabbedItems"], never, false, never>;
39
44
  }