@mintplayer/ng-bootstrap 15.21.0 → 15.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dock/src/dock/dock.component.d.ts +8 -1
  2. package/dock/src/dock-pane-renderer/dock-pane-renderer.component.d.ts +4 -1
  3. package/dock/src/dock-panel/dock-panel.component.d.ts +5 -3
  4. package/dock/src/dock-panel-header/dock-panel-header.component.d.ts +4 -1
  5. package/dock/src/panes/floating-pane.d.ts +1 -0
  6. package/dock/src/panes/tab-group-pane.d.ts +2 -1
  7. package/esm2020/dock/src/dock/dock.component.mjs +45 -10
  8. package/esm2020/dock/src/dock-pane-renderer/dock-pane-renderer.component.mjs +9 -7
  9. package/esm2020/dock/src/dock-panel/dock-panel.component.mjs +17 -12
  10. package/esm2020/dock/src/dock-panel-header/dock-panel-header.component.mjs +28 -9
  11. package/esm2020/dock/src/panes/floating-pane.mjs +4 -1
  12. package/esm2020/dock/src/panes/tab-group-pane.mjs +1 -1
  13. package/esm2020/navbar/src/navbar-content/navbar-content.directive.mjs +4 -4
  14. package/esm2020/tab-control/src/index.mjs +3 -1
  15. package/esm2020/tab-control/src/tab-control/tab-control.component.mjs +17 -5
  16. package/esm2020/tab-control/src/tab-control.module.mjs +8 -3
  17. package/esm2020/tab-control/src/tab-page/tab-page.component.mjs +5 -4
  18. package/esm2020/tab-control/src/tab-page-header/tab-page-header.directive.mjs +16 -0
  19. package/esm2020/tab-control/src/tabs-position.mjs +2 -0
  20. package/fesm2015/mintplayer-ng-bootstrap-dock.mjs +92 -37
  21. package/fesm2015/mintplayer-ng-bootstrap-dock.mjs.map +1 -1
  22. package/fesm2015/mintplayer-ng-bootstrap-navbar.mjs +3 -3
  23. package/fesm2015/mintplayer-ng-bootstrap-navbar.mjs.map +1 -1
  24. package/fesm2015/mintplayer-ng-bootstrap-tab-control.mjs +40 -10
  25. package/fesm2015/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -1
  26. package/fesm2020/mintplayer-ng-bootstrap-dock.mjs +92 -36
  27. package/fesm2020/mintplayer-ng-bootstrap-dock.mjs.map +1 -1
  28. package/fesm2020/mintplayer-ng-bootstrap-navbar.mjs +3 -3
  29. package/fesm2020/mintplayer-ng-bootstrap-navbar.mjs.map +1 -1
  30. package/fesm2020/mintplayer-ng-bootstrap-tab-control.mjs +40 -10
  31. package/fesm2020/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -1
  32. package/navbar/src/navbar-content/navbar-content.directive.d.ts +1 -1
  33. package/package.json +1 -1
  34. package/tab-control/src/index.d.ts +2 -0
  35. package/tab-control/src/tab-control/tab-control.component.d.ts +7 -1
  36. package/tab-control/src/tab-control.module.d.ts +6 -5
  37. package/tab-control/src/tab-page/tab-page.component.d.ts +3 -2
  38. package/tab-control/src/tab-page-header/tab-page-header.directive.d.ts +8 -0
  39. package/tab-control/src/tabs-position.d.ts +1 -0
@@ -20,6 +20,9 @@ export class BsTabControlComponent {
20
20
  this.destroyed$ = new Subject();
21
21
  //#region SelectFirstTab
22
22
  this.selectFirstTab$ = new BehaviorSubject(true);
23
+ //#endregion
24
+ //#region TabsPosition
25
+ this.tabsPosition$ = new BehaviorSubject('top');
23
26
  this.tabControlId$ = new BehaviorSubject(++BsTabControlComponent.tabControlCounter);
24
27
  this.tabControlName$ = this.tabControlId$.pipe(map((id) => `bs-tab-control-${id}`));
25
28
  this.element = element;
@@ -31,12 +34,13 @@ export class BsTabControlComponent {
31
34
  .subscribe(([tabPages, activeTab, selectFirstTab]) => {
32
35
  const notDisabled = tabPages.filter((tp) => !tp.disabled);
33
36
  if (notDisabled.length > 0) {
34
- this.activeTab$.next(notDisabled[0]);
37
+ setTimeout(() => this.activeTab$.next(notDisabled[0]));
35
38
  }
36
39
  });
40
+ this.topTabs$ = this.tabsPosition$.pipe(map(position => position === 'top'));
41
+ this.bottomTabs$ = this.tabsPosition$.pipe(map(position => position === 'bottom'));
37
42
  }
38
43
  set setTabPages(value) {
39
- console.log('tabpages', value);
40
44
  this.tabPages$.next(value);
41
45
  const missing = value.filter(tp => !this.orderedTabPages.includes(tp));
42
46
  this.orderedTabPages = this.orderedTabPages.concat(missing);
@@ -50,6 +54,12 @@ export class BsTabControlComponent {
50
54
  set selectFirstTab(value) {
51
55
  this.selectFirstTab$.next(value);
52
56
  }
57
+ get tabsPosition() {
58
+ return this.tabsPosition$.value;
59
+ }
60
+ set tabsPosition(value) {
61
+ this.tabsPosition$.next(value);
62
+ }
53
63
  //#endregion
54
64
  setActiveTab(tab) {
55
65
  if (!tab.disabled) {
@@ -75,10 +85,10 @@ export class BsTabControlComponent {
75
85
  }
76
86
  BsTabControlComponent.tabControlCounter = 0;
77
87
  BsTabControlComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BsTabControlComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
78
- BsTabControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: BsTabControlComponent, selector: "bs-tab-control", inputs: { border: "border", restrictDragging: "restrictDragging", selectFirstTab: "selectFirstTab" }, host: { properties: { "class.d-block": "this.dBlock", "class.position-relative": "this.positionRelative" } }, queries: [{ propertyName: "setTabPages", predicate: BsTabPageComponent }], ngImport: i0, template: "<ng-container *bsLet=\"(activeTab$ | async) as activeTab\">\n\t<div class=\"overflow-hidden position-absolute mw-100 tsc\">\n\t\t<ul cdkDropList #list #tabList=\"cdkDropList\"\n\t\t\t[cdkDropListData]=\"tabPages$ | async\"\n\t\t\t[cdkDropListConnectedTo]=\"[]\"\n\t\t\t[cdkDropListOrientation]=\"'horizontal'\"\n\t\t\t(cdkDropListDropped)=\"moveTab($event)\"\n\t\t\tclass=\"nav nav-tabs flex-nowrap overflow-x-auto overflow-y-hidden\">\n\t\t\t<ng-container *ngFor=\"let tab of orderedTabPages\">\n\t\t\t\t<span class=\"nav-item\" (click)=\"setActiveTab(tab)\" *ngIf=\"!!tab.headerTemplate\" cdkDrag [cdkDragBoundary]=\"dragBoundarySelector\" [cdkDragStartDelay]=\"1000\">\n\t\t\t\t\t<label [for]=\"tab.tabName$ | async\" class=\"nav-link text-nowrap cursor-pointer\" [class.active]=\"activeTab === tab\" [class.disabled]=\"tab.disabled\" [attr.aria-current]=\"activeTab === tab ? 'page' : null\" [attr.aria-disabled]=\"tab.disabled\">\n\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"tab.headerTemplate\"></ng-container>\n\t\t\t\t\t</label>\n\t\t\t\t</span>\n\t\t\t</ng-container>\n\t\t</ul>\n\t</div>\n\t<div class=\"tab-content\" bsNoNoscript [class.border]=\"border && activeTab\" [class.border-top]=\"border && !activeTab\">\n\t\t<ng-content></ng-content>\n\t</div>\n</ng-container>", styles: [":host ::ng-deep .nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: #6c757d;display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}:host ::ng-deep .nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){:host ::ng-deep .nav-link{transition:none}}:host ::ng-deep .nav-link:hover,:host ::ng-deep .nav-link:focus{color:var(--bs-nav-link-hover-color)}:host ::ng-deep .nav-link.disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}:host ::ng-deep .nav-tabs{--bs-nav-tabs-border-width: 1px;--bs-nav-tabs-border-color: #dee2e6;--bs-nav-tabs-border-radius: .375rem;--bs-nav-tabs-link-hover-border-color: #e9ecef #e9ecef #dee2e6;--bs-nav-tabs-link-active-color: #495057;--bs-nav-tabs-link-active-bg: #fff;--bs-nav-tabs-link-active-border-color: #dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}:host ::ng-deep .nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));background:none;border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}:host ::ng-deep .nav-tabs .nav-link:hover,:host ::ng-deep .nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}:host ::ng-deep .nav-tabs .nav-link.disabled,:host ::ng-deep .nav-tabs .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}:host ::ng-deep .nav-tabs .nav-link.active,:host ::ng-deep .nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}:host ::ng-deep .nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}:host ::ng-deep .nav-pills{--bs-nav-pills-border-radius: .375rem;--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #0d6efd}:host ::ng-deep .nav-pills .nav-link{background:none;border:0;border-radius:var(--bs-nav-pills-border-radius)}:host ::ng-deep .nav-pills .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}:host ::ng-deep .nav-pills .nav-link.active,:host ::ng-deep .nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}:host ::ng-deep .nav-fill>.nav-link,:host ::ng-deep .nav-fill .nav-item{flex:1 1 auto;text-align:center}:host ::ng-deep .nav-justified>.nav-link,:host ::ng-deep .nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}:host ::ng-deep .nav-fill .nav-item .nav-link,:host ::ng-deep .nav-justified .nav-item .nav-link{width:100%}:host ::ng-deep .tab-content>.tab-pane{display:none}:host ::ng-deep .tab-content>.active{display:block}:host ::ng-deep .tab-content{margin-top:-1px}.tsc{max-height:41px;margin-top:-41px;top:2px}.tab-content{margin-top:48px}.tab-content.noscript::ng-deep>bs-tab-page>.tab-page-content{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important;margin-top:-1px}.overflow-y-hidden{overflow-y:hidden}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i3.BsLetDirective, selector: "[bsLet]", inputs: ["bsLet"] }, { kind: "directive", type: i4.BsNoNoscriptDirective, selector: "[bsNoNoscript]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
88
+ BsTabControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: BsTabControlComponent, selector: "bs-tab-control", inputs: { border: "border", restrictDragging: "restrictDragging", selectFirstTab: "selectFirstTab", tabsPosition: "tabsPosition" }, host: { properties: { "class.d-block": "this.dBlock", "class.position-relative": "this.positionRelative" } }, queries: [{ propertyName: "setTabPages", predicate: BsTabPageComponent }], ngImport: i0, template: "<ng-container *bsLet=\"(activeTab$ | async) as activeTab\">\n\t<div class=\"overflow-hidden mw-100 tsc\" *ngIf=\"topTabs$ | async\">\n\t\t<ul cdkDropList #list #tabList=\"cdkDropList\"\n\t\t\t[cdkDropListData]=\"tabPages$ | async\"\n\t\t\t[cdkDropListConnectedTo]=\"[]\"\n\t\t\t[cdkDropListOrientation]=\"'horizontal'\"\n\t\t\t(cdkDropListDropped)=\"moveTab($event)\"\n\t\t\tclass=\"nav nav-tabs flex-nowrap overflow-x-auto overflow-y-hidden\">\n\t\t\t<ng-container *ngFor=\"let tab of orderedTabPages\">\n\t\t\t\t<span class=\"nav-item\" (click)=\"setActiveTab(tab)\" *ngIf=\"!!tab.headerTemplate\" cdkDrag [cdkDragBoundary]=\"dragBoundarySelector\" [cdkDragStartDelay]=\"1000\">\n\t\t\t\t\t<label [for]=\"tab.tabName$ | async\" class=\"nav-link text-nowrap cursor-pointer\" [class.active]=\"activeTab === tab\" [class.disabled]=\"tab.disabled\" [attr.aria-current]=\"activeTab === tab ? 'page' : null\" [attr.aria-disabled]=\"tab.disabled\">\n\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"tab.headerTemplate.template\"></ng-container>\n\t\t\t\t\t</label>\n\t\t\t\t</span>\n\t\t\t</ng-container>\n\t\t</ul>\n\t</div>\n\t<div class=\"tab-content flex-grow-1\" bsNoNoscript [class.border]=\"border && activeTab\" [class.border-top]=\"border && !activeTab\">\n\t\t<ng-content></ng-content>\n\t</div>\n\t<div class=\"overflow-hidden mw-100 tsc bottom-tabs\" *ngIf=\"bottomTabs$ | async\">\n\t\t<ul cdkDropList #list #tabList=\"cdkDropList\"\n\t\t\t[cdkDropListData]=\"tabPages$ | async\"\n\t\t\t[cdkDropListConnectedTo]=\"[]\"\n\t\t\t[cdkDropListOrientation]=\"'horizontal'\"\n\t\t\t(cdkDropListDropped)=\"moveTab($event)\"\n\t\t\tclass=\"nav nav-tabs flex-nowrap overflow-x-auto overflow-y-hidden\">\n\t\t\t<ng-container *ngFor=\"let tab of orderedTabPages\">\n\t\t\t\t<span class=\"nav-item\" (click)=\"setActiveTab(tab)\" *ngIf=\"!!tab.headerTemplate\" cdkDrag [cdkDragBoundary]=\"dragBoundarySelector\" [cdkDragStartDelay]=\"1000\">\n\t\t\t\t\t<label [for]=\"tab.tabName$ | async\" class=\"nav-link text-nowrap cursor-pointer\" [class.active]=\"activeTab === tab\" [class.disabled]=\"tab.disabled\" [attr.aria-current]=\"activeTab === tab ? 'page' : null\" [attr.aria-disabled]=\"tab.disabled\">\n\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"tab.headerTemplate.template\"></ng-container>\n\t\t\t\t\t</label>\n\t\t\t\t</span>\n\t\t\t</ng-container>\n\t\t</ul>\n\t</div>\n</ng-container>", styles: [":host ::ng-deep .nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: #6c757d;display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}:host ::ng-deep .nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){:host ::ng-deep .nav-link{transition:none}}:host ::ng-deep .nav-link:hover,:host ::ng-deep .nav-link:focus{color:var(--bs-nav-link-hover-color)}:host ::ng-deep .nav-link.disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}:host ::ng-deep .nav-tabs{--bs-nav-tabs-border-width: 1px;--bs-nav-tabs-border-color: #dee2e6;--bs-nav-tabs-border-radius: .375rem;--bs-nav-tabs-link-hover-border-color: #e9ecef #e9ecef #dee2e6;--bs-nav-tabs-link-active-color: #495057;--bs-nav-tabs-link-active-bg: #fff;--bs-nav-tabs-link-active-border-color: #dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}:host ::ng-deep .nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));background:none;border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}:host ::ng-deep .nav-tabs .nav-link:hover,:host ::ng-deep .nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}:host ::ng-deep .nav-tabs .nav-link.disabled,:host ::ng-deep .nav-tabs .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}:host ::ng-deep .nav-tabs .nav-link.active,:host ::ng-deep .nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}:host ::ng-deep .nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}:host ::ng-deep .nav-pills{--bs-nav-pills-border-radius: .375rem;--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #0d6efd}:host ::ng-deep .nav-pills .nav-link{background:none;border:0;border-radius:var(--bs-nav-pills-border-radius)}:host ::ng-deep .nav-pills .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}:host ::ng-deep .nav-pills .nav-link.active,:host ::ng-deep .nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}:host ::ng-deep .nav-fill>.nav-link,:host ::ng-deep .nav-fill .nav-item{flex:1 1 auto;text-align:center}:host ::ng-deep .nav-justified>.nav-link,:host ::ng-deep .nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}:host ::ng-deep .nav-fill .nav-item .nav-link,:host ::ng-deep .nav-justified .nav-item .nav-link{width:100%}:host ::ng-deep .tab-content>.tab-pane{display:none}:host ::ng-deep .tab-content>.active{display:block}:host ::ng-deep .tab-content{margin-top:-1px}.tsc{max-height:41px;top:2px;z-index:10;flex-shrink:0}.tsc .nav.nav-tabs{border-bottom:0}.tsc.bottom-tabs{margin-top:-1px}.tsc.bottom-tabs .nav.nav-tabs{border-bottom-width:0px}.tsc.bottom-tabs .nav.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.tsc.bottom-tabs .nav.nav-tabs .nav-item{margin-bottom:2px;margin-top:-1px}.tsc.bottom-tabs .nav.nav-tabs .nav-item.show .nav-link,.tsc.bottom-tabs .nav.nav-tabs .nav-link.active{border-color:#fff #dee2e6 #dee2e6 #dee2e6}.tab-content.noscript::ng-deep>bs-tab-page>.tab-page-content{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important;margin-top:-1px}.overflow-y-hidden{overflow-y:hidden}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i3.BsLetDirective, selector: "[bsLet]", inputs: ["bsLet"] }, { kind: "directive", type: i4.BsNoNoscriptDirective, selector: "[bsNoNoscript]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
79
89
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BsTabControlComponent, decorators: [{
80
90
  type: Component,
81
- args: [{ selector: 'bs-tab-control', template: "<ng-container *bsLet=\"(activeTab$ | async) as activeTab\">\n\t<div class=\"overflow-hidden position-absolute mw-100 tsc\">\n\t\t<ul cdkDropList #list #tabList=\"cdkDropList\"\n\t\t\t[cdkDropListData]=\"tabPages$ | async\"\n\t\t\t[cdkDropListConnectedTo]=\"[]\"\n\t\t\t[cdkDropListOrientation]=\"'horizontal'\"\n\t\t\t(cdkDropListDropped)=\"moveTab($event)\"\n\t\t\tclass=\"nav nav-tabs flex-nowrap overflow-x-auto overflow-y-hidden\">\n\t\t\t<ng-container *ngFor=\"let tab of orderedTabPages\">\n\t\t\t\t<span class=\"nav-item\" (click)=\"setActiveTab(tab)\" *ngIf=\"!!tab.headerTemplate\" cdkDrag [cdkDragBoundary]=\"dragBoundarySelector\" [cdkDragStartDelay]=\"1000\">\n\t\t\t\t\t<label [for]=\"tab.tabName$ | async\" class=\"nav-link text-nowrap cursor-pointer\" [class.active]=\"activeTab === tab\" [class.disabled]=\"tab.disabled\" [attr.aria-current]=\"activeTab === tab ? 'page' : null\" [attr.aria-disabled]=\"tab.disabled\">\n\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"tab.headerTemplate\"></ng-container>\n\t\t\t\t\t</label>\n\t\t\t\t</span>\n\t\t\t</ng-container>\n\t\t</ul>\n\t</div>\n\t<div class=\"tab-content\" bsNoNoscript [class.border]=\"border && activeTab\" [class.border-top]=\"border && !activeTab\">\n\t\t<ng-content></ng-content>\n\t</div>\n</ng-container>", styles: [":host ::ng-deep .nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: #6c757d;display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}:host ::ng-deep .nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){:host ::ng-deep .nav-link{transition:none}}:host ::ng-deep .nav-link:hover,:host ::ng-deep .nav-link:focus{color:var(--bs-nav-link-hover-color)}:host ::ng-deep .nav-link.disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}:host ::ng-deep .nav-tabs{--bs-nav-tabs-border-width: 1px;--bs-nav-tabs-border-color: #dee2e6;--bs-nav-tabs-border-radius: .375rem;--bs-nav-tabs-link-hover-border-color: #e9ecef #e9ecef #dee2e6;--bs-nav-tabs-link-active-color: #495057;--bs-nav-tabs-link-active-bg: #fff;--bs-nav-tabs-link-active-border-color: #dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}:host ::ng-deep .nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));background:none;border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}:host ::ng-deep .nav-tabs .nav-link:hover,:host ::ng-deep .nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}:host ::ng-deep .nav-tabs .nav-link.disabled,:host ::ng-deep .nav-tabs .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}:host ::ng-deep .nav-tabs .nav-link.active,:host ::ng-deep .nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}:host ::ng-deep .nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}:host ::ng-deep .nav-pills{--bs-nav-pills-border-radius: .375rem;--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #0d6efd}:host ::ng-deep .nav-pills .nav-link{background:none;border:0;border-radius:var(--bs-nav-pills-border-radius)}:host ::ng-deep .nav-pills .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}:host ::ng-deep .nav-pills .nav-link.active,:host ::ng-deep .nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}:host ::ng-deep .nav-fill>.nav-link,:host ::ng-deep .nav-fill .nav-item{flex:1 1 auto;text-align:center}:host ::ng-deep .nav-justified>.nav-link,:host ::ng-deep .nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}:host ::ng-deep .nav-fill .nav-item .nav-link,:host ::ng-deep .nav-justified .nav-item .nav-link{width:100%}:host ::ng-deep .tab-content>.tab-pane{display:none}:host ::ng-deep .tab-content>.active{display:block}:host ::ng-deep .tab-content{margin-top:-1px}.tsc{max-height:41px;margin-top:-41px;top:2px}.tab-content{margin-top:48px}.tab-content.noscript::ng-deep>bs-tab-page>.tab-page-content{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important;margin-top:-1px}.overflow-y-hidden{overflow-y:hidden}\n"] }]
91
+ args: [{ selector: 'bs-tab-control', template: "<ng-container *bsLet=\"(activeTab$ | async) as activeTab\">\n\t<div class=\"overflow-hidden mw-100 tsc\" *ngIf=\"topTabs$ | async\">\n\t\t<ul cdkDropList #list #tabList=\"cdkDropList\"\n\t\t\t[cdkDropListData]=\"tabPages$ | async\"\n\t\t\t[cdkDropListConnectedTo]=\"[]\"\n\t\t\t[cdkDropListOrientation]=\"'horizontal'\"\n\t\t\t(cdkDropListDropped)=\"moveTab($event)\"\n\t\t\tclass=\"nav nav-tabs flex-nowrap overflow-x-auto overflow-y-hidden\">\n\t\t\t<ng-container *ngFor=\"let tab of orderedTabPages\">\n\t\t\t\t<span class=\"nav-item\" (click)=\"setActiveTab(tab)\" *ngIf=\"!!tab.headerTemplate\" cdkDrag [cdkDragBoundary]=\"dragBoundarySelector\" [cdkDragStartDelay]=\"1000\">\n\t\t\t\t\t<label [for]=\"tab.tabName$ | async\" class=\"nav-link text-nowrap cursor-pointer\" [class.active]=\"activeTab === tab\" [class.disabled]=\"tab.disabled\" [attr.aria-current]=\"activeTab === tab ? 'page' : null\" [attr.aria-disabled]=\"tab.disabled\">\n\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"tab.headerTemplate.template\"></ng-container>\n\t\t\t\t\t</label>\n\t\t\t\t</span>\n\t\t\t</ng-container>\n\t\t</ul>\n\t</div>\n\t<div class=\"tab-content flex-grow-1\" bsNoNoscript [class.border]=\"border && activeTab\" [class.border-top]=\"border && !activeTab\">\n\t\t<ng-content></ng-content>\n\t</div>\n\t<div class=\"overflow-hidden mw-100 tsc bottom-tabs\" *ngIf=\"bottomTabs$ | async\">\n\t\t<ul cdkDropList #list #tabList=\"cdkDropList\"\n\t\t\t[cdkDropListData]=\"tabPages$ | async\"\n\t\t\t[cdkDropListConnectedTo]=\"[]\"\n\t\t\t[cdkDropListOrientation]=\"'horizontal'\"\n\t\t\t(cdkDropListDropped)=\"moveTab($event)\"\n\t\t\tclass=\"nav nav-tabs flex-nowrap overflow-x-auto overflow-y-hidden\">\n\t\t\t<ng-container *ngFor=\"let tab of orderedTabPages\">\n\t\t\t\t<span class=\"nav-item\" (click)=\"setActiveTab(tab)\" *ngIf=\"!!tab.headerTemplate\" cdkDrag [cdkDragBoundary]=\"dragBoundarySelector\" [cdkDragStartDelay]=\"1000\">\n\t\t\t\t\t<label [for]=\"tab.tabName$ | async\" class=\"nav-link text-nowrap cursor-pointer\" [class.active]=\"activeTab === tab\" [class.disabled]=\"tab.disabled\" [attr.aria-current]=\"activeTab === tab ? 'page' : null\" [attr.aria-disabled]=\"tab.disabled\">\n\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"tab.headerTemplate.template\"></ng-container>\n\t\t\t\t\t</label>\n\t\t\t\t</span>\n\t\t\t</ng-container>\n\t\t</ul>\n\t</div>\n</ng-container>", styles: [":host ::ng-deep .nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: #6c757d;display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}:host ::ng-deep .nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){:host ::ng-deep .nav-link{transition:none}}:host ::ng-deep .nav-link:hover,:host ::ng-deep .nav-link:focus{color:var(--bs-nav-link-hover-color)}:host ::ng-deep .nav-link.disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}:host ::ng-deep .nav-tabs{--bs-nav-tabs-border-width: 1px;--bs-nav-tabs-border-color: #dee2e6;--bs-nav-tabs-border-radius: .375rem;--bs-nav-tabs-link-hover-border-color: #e9ecef #e9ecef #dee2e6;--bs-nav-tabs-link-active-color: #495057;--bs-nav-tabs-link-active-bg: #fff;--bs-nav-tabs-link-active-border-color: #dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}:host ::ng-deep .nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));background:none;border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}:host ::ng-deep .nav-tabs .nav-link:hover,:host ::ng-deep .nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}:host ::ng-deep .nav-tabs .nav-link.disabled,:host ::ng-deep .nav-tabs .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}:host ::ng-deep .nav-tabs .nav-link.active,:host ::ng-deep .nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}:host ::ng-deep .nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}:host ::ng-deep .nav-pills{--bs-nav-pills-border-radius: .375rem;--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #0d6efd}:host ::ng-deep .nav-pills .nav-link{background:none;border:0;border-radius:var(--bs-nav-pills-border-radius)}:host ::ng-deep .nav-pills .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}:host ::ng-deep .nav-pills .nav-link.active,:host ::ng-deep .nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}:host ::ng-deep .nav-fill>.nav-link,:host ::ng-deep .nav-fill .nav-item{flex:1 1 auto;text-align:center}:host ::ng-deep .nav-justified>.nav-link,:host ::ng-deep .nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}:host ::ng-deep .nav-fill .nav-item .nav-link,:host ::ng-deep .nav-justified .nav-item .nav-link{width:100%}:host ::ng-deep .tab-content>.tab-pane{display:none}:host ::ng-deep .tab-content>.active{display:block}:host ::ng-deep .tab-content{margin-top:-1px}.tsc{max-height:41px;top:2px;z-index:10;flex-shrink:0}.tsc .nav.nav-tabs{border-bottom:0}.tsc.bottom-tabs{margin-top:-1px}.tsc.bottom-tabs .nav.nav-tabs{border-bottom-width:0px}.tsc.bottom-tabs .nav.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.tsc.bottom-tabs .nav.nav-tabs .nav-item{margin-bottom:2px;margin-top:-1px}.tsc.bottom-tabs .nav.nav-tabs .nav-item.show .nav-link,.tsc.bottom-tabs .nav.nav-tabs .nav-link.active{border-color:#fff #dee2e6 #dee2e6 #dee2e6}.tab-content.noscript::ng-deep>bs-tab-page>.tab-page-content{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important;margin-top:-1px}.overflow-y-hidden{overflow-y:hidden}\n"] }]
82
92
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { dBlock: [{
83
93
  type: HostBinding,
84
94
  args: ['class.d-block']
@@ -94,5 +104,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImpor
94
104
  type: Input
95
105
  }], selectFirstTab: [{
96
106
  type: Input
107
+ }], tabsPosition: [{
108
+ type: Input
97
109
  }] } });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWNvbnRyb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC90YWItY29udHJvbC9zcmMvdGFiLWNvbnRyb2wvdGFiLWNvbnRyb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC90YWItY29udHJvbC9zcmMvdGFiLWNvbnRyb2wvdGFiLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGVBQWUsRUFBcUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7QUFPcEUsTUFBTSxPQUFPLHFCQUFxQjtJQUVoQyxZQUFZLE9BQXdCO1FBaUJOLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDSixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFPaEQsV0FBTSxHQUFHLElBQUksQ0FBQztRQUk5Qix5QkFBb0IsR0FBRyxFQUFFLENBQUM7UUFFMUIsY0FBUyxHQUFHLElBQUksZUFBZSxDQUF1QyxJQUFJLENBQUMsQ0FBQztRQUM1RSxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQTRCLElBQUksQ0FBQyxDQUFDO1FBQ2xFLG9CQUFlLEdBQXlCLEVBQUUsQ0FBQztRQUkzQyxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsZUFBVSxHQUFHLElBQUks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QyxTQUFTLEVBQUU7WUFDekMsZUFBZSxDQUNiLElBQUksQ0FBQyxlQUFlLEVBQ3BCLEVBQUUsQ0FBQyxhQUFhLEVBQ2hCLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNwQjthQUFNO1lBQ0wscUJBQXFCO1lBQ3JCLCtCQUErQjtZQUMvQix1QkFBdUI7WUFDdkIsc0JBQXNCO1lBQ3RCLHNCQUFzQjtTQUN2QjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7QUF0Q00sdUNBQWlCLEdBQUcsQ0FBQyxDQUFDO2tIQXRDbEIscUJBQXFCO3NHQUFyQixxQkFBcUIsc1NBcUJmLGtCQUFrQiw2QkMvQnJDLHV3Q0FvQmU7MkZEVkYscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGdCQUFnQjtpR0F1QkksTUFBTTtzQkFBbkMsV0FBVzt1QkFBQyxlQUFlO2dCQUNZLGdCQUFnQjtzQkFBdkQsV0FBVzt1QkFBQyx5QkFBeUI7Z0JBQ0csV0FBVztzQkFBbkQsZUFBZTt1QkFBQyxrQkFBa0I7Z0JBTW5CLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ2MsZ0JBQWdCO3NCQUFuQyxLQUFLO2dCQW1CYyxjQUFjO3NCQUFqQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSwgdHJhbnNmZXJBcnJheUl0ZW0gfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgUXVlcnlMaXN0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQnNUYWJQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFiLXBhZ2UvdGFiLXBhZ2UuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnMtdGFiLWNvbnRyb2wnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFiLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWItY29udHJvbC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEJzVGFiQ29udHJvbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudDogRWxlbWVudFJlZjxhbnk+KSB7XG4gICAgdGhpcy50YWJDb250cm9sSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KCsrQnNUYWJDb250cm9sQ29tcG9uZW50LnRhYkNvbnRyb2xDb3VudGVyKTtcbiAgICB0aGlzLnRhYkNvbnRyb2xOYW1lJCA9IHRoaXMudGFiQ29udHJvbElkJC5waXBlKG1hcCgoaWQpID0+IGBicy10YWItY29udHJvbC0ke2lkfWApKTtcbiAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMudGFiUGFnZXMkLCB0aGlzLmFjdGl2ZVRhYiQsIHRoaXMuc2VsZWN0Rmlyc3RUYWIkXSlcbiAgICAgIC5waXBlKGZpbHRlcigoW3RhYlBhZ2VzLCBhY3RpdmVUYWIsIHNlbGVjdEZpcnN0VGFiXSkgPT4ge1xuICAgICAgICByZXR1cm4gISF0YWJQYWdlcyAmJiAoIWFjdGl2ZVRhYiB8fCAhdGFiUGFnZXMuc29tZSh0cCA9PiB0cCA9PT0gYWN0aXZlVGFiKSkgJiYgc2VsZWN0Rmlyc3RUYWI7XG4gICAgICB9KSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZSgoW3RhYlBhZ2VzLCBhY3RpdmVUYWIsIHNlbGVjdEZpcnN0VGFiXSkgPT4ge1xuICAgICAgICBjb25zdCBub3REaXNhYmxlZCA9IHRhYlBhZ2VzIS5maWx0ZXIoKHRwKSA9PiAhdHAuZGlzYWJsZWQpO1xuICAgICAgICBpZiAobm90RGlzYWJsZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuYWN0aXZlVGFiJC5uZXh0KG5vdERpc2FibGVkWzBdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmQtYmxvY2snKSBkQmxvY2sgPSB0cnVlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBvc2l0aW9uLXJlbGF0aXZlJykgcG9zaXRpb25SZWxhdGl2ZSA9IHRydWU7XG4gIEBDb250ZW50Q2hpbGRyZW4oQnNUYWJQYWdlQ29tcG9uZW50KSBzZXQgc2V0VGFiUGFnZXModmFsdWU6IFF1ZXJ5TGlzdDxCc1RhYlBhZ2VDb21wb25lbnQ+KSB7XG4gICAgY29uc29sZS5sb2coJ3RhYnBhZ2VzJywgdmFsdWUpO1xuICAgIHRoaXMudGFiUGFnZXMkLm5leHQodmFsdWUpO1xuICAgIGNvbnN0IG1pc3NpbmcgPSB2YWx1ZS5maWx0ZXIodHAgPT4gIXRoaXMub3JkZXJlZFRhYlBhZ2VzLmluY2x1ZGVzKHRwKSk7XG4gICAgdGhpcy5vcmRlcmVkVGFiUGFnZXMgPSB0aGlzLm9yZGVyZWRUYWJQYWdlcy5jb25jYXQobWlzc2luZyk7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIGJvcmRlciA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcmVzdHJpY3REcmFnZ2luZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZHJhZ0JvdW5kYXJ5U2VsZWN0b3IgPSB2YWx1ZSA/ICd1bCcgOiAnJztcbiAgfVxuICBkcmFnQm91bmRhcnlTZWxlY3RvciA9ICcnO1xuICBlbGVtZW50OiBFbGVtZW50UmVmPGFueT47XG4gIHRhYlBhZ2VzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UXVlcnlMaXN0PEJzVGFiUGFnZUNvbXBvbmVudD4gfCBudWxsPihudWxsKTtcbiAgYWN0aXZlVGFiJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QnNUYWJQYWdlQ29tcG9uZW50IHwgbnVsbD4obnVsbCk7XG4gIG9yZGVyZWRUYWJQYWdlczogQnNUYWJQYWdlQ29tcG9uZW50W10gPSBbXTtcbiAgdGFiQ29udHJvbElkJDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj47XG4gIHRhYkNvbnRyb2xOYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBzdGF0aWMgdGFiQ29udHJvbENvdW50ZXIgPSAwO1xuICB0YWJDb3VudGVyID0gMDtcbiAgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0KClcblxuICAvLyNyZWdpb24gU2VsZWN0Rmlyc3RUYWJcbiAgc2VsZWN0Rmlyc3RUYWIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHVibGljIGdldCBzZWxlY3RGaXJzdFRhYigpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RGaXJzdFRhYiQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCBzZWxlY3RGaXJzdFRhYih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2VsZWN0Rmlyc3RUYWIkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIHNldEFjdGl2ZVRhYih0YWI6IEJzVGFiUGFnZUNvbXBvbmVudCkge1xuICAgIGlmICghdGFiLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmFjdGl2ZVRhYiQubmV4dCh0YWIpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBtb3ZlVGFiKGV2OiBDZGtEcmFnRHJvcDxRdWVyeUxpc3Q8QnNUYWJQYWdlQ29tcG9uZW50PiB8IG51bGw+KSB7XG4gICAgaWYgKGV2LnByZXZpb3VzQ29udGFpbmVyID09PSBldi5jb250YWluZXIpIHtcbiAgICAgIG1vdmVJdGVtSW5BcnJheShcbiAgICAgICAgdGhpcy5vcmRlcmVkVGFiUGFnZXMsXG4gICAgICAgIGV2LnByZXZpb3VzSW5kZXgsIFxuICAgICAgICBldi5jdXJyZW50SW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0cmFuc2ZlckFycmF5SXRlbShcbiAgICAgIC8vICAgZXYucHJldmlvdXNDb250YWluZXIuZGF0YSxcbiAgICAgIC8vICAgZXYuY29udGFpbmVyLmRhdGEsXG4gICAgICAvLyAgIGV2LnByZXZpb3VzSW5kZXgsXG4gICAgICAvLyAgIGV2LmN1cnJlbnRJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQodHJ1ZSk7XG4gIH1cblxufVxuIiwiPG5nLWNvbnRhaW5lciAqYnNMZXQ9XCIoYWN0aXZlVGFiJCB8IGFzeW5jKSBhcyBhY3RpdmVUYWJcIj5cblx0PGRpdiBjbGFzcz1cIm92ZXJmbG93LWhpZGRlbiBwb3NpdGlvbi1hYnNvbHV0ZSBtdy0xMDAgdHNjXCI+XG5cdFx0PHVsIGNka0Ryb3BMaXN0ICNsaXN0ICN0YWJMaXN0PVwiY2RrRHJvcExpc3RcIlxuXHRcdFx0W2Nka0Ryb3BMaXN0RGF0YV09XCJ0YWJQYWdlcyQgfCBhc3luY1wiXG5cdFx0XHRbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJbXVwiXG5cdFx0XHRbY2RrRHJvcExpc3RPcmllbnRhdGlvbl09XCInaG9yaXpvbnRhbCdcIlxuXHRcdFx0KGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJtb3ZlVGFiKCRldmVudClcIlxuXHRcdFx0Y2xhc3M9XCJuYXYgbmF2LXRhYnMgZmxleC1ub3dyYXAgb3ZlcmZsb3cteC1hdXRvIG92ZXJmbG93LXktaGlkZGVuXCI+XG5cdFx0XHQ8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2Ygb3JkZXJlZFRhYlBhZ2VzXCI+XG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwibmF2LWl0ZW1cIiAoY2xpY2spPVwic2V0QWN0aXZlVGFiKHRhYilcIiAqbmdJZj1cIiEhdGFiLmhlYWRlclRlbXBsYXRlXCIgY2RrRHJhZyBbY2RrRHJhZ0JvdW5kYXJ5XT1cImRyYWdCb3VuZGFyeVNlbGVjdG9yXCIgW2Nka0RyYWdTdGFydERlbGF5XT1cIjEwMDBcIj5cblx0XHRcdFx0XHQ8bGFiZWwgW2Zvcl09XCJ0YWIudGFiTmFtZSQgfCBhc3luY1wiIGNsYXNzPVwibmF2LWxpbmsgdGV4dC1ub3dyYXAgY3Vyc29yLXBvaW50ZXJcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYiA9PT0gdGFiXCIgW2NsYXNzLmRpc2FibGVkXT1cInRhYi5kaXNhYmxlZFwiIFthdHRyLmFyaWEtY3VycmVudF09XCJhY3RpdmVUYWIgPT09IHRhYiA/ICdwYWdlJyA6IG51bGxcIiBbYXR0ci5hcmlhLWRpc2FibGVkXT1cInRhYi5kaXNhYmxlZFwiPlxuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWIuaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0XHQ8L3NwYW4+XG5cdFx0XHQ8L25nLWNvbnRhaW5lcj5cblx0XHQ8L3VsPlxuXHQ8L2Rpdj5cblx0PGRpdiBjbGFzcz1cInRhYi1jb250ZW50XCIgYnNOb05vc2NyaXB0IFtjbGFzcy5ib3JkZXJdPVwiYm9yZGVyICYmIGFjdGl2ZVRhYlwiIFtjbGFzcy5ib3JkZXItdG9wXT1cImJvcmRlciAmJiAhYWN0aXZlVGFiXCI+XG5cdFx0PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXHQ8L2Rpdj5cbjwvbmctY29udGFpbmVyPiJdfQ==
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWNvbnRyb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC90YWItY29udHJvbC9zcmMvdGFiLWNvbnRyb2wvdGFiLWNvbnRyb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC90YWItY29udHJvbC9zcmMvdGFiLWNvbnRyb2wvdGFiLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGVBQWUsRUFBcUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7QUFRcEUsTUFBTSxPQUFPLHFCQUFxQjtJQUVoQyxZQUFZLE9BQXdCO1FBbUJOLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDSixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFNaEQsV0FBTSxHQUFHLElBQUksQ0FBQztRQUk5Qix5QkFBb0IsR0FBRyxFQUFFLENBQUM7UUFFMUIsY0FBUyxHQUFHLElBQUksZUFBZSxDQUF1QyxJQUFJLENBQUMsQ0FBQztRQUM1RSxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQTRCLElBQUksQ0FBQyxDQUFDO1FBQ2xFLG9CQUFlLEdBQXlCLEVBQUUsQ0FBQztRQU0zQyxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsZUFBVSxHQUFHLElBQUks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RyxXQUFXO3NCQUFuRCxlQUFlO3VCQUFDLGtCQUFrQjtnQkFLbkIsTUFBTTtzQkFBckIsS0FBSztnQkFDYyxnQkFBZ0I7c0JBQW5DLEtBQUs7Z0JBcUJjLGNBQWM7c0JBQWpDLEtBQUs7Z0JBU2MsWUFBWTtzQkFBL0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXksIHRyYW5zZmVyQXJyYXlJdGVtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIFF1ZXJ5TGlzdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJzVGFiUGFnZUNvbXBvbmVudCB9IGZyb20gJy4uL3RhYi1wYWdlL3RhYi1wYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCc1RhYnNQb3NpdGlvbiB9IGZyb20gJy4uL3RhYnMtcG9zaXRpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy10YWItY29udHJvbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWItY29udHJvbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYi1jb250cm9sLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQnNUYWJDb250cm9sQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50OiBFbGVtZW50UmVmPGFueT4pIHtcbiAgICB0aGlzLnRhYkNvbnRyb2xJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oKytCc1RhYkNvbnRyb2xDb21wb25lbnQudGFiQ29udHJvbENvdW50ZXIpO1xuICAgIHRoaXMudGFiQ29udHJvbE5hbWUkID0gdGhpcy50YWJDb250cm9sSWQkLnBpcGUobWFwKChpZCkgPT4gYGJzLXRhYi1jb250cm9sLSR7aWR9YCkpO1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy50YWJQYWdlcyQsIHRoaXMuYWN0aXZlVGFiJCwgdGhpcy5zZWxlY3RGaXJzdFRhYiRdKVxuICAgICAgLnBpcGUoZmlsdGVyKChbdGFiUGFnZXMsIGFjdGl2ZVRhYiwgc2VsZWN0Rmlyc3RUYWJdKSA9PiB7XG4gICAgICAgIHJldHVybiAhIXRhYlBhZ2VzICYmICghYWN0aXZlVGFiIHx8ICF0YWJQYWdlcy5zb21lKHRwID0+IHRwID09PSBhY3RpdmVUYWIpKSAmJiBzZWxlY3RGaXJzdFRhYjtcbiAgICAgIH0pKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKChbdGFiUGFnZXMsIGFjdGl2ZVRhYiwgc2VsZWN0Rmlyc3RUYWJdKSA9PiB7XG4gICAgICAgIGNvbnN0IG5vdERpc2FibGVkID0gdGFiUGFnZXMhLmZpbHRlcigodHApID0+ICF0cC5kaXNhYmxlZCk7XG4gICAgICAgIGlmIChub3REaXNhYmxlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmFjdGl2ZVRhYiQubmV4dChub3REaXNhYmxlZFswXSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB0aGlzLnRvcFRhYnMkID0gdGhpcy50YWJzUG9zaXRpb24kLnBpcGUobWFwKHBvc2l0aW9uID0+IHBvc2l0aW9uID09PSAndG9wJykpO1xuICAgIHRoaXMuYm90dG9tVGFicyQgPSB0aGlzLnRhYnNQb3NpdGlvbiQucGlwZShtYXAocG9zaXRpb24gPT4gcG9zaXRpb24gPT09ICdib3R0b20nKSk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmQtYmxvY2snKSBkQmxvY2sgPSB0cnVlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBvc2l0aW9uLXJlbGF0aXZlJykgcG9zaXRpb25SZWxhdGl2ZSA9IHRydWU7XG4gIEBDb250ZW50Q2hpbGRyZW4oQnNUYWJQYWdlQ29tcG9uZW50KSBzZXQgc2V0VGFiUGFnZXModmFsdWU6IFF1ZXJ5TGlzdDxCc1RhYlBhZ2VDb21wb25lbnQ+KSB7XG4gICAgdGhpcy50YWJQYWdlcyQubmV4dCh2YWx1ZSk7XG4gICAgY29uc3QgbWlzc2luZyA9IHZhbHVlLmZpbHRlcih0cCA9PiAhdGhpcy5vcmRlcmVkVGFiUGFnZXMuaW5jbHVkZXModHApKTtcbiAgICB0aGlzLm9yZGVyZWRUYWJQYWdlcyA9IHRoaXMub3JkZXJlZFRhYlBhZ2VzLmNvbmNhdChtaXNzaW5nKTtcbiAgfVxuICBASW5wdXQoKSBwdWJsaWMgYm9yZGVyID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIHNldCByZXN0cmljdERyYWdnaW5nKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5kcmFnQm91bmRhcnlTZWxlY3RvciA9IHZhbHVlID8gJ3VsJyA6ICcnO1xuICB9XG4gIGRyYWdCb3VuZGFyeVNlbGVjdG9yID0gJyc7XG4gIGVsZW1lbnQ6IEVsZW1lbnRSZWY8YW55PjtcbiAgdGFiUGFnZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdWVyeUxpc3Q8QnNUYWJQYWdlQ29tcG9uZW50PiB8IG51bGw+KG51bGwpO1xuICBhY3RpdmVUYWIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCc1RhYlBhZ2VDb21wb25lbnQgfCBudWxsPihudWxsKTtcbiAgb3JkZXJlZFRhYlBhZ2VzOiBCc1RhYlBhZ2VDb21wb25lbnRbXSA9IFtdO1xuICB0YWJDb250cm9sSWQkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPjtcbiAgdGFiQ29udHJvbE5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHRvcFRhYnMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBib3R0b21UYWJzJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgc3RhdGljIHRhYkNvbnRyb2xDb3VudGVyID0gMDtcbiAgdGFiQ291bnRlciA9IDA7XG4gIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpXG5cbiAgLy8jcmVnaW9uIFNlbGVjdEZpcnN0VGFiXG4gIHNlbGVjdEZpcnN0VGFiJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHB1YmxpYyBnZXQgc2VsZWN0Rmlyc3RUYWIoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0Rmlyc3RUYWIkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgc2VsZWN0Rmlyc3RUYWIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNlbGVjdEZpcnN0VGFiJC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIFRhYnNQb3NpdGlvblxuICB0YWJzUG9zaXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCc1RhYnNQb3NpdGlvbj4oJ3RvcCcpO1xuICBwdWJsaWMgZ2V0IHRhYnNQb3NpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50YWJzUG9zaXRpb24kLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgdGFic1Bvc2l0aW9uKHZhbHVlOiBCc1RhYnNQb3NpdGlvbikge1xuICAgIHRoaXMudGFic1Bvc2l0aW9uJC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICBzZXRBY3RpdmVUYWIodGFiOiBCc1RhYlBhZ2VDb21wb25lbnQpIHtcbiAgICBpZiAoIXRhYi5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5hY3RpdmVUYWIkLm5leHQodGFiKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbW92ZVRhYihldjogQ2RrRHJhZ0Ryb3A8UXVlcnlMaXN0PEJzVGFiUGFnZUNvbXBvbmVudD4gfCBudWxsPikge1xuICAgIGlmIChldi5wcmV2aW91c0NvbnRhaW5lciA9PT0gZXYuY29udGFpbmVyKSB7XG4gICAgICBtb3ZlSXRlbUluQXJyYXkoXG4gICAgICAgIHRoaXMub3JkZXJlZFRhYlBhZ2VzLFxuICAgICAgICBldi5wcmV2aW91c0luZGV4LCBcbiAgICAgICAgZXYuY3VycmVudEluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdHJhbnNmZXJBcnJheUl0ZW0oXG4gICAgICAvLyAgIGV2LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsXG4gICAgICAvLyAgIGV2LmNvbnRhaW5lci5kYXRhLFxuICAgICAgLy8gICBldi5wcmV2aW91c0luZGV4LFxuICAgICAgLy8gICBldi5jdXJyZW50SW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KHRydWUpO1xuICB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgKmJzTGV0PVwiKGFjdGl2ZVRhYiQgfCBhc3luYykgYXMgYWN0aXZlVGFiXCI+XG5cdDxkaXYgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW4gbXctMTAwIHRzY1wiICpuZ0lmPVwidG9wVGFicyQgfCBhc3luY1wiPlxuXHRcdDx1bCBjZGtEcm9wTGlzdCAjbGlzdCAjdGFiTGlzdD1cImNka0Ryb3BMaXN0XCJcblx0XHRcdFtjZGtEcm9wTGlzdERhdGFdPVwidGFiUGFnZXMkIHwgYXN5bmNcIlxuXHRcdFx0W2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiW11cIlxuXHRcdFx0W2Nka0Ryb3BMaXN0T3JpZW50YXRpb25dPVwiJ2hvcml6b250YWwnXCJcblx0XHRcdChjZGtEcm9wTGlzdERyb3BwZWQpPVwibW92ZVRhYigkZXZlbnQpXCJcblx0XHRcdGNsYXNzPVwibmF2IG5hdi10YWJzIGZsZXgtbm93cmFwIG92ZXJmbG93LXgtYXV0byBvdmVyZmxvdy15LWhpZGRlblwiPlxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiIG9mIG9yZGVyZWRUYWJQYWdlc1wiPlxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm5hdi1pdGVtXCIgKGNsaWNrKT1cInNldEFjdGl2ZVRhYih0YWIpXCIgKm5nSWY9XCIhIXRhYi5oZWFkZXJUZW1wbGF0ZVwiIGNka0RyYWcgW2Nka0RyYWdCb3VuZGFyeV09XCJkcmFnQm91bmRhcnlTZWxlY3RvclwiIFtjZGtEcmFnU3RhcnREZWxheV09XCIxMDAwXCI+XG5cdFx0XHRcdFx0PGxhYmVsIFtmb3JdPVwidGFiLnRhYk5hbWUkIHwgYXN5bmNcIiBjbGFzcz1cIm5hdi1saW5rIHRleHQtbm93cmFwIGN1cnNvci1wb2ludGVyXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUYWIgPT09IHRhYlwiIFtjbGFzcy5kaXNhYmxlZF09XCJ0YWIuZGlzYWJsZWRcIiBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiYWN0aXZlVGFiID09PSB0YWIgPyAncGFnZScgOiBudWxsXCIgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJ0YWIuZGlzYWJsZWRcIj5cblx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFiLmhlYWRlclRlbXBsYXRlLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0PC9sYWJlbD5cblx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0PC91bD5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJ0YWItY29udGVudCBmbGV4LWdyb3ctMVwiIGJzTm9Ob3NjcmlwdCBbY2xhc3MuYm9yZGVyXT1cImJvcmRlciAmJiBhY3RpdmVUYWJcIiBbY2xhc3MuYm9yZGVyLXRvcF09XCJib3JkZXIgJiYgIWFjdGl2ZVRhYlwiPlxuXHRcdDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW4gbXctMTAwIHRzYyBib3R0b20tdGFic1wiICpuZ0lmPVwiYm90dG9tVGFicyQgfCBhc3luY1wiPlxuXHRcdDx1bCBjZGtEcm9wTGlzdCAjbGlzdCAjdGFiTGlzdD1cImNka0Ryb3BMaXN0XCJcblx0XHRcdFtjZGtEcm9wTGlzdERhdGFdPVwidGFiUGFnZXMkIHwgYXN5bmNcIlxuXHRcdFx0W2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiW11cIlxuXHRcdFx0W2Nka0Ryb3BMaXN0T3JpZW50YXRpb25dPVwiJ2hvcml6b250YWwnXCJcblx0XHRcdChjZGtEcm9wTGlzdERyb3BwZWQpPVwibW92ZVRhYigkZXZlbnQpXCJcblx0XHRcdGNsYXNzPVwibmF2IG5hdi10YWJzIGZsZXgtbm93cmFwIG92ZXJmbG93LXgtYXV0byBvdmVyZmxvdy15LWhpZGRlblwiPlxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiIG9mIG9yZGVyZWRUYWJQYWdlc1wiPlxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm5hdi1pdGVtXCIgKGNsaWNrKT1cInNldEFjdGl2ZVRhYih0YWIpXCIgKm5nSWY9XCIhIXRhYi5oZWFkZXJUZW1wbGF0ZVwiIGNka0RyYWcgW2Nka0RyYWdCb3VuZGFyeV09XCJkcmFnQm91bmRhcnlTZWxlY3RvclwiIFtjZGtEcmFnU3RhcnREZWxheV09XCIxMDAwXCI+XG5cdFx0XHRcdFx0PGxhYmVsIFtmb3JdPVwidGFiLnRhYk5hbWUkIHwgYXN5bmNcIiBjbGFzcz1cIm5hdi1saW5rIHRleHQtbm93cmFwIGN1cnNvci1wb2ludGVyXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUYWIgPT09IHRhYlwiIFtjbGFzcy5kaXNhYmxlZF09XCJ0YWIuZGlzYWJsZWRcIiBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiYWN0aXZlVGFiID09PSB0YWIgPyAncGFnZScgOiBudWxsXCIgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJ0YWIuZGlzYWJsZWRcIj5cblx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFiLmhlYWRlclRlbXBsYXRlLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0PC9sYWJlbD5cblx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0PC91bD5cblx0PC9kaXY+XG48L25nLWNvbnRhaW5lcj4iXX0=
@@ -5,16 +5,19 @@ import { BsLetModule } from '@mintplayer/ng-bootstrap/let';
5
5
  import { BsNoNoscriptModule } from '@mintplayer/ng-bootstrap/no-noscript';
6
6
  import { BsTabControlComponent } from './tab-control/tab-control.component';
7
7
  import { BsTabPageComponent } from './tab-page/tab-page.component';
8
+ import { BsTabPageHeaderDirective } from './tab-page-header/tab-page-header.directive';
8
9
  import * as i0 from "@angular/core";
9
10
  export class BsTabControlModule {
10
11
  }
11
12
  BsTabControlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BsTabControlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
13
  BsTabControlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.3", ngImport: i0, type: BsTabControlModule, declarations: [BsTabControlComponent,
13
- BsTabPageComponent], imports: [CommonModule,
14
+ BsTabPageComponent,
15
+ BsTabPageHeaderDirective], imports: [CommonModule,
14
16
  DragDropModule,
15
17
  BsLetModule,
16
18
  BsNoNoscriptModule], exports: [BsTabControlComponent,
17
- BsTabPageComponent] });
19
+ BsTabPageComponent,
20
+ BsTabPageHeaderDirective] });
18
21
  BsTabControlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BsTabControlModule, imports: [CommonModule,
19
22
  DragDropModule,
20
23
  BsLetModule,
@@ -25,6 +28,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImpor
25
28
  declarations: [
26
29
  BsTabControlComponent,
27
30
  BsTabPageComponent,
31
+ BsTabPageHeaderDirective,
28
32
  ],
29
33
  imports: [
30
34
  CommonModule,
@@ -35,7 +39,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImpor
35
39
  exports: [
36
40
  BsTabControlComponent,
37
41
  BsTabPageComponent,
42
+ BsTabPageHeaderDirective,
38
43
  ]
39
44
  }]
40
45
  }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWNvbnRyb2wubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC90YWItY29udHJvbC9zcmMvdGFiLWNvbnRyb2wubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBa0JuRSxNQUFNLE9BQU8sa0JBQWtCOzsrR0FBbEIsa0JBQWtCO2dIQUFsQixrQkFBa0IsaUJBZDNCLHFCQUFxQjtRQUNyQixrQkFBa0IsYUFHbEIsWUFBWTtRQUNaLGNBQWM7UUFDZCxXQUFXO1FBQ1gsa0JBQWtCLGFBR2xCLHFCQUFxQjtRQUNyQixrQkFBa0I7Z0hBR1Qsa0JBQWtCLFlBVjNCLFlBQVk7UUFDWixjQUFjO1FBQ2QsV0FBVztRQUNYLGtCQUFrQjsyRkFPVCxrQkFBa0I7a0JBaEI5QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixxQkFBcUI7d0JBQ3JCLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxXQUFXO3dCQUNYLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHFCQUFxQjt3QkFDckIsa0JBQWtCO3FCQUNuQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRHJhZ0Ryb3BNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IEJzTGV0TW9kdWxlIH0gZnJvbSAnQG1pbnRwbGF5ZXIvbmctYm9vdHN0cmFwL2xldCc7XG5pbXBvcnQgeyBCc05vTm9zY3JpcHRNb2R1bGUgfSBmcm9tICdAbWludHBsYXllci9uZy1ib290c3RyYXAvbm8tbm9zY3JpcHQnO1xuaW1wb3J0IHsgQnNUYWJDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnLi90YWItY29udHJvbC90YWItY29udHJvbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnNUYWJQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi90YWItcGFnZS90YWItcGFnZS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBCc1RhYkNvbnRyb2xDb21wb25lbnQsXG4gICAgQnNUYWJQYWdlQ29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIERyYWdEcm9wTW9kdWxlLFxuICAgIEJzTGV0TW9kdWxlLFxuICAgIEJzTm9Ob3NjcmlwdE1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQnNUYWJDb250cm9sQ29tcG9uZW50LFxuICAgIEJzVGFiUGFnZUNvbXBvbmVudCxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBCc1RhYkNvbnRyb2xNb2R1bGUgeyB9XG4iXX0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWNvbnRyb2wubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC90YWItY29udHJvbC9zcmMvdGFiLWNvbnRyb2wubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7O0FBb0J2RixNQUFNLE9BQU8sa0JBQWtCOzsrR0FBbEIsa0JBQWtCO2dIQUFsQixrQkFBa0IsaUJBaEIzQixxQkFBcUI7UUFDckIsa0JBQWtCO1FBQ2xCLHdCQUF3QixhQUd4QixZQUFZO1FBQ1osY0FBYztRQUNkLFdBQVc7UUFDWCxrQkFBa0IsYUFHbEIscUJBQXFCO1FBQ3JCLGtCQUFrQjtRQUNsQix3QkFBd0I7Z0hBR2Ysa0JBQWtCLFlBWDNCLFlBQVk7UUFDWixjQUFjO1FBQ2QsV0FBVztRQUNYLGtCQUFrQjsyRkFRVCxrQkFBa0I7a0JBbEI5QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixxQkFBcUI7d0JBQ3JCLGtCQUFrQjt3QkFDbEIsd0JBQXdCO3FCQUN6QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsa0JBQWtCO3FCQUNuQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLHdCQUF3QjtxQkFDekI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBCc0xldE1vZHVsZSB9IGZyb20gJ0BtaW50cGxheWVyL25nLWJvb3RzdHJhcC9sZXQnO1xuaW1wb3J0IHsgQnNOb05vc2NyaXB0TW9kdWxlIH0gZnJvbSAnQG1pbnRwbGF5ZXIvbmctYm9vdHN0cmFwL25vLW5vc2NyaXB0JztcbmltcG9ydCB7IEJzVGFiQ29udHJvbENvbXBvbmVudCB9IGZyb20gJy4vdGFiLWNvbnRyb2wvdGFiLWNvbnRyb2wuY29tcG9uZW50JztcbmltcG9ydCB7IEJzVGFiUGFnZUNvbXBvbmVudCB9IGZyb20gJy4vdGFiLXBhZ2UvdGFiLXBhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IEJzVGFiUGFnZUhlYWRlckRpcmVjdGl2ZSB9IGZyb20gJy4vdGFiLXBhZ2UtaGVhZGVyL3RhYi1wYWdlLWhlYWRlci5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBCc1RhYkNvbnRyb2xDb21wb25lbnQsXG4gICAgQnNUYWJQYWdlQ29tcG9uZW50LFxuICAgIEJzVGFiUGFnZUhlYWRlckRpcmVjdGl2ZSxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBEcmFnRHJvcE1vZHVsZSxcbiAgICBCc0xldE1vZHVsZSxcbiAgICBCc05vTm9zY3JpcHRNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEJzVGFiQ29udHJvbENvbXBvbmVudCxcbiAgICBCc1RhYlBhZ2VDb21wb25lbnQsXG4gICAgQnNUYWJQYWdlSGVhZGVyRGlyZWN0aXZlLFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEJzVGFiQ29udHJvbE1vZHVsZSB7IH1cbiJdfQ==
@@ -1,6 +1,7 @@
1
- import { Component, ContentChild, TemplateRef, Input, ElementRef } from '@angular/core';
1
+ import { Component, ContentChild, Input, ElementRef } from '@angular/core';
2
2
  import { BehaviorSubject, combineLatest, map } from 'rxjs';
3
3
  import { BsTabControlComponent } from '../tab-control/tab-control.component';
4
+ import { BsTabPageHeaderDirective } from '../tab-page-header/tab-page-header.directive';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "../tab-control/tab-control.component";
6
7
  import * as i2 from "@mintplayer/ng-bootstrap/no-noscript";
@@ -16,7 +17,7 @@ export class BsTabPageComponent {
16
17
  }
17
18
  }
18
19
  BsTabPageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BsTabPageComponent, deps: [{ token: i1.BsTabControlComponent }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
19
- BsTabPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: BsTabPageComponent, selector: "bs-tab-page", inputs: { disabled: "disabled" }, queries: [{ propertyName: "headerTemplate", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<input type=\"radio\" bsNoNoscript class=\"d-none\" [name]=\"tabControl.tabControlName$ | async\" [id]=\"tabName$ | async\">\n<div class=\"tab-page-content\" [class.d-block]=\"(tabControl.activeTab$ | async) === this\">\n <ng-content></ng-content>\n</div>", styles: [".tab-page-content{display:none}input[type=radio].noscript:checked+.tab-page-content{display:block}\n"], dependencies: [{ kind: "directive", type: i2.BsNoNoscriptDirective, selector: "[bsNoNoscript]" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
20
+ BsTabPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: BsTabPageComponent, selector: "bs-tab-page", inputs: { disabled: "disabled" }, queries: [{ propertyName: "headerTemplate", first: true, predicate: BsTabPageHeaderDirective, descendants: true }], ngImport: i0, template: "<input type=\"radio\" bsNoNoscript class=\"d-none\" [name]=\"tabControl.tabControlName$ | async\" [id]=\"tabName$ | async\">\n<div class=\"tab-page-content\" [class.d-block]=\"(tabControl.activeTab$ | async) === this\">\n <ng-content></ng-content>\n</div>", styles: [".tab-page-content{display:none}input[type=radio].noscript:checked+.tab-page-content{display:block}\n"], dependencies: [{ kind: "directive", type: i2.BsNoNoscriptDirective, selector: "[bsNoNoscript]" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
20
21
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BsTabPageComponent, decorators: [{
21
22
  type: Component,
22
23
  args: [{ selector: 'bs-tab-page', template: "<input type=\"radio\" bsNoNoscript class=\"d-none\" [name]=\"tabControl.tabControlName$ | async\" [id]=\"tabName$ | async\">\n<div class=\"tab-page-content\" [class.d-block]=\"(tabControl.activeTab$ | async) === this\">\n <ng-content></ng-content>\n</div>", styles: [".tab-page-content{display:none}input[type=radio].noscript:checked+.tab-page-content{display:block}\n"] }]
@@ -24,6 +25,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImpor
24
25
  type: Input
25
26
  }], headerTemplate: [{
26
27
  type: ContentChild,
27
- args: [TemplateRef]
28
+ args: [BsTabPageHeaderDirective]
28
29
  }] } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC90YWItY29udHJvbC9zcmMvdGFiLXBhZ2UvdGFiLXBhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC90YWItY29udHJvbC9zcmMvdGFiLXBhZ2UvdGFiLXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7OztBQU83RSxNQUFNLE9BQU8sa0JBQWtCO0lBRTdCLFlBQVksVUFBaUMsRUFBRSxPQUF3QjtRQWE5RCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBWnhCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUUsR0FBRyxjQUFjLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7OytHQVJVLGtCQUFrQjttR0FBbEIsa0JBQWtCLGlJQWdCZixXQUFXLGdEQ3pCM0Isb1FBR007MkZETU8sa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGFBQWE7cUlBbUJkLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ3FCLGNBQWM7c0JBQXhDLFlBQVk7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBUZW1wbGF0ZVJlZiwgSW5wdXQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCc1RhYkNvbnRyb2xDb21wb25lbnQgfSBmcm9tICcuLi90YWItY29udHJvbC90YWItY29udHJvbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy10YWItcGFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWItcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYi1wYWdlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQnNUYWJQYWdlQ29tcG9uZW50IHtcblxuICBjb25zdHJ1Y3Rvcih0YWJDb250cm9sOiBCc1RhYkNvbnRyb2xDb21wb25lbnQsIGVsZW1lbnQ6IEVsZW1lbnRSZWY8YW55Pikge1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy50YWJDb250cm9sID0gdGFiQ29udHJvbDtcbiAgICB0aGlzLnRhYklkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigrK3RoaXMudGFiQ29udHJvbC50YWJDb3VudGVyKTtcbiAgICB0aGlzLnRhYk5hbWUkID0gY29tYmluZUxhdGVzdChbdGhpcy50YWJDb250cm9sLnRhYkNvbnRyb2xOYW1lJCwgdGhpcy50YWJJZCRdKVxuICAgICAgLnBpcGUobWFwKChbdGFiQ29udHJvbE5hbWUsIHRhYklkXSkgPT4gIGAke3RhYkNvbnRyb2xOYW1lfS0ke3RhYklkfWApKTtcbiAgfVxuXG4gIGVsZW1lbnQ6IEVsZW1lbnRSZWY8YW55PjtcbiAgdGFiQ29udHJvbDogQnNUYWJDb250cm9sQ29tcG9uZW50O1xuICB0YWJJZCQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+O1xuICB0YWJOYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpIGhlYWRlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxufVxuIiwiPGlucHV0IHR5cGU9XCJyYWRpb1wiIGJzTm9Ob3NjcmlwdCBjbGFzcz1cImQtbm9uZVwiIFtuYW1lXT1cInRhYkNvbnRyb2wudGFiQ29udHJvbE5hbWUkIHwgYXN5bmNcIiBbaWRdPVwidGFiTmFtZSQgfCBhc3luY1wiPlxuPGRpdiBjbGFzcz1cInRhYi1wYWdlLWNvbnRlbnRcIiBbY2xhc3MuZC1ibG9ja109XCIodGFiQ29udHJvbC5hY3RpdmVUYWIkIHwgYXN5bmMpID09PSB0aGlzXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+Il19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC90YWItY29udHJvbC9zcmMvdGFiLXBhZ2UvdGFiLXBhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC90YWItY29udHJvbC9zcmMvdGFiLXBhZ2UvdGFiLXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQWUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7O0FBT3hGLE1BQU0sT0FBTyxrQkFBa0I7SUFFN0IsWUFBWSxVQUFpQyxFQUFFLE9BQXdCO1FBYTlELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFaeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDMUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBRSxHQUFHLGNBQWMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQzs7K0dBUlUsa0JBQWtCO21HQUFsQixrQkFBa0IsaUlBZ0JmLHdCQUF3QixnREMxQnhDLG9RQUdNOzJGRE9PLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxhQUFhO3FJQW1CZCxRQUFRO3NCQUFoQixLQUFLO2dCQUNrQyxjQUFjO3NCQUFyRCxZQUFZO3VCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBUZW1wbGF0ZVJlZiwgSW5wdXQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCc1RhYkNvbnRyb2xDb21wb25lbnQgfSBmcm9tICcuLi90YWItY29udHJvbC90YWItY29udHJvbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnNUYWJQYWdlSGVhZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vdGFiLXBhZ2UtaGVhZGVyL3RhYi1wYWdlLWhlYWRlci5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy10YWItcGFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWItcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYi1wYWdlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQnNUYWJQYWdlQ29tcG9uZW50IHtcblxuICBjb25zdHJ1Y3Rvcih0YWJDb250cm9sOiBCc1RhYkNvbnRyb2xDb21wb25lbnQsIGVsZW1lbnQ6IEVsZW1lbnRSZWY8YW55Pikge1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy50YWJDb250cm9sID0gdGFiQ29udHJvbDtcbiAgICB0aGlzLnRhYklkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigrK3RoaXMudGFiQ29udHJvbC50YWJDb3VudGVyKTtcbiAgICB0aGlzLnRhYk5hbWUkID0gY29tYmluZUxhdGVzdChbdGhpcy50YWJDb250cm9sLnRhYkNvbnRyb2xOYW1lJCwgdGhpcy50YWJJZCRdKVxuICAgICAgLnBpcGUobWFwKChbdGFiQ29udHJvbE5hbWUsIHRhYklkXSkgPT4gIGAke3RhYkNvbnRyb2xOYW1lfS0ke3RhYklkfWApKTtcbiAgfVxuXG4gIGVsZW1lbnQ6IEVsZW1lbnRSZWY8YW55PjtcbiAgdGFiQ29udHJvbDogQnNUYWJDb250cm9sQ29tcG9uZW50O1xuICB0YWJJZCQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+O1xuICB0YWJOYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBDb250ZW50Q2hpbGQoQnNUYWJQYWdlSGVhZGVyRGlyZWN0aXZlKSBoZWFkZXJUZW1wbGF0ZSE6IEJzVGFiUGFnZUhlYWRlckRpcmVjdGl2ZTtcblxufVxuIiwiPGlucHV0IHR5cGU9XCJyYWRpb1wiIGJzTm9Ob3NjcmlwdCBjbGFzcz1cImQtbm9uZVwiIFtuYW1lXT1cInRhYkNvbnRyb2wudGFiQ29udHJvbE5hbWUkIHwgYXN5bmNcIiBbaWRdPVwidGFiTmFtZSQgfCBhc3luY1wiPlxuPGRpdiBjbGFzcz1cInRhYi1wYWdlLWNvbnRlbnRcIiBbY2xhc3MuZC1ibG9ja109XCIodGFiQ29udHJvbC5hY3RpdmVUYWIkIHwgYXN5bmMpID09PSB0aGlzXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+Il19
@@ -0,0 +1,16 @@
1
+ import { Directive, TemplateRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class BsTabPageHeaderDirective {
4
+ constructor(template) {
5
+ this.template = template;
6
+ }
7
+ }
8
+ BsTabPageHeaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BsTabPageHeaderDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
9
+ BsTabPageHeaderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.3", type: BsTabPageHeaderDirective, selector: "[bsTabPageHeader]", ngImport: i0 });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BsTabPageHeaderDirective, decorators: [{
11
+ type: Directive,
12
+ args: [{
13
+ selector: '[bsTabPageHeader]'
14
+ }]
15
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXBhZ2UtaGVhZGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvdGFiLWNvbnRyb2wvc3JjL3RhYi1wYWdlLWhlYWRlci90YWItcGFnZS1oZWFkZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUt2RCxNQUFNLE9BQU8sd0JBQXdCO0lBRW5DLFlBQW1CLFFBQTBCO1FBQTFCLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBQUcsQ0FBQzs7cUhBRnRDLHdCQUF3Qjt5R0FBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBSHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tic1RhYlBhZ2VIZWFkZXJdJ1xufSlcbmV4cG9ydCBjbGFzcyBCc1RhYlBhZ2VIZWFkZXJEaXJlY3RpdmUge1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cblxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy1wb3NpdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvdGFiLWNvbnRyb2wvc3JjL3RhYnMtcG9zaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEJzVGFic1Bvc2l0aW9uID0gJ3RvcCcgfCAnYm90dG9tJzsiXX0=
@@ -1,10 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, Input, ContentChildren, HostListener, HostBinding, NgModule } from '@angular/core';
3
- import * as i1$1 from '@angular/common';
2
+ import { Component, ViewChild, Input, ContentChildren, ViewChildren, HostBinding, HostListener, NgModule } from '@angular/core';
3
+ import * as i2 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
- import * as i2 from '@angular/cdk/portal';
5
+ import * as i2$1 from '@angular/cdk/portal';
6
6
  import { DomPortal, PortalModule } from '@angular/cdk/portal';
7
- import * as i1 from '@mintplayer/ng-bootstrap/card';
8
7
  import { BsCardModule } from '@mintplayer/ng-bootstrap/card';
9
8
  import * as i4 from '@mintplayer/ng-bootstrap/splitter';
10
9
  import { BsSplitterModule } from '@mintplayer/ng-bootstrap/splitter';
@@ -12,26 +11,32 @@ import * as i5 from '@mintplayer/ng-bootstrap/tab-control';
12
11
  import { BsTabControlModule } from '@mintplayer/ng-bootstrap/tab-control';
13
12
  import * as i3 from '@mintplayer/ng-bootstrap/instance-of';
14
13
  import { BsInstanceOfModule } from '@mintplayer/ng-bootstrap/instance-of';
15
- import { BehaviorSubject, Subject } from 'rxjs';
16
- import * as i1$2 from '@angular/cdk/overlay';
14
+ import { BehaviorSubject, Subject, takeUntil } from 'rxjs';
15
+ import * as i1 from '@angular/cdk/overlay';
17
16
 
18
17
  class BsDockPanelComponent {
19
- constructor(element) {
20
- this.element = element;
18
+ constructor() {
21
19
  this.panelId = '';
22
- this.portal = new DomPortal(this.element.nativeElement);
20
+ // this.contentPortal = new DomPortal(this.element.nativeElement);
23
21
  }
24
22
  ngAfterViewInit() {
25
- console.log('attach dockpanel', this.element.nativeElement);
26
- this.portal = new DomPortal(this.element.nativeElement);
23
+ // console.log('attach dockpanel', this.element.nativeElement);
24
+ this.headerPortal = new DomPortal(this.headerElement.nativeElement);
25
+ this.contentPortal = new DomPortal(this.contentElement.nativeElement);
27
26
  }
28
27
  }
29
- BsDockPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BsDockPanelComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
30
- BsDockPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: BsDockPanelComponent, selector: "bs-dock-panel", inputs: { panelId: "panelId" }, ngImport: i0, template: "<!-- <bs-split-panel> -->\n <bs-card [rounded]=\"false\">\n <bs-card-header [noPadding]=\"true\">\n <ng-content select=\"bs-dock-panel-header\"></ng-content>\n </bs-card-header>\n <ng-content></ng-content>\n </bs-card>\n<!-- </bs-split-panel> -->", styles: [""], dependencies: [{ kind: "component", type: i1.BsCardComponent, selector: "bs-card", inputs: ["rounded"] }, { kind: "component", type: i1.BsCardHeaderComponent, selector: "bs-card-header", inputs: ["noPadding"] }] });
28
+ BsDockPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BsDockPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
+ BsDockPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: BsDockPanelComponent, selector: "bs-dock-panel", inputs: { panelId: "panelId" }, viewQueries: [{ propertyName: "headerElement", first: true, predicate: ["headerElement"], descendants: true }, { propertyName: "contentElement", first: true, predicate: ["contentElement"], descendants: true }], ngImport: i0, template: "<!-- <bs-split-panel> -->\n<div #headerElement class=\"dock-header\">\n <ng-content select=\"bs-dock-panel-header\"></ng-content>\n</div>\n<div #contentElement>\n <ng-content></ng-content>\n</div>\n<!-- </bs-split-panel> -->", styles: [".dock-header{padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);margin:calc(-1 * var(--bs-nav-link-padding-y)) calc(-1 * var(--bs-nav-link-padding-x))}\n"] });
31
30
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BsDockPanelComponent, decorators: [{
32
31
  type: Component,
33
- args: [{ selector: 'bs-dock-panel', template: "<!-- <bs-split-panel> -->\n <bs-card [rounded]=\"false\">\n <bs-card-header [noPadding]=\"true\">\n <ng-content select=\"bs-dock-panel-header\"></ng-content>\n </bs-card-header>\n <ng-content></ng-content>\n </bs-card>\n<!-- </bs-split-panel> -->" }]
34
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { panelId: [{
32
+ args: [{ selector: 'bs-dock-panel', template: "<!-- <bs-split-panel> -->\n<div #headerElement class=\"dock-header\">\n <ng-content select=\"bs-dock-panel-header\"></ng-content>\n</div>\n<div #contentElement>\n <ng-content></ng-content>\n</div>\n<!-- </bs-split-panel> -->", styles: [".dock-header{padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);margin:calc(-1 * var(--bs-nav-link-padding-y)) calc(-1 * var(--bs-nav-link-padding-x))}\n"] }]
33
+ }], ctorParameters: function () { return []; }, propDecorators: { headerElement: [{
34
+ type: ViewChild,
35
+ args: ['headerElement']
36
+ }], contentElement: [{
37
+ type: ViewChild,
38
+ args: ['contentElement']
39
+ }], panelId: [{
35
40
  type: Input
36
41
  }] } });
37
42
 
@@ -78,7 +83,7 @@ class BsContentPane extends BsDockPane {
78
83
  }
79
84
 
80
85
  class BsDockPaneRendererComponent {
81
- constructor() {
86
+ constructor(element) {
82
87
  this.paneTypes = EPaneType;
83
88
  this.BsDocumentHostType = BsDocumentHost;
84
89
  this.BsTabGroupType = BsTabGroupPane;
@@ -102,6 +107,7 @@ class BsDockPaneRendererComponent {
102
107
  // // throw 'unknown pane type';
103
108
  // }
104
109
  // }));
110
+ this.portal = new DomPortal(element);
105
111
  }
106
112
  get layout() {
107
113
  return this.layout$.value;
@@ -111,20 +117,24 @@ class BsDockPaneRendererComponent {
111
117
  this.layout$.next(value);
112
118
  }
113
119
  }
114
- BsDockPaneRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BsDockPaneRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
115
- BsDockPaneRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: BsDockPaneRendererComponent, selector: "bs-dock-pane-renderer", inputs: { layout: "layout" }, ngImport: i0, template: "<!-- <ng-content></ng-content> -->\n<ng-container [bsInstanceof]=\"layout$ | async\">\n <div *bsInstanceofCase=\"BsDocumentHostType; let documentHost\">\n <bs-dock-pane-renderer [layout]=\"documentHost\"></bs-dock-pane-renderer>\n </div>\n <bs-tab-control *bsInstanceofCase=\"BsTabGroupType; let tabGroup\">\n <bs-tab-page *ngFor=\"let tab of tabGroup.panes\">\n <ng-template>Tab page</ng-template>\n <bs-dock-pane-renderer [layout]=\"tab\"></bs-dock-pane-renderer>\n </bs-tab-page>\n </bs-tab-control>\n <bs-splitter *bsInstanceofCase=\"BsSplitterType; let splitter\" [orientation]=\"splitter.orientation\">\n <bs-split-panel *ngFor=\"let panel of splitter.panes\">\n <bs-dock-pane-renderer [layout]=\"panel\"></bs-dock-pane-renderer>\n </bs-split-panel>\n </bs-splitter>\n <ng-container *bsInstanceofCase=\"BsContentPaneType; let content\">\n <ng-template [cdkPortalOutlet]=\"content.dockPanel.portal\"></ng-template>\n </ng-container>\n <div *bsInstanceofDefault>\n No match\n </div>\n</ng-container>", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: i3.BsInstanceOfDirective, selector: "[bsInstanceof]", inputs: ["bsInstanceof"] }, { kind: "directive", type: i3.BsInstanceofCaseDirective, selector: "[bsInstanceofCase]", inputs: ["bsInstanceofCase"] }, { kind: "directive", type: i3.BsInstanceOfDefaultDirective, selector: "[bsInstanceofDefault]" }, { kind: "component", type: i4.BsSplitterComponent, selector: "bs-splitter", inputs: ["orientation"] }, { kind: "component", type: i4.BsSplitPanelComponent, selector: "bs-split-panel" }, { kind: "component", type: i5.BsTabControlComponent, selector: "bs-tab-control", inputs: ["border", "restrictDragging", "selectFirstTab"] }, { kind: "component", type: i5.BsTabPageComponent, selector: "bs-tab-page", inputs: ["disabled"] }, { kind: "component", type: BsDockPaneRendererComponent, selector: "bs-dock-pane-renderer", inputs: ["layout"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }] });
120
+ BsDockPaneRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BsDockPaneRendererComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
121
+ BsDockPaneRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: BsDockPaneRendererComponent, selector: "bs-dock-pane-renderer", inputs: { layout: "layout" }, ngImport: i0, template: "<!-- <ng-content></ng-content> -->\n<ng-container [bsInstanceof]=\"layout$ | async\">\n <div *bsInstanceofCase=\"BsDocumentHostType; let documentHost\" data-hello>\n <bs-dock-pane-renderer [layout]=\"documentHost\"></bs-dock-pane-renderer>\n </div>\n <bs-tab-control *bsInstanceofCase=\"BsTabGroupType; let tabGroup\" class=\"d-flex flex-column h-100 dock-tabs\">\n <bs-tab-page *ngFor=\"let tab of tabGroup.panes\">\n <ng-container *bsTabPageHeader>\n <ng-template [cdkPortalOutlet]=\"tab.dockPanel.headerPortal\"></ng-template>\n </ng-container>\n <bs-dock-pane-renderer [layout]=\"tab\"></bs-dock-pane-renderer>\n </bs-tab-page>\n </bs-tab-control>\n <bs-splitter *bsInstanceofCase=\"BsSplitterType; let splitter\" [orientation]=\"splitter.orientation\">\n <bs-split-panel *ngFor=\"let panel of splitter.panes\">\n <bs-dock-pane-renderer [layout]=\"panel\"></bs-dock-pane-renderer>\n </bs-split-panel>\n </bs-splitter>\n <ng-container *bsInstanceofCase=\"BsContentPaneType; let content\">\n <ng-template [cdkPortalOutlet]=\"content.dockPanel.contentPortal\"></ng-template>\n </ng-container>\n <div *bsInstanceofDefault>\n No match\n </div>\n</ng-container>", styles: [".dock-tabs{background:#F3F3F3}:host ::ng-deep .tab-page-content{background:#FFF;min-height:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: i3.BsInstanceOfDirective, selector: "[bsInstanceof]", inputs: ["bsInstanceof"] }, { kind: "directive", type: i3.BsInstanceofCaseDirective, selector: "[bsInstanceofCase]", inputs: ["bsInstanceofCase"] }, { kind: "directive", type: i3.BsInstanceOfDefaultDirective, selector: "[bsInstanceofDefault]" }, { kind: "component", type: i4.BsSplitterComponent, selector: "bs-splitter", inputs: ["orientation"] }, { kind: "component", type: i4.BsSplitPanelComponent, selector: "bs-split-panel" }, { kind: "component", type: i5.BsTabControlComponent, selector: "bs-tab-control", inputs: ["border", "restrictDragging", "selectFirstTab", "tabsPosition"] }, { kind: "component", type: i5.BsTabPageComponent, selector: "bs-tab-page", inputs: ["disabled"] }, { kind: "directive", type: i5.BsTabPageHeaderDirective, selector: "[bsTabPageHeader]" }, { kind: "component", type: BsDockPaneRendererComponent, selector: "bs-dock-pane-renderer", inputs: ["layout"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
116
122
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BsDockPaneRendererComponent, decorators: [{
117
123
  type: Component,
118
- args: [{ selector: 'bs-dock-pane-renderer', template: "<!-- <ng-content></ng-content> -->\n<ng-container [bsInstanceof]=\"layout$ | async\">\n <div *bsInstanceofCase=\"BsDocumentHostType; let documentHost\">\n <bs-dock-pane-renderer [layout]=\"documentHost\"></bs-dock-pane-renderer>\n </div>\n <bs-tab-control *bsInstanceofCase=\"BsTabGroupType; let tabGroup\">\n <bs-tab-page *ngFor=\"let tab of tabGroup.panes\">\n <ng-template>Tab page</ng-template>\n <bs-dock-pane-renderer [layout]=\"tab\"></bs-dock-pane-renderer>\n </bs-tab-page>\n </bs-tab-control>\n <bs-splitter *bsInstanceofCase=\"BsSplitterType; let splitter\" [orientation]=\"splitter.orientation\">\n <bs-split-panel *ngFor=\"let panel of splitter.panes\">\n <bs-dock-pane-renderer [layout]=\"panel\"></bs-dock-pane-renderer>\n </bs-split-panel>\n </bs-splitter>\n <ng-container *bsInstanceofCase=\"BsContentPaneType; let content\">\n <ng-template [cdkPortalOutlet]=\"content.dockPanel.portal\"></ng-template>\n </ng-container>\n <div *bsInstanceofDefault>\n No match\n </div>\n</ng-container>" }]
119
- }], ctorParameters: function () { return []; }, propDecorators: { layout: [{
124
+ args: [{ selector: 'bs-dock-pane-renderer', template: "<!-- <ng-content></ng-content> -->\n<ng-container [bsInstanceof]=\"layout$ | async\">\n <div *bsInstanceofCase=\"BsDocumentHostType; let documentHost\" data-hello>\n <bs-dock-pane-renderer [layout]=\"documentHost\"></bs-dock-pane-renderer>\n </div>\n <bs-tab-control *bsInstanceofCase=\"BsTabGroupType; let tabGroup\" class=\"d-flex flex-column h-100 dock-tabs\">\n <bs-tab-page *ngFor=\"let tab of tabGroup.panes\">\n <ng-container *bsTabPageHeader>\n <ng-template [cdkPortalOutlet]=\"tab.dockPanel.headerPortal\"></ng-template>\n </ng-container>\n <bs-dock-pane-renderer [layout]=\"tab\"></bs-dock-pane-renderer>\n </bs-tab-page>\n </bs-tab-control>\n <bs-splitter *bsInstanceofCase=\"BsSplitterType; let splitter\" [orientation]=\"splitter.orientation\">\n <bs-split-panel *ngFor=\"let panel of splitter.panes\">\n <bs-dock-pane-renderer [layout]=\"panel\"></bs-dock-pane-renderer>\n </bs-split-panel>\n </bs-splitter>\n <ng-container *bsInstanceofCase=\"BsContentPaneType; let content\">\n <ng-template [cdkPortalOutlet]=\"content.dockPanel.contentPortal\"></ng-template>\n </ng-container>\n <div *bsInstanceofDefault>\n No match\n </div>\n</ng-container>", styles: [".dock-tabs{background:#F3F3F3}:host ::ng-deep .tab-page-content{background:#FFF;min-height:100%}\n"] }]
125
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { layout: [{
120
126
  type: Input
121
127
  }] } });
122
128
 
123
129
  class BsDockComponent {
124
- constructor() {
130
+ constructor(overlay) {
131
+ this.overlay = overlay;
125
132
  //#region Panels
126
133
  this.panels$ = new BehaviorSubject([]);
127
134
  //#endregion
135
+ this.floating$ = new BehaviorSubject([]);
136
+ this.positionAbsolute = true;
137
+ this.positionPx = 0;
128
138
  this.destroyed$ = new Subject();
129
139
  const tabs = new BsTabGroupPane();
130
140
  const docHost = new BsDocumentHost();
@@ -137,6 +147,13 @@ class BsDockComponent {
137
147
  // .pipe(takeUntil(this.destroyed$))
138
148
  // .subscribe(([layout, panels]) => {
139
149
  // })
150
+ this.floating$.pipe(takeUntil(this.destroyed$))
151
+ .subscribe((floating) => {
152
+ floating.forEach((panel) => {
153
+ const overlayRef = this.overlay.create({});
154
+ overlayRef.attach(panel.portal);
155
+ });
156
+ });
140
157
  }
141
158
  set panels(value) {
142
159
  this.panels$.next(value.toArray());
@@ -147,27 +164,57 @@ class BsDockComponent {
147
164
  set layout(value) {
148
165
  this.layout$.next(value);
149
166
  }
167
+ set floatingPanes(value) {
168
+ // value.changes.pipe(takeUntil(this.destroyed$)).subscribe((changes) => console.log('floatingPanes', changes));
169
+ this.floating$.next(value.toArray());
170
+ }
150
171
  ngOnDestroy() {
151
172
  this.destroyed$.next(true);
152
173
  }
153
174
  }
154
- BsDockComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BsDockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
155
- BsDockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: BsDockComponent, selector: "bs-dock", inputs: { layout: "layout" }, queries: [{ propertyName: "panels", predicate: BsDockPanelComponent }], ngImport: i0, template: "<ng-content></ng-content>\n<ng-container *ngIf=\"(layout$ | async) as layout\">\n <bs-dock-pane-renderer [layout]=\"layout.rootPane\"></bs-dock-pane-renderer>\n</ng-container>\n<!-- <bs-splitter>\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async)\">\n <bs-split-panel>\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </bs-split-panel>\n </ng-container>\n</bs-splitter> -->\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BsDockPaneRendererComponent, selector: "bs-dock-pane-renderer", inputs: ["layout"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }] });
175
+ BsDockComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BsDockComponent, deps: [{ token: i1.Overlay }], target: i0.ɵɵFactoryTarget.Component });
176
+ BsDockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: BsDockComponent, selector: "bs-dock", inputs: { layout: "layout" }, host: { properties: { "class.position-absolute": "this.positionAbsolute", "style.top": "this.positionPx", "style.left": "this.positionPx", "style.bottom": "this.positionPx", "style.right": "this.positionPx" } }, queries: [{ propertyName: "panels", predicate: BsDockPanelComponent }], viewQueries: [{ propertyName: "floatingPanes", predicate: ["floating"], descendants: true }], ngImport: i0, template: "<ng-content></ng-content>\n<ng-container *ngIf=\"(layout$ | async) as layout\">\n <bs-dock-pane-renderer [layout]=\"layout.rootPane\"></bs-dock-pane-renderer>\n\n <ng-container *ngFor=\"let pane of layout.floatingPanes\">\n <bs-dock-pane-renderer #floating *ngIf=\"pane.pane\" [layout]=\"pane.pane\"></bs-dock-pane-renderer>\n </ng-container>\n</ng-container>\n<!-- <bs-splitter>\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async)\">\n <bs-split-panel>\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </bs-split-panel>\n </ng-container>\n</bs-splitter> -->\n", styles: [":host ::ng-deep .tab-content{max-height:calc(100% - 41px);overflow:auto}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BsDockPaneRendererComponent, selector: "bs-dock-pane-renderer", inputs: ["layout"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
156
177
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BsDockComponent, decorators: [{
157
178
  type: Component,
158
- args: [{ selector: 'bs-dock', template: "<ng-content></ng-content>\n<ng-container *ngIf=\"(layout$ | async) as layout\">\n <bs-dock-pane-renderer [layout]=\"layout.rootPane\"></bs-dock-pane-renderer>\n</ng-container>\n<!-- <bs-splitter>\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async)\">\n <bs-split-panel>\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </bs-split-panel>\n </ng-container>\n</bs-splitter> -->\n" }]
159
- }], ctorParameters: function () { return []; }, propDecorators: { panels: [{
179
+ args: [{ selector: 'bs-dock', template: "<ng-content></ng-content>\n<ng-container *ngIf=\"(layout$ | async) as layout\">\n <bs-dock-pane-renderer [layout]=\"layout.rootPane\"></bs-dock-pane-renderer>\n\n <ng-container *ngFor=\"let pane of layout.floatingPanes\">\n <bs-dock-pane-renderer #floating *ngIf=\"pane.pane\" [layout]=\"pane.pane\"></bs-dock-pane-renderer>\n </ng-container>\n</ng-container>\n<!-- <bs-splitter>\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async)\">\n <bs-split-panel>\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </bs-split-panel>\n </ng-container>\n</bs-splitter> -->\n", styles: [":host ::ng-deep .tab-content{max-height:calc(100% - 41px);overflow:auto}\n"] }]
180
+ }], ctorParameters: function () { return [{ type: i1.Overlay }]; }, propDecorators: { panels: [{
160
181
  type: ContentChildren,
161
182
  args: [BsDockPanelComponent]
162
183
  }], layout: [{
163
184
  type: Input
185
+ }], floatingPanes: [{
186
+ type: ViewChildren,
187
+ args: ['floating']
188
+ }], positionAbsolute: [{
189
+ type: HostBinding,
190
+ args: ['class.position-absolute']
191
+ }], positionPx: [{
192
+ type: HostBinding,
193
+ args: ['style.top']
194
+ }, {
195
+ type: HostBinding,
196
+ args: ['style.left']
197
+ }, {
198
+ type: HostBinding,
199
+ args: ['style.bottom']
200
+ }, {
201
+ type: HostBinding,
202
+ args: ['style.right']
164
203
  }] } });
165
204
 
205
+ class BsFloatingPane {
206
+ constructor(data) {
207
+ Object.assign(this, data);
208
+ }
209
+ }
210
+
166
211
  class BsDockPanelHeaderComponent {
167
- constructor(overlay, dockPanel) {
212
+ constructor(overlay, dockPanel, dock) {
168
213
  this.overlay = overlay;
169
214
  this.dockPanel = dockPanel;
215
+ this.dock = dock;
170
216
  this.isDragging = false;
217
+ this.isLayoutDetached = false;
171
218
  this.dBlock = true;
172
219
  this.overlayRef = this.overlay.create({
173
220
  positionStrategy: this.overlay.position().global()
@@ -178,22 +225,33 @@ class BsDockPanelHeaderComponent {
178
225
  this.isDragging = true;
179
226
  }
180
227
  onMouseMove(ev) {
181
- var _a;
182
- // console.log('attached', this.overlayRef.hasAttached);
183
- if (this.isDragging && !this.overlayRef.hasAttached()) {
184
- (_a = this.dockPanel.portal) === null || _a === void 0 ? void 0 : _a.attach(this.overlayRef);
228
+ if (this.isDragging) {
229
+ if (!this.isLayoutDetached) {
230
+ this.isLayoutDetached = true;
231
+ this.dock.layout$.subscribe((layout) => {
232
+ layout.floatingPanes.push(new BsFloatingPane({
233
+ pane: new BsTabGroupPane({
234
+ panes: [
235
+ new BsContentPane({
236
+ dockPanel: this.dockPanel
237
+ })
238
+ ]
239
+ })
240
+ }));
241
+ });
242
+ }
185
243
  }
186
244
  }
187
245
  onMouseUp(ev) {
188
246
  this.isDragging = false;
189
247
  }
190
248
  }
191
- BsDockPanelHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BsDockPanelHeaderComponent, deps: [{ token: i1$2.Overlay }, { token: BsDockPanelComponent }], target: i0.ɵɵFactoryTarget.Component });
192
- BsDockPanelHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: BsDockPanelHeaderComponent, selector: "bs-dock-panel-header", host: { listeners: { "mousedown": "onMouseDown($event)", "document:mousemove": "onMouseMove($event)", "document:mouseup": "onMouseUp($event)" }, properties: { "class.d-block": "this.dBlock" } }, ngImport: i0, template: "<ng-content></ng-content>", styles: [":host{cursor:move;padding:.5rem 1rem}\n"] });
249
+ BsDockPanelHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BsDockPanelHeaderComponent, deps: [{ token: i1.Overlay }, { token: BsDockPanelComponent }, { token: BsDockComponent }], target: i0.ɵɵFactoryTarget.Component });
250
+ BsDockPanelHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: BsDockPanelHeaderComponent, selector: "bs-dock-panel-header", host: { listeners: { "mousedown": "onMouseDown($event)", "document:mousemove": "onMouseMove($event)", "document:mouseup": "onMouseUp($event)" }, properties: { "class.d-block": "this.dBlock" } }, ngImport: i0, template: "<ng-content></ng-content>", styles: [":host{padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);margin:calc(-1 * var(--bs-nav-link-padding-y)) calc(-1 * var(--bs-nav-link-padding-x))}\n"] });
193
251
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BsDockPanelHeaderComponent, decorators: [{
194
252
  type: Component,
195
- args: [{ selector: 'bs-dock-panel-header', template: "<ng-content></ng-content>", styles: [":host{cursor:move;padding:.5rem 1rem}\n"] }]
196
- }], ctorParameters: function () { return [{ type: i1$2.Overlay }, { type: BsDockPanelComponent }]; }, propDecorators: { onMouseDown: [{
253
+ args: [{ selector: 'bs-dock-panel-header', template: "<ng-content></ng-content>", styles: [":host{padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);margin:calc(-1 * var(--bs-nav-link-padding-y)) calc(-1 * var(--bs-nav-link-padding-x))}\n"] }]
254
+ }], ctorParameters: function () { return [{ type: i1.Overlay }, { type: BsDockPanelComponent }, { type: BsDockComponent }]; }, propDecorators: { onMouseDown: [{
197
255
  type: HostListener,
198
256
  args: ['mousedown', ['$event']]
199
257
  }], onMouseMove: [{
@@ -254,9 +312,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImpor
254
312
  }]
255
313
  }] });
256
314
 
257
- class BsFloatingPane {
258
- }
259
-
260
315
  /**
261
316
  * Generated bundle index. Do not edit.
262
317
  */