@mintplayer/ng-bootstrap 15.26.0 → 15.26.2
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.
- package/esm2020/dock/src/dock/dock.component.mjs +2 -2
- package/fesm2015/mintplayer-ng-bootstrap-dock.mjs +2 -2
- package/fesm2015/mintplayer-ng-bootstrap-dock.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-dock.mjs +2 -2
- package/fesm2020/mintplayer-ng-bootstrap-dock.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -61,10 +61,10 @@ export class BsDockComponent {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
BsDockComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BsDockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
64
|
-
BsDockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", 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\"></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}:host ::ng-deep bs-dock-pane-renderer{min-width:100%;min-height:100%}\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: "component", type: i2.BsDockPaneRendererComponent, selector: "bs-dock-pane-renderer", inputs: ["layout"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
|
|
64
|
+
BsDockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", 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\"></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}:host ::ng-deep bs-dock-pane-renderer{min-width:100%;min-height:100%}:host ::ng-deep>bs-dock-panel>*{display:none}\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: "component", type: i2.BsDockPaneRendererComponent, selector: "bs-dock-pane-renderer", inputs: ["layout"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
|
|
65
65
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BsDockComponent, decorators: [{
|
|
66
66
|
type: Component,
|
|
67
|
-
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\"></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}:host ::ng-deep bs-dock-pane-renderer{min-width:100%;min-height:100%}\n"] }]
|
|
67
|
+
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\"></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}:host ::ng-deep bs-dock-pane-renderer{min-width:100%;min-height:100%}:host ::ng-deep>bs-dock-panel>*{display:none}\n"] }]
|
|
68
68
|
}], ctorParameters: function () { return []; }, propDecorators: { panels: [{
|
|
69
69
|
type: ContentChildren,
|
|
70
70
|
args: [BsDockPanelComponent]
|
|
@@ -200,10 +200,10 @@ class BsDockComponent {
|
|
|
200
200
|
}
|
|
201
201
|
}
|
|
202
202
|
BsDockComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BsDockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
203
|
-
BsDockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", 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\"></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}:host ::ng-deep bs-dock-pane-renderer{min-width:100%;min-height:100%}\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" }] });
|
|
203
|
+
BsDockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", 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\"></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}:host ::ng-deep bs-dock-pane-renderer{min-width:100%;min-height:100%}:host ::ng-deep>bs-dock-panel>*{display:none}\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" }] });
|
|
204
204
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BsDockComponent, decorators: [{
|
|
205
205
|
type: Component,
|
|
206
|
-
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\"></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}:host ::ng-deep bs-dock-pane-renderer{min-width:100%;min-height:100%}\n"] }]
|
|
206
|
+
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\"></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}:host ::ng-deep bs-dock-pane-renderer{min-width:100%;min-height:100%}:host ::ng-deep>bs-dock-panel>*{display:none}\n"] }]
|
|
207
207
|
}], ctorParameters: function () { return []; }, propDecorators: { panels: [{
|
|
208
208
|
type: ContentChildren,
|
|
209
209
|
args: [BsDockPanelComponent]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mintplayer-ng-bootstrap-dock.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-panel/dock-panel.component.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-panel/dock-panel.component.html","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/dock-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/tab-group-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/document-host-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/content-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/floating-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/split-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/enums/pane-type.enum.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-pane-renderer/dock-pane-renderer.component.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-pane-renderer/dock-pane-renderer.component.html","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock/dock.component.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock/dock.component.html","../../../../libs/mintplayer-ng-bootstrap/dock/src/services/dock/dock.service.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-panel-header/dock-panel-header.component.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-panel-header/dock-panel-header.component.html","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock.module.ts","../../../../libs/mintplayer-ng-bootstrap/dock/mintplayer-ng-bootstrap-dock.ts"],"sourcesContent":["import { DomPortal } from '@angular/cdk/portal';\nimport { Component, ElementRef, Input, AfterViewInit, ViewChild, Inject, Optional, forwardRef } from '@angular/core';\nimport { BsTabControlComponent } from '@mintplayer/ng-bootstrap/tab-control';\n\n@Component({\n selector: 'bs-dock-panel',\n templateUrl: './dock-panel.component.html',\n styleUrls: ['./dock-panel.component.scss']\n})\nexport class BsDockPanelComponent implements AfterViewInit {\n\n @ViewChild('headerElement') headerElement!: ElementRef<HTMLDivElement>;\n @ViewChild('contentElement') contentElement!: ElementRef<HTMLDivElement>;\n headerPortal?: DomPortal;\n contentPortal?: DomPortal;\n @Input() panelId = '';\n\n ngAfterViewInit() {\n this.headerPortal = new DomPortal(this.headerElement.nativeElement);\n this.contentPortal = new DomPortal(this.contentElement.nativeElement);\n }\n}\n","<!-- <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> -->","export abstract class BsDockPane {\n abstract get isEmpty(): boolean;\n}","import { BsContentPane } from \"./content-pane\";\nimport { BsDockPane } from \"./dock-pane\";\n\nexport class BsTabGroupPane extends BsDockPane {\n constructor(data?: Partial<BsTabGroupPane>) {\n super();\n Object.assign(this, data);\n }\n\n panes: BsContentPane[] = [];\n \n override get isEmpty() {\n return this.panes.length === 0;\n }\n}","import { BsDockPane } from \"./dock-pane\";\nimport { BsTabGroupPane } from \"./tab-group-pane\";\n\nexport class BsDocumentHost extends BsDockPane {\n constructor(data?: Partial<BsDocumentHost>) {\n super();\n Object.assign(this, data);\n }\n\n rootPane?: BsTabGroupPane\n\n override get isEmpty() {\n return this.rootPane?.isEmpty ?? true;\n }\n}","import { BsDockPanelComponent } from \"../dock-panel/dock-panel.component\";\nimport { BsDockPane } from \"./dock-pane\";\n\nexport class BsContentPane extends BsDockPane {\n constructor(data?: Partial<BsContentPane>) {\n super();\n Object.assign(this, data);\n }\n\n dockPanel!: BsDockPanelComponent;\n isPinned?: boolean;\n\n override get isEmpty() {\n return false;\n }\n}","import { BsDockPane } from \"./dock-pane\";\nimport { Point } from \"../interfaces/point\";\nimport { Size } from \"../interfaces/size\";\n\nexport class BsFloatingPane extends BsDockPane {\n constructor(data?: Partial<BsFloatingPane>) {\n super();\n Object.assign(this, data);\n }\n \n pane?: BsDockPane;\n size?: Size;\n location?: Point;\n\n override get isEmpty() {\n return this.pane?.isEmpty ?? true;\n }\n}","import { SplitPaneOrientation } from \"../types/split-pane-orientation.type\";\nimport { BsDockPane } from \"./dock-pane\";\n\nexport class BsSplitPane extends BsDockPane {\n constructor(data?: Partial<BsSplitPane>) {\n super();\n Object.assign(this, data);\n }\n\n orientation: SplitPaneOrientation = 'horizontal';\n panes: BsDockPane[] = [];\n\n override get isEmpty() {\n return this.panes.length === 0;\n }\n}","export enum EPaneType {\n documentHost = 1,\n splitPane = 2,\n contentPane = 3,\n tabGroupPane = 4,\n}","import { Component, ElementRef, HostBinding, Input } from '@angular/core';\nimport { DomPortal } from '@angular/cdk/portal';\nimport { BehaviorSubject, Observable, map } from 'rxjs';\nimport { BsDockPane } from '../panes/dock-pane';\nimport { EPaneType } from '../enums/pane-type.enum';\nimport { BsSplitPane } from '../panes/split-pane';\nimport { BsContentPane } from '../panes/content-pane';\nimport { BsDocumentHost } from '../panes/document-host-pane';\nimport { BsTabGroupPane } from '../panes/tab-group-pane';\nimport { BsFloatingPane } from '../panes/floating-pane';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\n\n@Component({\n selector: 'bs-dock-pane-renderer',\n templateUrl: './dock-pane-renderer.component.html',\n styleUrls: ['./dock-pane-renderer.component.scss']\n})\nexport class BsDockPaneRendererComponent {\n\n constructor(private overlay: Overlay, element: ElementRef) {\n this.portal = new DomPortal(element);\n }\n\n portal: DomPortal;\n\n paneTypes = EPaneType;\n readonly BsDocumentHostType = BsDocumentHost;\n readonly BsTabGroupType = BsTabGroupPane;\n readonly BsSplitterType = BsSplitPane;\n readonly BsContentPaneType = BsContentPane;\n readonly BsFloatingPaneType = BsFloatingPane;\n\n //#region Layout\n layout$ = new BehaviorSubject<BsDockPane | null>(null);\n public get layout() {\n return this.layout$.value;\n }\n @Input() public set layout(value: BsDockPane | null) {\n this.layout$.next(value);\n }\n //#endregion\n\n private overlayRef?: OverlayRef;\n public moveToOverlay() {\n if (!this.overlayRef && !this.portal.isAttached) {\n this.overlayRef = this.overlay.create({});\n this.portal.attach(this.overlayRef);\n }\n }\n\n public disposeOverlay() {\n if (this.overlayRef) {\n this.portal.detach();\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n }\n }\n}\n","<!-- <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\" [allowDragDrop]=\"false\" 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 <ng-container *bsInstanceofCase=\"BsFloatingPaneType; let floating\">\n <bs-resizable *ngIf=\"floating.pane\" [positioning]=\"'absolute'\" [presetPosition]=\"{ left: floating.location?.x ?? 0, top: floating.location?.y ?? 0, width: floating.size?.width ?? 200, height: floating.size?.height ?? 100 }\">\n <bs-dock-pane-renderer [layout]=\"floating.pane\"></bs-dock-pane-renderer>\n </bs-resizable>\n </ng-container>\n <div *bsInstanceofDefault>\n No match\n </div>\n</ng-container>","import { Component, ContentChildren, ViewChildren, Input, OnDestroy, QueryList, HostBinding } from '@angular/core';\nimport { BehaviorSubject, combineLatest, combineLatestAll, map, Observable, Subject, takeUntil } from 'rxjs';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { Parentified, deepClone } from '@mintplayer/parentify';\nimport { BsDockPanelComponent } from '../dock-panel/dock-panel.component';\nimport { EPaneType } from '../enums/pane-type.enum';\nimport { BsDockLayout } from '../interfaces/dock-layout';\nimport { BsTabGroupPane } from '../panes/tab-group-pane';\nimport { BsDocumentHost } from '../panes/document-host-pane';\nimport { BsContentPane } from '../panes/content-pane';\nimport { BsFloatingPane } from '../panes/floating-pane';\nimport { BsSplitPane } from '../panes/split-pane';\nimport { BsDockPaneRendererComponent } from '../dock-pane-renderer/dock-pane-renderer.component';\n\n@Component({\n selector: 'bs-dock',\n templateUrl: './dock.component.html',\n styleUrls: ['./dock.component.scss']\n})\nexport class BsDockComponent implements OnDestroy {\n constructor() {\n const tabs = new BsTabGroupPane();\n const docHost = new BsDocumentHost();\n docHost.rootPane = tabs;\n\n this.layout$ = new BehaviorSubject<BsDockLayout>({\n rootPane: docHost,\n floatingPanes: []\n });\n\n // combineLatest([this.layout$, this.panels$])\n // .pipe(takeUntil(this.destroyed$))\n // .subscribe(([layout, panels]) => {\n \n // })\n\n this.floating$.pipe(takeUntil(this.destroyed$))\n .subscribe((floating) => {\n floating.forEach((panel) => panel.moveToOverlay());\n });\n \n this.parentifiedLayout$ = this.layout$.pipe(map(layout => {\n const clone = deepClone(\n layout, true,\n // []\n [BsContentPane, BsDocumentHost, BsFloatingPane, BsSplitPane, BsTabGroupPane],\n true,\n this.paneCache);\n\n this.paneCache = clone.cache;\n\n return clone.result;\n }));\n\n this.parentifiedLayout$.pipe(takeUntil(this.destroyed$)).subscribe(console.log);\n }\n\n private paneCache?: Map<any, any>;\n\n //#region Panels\n panels$ = new BehaviorSubject<BsDockPanelComponent[]>([]);\n @ContentChildren(BsDockPanelComponent) set panels(value: QueryList<BsDockPanelComponent>) {\n this.panels$.next(value.toArray());\n }\n //#endregion\n //#region Layout\n layout$: BehaviorSubject<BsDockLayout>;\n public get layout() {\n return this.layout$.value;\n }\n @Input() public set layout(value: BsDockLayout) {\n this.layout$.next(value);\n }\n //#endregion\n\n floating$ = new BehaviorSubject<BsDockPaneRendererComponent[]>([]);\n @ViewChildren('floating') set floatingPanes(value: QueryList<BsDockPaneRendererComponent>) {\n this.floating$.next(value.toArray());\n }\n\n @HostBinding('class.position-absolute')\n positionAbsolute = true;\n\n @HostBinding('style.top')\n @HostBinding('style.left')\n @HostBinding('style.bottom')\n @HostBinding('style.right')\n positionPx = 0;\n\n parentifiedLayout$: Observable<Parentified<BsDockLayout>>;\n\n destroyed$ = new Subject();\n ngOnDestroy() {\n this.destroyed$.next(true);\n this.floating$.value.forEach(panel => panel.disposeOverlay());\n }\n}\n","<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\"></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","import { Injectable } from '@angular/core';\nimport { BsDockPane } from '../../panes/dock-pane';\nimport { BsSplitPane } from '../../panes/split-pane';\nimport { BsContentPane } from '../../panes/content-pane';\nimport { BsTabGroupPane } from '../../panes/tab-group-pane';\nimport { BsFloatingPane } from '../../panes/floating-pane';\nimport { BsDocumentHost } from '../../panes/document-host-pane';\nimport { BsDockLayout } from '../../interfaces/dock-layout';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BsDockService {\n public buildTraces(layout: BsDockLayout) {\n const result = [layout.rootPane, ...layout.floatingPanes].map(pane => this.buildTracesPrivate([pane]));\n // const result = this.buildTracesPrivate([layout.rootPane]);\n return result.flatMap(traceGroup => traceGroup);\n }\n\n private buildTracesPrivate(currentSequence: BsDockPane[]): PaneTraceResult[] {\n const children = this.getChildPanes(currentSequence[currentSequence.length - 1]);\n if (children.length === 0) {\n return [{\n finished: true,\n trace: currentSequence\n }];\n } else {\n const result = children.map(child => this.buildTracesPrivate([...currentSequence, child]));\n return result.flatMap(r => r);\n }\n }\n\n private getChildPanes(pane: BsDockPane): BsDockPane[] {\n if (pane instanceof BsContentPane) {\n return [];\n } else if (pane instanceof BsTabGroupPane) {\n return (<BsDockPane[]>pane.panes);\n } else if (pane instanceof BsSplitPane) {\n return pane.panes;\n } else if (pane instanceof BsFloatingPane) {\n return pane.pane ? [pane.pane] : [];\n } else if (pane instanceof BsDocumentHost) {\n return pane.rootPane ? [pane.rootPane] : [];\n } else {\n return [];\n }\n }\n}\n\nexport interface PaneTraceResult {\n trace: BsDockPane[];\n finished: boolean;\n}","import { Component, ElementRef, HostBinding, HostListener, Inject, Optional, forwardRef } from '@angular/core';\nimport { take } from 'rxjs';\nimport { BsTabControlComponent } from '@mintplayer/ng-bootstrap/tab-control';\nimport { Parentified } from '@mintplayer/parentify';\nimport { BsDockPanelComponent } from '../dock-panel/dock-panel.component';\nimport { BsDockComponent } from '../dock/dock.component';\nimport { BsDockPane } from '../panes/dock-pane';\nimport { BsSplitPane } from '../panes/split-pane';\nimport { BsContentPane } from '../panes/content-pane';\nimport { BsFloatingPane } from '../panes/floating-pane';\nimport { BsTabGroupPane } from '../panes/tab-group-pane';\nimport { BsDocumentHost } from '../panes/document-host-pane';\nimport { RemoveFromPaneResult } from '../interfaces/remove-from-pane-result';\nimport { DragOperation } from '../interfaces/drag-operation';\nimport { BsDockService } from '../services/dock/dock.service';\n\n@Component({\n selector: 'bs-dock-panel-header',\n templateUrl: './dock-panel-header.component.html',\n styleUrls: ['./dock-panel-header.component.scss']\n})\nexport class BsDockPanelHeaderComponent {\n constructor(private dockPanel: BsDockPanelComponent, private dock: BsDockComponent, private dockService: BsDockService, private element: ElementRef<HTMLElement>) {}\n\n isMouseDown = false;\n dragOperation?: DragOperation;\n isDragging = false;\n @HostListener('mousedown', ['$event']) onMouseDown(ev: MouseEvent) {\n ev.preventDefault();\n this.isMouseDown = true;\n }\n\n @HostListener('document:mousemove', ['$event']) onMouseMove(ev: MouseEvent) {\n if (this.isMouseDown) {\n if (!this.isDragging) {\n this.isDragging = true;\n \n this.dock.parentifiedLayout$.pipe(take(1)).subscribe((layout) => {\n // this.dock.layout$.pipe(take(1)).subscribe((layout) => {\n const traces = this.dockService.buildTraces(layout);\n console.log('traces', {layout, traces});\n const matching = traces.filter(t => {\n const lastPane = t.trace[t.trace.length - 1];\n // return (lastPane instanceof BsContentPane) && (lastPane.dockPanel === this.dockPanel);\n return (lastPane instanceof BsContentPane) && (lastPane.dockPanel === this.dockPanel);\n });\n console.log('matching', matching);\n if (matching.length !== 1) {\n return;\n }\n\n // const tabs = matching[0].trace.filter(pane => pane instanceof BsTabGroupPane);\n // const lastTabGroup = tabs[tabs.length - 1];\n // // console.log('last tabgroup', lastTabGroup);\n\n let tabControlEl = this.element.nativeElement;\n do {\n if (tabControlEl.parentElement) {\n tabControlEl = tabControlEl!.parentElement;\n } else {\n throw 'No more parents';\n }\n } while (tabControlEl.tagName.toUpperCase() !== 'BS-TAB-CONTROL');\n\n const coords = {\n width: tabControlEl.clientWidth,\n height: tabControlEl.clientHeight,\n left: ev.clientX - ev.offsetX,\n top: ev.clientY - ev.offsetY,\n };\n\n // this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();\n // this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();\n // this.removeFromPane(layout.rootPane, this.dockPanel);\n\n const trace = [...matching[0].trace];\n\n this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();\n this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();\n \n \n for (let index = trace.length - 1; index >= 0; index--) {\n if (index > 0) {\n this.removeFromPaneBis(trace[index - 1], trace[index]);\n if (!trace[index - 1].isEmpty) break;\n } else {\n const floatingIndex = layout.floatingPanes.indexOf(trace[0]);\n if (trace[0].isEmpty && (floatingIndex > -1)) {\n layout.floatingPanes.splice(floatingIndex, 1);\n }\n }\n }\n\n\n\n // this.removeFromPane((<any>matching[0].trace[0])['$original'], this.dockPanel);\n\n const floatingPane = new BsFloatingPane({\n pane: new BsTabGroupPane({\n panes: [\n new BsContentPane({\n dockPanel: this.dockPanel\n })\n ]\n }),\n size: {\n width: coords.width,\n height: coords.height,\n },\n location: {\n x: coords.left,\n y: coords.top,\n }\n });\n this.dragOperation = {\n offsetX: ev.offsetX,\n offsetY: ev.offsetY,\n floatingPane\n };\n layout.floatingPanes.push(floatingPane);\n setTimeout(() => this.dock.layout$.next(layout), 5);\n // console.log('traces', { traces, matching, dockPanel: this.dockPanel, equals: traces[2].trace[3] });\n\n // let element: HTMLElement | null = this.element.nativeElement;\n // let tree: HTMLElement[] = [];\n // do {\n // tree.push(element!);\n // element = element!.parentElement;\n // } while (element);\n\n // const tabControls = tree.filter(el => el.tagName.toUpperCase() === 'BS-TAB-CONTROL');\n // if (tabControls.length > 0) {\n // const coords = {\n // width: tabControls[0].clientWidth,\n // height: tabControls[0].clientHeight,\n // left: ev.clientX - ev.offsetX,\n // top: ev.clientY - ev.offsetY,\n // };\n\n // this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();\n // this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();\n // this.removeFromPane(layout.rootPane, this.dockPanel);\n\n // const floatingPane = new BsFloatingPane({\n // pane: new BsTabGroupPane({\n // panes: [\n // new BsContentPane({\n // dockPanel: this.dockPanel\n // })\n // ]\n // }),\n // size: {\n // width: coords.width,\n // height: coords.height,\n // },\n // location: {\n // x: coords.left,\n // y: coords.top,\n // }\n // });\n \n // this.dragOperation = {\n // offsetX: ev.offsetX,\n // offsetY: ev.offsetY,\n // floatingPane\n // };\n\n // layout.floatingPanes.push(floatingPane);\n // this.dock.layout$.next(layout);\n // }\n });\n } else {\n if (this.dragOperation) {\n if (this.dragOperation.floatingPane.location) {\n this.dragOperation.floatingPane.location.x = ev.clientX - this.dragOperation.offsetX;\n this.dragOperation.floatingPane.location.y = ev.clientY - this.dragOperation.offsetY;\n }\n // } else {\n // const traces = this.dockService.buildTraces(this.dock.layout);\n // const matchingTrace = traces.filter(trace => {\n // const pane = trace.trace[trace.trace.length - 1];\n // return (pane instanceof BsContentPane) && (pane.dockPanel === this.dockPanel);\n // });\n\n // console.log('matching', { traces, matchingTrace });\n // // this.dragOperation = {\n \n // // }\n }\n }\n }\n }\n\n removeFromPaneBis(host: BsDockPane, pane: BsDockPane) {\n if (host instanceof BsContentPane) {\n } else if (host instanceof BsDocumentHost) {\n // Actually documentHost should never be removed\n } else if (host instanceof BsTabGroupPane) {\n if (pane instanceof BsContentPane) {\n const index = host.panes.indexOf(pane);\n host.panes.splice(index, 1);\n }\n } else if (host instanceof BsSplitPane) {\n const index = host.panes.indexOf(pane);\n host.panes.splice(index, 1);\n } else if (host instanceof BsFloatingPane) {\n } else {\n throw 'Unknown pane type';\n }\n }\n\n // removeFromPane(host: BsDockPane, panel: BsDockPanelComponent /*, parents: BsDockPane[] */): RemoveFromPaneResult {\n // if (host instanceof BsContentPane) {\n // return { paneRemoved: false, hostIsEmpty: false };\n // } else if (host instanceof BsDocumentHost) {\n // // Actually documentHost should never be removed\n\n // if (!host.rootPane) {\n // return { paneRemoved: false, hostIsEmpty: true };\n // }\n\n // const result = this.removeFromPane(host.rootPane, panel);\n // return { paneRemoved: result.paneRemoved, hostIsEmpty: result.hostIsEmpty };\n\n // } else if (host instanceof BsTabGroupPane) {\n\n\n\n // const matching = host.panes.filter(p => p.dockPanel === panel);\n // if (matching.length > 0) {\n // host.panes.splice(host.panes.findIndex(p => p.dockPanel === panel), 1);\n // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };\n // } else {\n // // ATM. all panes are ContentPanes anyway.\n // // So unless you'd want to have splitters inside the tabs,\n // // This code will not be hit.\n\n // // const result = host.panes\n // // .map(parentPane => this.removeFromPane(parentPane, panel))\n // // .filter(r => r.paneRemoved);\n // //\n // // if (result.length > 0) {\n // // return { paneRemoved: true, hostIsEmpty: }\n // // }\n // return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };\n // }\n\n\n\n\n // } else if (host instanceof BsSplitPane) {\n // const matching = host.panes\n // .filter(p => p instanceof BsContentPane)\n // .map(p => <BsContentPane>p)\n // .filter(p => p.dockPanel === panel);\n \n // if (matching.length > 0) {\n // host.panes.splice(host.panes.findIndex(p => (p instanceof BsContentPane) && matching.includes(p)), 1);\n\n // // TODO: Remove splitter if only 1 pane left?\n // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };\n // } else {\n\n\n // for (let splitPane of host.panes) {\n // const result = this.removeFromPane(splitPane, panel);\n // if (result.paneRemoved && result.hostIsEmpty) {\n // // splitPane is empty now, so we can remove it from this splitter\n // host.panes.splice(host.panes.indexOf(splitPane), 1);\n // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };\n // }\n // }\n // }\n\n // return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };\n // } else {\n // throw 'unknown host type';\n // }\n // }\n\n @HostListener('document:mouseup', ['$event']) onMouseUp(ev: Event) {\n this.isMouseDown = false;\n this.isDragging = false;\n this.dragOperation = undefined;\n }\n\n @HostBinding('class.d-block') dBlock = true;\n}\n","<ng-content></ng-content>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { BsCardModule } from '@mintplayer/ng-bootstrap/card';\nimport { BsSplitterModule } from '@mintplayer/ng-bootstrap/splitter';\nimport { BsResizableModule } from '@mintplayer/ng-bootstrap/resizable';\nimport { BsTabControlModule } from '@mintplayer/ng-bootstrap/tab-control';\nimport { BsInstanceOfModule } from '@mintplayer/ng-bootstrap/instance-of';\nimport { BsDockComponent } from './dock/dock.component';\nimport { BsDockPanelComponent } from './dock-panel/dock-panel.component';\nimport { BsDockPanelHeaderComponent } from './dock-panel-header/dock-panel-header.component';\nimport { BsDockPaneRendererComponent } from './dock-pane-renderer/dock-pane-renderer.component';\n\n@NgModule({\n declarations: [\n BsDockComponent,\n BsDockPanelComponent,\n BsDockPanelHeaderComponent,\n BsDockPaneRendererComponent\n ],\n imports: [\n CommonModule,\n PortalModule,\n BsCardModule,\n BsInstanceOfModule,\n BsSplitterModule,\n BsTabControlModule,\n BsResizableModule\n ],\n exports: [\n BsDockComponent,\n BsDockPanelComponent,\n BsDockPanelHeaderComponent,\n BsDockPaneRendererComponent\n ]\n})\nexport class BsDockModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.BsDockPaneRendererComponent","i1.BsDockPanelComponent","i2.BsDockComponent","i3.BsDockService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mintplayer-ng-bootstrap-dock.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-panel/dock-panel.component.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-panel/dock-panel.component.html","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/dock-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/tab-group-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/document-host-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/content-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/floating-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/split-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/enums/pane-type.enum.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-pane-renderer/dock-pane-renderer.component.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-pane-renderer/dock-pane-renderer.component.html","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock/dock.component.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock/dock.component.html","../../../../libs/mintplayer-ng-bootstrap/dock/src/services/dock/dock.service.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-panel-header/dock-panel-header.component.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-panel-header/dock-panel-header.component.html","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock.module.ts","../../../../libs/mintplayer-ng-bootstrap/dock/mintplayer-ng-bootstrap-dock.ts"],"sourcesContent":["import { DomPortal } from '@angular/cdk/portal';\nimport { Component, ElementRef, Input, AfterViewInit, ViewChild, Inject, Optional, forwardRef } from '@angular/core';\nimport { BsTabControlComponent } from '@mintplayer/ng-bootstrap/tab-control';\n\n@Component({\n selector: 'bs-dock-panel',\n templateUrl: './dock-panel.component.html',\n styleUrls: ['./dock-panel.component.scss']\n})\nexport class BsDockPanelComponent implements AfterViewInit {\n\n @ViewChild('headerElement') headerElement!: ElementRef<HTMLDivElement>;\n @ViewChild('contentElement') contentElement!: ElementRef<HTMLDivElement>;\n headerPortal?: DomPortal;\n contentPortal?: DomPortal;\n @Input() panelId = '';\n\n ngAfterViewInit() {\n this.headerPortal = new DomPortal(this.headerElement.nativeElement);\n this.contentPortal = new DomPortal(this.contentElement.nativeElement);\n }\n}\n","<!-- <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> -->","export abstract class BsDockPane {\n abstract get isEmpty(): boolean;\n}","import { BsContentPane } from \"./content-pane\";\nimport { BsDockPane } from \"./dock-pane\";\n\nexport class BsTabGroupPane extends BsDockPane {\n constructor(data?: Partial<BsTabGroupPane>) {\n super();\n Object.assign(this, data);\n }\n\n panes: BsContentPane[] = [];\n \n override get isEmpty() {\n return this.panes.length === 0;\n }\n}","import { BsDockPane } from \"./dock-pane\";\nimport { BsTabGroupPane } from \"./tab-group-pane\";\n\nexport class BsDocumentHost extends BsDockPane {\n constructor(data?: Partial<BsDocumentHost>) {\n super();\n Object.assign(this, data);\n }\n\n rootPane?: BsTabGroupPane\n\n override get isEmpty() {\n return this.rootPane?.isEmpty ?? true;\n }\n}","import { BsDockPanelComponent } from \"../dock-panel/dock-panel.component\";\nimport { BsDockPane } from \"./dock-pane\";\n\nexport class BsContentPane extends BsDockPane {\n constructor(data?: Partial<BsContentPane>) {\n super();\n Object.assign(this, data);\n }\n\n dockPanel!: BsDockPanelComponent;\n isPinned?: boolean;\n\n override get isEmpty() {\n return false;\n }\n}","import { BsDockPane } from \"./dock-pane\";\nimport { Point } from \"../interfaces/point\";\nimport { Size } from \"../interfaces/size\";\n\nexport class BsFloatingPane extends BsDockPane {\n constructor(data?: Partial<BsFloatingPane>) {\n super();\n Object.assign(this, data);\n }\n \n pane?: BsDockPane;\n size?: Size;\n location?: Point;\n\n override get isEmpty() {\n return this.pane?.isEmpty ?? true;\n }\n}","import { SplitPaneOrientation } from \"../types/split-pane-orientation.type\";\nimport { BsDockPane } from \"./dock-pane\";\n\nexport class BsSplitPane extends BsDockPane {\n constructor(data?: Partial<BsSplitPane>) {\n super();\n Object.assign(this, data);\n }\n\n orientation: SplitPaneOrientation = 'horizontal';\n panes: BsDockPane[] = [];\n\n override get isEmpty() {\n return this.panes.length === 0;\n }\n}","export enum EPaneType {\n documentHost = 1,\n splitPane = 2,\n contentPane = 3,\n tabGroupPane = 4,\n}","import { Component, ElementRef, HostBinding, Input } from '@angular/core';\nimport { DomPortal } from '@angular/cdk/portal';\nimport { BehaviorSubject, Observable, map } from 'rxjs';\nimport { BsDockPane } from '../panes/dock-pane';\nimport { EPaneType } from '../enums/pane-type.enum';\nimport { BsSplitPane } from '../panes/split-pane';\nimport { BsContentPane } from '../panes/content-pane';\nimport { BsDocumentHost } from '../panes/document-host-pane';\nimport { BsTabGroupPane } from '../panes/tab-group-pane';\nimport { BsFloatingPane } from '../panes/floating-pane';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\n\n@Component({\n selector: 'bs-dock-pane-renderer',\n templateUrl: './dock-pane-renderer.component.html',\n styleUrls: ['./dock-pane-renderer.component.scss']\n})\nexport class BsDockPaneRendererComponent {\n\n constructor(private overlay: Overlay, element: ElementRef) {\n this.portal = new DomPortal(element);\n }\n\n portal: DomPortal;\n\n paneTypes = EPaneType;\n readonly BsDocumentHostType = BsDocumentHost;\n readonly BsTabGroupType = BsTabGroupPane;\n readonly BsSplitterType = BsSplitPane;\n readonly BsContentPaneType = BsContentPane;\n readonly BsFloatingPaneType = BsFloatingPane;\n\n //#region Layout\n layout$ = new BehaviorSubject<BsDockPane | null>(null);\n public get layout() {\n return this.layout$.value;\n }\n @Input() public set layout(value: BsDockPane | null) {\n this.layout$.next(value);\n }\n //#endregion\n\n private overlayRef?: OverlayRef;\n public moveToOverlay() {\n if (!this.overlayRef && !this.portal.isAttached) {\n this.overlayRef = this.overlay.create({});\n this.portal.attach(this.overlayRef);\n }\n }\n\n public disposeOverlay() {\n if (this.overlayRef) {\n this.portal.detach();\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n }\n }\n}\n","<!-- <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\" [allowDragDrop]=\"false\" 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 <ng-container *bsInstanceofCase=\"BsFloatingPaneType; let floating\">\n <bs-resizable *ngIf=\"floating.pane\" [positioning]=\"'absolute'\" [presetPosition]=\"{ left: floating.location?.x ?? 0, top: floating.location?.y ?? 0, width: floating.size?.width ?? 200, height: floating.size?.height ?? 100 }\">\n <bs-dock-pane-renderer [layout]=\"floating.pane\"></bs-dock-pane-renderer>\n </bs-resizable>\n </ng-container>\n <div *bsInstanceofDefault>\n No match\n </div>\n</ng-container>","import { Component, ContentChildren, ViewChildren, Input, OnDestroy, QueryList, HostBinding } from '@angular/core';\nimport { BehaviorSubject, combineLatest, combineLatestAll, map, Observable, Subject, takeUntil } from 'rxjs';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { Parentified, deepClone } from '@mintplayer/parentify';\nimport { BsDockPanelComponent } from '../dock-panel/dock-panel.component';\nimport { EPaneType } from '../enums/pane-type.enum';\nimport { BsDockLayout } from '../interfaces/dock-layout';\nimport { BsTabGroupPane } from '../panes/tab-group-pane';\nimport { BsDocumentHost } from '../panes/document-host-pane';\nimport { BsContentPane } from '../panes/content-pane';\nimport { BsFloatingPane } from '../panes/floating-pane';\nimport { BsSplitPane } from '../panes/split-pane';\nimport { BsDockPaneRendererComponent } from '../dock-pane-renderer/dock-pane-renderer.component';\n\n@Component({\n selector: 'bs-dock',\n templateUrl: './dock.component.html',\n styleUrls: ['./dock.component.scss']\n})\nexport class BsDockComponent implements OnDestroy {\n constructor() {\n const tabs = new BsTabGroupPane();\n const docHost = new BsDocumentHost();\n docHost.rootPane = tabs;\n\n this.layout$ = new BehaviorSubject<BsDockLayout>({\n rootPane: docHost,\n floatingPanes: []\n });\n\n // combineLatest([this.layout$, this.panels$])\n // .pipe(takeUntil(this.destroyed$))\n // .subscribe(([layout, panels]) => {\n \n // })\n\n this.floating$.pipe(takeUntil(this.destroyed$))\n .subscribe((floating) => {\n floating.forEach((panel) => panel.moveToOverlay());\n });\n \n this.parentifiedLayout$ = this.layout$.pipe(map(layout => {\n const clone = deepClone(\n layout, true,\n // []\n [BsContentPane, BsDocumentHost, BsFloatingPane, BsSplitPane, BsTabGroupPane],\n true,\n this.paneCache);\n\n this.paneCache = clone.cache;\n\n return clone.result;\n }));\n\n this.parentifiedLayout$.pipe(takeUntil(this.destroyed$)).subscribe(console.log);\n }\n\n private paneCache?: Map<any, any>;\n\n //#region Panels\n panels$ = new BehaviorSubject<BsDockPanelComponent[]>([]);\n @ContentChildren(BsDockPanelComponent) set panels(value: QueryList<BsDockPanelComponent>) {\n this.panels$.next(value.toArray());\n }\n //#endregion\n //#region Layout\n layout$: BehaviorSubject<BsDockLayout>;\n public get layout() {\n return this.layout$.value;\n }\n @Input() public set layout(value: BsDockLayout) {\n this.layout$.next(value);\n }\n //#endregion\n\n floating$ = new BehaviorSubject<BsDockPaneRendererComponent[]>([]);\n @ViewChildren('floating') set floatingPanes(value: QueryList<BsDockPaneRendererComponent>) {\n this.floating$.next(value.toArray());\n }\n\n @HostBinding('class.position-absolute')\n positionAbsolute = true;\n\n @HostBinding('style.top')\n @HostBinding('style.left')\n @HostBinding('style.bottom')\n @HostBinding('style.right')\n positionPx = 0;\n\n parentifiedLayout$: Observable<Parentified<BsDockLayout>>;\n\n destroyed$ = new Subject();\n ngOnDestroy() {\n this.destroyed$.next(true);\n this.floating$.value.forEach(panel => panel.disposeOverlay());\n }\n}\n","<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\"></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","import { Injectable } from '@angular/core';\nimport { BsDockPane } from '../../panes/dock-pane';\nimport { BsSplitPane } from '../../panes/split-pane';\nimport { BsContentPane } from '../../panes/content-pane';\nimport { BsTabGroupPane } from '../../panes/tab-group-pane';\nimport { BsFloatingPane } from '../../panes/floating-pane';\nimport { BsDocumentHost } from '../../panes/document-host-pane';\nimport { BsDockLayout } from '../../interfaces/dock-layout';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BsDockService {\n public buildTraces(layout: BsDockLayout) {\n const result = [layout.rootPane, ...layout.floatingPanes].map(pane => this.buildTracesPrivate([pane]));\n // const result = this.buildTracesPrivate([layout.rootPane]);\n return result.flatMap(traceGroup => traceGroup);\n }\n\n private buildTracesPrivate(currentSequence: BsDockPane[]): PaneTraceResult[] {\n const children = this.getChildPanes(currentSequence[currentSequence.length - 1]);\n if (children.length === 0) {\n return [{\n finished: true,\n trace: currentSequence\n }];\n } else {\n const result = children.map(child => this.buildTracesPrivate([...currentSequence, child]));\n return result.flatMap(r => r);\n }\n }\n\n private getChildPanes(pane: BsDockPane): BsDockPane[] {\n if (pane instanceof BsContentPane) {\n return [];\n } else if (pane instanceof BsTabGroupPane) {\n return (<BsDockPane[]>pane.panes);\n } else if (pane instanceof BsSplitPane) {\n return pane.panes;\n } else if (pane instanceof BsFloatingPane) {\n return pane.pane ? [pane.pane] : [];\n } else if (pane instanceof BsDocumentHost) {\n return pane.rootPane ? [pane.rootPane] : [];\n } else {\n return [];\n }\n }\n}\n\nexport interface PaneTraceResult {\n trace: BsDockPane[];\n finished: boolean;\n}","import { Component, ElementRef, HostBinding, HostListener, Inject, Optional, forwardRef } from '@angular/core';\nimport { take } from 'rxjs';\nimport { BsTabControlComponent } from '@mintplayer/ng-bootstrap/tab-control';\nimport { Parentified } from '@mintplayer/parentify';\nimport { BsDockPanelComponent } from '../dock-panel/dock-panel.component';\nimport { BsDockComponent } from '../dock/dock.component';\nimport { BsDockPane } from '../panes/dock-pane';\nimport { BsSplitPane } from '../panes/split-pane';\nimport { BsContentPane } from '../panes/content-pane';\nimport { BsFloatingPane } from '../panes/floating-pane';\nimport { BsTabGroupPane } from '../panes/tab-group-pane';\nimport { BsDocumentHost } from '../panes/document-host-pane';\nimport { RemoveFromPaneResult } from '../interfaces/remove-from-pane-result';\nimport { DragOperation } from '../interfaces/drag-operation';\nimport { BsDockService } from '../services/dock/dock.service';\n\n@Component({\n selector: 'bs-dock-panel-header',\n templateUrl: './dock-panel-header.component.html',\n styleUrls: ['./dock-panel-header.component.scss']\n})\nexport class BsDockPanelHeaderComponent {\n constructor(private dockPanel: BsDockPanelComponent, private dock: BsDockComponent, private dockService: BsDockService, private element: ElementRef<HTMLElement>) {}\n\n isMouseDown = false;\n dragOperation?: DragOperation;\n isDragging = false;\n @HostListener('mousedown', ['$event']) onMouseDown(ev: MouseEvent) {\n ev.preventDefault();\n this.isMouseDown = true;\n }\n\n @HostListener('document:mousemove', ['$event']) onMouseMove(ev: MouseEvent) {\n if (this.isMouseDown) {\n if (!this.isDragging) {\n this.isDragging = true;\n \n this.dock.parentifiedLayout$.pipe(take(1)).subscribe((layout) => {\n // this.dock.layout$.pipe(take(1)).subscribe((layout) => {\n const traces = this.dockService.buildTraces(layout);\n console.log('traces', {layout, traces});\n const matching = traces.filter(t => {\n const lastPane = t.trace[t.trace.length - 1];\n // return (lastPane instanceof BsContentPane) && (lastPane.dockPanel === this.dockPanel);\n return (lastPane instanceof BsContentPane) && (lastPane.dockPanel === this.dockPanel);\n });\n console.log('matching', matching);\n if (matching.length !== 1) {\n return;\n }\n\n // const tabs = matching[0].trace.filter(pane => pane instanceof BsTabGroupPane);\n // const lastTabGroup = tabs[tabs.length - 1];\n // // console.log('last tabgroup', lastTabGroup);\n\n let tabControlEl = this.element.nativeElement;\n do {\n if (tabControlEl.parentElement) {\n tabControlEl = tabControlEl!.parentElement;\n } else {\n throw 'No more parents';\n }\n } while (tabControlEl.tagName.toUpperCase() !== 'BS-TAB-CONTROL');\n\n const coords = {\n width: tabControlEl.clientWidth,\n height: tabControlEl.clientHeight,\n left: ev.clientX - ev.offsetX,\n top: ev.clientY - ev.offsetY,\n };\n\n // this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();\n // this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();\n // this.removeFromPane(layout.rootPane, this.dockPanel);\n\n const trace = [...matching[0].trace];\n\n this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();\n this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();\n \n \n for (let index = trace.length - 1; index >= 0; index--) {\n if (index > 0) {\n this.removeFromPaneBis(trace[index - 1], trace[index]);\n if (!trace[index - 1].isEmpty) break;\n } else {\n const floatingIndex = layout.floatingPanes.indexOf(trace[0]);\n if (trace[0].isEmpty && (floatingIndex > -1)) {\n layout.floatingPanes.splice(floatingIndex, 1);\n }\n }\n }\n\n\n\n // this.removeFromPane((<any>matching[0].trace[0])['$original'], this.dockPanel);\n\n const floatingPane = new BsFloatingPane({\n pane: new BsTabGroupPane({\n panes: [\n new BsContentPane({\n dockPanel: this.dockPanel\n })\n ]\n }),\n size: {\n width: coords.width,\n height: coords.height,\n },\n location: {\n x: coords.left,\n y: coords.top,\n }\n });\n this.dragOperation = {\n offsetX: ev.offsetX,\n offsetY: ev.offsetY,\n floatingPane\n };\n layout.floatingPanes.push(floatingPane);\n setTimeout(() => this.dock.layout$.next(layout), 5);\n // console.log('traces', { traces, matching, dockPanel: this.dockPanel, equals: traces[2].trace[3] });\n\n // let element: HTMLElement | null = this.element.nativeElement;\n // let tree: HTMLElement[] = [];\n // do {\n // tree.push(element!);\n // element = element!.parentElement;\n // } while (element);\n\n // const tabControls = tree.filter(el => el.tagName.toUpperCase() === 'BS-TAB-CONTROL');\n // if (tabControls.length > 0) {\n // const coords = {\n // width: tabControls[0].clientWidth,\n // height: tabControls[0].clientHeight,\n // left: ev.clientX - ev.offsetX,\n // top: ev.clientY - ev.offsetY,\n // };\n\n // this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();\n // this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();\n // this.removeFromPane(layout.rootPane, this.dockPanel);\n\n // const floatingPane = new BsFloatingPane({\n // pane: new BsTabGroupPane({\n // panes: [\n // new BsContentPane({\n // dockPanel: this.dockPanel\n // })\n // ]\n // }),\n // size: {\n // width: coords.width,\n // height: coords.height,\n // },\n // location: {\n // x: coords.left,\n // y: coords.top,\n // }\n // });\n \n // this.dragOperation = {\n // offsetX: ev.offsetX,\n // offsetY: ev.offsetY,\n // floatingPane\n // };\n\n // layout.floatingPanes.push(floatingPane);\n // this.dock.layout$.next(layout);\n // }\n });\n } else {\n if (this.dragOperation) {\n if (this.dragOperation.floatingPane.location) {\n this.dragOperation.floatingPane.location.x = ev.clientX - this.dragOperation.offsetX;\n this.dragOperation.floatingPane.location.y = ev.clientY - this.dragOperation.offsetY;\n }\n // } else {\n // const traces = this.dockService.buildTraces(this.dock.layout);\n // const matchingTrace = traces.filter(trace => {\n // const pane = trace.trace[trace.trace.length - 1];\n // return (pane instanceof BsContentPane) && (pane.dockPanel === this.dockPanel);\n // });\n\n // console.log('matching', { traces, matchingTrace });\n // // this.dragOperation = {\n \n // // }\n }\n }\n }\n }\n\n removeFromPaneBis(host: BsDockPane, pane: BsDockPane) {\n if (host instanceof BsContentPane) {\n } else if (host instanceof BsDocumentHost) {\n // Actually documentHost should never be removed\n } else if (host instanceof BsTabGroupPane) {\n if (pane instanceof BsContentPane) {\n const index = host.panes.indexOf(pane);\n host.panes.splice(index, 1);\n }\n } else if (host instanceof BsSplitPane) {\n const index = host.panes.indexOf(pane);\n host.panes.splice(index, 1);\n } else if (host instanceof BsFloatingPane) {\n } else {\n throw 'Unknown pane type';\n }\n }\n\n // removeFromPane(host: BsDockPane, panel: BsDockPanelComponent /*, parents: BsDockPane[] */): RemoveFromPaneResult {\n // if (host instanceof BsContentPane) {\n // return { paneRemoved: false, hostIsEmpty: false };\n // } else if (host instanceof BsDocumentHost) {\n // // Actually documentHost should never be removed\n\n // if (!host.rootPane) {\n // return { paneRemoved: false, hostIsEmpty: true };\n // }\n\n // const result = this.removeFromPane(host.rootPane, panel);\n // return { paneRemoved: result.paneRemoved, hostIsEmpty: result.hostIsEmpty };\n\n // } else if (host instanceof BsTabGroupPane) {\n\n\n\n // const matching = host.panes.filter(p => p.dockPanel === panel);\n // if (matching.length > 0) {\n // host.panes.splice(host.panes.findIndex(p => p.dockPanel === panel), 1);\n // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };\n // } else {\n // // ATM. all panes are ContentPanes anyway.\n // // So unless you'd want to have splitters inside the tabs,\n // // This code will not be hit.\n\n // // const result = host.panes\n // // .map(parentPane => this.removeFromPane(parentPane, panel))\n // // .filter(r => r.paneRemoved);\n // //\n // // if (result.length > 0) {\n // // return { paneRemoved: true, hostIsEmpty: }\n // // }\n // return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };\n // }\n\n\n\n\n // } else if (host instanceof BsSplitPane) {\n // const matching = host.panes\n // .filter(p => p instanceof BsContentPane)\n // .map(p => <BsContentPane>p)\n // .filter(p => p.dockPanel === panel);\n \n // if (matching.length > 0) {\n // host.panes.splice(host.panes.findIndex(p => (p instanceof BsContentPane) && matching.includes(p)), 1);\n\n // // TODO: Remove splitter if only 1 pane left?\n // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };\n // } else {\n\n\n // for (let splitPane of host.panes) {\n // const result = this.removeFromPane(splitPane, panel);\n // if (result.paneRemoved && result.hostIsEmpty) {\n // // splitPane is empty now, so we can remove it from this splitter\n // host.panes.splice(host.panes.indexOf(splitPane), 1);\n // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };\n // }\n // }\n // }\n\n // return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };\n // } else {\n // throw 'unknown host type';\n // }\n // }\n\n @HostListener('document:mouseup', ['$event']) onMouseUp(ev: Event) {\n this.isMouseDown = false;\n this.isDragging = false;\n this.dragOperation = undefined;\n }\n\n @HostBinding('class.d-block') dBlock = true;\n}\n","<ng-content></ng-content>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { BsCardModule } from '@mintplayer/ng-bootstrap/card';\nimport { BsSplitterModule } from '@mintplayer/ng-bootstrap/splitter';\nimport { BsResizableModule } from '@mintplayer/ng-bootstrap/resizable';\nimport { BsTabControlModule } from '@mintplayer/ng-bootstrap/tab-control';\nimport { BsInstanceOfModule } from '@mintplayer/ng-bootstrap/instance-of';\nimport { BsDockComponent } from './dock/dock.component';\nimport { BsDockPanelComponent } from './dock-panel/dock-panel.component';\nimport { BsDockPanelHeaderComponent } from './dock-panel-header/dock-panel-header.component';\nimport { BsDockPaneRendererComponent } from './dock-pane-renderer/dock-pane-renderer.component';\n\n@NgModule({\n declarations: [\n BsDockComponent,\n BsDockPanelComponent,\n BsDockPanelHeaderComponent,\n BsDockPaneRendererComponent\n ],\n imports: [\n CommonModule,\n PortalModule,\n BsCardModule,\n BsInstanceOfModule,\n BsSplitterModule,\n BsTabControlModule,\n BsResizableModule\n ],\n exports: [\n BsDockComponent,\n BsDockPanelComponent,\n BsDockPanelHeaderComponent,\n BsDockPaneRendererComponent\n ]\n})\nexport class BsDockModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.BsDockPaneRendererComponent","i1.BsDockPanelComponent","i2.BsDockComponent","i3.BsDockService"],"mappings":"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"}
|
|
@@ -198,10 +198,10 @@ class BsDockComponent {
|
|
|
198
198
|
}
|
|
199
199
|
}
|
|
200
200
|
BsDockComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BsDockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
201
|
-
BsDockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", 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\"></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}:host ::ng-deep bs-dock-pane-renderer{min-width:100%;min-height:100%}\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" }] });
|
|
201
|
+
BsDockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", 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\"></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}:host ::ng-deep bs-dock-pane-renderer{min-width:100%;min-height:100%}:host ::ng-deep>bs-dock-panel>*{display:none}\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" }] });
|
|
202
202
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BsDockComponent, decorators: [{
|
|
203
203
|
type: Component,
|
|
204
|
-
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\"></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}:host ::ng-deep bs-dock-pane-renderer{min-width:100%;min-height:100%}\n"] }]
|
|
204
|
+
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\"></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}:host ::ng-deep bs-dock-pane-renderer{min-width:100%;min-height:100%}:host ::ng-deep>bs-dock-panel>*{display:none}\n"] }]
|
|
205
205
|
}], ctorParameters: function () { return []; }, propDecorators: { panels: [{
|
|
206
206
|
type: ContentChildren,
|
|
207
207
|
args: [BsDockPanelComponent]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mintplayer-ng-bootstrap-dock.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-panel/dock-panel.component.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-panel/dock-panel.component.html","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/dock-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/tab-group-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/document-host-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/content-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/floating-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/split-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/enums/pane-type.enum.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-pane-renderer/dock-pane-renderer.component.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-pane-renderer/dock-pane-renderer.component.html","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock/dock.component.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock/dock.component.html","../../../../libs/mintplayer-ng-bootstrap/dock/src/services/dock/dock.service.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-panel-header/dock-panel-header.component.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-panel-header/dock-panel-header.component.html","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock.module.ts","../../../../libs/mintplayer-ng-bootstrap/dock/mintplayer-ng-bootstrap-dock.ts"],"sourcesContent":["import { DomPortal } from '@angular/cdk/portal';\nimport { Component, ElementRef, Input, AfterViewInit, ViewChild, Inject, Optional, forwardRef } from '@angular/core';\nimport { BsTabControlComponent } from '@mintplayer/ng-bootstrap/tab-control';\n\n@Component({\n selector: 'bs-dock-panel',\n templateUrl: './dock-panel.component.html',\n styleUrls: ['./dock-panel.component.scss']\n})\nexport class BsDockPanelComponent implements AfterViewInit {\n\n @ViewChild('headerElement') headerElement!: ElementRef<HTMLDivElement>;\n @ViewChild('contentElement') contentElement!: ElementRef<HTMLDivElement>;\n headerPortal?: DomPortal;\n contentPortal?: DomPortal;\n @Input() panelId = '';\n\n ngAfterViewInit() {\n this.headerPortal = new DomPortal(this.headerElement.nativeElement);\n this.contentPortal = new DomPortal(this.contentElement.nativeElement);\n }\n}\n","<!-- <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> -->","export abstract class BsDockPane {\n abstract get isEmpty(): boolean;\n}","import { BsContentPane } from \"./content-pane\";\nimport { BsDockPane } from \"./dock-pane\";\n\nexport class BsTabGroupPane extends BsDockPane {\n constructor(data?: Partial<BsTabGroupPane>) {\n super();\n Object.assign(this, data);\n }\n\n panes: BsContentPane[] = [];\n \n override get isEmpty() {\n return this.panes.length === 0;\n }\n}","import { BsDockPane } from \"./dock-pane\";\nimport { BsTabGroupPane } from \"./tab-group-pane\";\n\nexport class BsDocumentHost extends BsDockPane {\n constructor(data?: Partial<BsDocumentHost>) {\n super();\n Object.assign(this, data);\n }\n\n rootPane?: BsTabGroupPane\n\n override get isEmpty() {\n return this.rootPane?.isEmpty ?? true;\n }\n}","import { BsDockPanelComponent } from \"../dock-panel/dock-panel.component\";\nimport { BsDockPane } from \"./dock-pane\";\n\nexport class BsContentPane extends BsDockPane {\n constructor(data?: Partial<BsContentPane>) {\n super();\n Object.assign(this, data);\n }\n\n dockPanel!: BsDockPanelComponent;\n isPinned?: boolean;\n\n override get isEmpty() {\n return false;\n }\n}","import { BsDockPane } from \"./dock-pane\";\nimport { Point } from \"../interfaces/point\";\nimport { Size } from \"../interfaces/size\";\n\nexport class BsFloatingPane extends BsDockPane {\n constructor(data?: Partial<BsFloatingPane>) {\n super();\n Object.assign(this, data);\n }\n \n pane?: BsDockPane;\n size?: Size;\n location?: Point;\n\n override get isEmpty() {\n return this.pane?.isEmpty ?? true;\n }\n}","import { SplitPaneOrientation } from \"../types/split-pane-orientation.type\";\nimport { BsDockPane } from \"./dock-pane\";\n\nexport class BsSplitPane extends BsDockPane {\n constructor(data?: Partial<BsSplitPane>) {\n super();\n Object.assign(this, data);\n }\n\n orientation: SplitPaneOrientation = 'horizontal';\n panes: BsDockPane[] = [];\n\n override get isEmpty() {\n return this.panes.length === 0;\n }\n}","export enum EPaneType {\n documentHost = 1,\n splitPane = 2,\n contentPane = 3,\n tabGroupPane = 4,\n}","import { Component, ElementRef, HostBinding, Input } from '@angular/core';\nimport { DomPortal } from '@angular/cdk/portal';\nimport { BehaviorSubject, Observable, map } from 'rxjs';\nimport { BsDockPane } from '../panes/dock-pane';\nimport { EPaneType } from '../enums/pane-type.enum';\nimport { BsSplitPane } from '../panes/split-pane';\nimport { BsContentPane } from '../panes/content-pane';\nimport { BsDocumentHost } from '../panes/document-host-pane';\nimport { BsTabGroupPane } from '../panes/tab-group-pane';\nimport { BsFloatingPane } from '../panes/floating-pane';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\n\n@Component({\n selector: 'bs-dock-pane-renderer',\n templateUrl: './dock-pane-renderer.component.html',\n styleUrls: ['./dock-pane-renderer.component.scss']\n})\nexport class BsDockPaneRendererComponent {\n\n constructor(private overlay: Overlay, element: ElementRef) {\n this.portal = new DomPortal(element);\n }\n\n portal: DomPortal;\n\n paneTypes = EPaneType;\n readonly BsDocumentHostType = BsDocumentHost;\n readonly BsTabGroupType = BsTabGroupPane;\n readonly BsSplitterType = BsSplitPane;\n readonly BsContentPaneType = BsContentPane;\n readonly BsFloatingPaneType = BsFloatingPane;\n\n //#region Layout\n layout$ = new BehaviorSubject<BsDockPane | null>(null);\n public get layout() {\n return this.layout$.value;\n }\n @Input() public set layout(value: BsDockPane | null) {\n this.layout$.next(value);\n }\n //#endregion\n\n private overlayRef?: OverlayRef;\n public moveToOverlay() {\n if (!this.overlayRef && !this.portal.isAttached) {\n this.overlayRef = this.overlay.create({});\n this.portal.attach(this.overlayRef);\n }\n }\n\n public disposeOverlay() {\n if (this.overlayRef) {\n this.portal.detach();\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n }\n }\n}\n","<!-- <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\" [allowDragDrop]=\"false\" 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 <ng-container *bsInstanceofCase=\"BsFloatingPaneType; let floating\">\n <bs-resizable *ngIf=\"floating.pane\" [positioning]=\"'absolute'\" [presetPosition]=\"{ left: floating.location?.x ?? 0, top: floating.location?.y ?? 0, width: floating.size?.width ?? 200, height: floating.size?.height ?? 100 }\">\n <bs-dock-pane-renderer [layout]=\"floating.pane\"></bs-dock-pane-renderer>\n </bs-resizable>\n </ng-container>\n <div *bsInstanceofDefault>\n No match\n </div>\n</ng-container>","import { Component, ContentChildren, ViewChildren, Input, OnDestroy, QueryList, HostBinding } from '@angular/core';\nimport { BehaviorSubject, combineLatest, combineLatestAll, map, Observable, Subject, takeUntil } from 'rxjs';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { Parentified, deepClone } from '@mintplayer/parentify';\nimport { BsDockPanelComponent } from '../dock-panel/dock-panel.component';\nimport { EPaneType } from '../enums/pane-type.enum';\nimport { BsDockLayout } from '../interfaces/dock-layout';\nimport { BsTabGroupPane } from '../panes/tab-group-pane';\nimport { BsDocumentHost } from '../panes/document-host-pane';\nimport { BsContentPane } from '../panes/content-pane';\nimport { BsFloatingPane } from '../panes/floating-pane';\nimport { BsSplitPane } from '../panes/split-pane';\nimport { BsDockPaneRendererComponent } from '../dock-pane-renderer/dock-pane-renderer.component';\n\n@Component({\n selector: 'bs-dock',\n templateUrl: './dock.component.html',\n styleUrls: ['./dock.component.scss']\n})\nexport class BsDockComponent implements OnDestroy {\n constructor() {\n const tabs = new BsTabGroupPane();\n const docHost = new BsDocumentHost();\n docHost.rootPane = tabs;\n\n this.layout$ = new BehaviorSubject<BsDockLayout>({\n rootPane: docHost,\n floatingPanes: []\n });\n\n // combineLatest([this.layout$, this.panels$])\n // .pipe(takeUntil(this.destroyed$))\n // .subscribe(([layout, panels]) => {\n \n // })\n\n this.floating$.pipe(takeUntil(this.destroyed$))\n .subscribe((floating) => {\n floating.forEach((panel) => panel.moveToOverlay());\n });\n \n this.parentifiedLayout$ = this.layout$.pipe(map(layout => {\n const clone = deepClone(\n layout, true,\n // []\n [BsContentPane, BsDocumentHost, BsFloatingPane, BsSplitPane, BsTabGroupPane],\n true,\n this.paneCache);\n\n this.paneCache = clone.cache;\n\n return clone.result;\n }));\n\n this.parentifiedLayout$.pipe(takeUntil(this.destroyed$)).subscribe(console.log);\n }\n\n private paneCache?: Map<any, any>;\n\n //#region Panels\n panels$ = new BehaviorSubject<BsDockPanelComponent[]>([]);\n @ContentChildren(BsDockPanelComponent) set panels(value: QueryList<BsDockPanelComponent>) {\n this.panels$.next(value.toArray());\n }\n //#endregion\n //#region Layout\n layout$: BehaviorSubject<BsDockLayout>;\n public get layout() {\n return this.layout$.value;\n }\n @Input() public set layout(value: BsDockLayout) {\n this.layout$.next(value);\n }\n //#endregion\n\n floating$ = new BehaviorSubject<BsDockPaneRendererComponent[]>([]);\n @ViewChildren('floating') set floatingPanes(value: QueryList<BsDockPaneRendererComponent>) {\n this.floating$.next(value.toArray());\n }\n\n @HostBinding('class.position-absolute')\n positionAbsolute = true;\n\n @HostBinding('style.top')\n @HostBinding('style.left')\n @HostBinding('style.bottom')\n @HostBinding('style.right')\n positionPx = 0;\n\n parentifiedLayout$: Observable<Parentified<BsDockLayout>>;\n\n destroyed$ = new Subject();\n ngOnDestroy() {\n this.destroyed$.next(true);\n this.floating$.value.forEach(panel => panel.disposeOverlay());\n }\n}\n","<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\"></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","import { Injectable } from '@angular/core';\nimport { BsDockPane } from '../../panes/dock-pane';\nimport { BsSplitPane } from '../../panes/split-pane';\nimport { BsContentPane } from '../../panes/content-pane';\nimport { BsTabGroupPane } from '../../panes/tab-group-pane';\nimport { BsFloatingPane } from '../../panes/floating-pane';\nimport { BsDocumentHost } from '../../panes/document-host-pane';\nimport { BsDockLayout } from '../../interfaces/dock-layout';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BsDockService {\n public buildTraces(layout: BsDockLayout) {\n const result = [layout.rootPane, ...layout.floatingPanes].map(pane => this.buildTracesPrivate([pane]));\n // const result = this.buildTracesPrivate([layout.rootPane]);\n return result.flatMap(traceGroup => traceGroup);\n }\n\n private buildTracesPrivate(currentSequence: BsDockPane[]): PaneTraceResult[] {\n const children = this.getChildPanes(currentSequence[currentSequence.length - 1]);\n if (children.length === 0) {\n return [{\n finished: true,\n trace: currentSequence\n }];\n } else {\n const result = children.map(child => this.buildTracesPrivate([...currentSequence, child]));\n return result.flatMap(r => r);\n }\n }\n\n private getChildPanes(pane: BsDockPane): BsDockPane[] {\n if (pane instanceof BsContentPane) {\n return [];\n } else if (pane instanceof BsTabGroupPane) {\n return (<BsDockPane[]>pane.panes);\n } else if (pane instanceof BsSplitPane) {\n return pane.panes;\n } else if (pane instanceof BsFloatingPane) {\n return pane.pane ? [pane.pane] : [];\n } else if (pane instanceof BsDocumentHost) {\n return pane.rootPane ? [pane.rootPane] : [];\n } else {\n return [];\n }\n }\n}\n\nexport interface PaneTraceResult {\n trace: BsDockPane[];\n finished: boolean;\n}","import { Component, ElementRef, HostBinding, HostListener, Inject, Optional, forwardRef } from '@angular/core';\nimport { take } from 'rxjs';\nimport { BsTabControlComponent } from '@mintplayer/ng-bootstrap/tab-control';\nimport { Parentified } from '@mintplayer/parentify';\nimport { BsDockPanelComponent } from '../dock-panel/dock-panel.component';\nimport { BsDockComponent } from '../dock/dock.component';\nimport { BsDockPane } from '../panes/dock-pane';\nimport { BsSplitPane } from '../panes/split-pane';\nimport { BsContentPane } from '../panes/content-pane';\nimport { BsFloatingPane } from '../panes/floating-pane';\nimport { BsTabGroupPane } from '../panes/tab-group-pane';\nimport { BsDocumentHost } from '../panes/document-host-pane';\nimport { RemoveFromPaneResult } from '../interfaces/remove-from-pane-result';\nimport { DragOperation } from '../interfaces/drag-operation';\nimport { BsDockService } from '../services/dock/dock.service';\n\n@Component({\n selector: 'bs-dock-panel-header',\n templateUrl: './dock-panel-header.component.html',\n styleUrls: ['./dock-panel-header.component.scss']\n})\nexport class BsDockPanelHeaderComponent {\n constructor(private dockPanel: BsDockPanelComponent, private dock: BsDockComponent, private dockService: BsDockService, private element: ElementRef<HTMLElement>) {}\n\n isMouseDown = false;\n dragOperation?: DragOperation;\n isDragging = false;\n @HostListener('mousedown', ['$event']) onMouseDown(ev: MouseEvent) {\n ev.preventDefault();\n this.isMouseDown = true;\n }\n\n @HostListener('document:mousemove', ['$event']) onMouseMove(ev: MouseEvent) {\n if (this.isMouseDown) {\n if (!this.isDragging) {\n this.isDragging = true;\n \n this.dock.parentifiedLayout$.pipe(take(1)).subscribe((layout) => {\n // this.dock.layout$.pipe(take(1)).subscribe((layout) => {\n const traces = this.dockService.buildTraces(layout);\n console.log('traces', {layout, traces});\n const matching = traces.filter(t => {\n const lastPane = t.trace[t.trace.length - 1];\n // return (lastPane instanceof BsContentPane) && (lastPane.dockPanel === this.dockPanel);\n return (lastPane instanceof BsContentPane) && (lastPane.dockPanel === this.dockPanel);\n });\n console.log('matching', matching);\n if (matching.length !== 1) {\n return;\n }\n\n // const tabs = matching[0].trace.filter(pane => pane instanceof BsTabGroupPane);\n // const lastTabGroup = tabs[tabs.length - 1];\n // // console.log('last tabgroup', lastTabGroup);\n\n let tabControlEl = this.element.nativeElement;\n do {\n if (tabControlEl.parentElement) {\n tabControlEl = tabControlEl!.parentElement;\n } else {\n throw 'No more parents';\n }\n } while (tabControlEl.tagName.toUpperCase() !== 'BS-TAB-CONTROL');\n\n const coords = {\n width: tabControlEl.clientWidth,\n height: tabControlEl.clientHeight,\n left: ev.clientX - ev.offsetX,\n top: ev.clientY - ev.offsetY,\n };\n\n // this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();\n // this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();\n // this.removeFromPane(layout.rootPane, this.dockPanel);\n\n const trace = [...matching[0].trace];\n\n this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();\n this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();\n \n \n for (let index = trace.length - 1; index >= 0; index--) {\n if (index > 0) {\n this.removeFromPaneBis(trace[index - 1], trace[index]);\n if (!trace[index - 1].isEmpty) break;\n } else {\n const floatingIndex = layout.floatingPanes.indexOf(trace[0]);\n if (trace[0].isEmpty && (floatingIndex > -1)) {\n layout.floatingPanes.splice(floatingIndex, 1);\n }\n }\n }\n\n\n\n // this.removeFromPane((<any>matching[0].trace[0])['$original'], this.dockPanel);\n\n const floatingPane = new BsFloatingPane({\n pane: new BsTabGroupPane({\n panes: [\n new BsContentPane({\n dockPanel: this.dockPanel\n })\n ]\n }),\n size: {\n width: coords.width,\n height: coords.height,\n },\n location: {\n x: coords.left,\n y: coords.top,\n }\n });\n this.dragOperation = {\n offsetX: ev.offsetX,\n offsetY: ev.offsetY,\n floatingPane\n };\n layout.floatingPanes.push(floatingPane);\n setTimeout(() => this.dock.layout$.next(layout), 5);\n // console.log('traces', { traces, matching, dockPanel: this.dockPanel, equals: traces[2].trace[3] });\n\n // let element: HTMLElement | null = this.element.nativeElement;\n // let tree: HTMLElement[] = [];\n // do {\n // tree.push(element!);\n // element = element!.parentElement;\n // } while (element);\n\n // const tabControls = tree.filter(el => el.tagName.toUpperCase() === 'BS-TAB-CONTROL');\n // if (tabControls.length > 0) {\n // const coords = {\n // width: tabControls[0].clientWidth,\n // height: tabControls[0].clientHeight,\n // left: ev.clientX - ev.offsetX,\n // top: ev.clientY - ev.offsetY,\n // };\n\n // this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();\n // this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();\n // this.removeFromPane(layout.rootPane, this.dockPanel);\n\n // const floatingPane = new BsFloatingPane({\n // pane: new BsTabGroupPane({\n // panes: [\n // new BsContentPane({\n // dockPanel: this.dockPanel\n // })\n // ]\n // }),\n // size: {\n // width: coords.width,\n // height: coords.height,\n // },\n // location: {\n // x: coords.left,\n // y: coords.top,\n // }\n // });\n \n // this.dragOperation = {\n // offsetX: ev.offsetX,\n // offsetY: ev.offsetY,\n // floatingPane\n // };\n\n // layout.floatingPanes.push(floatingPane);\n // this.dock.layout$.next(layout);\n // }\n });\n } else {\n if (this.dragOperation) {\n if (this.dragOperation.floatingPane.location) {\n this.dragOperation.floatingPane.location.x = ev.clientX - this.dragOperation.offsetX;\n this.dragOperation.floatingPane.location.y = ev.clientY - this.dragOperation.offsetY;\n }\n // } else {\n // const traces = this.dockService.buildTraces(this.dock.layout);\n // const matchingTrace = traces.filter(trace => {\n // const pane = trace.trace[trace.trace.length - 1];\n // return (pane instanceof BsContentPane) && (pane.dockPanel === this.dockPanel);\n // });\n\n // console.log('matching', { traces, matchingTrace });\n // // this.dragOperation = {\n \n // // }\n }\n }\n }\n }\n\n removeFromPaneBis(host: BsDockPane, pane: BsDockPane) {\n if (host instanceof BsContentPane) {\n } else if (host instanceof BsDocumentHost) {\n // Actually documentHost should never be removed\n } else if (host instanceof BsTabGroupPane) {\n if (pane instanceof BsContentPane) {\n const index = host.panes.indexOf(pane);\n host.panes.splice(index, 1);\n }\n } else if (host instanceof BsSplitPane) {\n const index = host.panes.indexOf(pane);\n host.panes.splice(index, 1);\n } else if (host instanceof BsFloatingPane) {\n } else {\n throw 'Unknown pane type';\n }\n }\n\n // removeFromPane(host: BsDockPane, panel: BsDockPanelComponent /*, parents: BsDockPane[] */): RemoveFromPaneResult {\n // if (host instanceof BsContentPane) {\n // return { paneRemoved: false, hostIsEmpty: false };\n // } else if (host instanceof BsDocumentHost) {\n // // Actually documentHost should never be removed\n\n // if (!host.rootPane) {\n // return { paneRemoved: false, hostIsEmpty: true };\n // }\n\n // const result = this.removeFromPane(host.rootPane, panel);\n // return { paneRemoved: result.paneRemoved, hostIsEmpty: result.hostIsEmpty };\n\n // } else if (host instanceof BsTabGroupPane) {\n\n\n\n // const matching = host.panes.filter(p => p.dockPanel === panel);\n // if (matching.length > 0) {\n // host.panes.splice(host.panes.findIndex(p => p.dockPanel === panel), 1);\n // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };\n // } else {\n // // ATM. all panes are ContentPanes anyway.\n // // So unless you'd want to have splitters inside the tabs,\n // // This code will not be hit.\n\n // // const result = host.panes\n // // .map(parentPane => this.removeFromPane(parentPane, panel))\n // // .filter(r => r.paneRemoved);\n // //\n // // if (result.length > 0) {\n // // return { paneRemoved: true, hostIsEmpty: }\n // // }\n // return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };\n // }\n\n\n\n\n // } else if (host instanceof BsSplitPane) {\n // const matching = host.panes\n // .filter(p => p instanceof BsContentPane)\n // .map(p => <BsContentPane>p)\n // .filter(p => p.dockPanel === panel);\n \n // if (matching.length > 0) {\n // host.panes.splice(host.panes.findIndex(p => (p instanceof BsContentPane) && matching.includes(p)), 1);\n\n // // TODO: Remove splitter if only 1 pane left?\n // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };\n // } else {\n\n\n // for (let splitPane of host.panes) {\n // const result = this.removeFromPane(splitPane, panel);\n // if (result.paneRemoved && result.hostIsEmpty) {\n // // splitPane is empty now, so we can remove it from this splitter\n // host.panes.splice(host.panes.indexOf(splitPane), 1);\n // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };\n // }\n // }\n // }\n\n // return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };\n // } else {\n // throw 'unknown host type';\n // }\n // }\n\n @HostListener('document:mouseup', ['$event']) onMouseUp(ev: Event) {\n this.isMouseDown = false;\n this.isDragging = false;\n this.dragOperation = undefined;\n }\n\n @HostBinding('class.d-block') dBlock = true;\n}\n","<ng-content></ng-content>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { BsCardModule } from '@mintplayer/ng-bootstrap/card';\nimport { BsSplitterModule } from '@mintplayer/ng-bootstrap/splitter';\nimport { BsResizableModule } from '@mintplayer/ng-bootstrap/resizable';\nimport { BsTabControlModule } from '@mintplayer/ng-bootstrap/tab-control';\nimport { BsInstanceOfModule } from '@mintplayer/ng-bootstrap/instance-of';\nimport { BsDockComponent } from './dock/dock.component';\nimport { BsDockPanelComponent } from './dock-panel/dock-panel.component';\nimport { BsDockPanelHeaderComponent } from './dock-panel-header/dock-panel-header.component';\nimport { BsDockPaneRendererComponent } from './dock-pane-renderer/dock-pane-renderer.component';\n\n@NgModule({\n declarations: [\n BsDockComponent,\n BsDockPanelComponent,\n BsDockPanelHeaderComponent,\n BsDockPaneRendererComponent\n ],\n imports: [\n CommonModule,\n PortalModule,\n BsCardModule,\n BsInstanceOfModule,\n BsSplitterModule,\n BsTabControlModule,\n BsResizableModule\n ],\n exports: [\n BsDockComponent,\n BsDockPanelComponent,\n BsDockPanelHeaderComponent,\n BsDockPaneRendererComponent\n ]\n})\nexport class BsDockModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.BsDockPaneRendererComponent","i1.BsDockPanelComponent","i2.BsDockComponent","i3.BsDockService"],"mappings":";;;;;;;;;;;;;;;;;;;MASa,oBAAoB,CAAA;AALjC,IAAA,WAAA,GAAA;QAWW,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;AAMvB,KAAA;IAJC,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;KACvE;;iHAXU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,wSCTjC,wOAO0B,EAAA,MAAA,EAAA,CAAA,0KAAA,CAAA,EAAA,CAAA,CAAA;2FDEb,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,wOAAA,EAAA,MAAA,EAAA,CAAA,0KAAA,CAAA,EAAA,CAAA;8BAMG,aAAa,EAAA,CAAA;sBAAxC,SAAS;uBAAC,eAAe,CAAA;gBACG,cAAc,EAAA,CAAA;sBAA1C,SAAS;uBAAC,gBAAgB,CAAA;gBAGlB,OAAO,EAAA,CAAA;sBAAf,KAAK;;;MEfc,UAAU,CAAA;AAE/B;;ACCK,MAAO,cAAe,SAAQ,UAAU,CAAA;AAC1C,IAAA,WAAA,CAAY,IAA8B,EAAA;AACtC,QAAA,KAAK,EAAE,CAAC;QAIZ,IAAK,CAAA,KAAA,GAAoB,EAAE,CAAC;AAHxB,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC7B;AAID,IAAA,IAAa,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;KAClC;AACJ;;ACXK,MAAO,cAAe,SAAQ,UAAU,CAAA;AAC1C,IAAA,WAAA,CAAY,IAA8B,EAAA;AACtC,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC7B;AAID,IAAA,IAAa,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI,CAAC;KACzC;AACJ;;ACXK,MAAO,aAAc,SAAQ,UAAU,CAAA;AACzC,IAAA,WAAA,CAAY,IAA6B,EAAA;AACrC,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC7B;AAKD,IAAA,IAAa,OAAO,GAAA;AAChB,QAAA,OAAO,KAAK,CAAC;KAChB;AACJ;;ACXK,MAAO,cAAe,SAAQ,UAAU,CAAA;AAC1C,IAAA,WAAA,CAAY,IAA8B,EAAA;AACtC,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC7B;AAMD,IAAA,IAAa,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC;KACrC;AACJ;;ACdK,MAAO,WAAY,SAAQ,UAAU,CAAA;AACvC,IAAA,WAAA,CAAY,IAA2B,EAAA;AACnC,QAAA,KAAK,EAAE,CAAC;QAIZ,IAAW,CAAA,WAAA,GAAyB,YAAY,CAAC;QACjD,IAAK,CAAA,KAAA,GAAiB,EAAE,CAAC;AAJrB,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC7B;AAKD,IAAA,IAAa,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;KAClC;AACJ;;ICfW,UAKX;AALD,CAAA,UAAY,SAAS,EAAA;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB,CAAA;AAChB,IAAA,SAAA,CAAA,SAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa,CAAA;AACb,IAAA,SAAA,CAAA,SAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAe,CAAA;AACf,IAAA,SAAA,CAAA,SAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB,CAAA;AACpB,CAAC,EALW,SAAS,KAAT,SAAS,GAKpB,EAAA,CAAA,CAAA;;MCYY,2BAA2B,CAAA;IAEtC,WAAoB,CAAA,OAAgB,EAAE,OAAmB,EAAA;QAArC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAMpC,IAAS,CAAA,SAAA,GAAG,SAAS,CAAC;QACb,IAAkB,CAAA,kBAAA,GAAG,cAAc,CAAC;QACpC,IAAc,CAAA,cAAA,GAAG,cAAc,CAAC;QAChC,IAAc,CAAA,cAAA,GAAG,WAAW,CAAC;QAC7B,IAAiB,CAAA,iBAAA,GAAG,aAAa,CAAC;QAClC,IAAkB,CAAA,kBAAA,GAAG,cAAc,CAAC;;AAG7C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAoB,IAAI,CAAC,CAAC;QAbrD,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;KACtC;AAaD,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KAC3B;IACD,IAAoB,MAAM,CAAC,KAAwB,EAAA;AACjD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;IAIM,aAAa,GAAA;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACrC,SAAA;KACF;IAEM,cAAc,GAAA;QACnB,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC7B,SAAA;KACF;;wHAvCU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4GAA3B,2BAA2B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBxC,8uDA6Be,EAAA,MAAA,EAAA,CAAA,oGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDZF,2BAA2B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,8uDAAA,EAAA,MAAA,EAAA,CAAA,oGAAA,CAAA,EAAA,CAAA;uHAwBb,MAAM,EAAA,CAAA;sBAAzB,KAAK;;;MElBK,eAAe,CAAA;AAC1B,IAAA,WAAA,GAAA;;AAwCA,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAyB,EAAE,CAAC,CAAC;;AAe1D,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAgC,EAAE,CAAC,CAAC;QAMnE,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;QAMxB,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AAIf,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;AAtEzB,QAAA,MAAM,IAAI,GAAG,IAAI,cAAc,EAAE,CAAC;AAClC,QAAA,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;AACrC,QAAA,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AAExB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,CAAe;AAC/C,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,aAAa,EAAE,EAAE;AAClB,SAAA,CAAC,CAAC;;;;;QAQH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5C,aAAA,SAAS,CAAC,CAAC,QAAQ,KAAI;AACtB,YAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;AACrD,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAG;AACvD,YAAA,MAAM,KAAK,GAAG,SAAS,CACrB,MAAM,EAAE,IAAI;;AAEZ,YAAA,CAAC,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,CAAC,EAC5E,IAAI,EACJ,IAAI,CAAC,SAAS,CAAC,CAAC;AAElB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;YAE7B,OAAO,KAAK,CAAC,MAAM,CAAC;SACrB,CAAC,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KACjF;IAMD,IAA2C,MAAM,CAAC,KAAsC,EAAA;QACtF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;KACpC;AAID,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KAC3B;IACD,IAAoB,MAAM,CAAC,KAAmB,EAAA;AAC5C,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;IAID,IAA8B,aAAa,CAAC,KAA6C,EAAA;QACvF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;KACtC;IAcD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;KAC/D;;4GA5EU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gGAAf,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EA0CT,oBAAoB,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7DvC,ipBAgBA,EAAA,MAAA,EAAA,CAAA,iJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDGa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,SAAS,EAAA,QAAA,EAAA,ipBAAA,EAAA,MAAA,EAAA,CAAA,iJAAA,CAAA,EAAA,CAAA;0EA8CwB,MAAM,EAAA,CAAA;sBAAhD,eAAe;uBAAC,oBAAoB,CAAA;gBASjB,MAAM,EAAA,CAAA;sBAAzB,KAAK;gBAMwB,aAAa,EAAA,CAAA;sBAA1C,YAAY;uBAAC,UAAU,CAAA;gBAKxB,gBAAgB,EAAA,CAAA;sBADf,WAAW;uBAAC,yBAAyB,CAAA;gBAOtC,UAAU,EAAA,CAAA;sBAJT,WAAW;uBAAC,WAAW,CAAA;;sBACvB,WAAW;uBAAC,YAAY,CAAA;;sBACxB,WAAW;uBAAC,cAAc,CAAA;;sBAC1B,WAAW;uBAAC,aAAa,CAAA;;;ME1Ef,aAAa,CAAA;AACjB,IAAA,WAAW,CAAC,MAAoB,EAAA;AACrC,QAAA,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;QAEvG,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC;KACjD;AAEO,IAAA,kBAAkB,CAAC,eAA6B,EAAA;AACtD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACjF,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,YAAA,OAAO,CAAC;AACN,oBAAA,QAAQ,EAAE,IAAI;AACd,oBAAA,KAAK,EAAE,eAAe;AACvB,iBAAA,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;YACL,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3F,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,SAAA;KACF;AAEO,IAAA,aAAa,CAAC,IAAgB,EAAA;QACpC,IAAI,IAAI,YAAY,aAAa,EAAE;AACjC,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;aAAM,IAAI,IAAI,YAAY,cAAc,EAAE;YACzC,OAAsB,IAAI,CAAC,KAAM,CAAC;AACnC,SAAA;aAAM,IAAI,IAAI,YAAY,WAAW,EAAE;YACtC,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB,SAAA;aAAM,IAAI,IAAI,YAAY,cAAc,EAAE;AACzC,YAAA,OAAO,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACrC,SAAA;aAAM,IAAI,IAAI,YAAY,cAAc,EAAE;AACzC,YAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AAC7C,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;KACF;;0GAlCU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCUY,0BAA0B,CAAA;AACrC,IAAA,WAAA,CAAoB,SAA+B,EAAU,IAAqB,EAAU,WAA0B,EAAU,OAAgC,EAAA;QAA5I,IAAS,CAAA,SAAA,GAAT,SAAS,CAAsB;QAAU,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAiB;QAAU,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;QAAU,IAAO,CAAA,OAAA,GAAP,OAAO,CAAyB;QAEhK,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAEpB,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QAoQW,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;KAxQwH;AAK7H,IAAA,WAAW,CAAC,EAAc,EAAA;QAC/D,EAAE,CAAC,cAAc,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KACzB;AAE+C,IAAA,WAAW,CAAC,EAAc,EAAA;QACxE,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAEvB,gBAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;;oBAE9D,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBACpD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC;oBACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAG;AACjC,wBAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;AAE7C,wBAAA,OAAO,CAAC,QAAQ,YAAY,aAAa,MAAM,QAAQ,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC;AACxF,qBAAC,CAAC,CAAC;AACH,oBAAA,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAClC,oBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;wBACzB,OAAO;AACR,qBAAA;;;;AAMD,oBAAA,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;oBAC9C,GAAG;wBACD,IAAI,YAAY,CAAC,aAAa,EAAE;AAC9B,4BAAA,YAAY,GAAG,YAAa,CAAC,aAAa,CAAC;AAC5C,yBAAA;AAAM,6BAAA;AACL,4BAAA,MAAM,iBAAiB,CAAC;AACzB,yBAAA;qBACF,QAAQ,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,gBAAgB,EAAE;AAElE,oBAAA,MAAM,MAAM,GAAG;wBACb,KAAK,EAAE,YAAY,CAAC,WAAW;wBAC/B,MAAM,EAAE,YAAY,CAAC,YAAY;AACjC,wBAAA,IAAI,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO;AAC7B,wBAAA,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO;qBAC7B,CAAC;;;;oBAMF,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAErC,oBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;AACjF,oBAAA,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;AAGnF,oBAAA,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;wBACtD,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,4BAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;4BACvD,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO;gCAAE,MAAM;AACtC,yBAAA;AAAM,6BAAA;AACL,4BAAA,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,4BAAA,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,aAAa,GAAG,CAAC,CAAC,CAAC,EAAE;gCAC5C,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AAC/C,6BAAA;AACF,yBAAA;AACF,qBAAA;;AAMD,oBAAA,MAAM,YAAY,GAAG,IAAI,cAAc,CAAC;wBACtC,IAAI,EAAE,IAAI,cAAc,CAAC;AACvB,4BAAA,KAAK,EAAE;AACL,gCAAA,IAAI,aAAa,CAAC;oCAChB,SAAS,EAAE,IAAI,CAAC,SAAS;iCAC1B,CAAC;AACH,6BAAA;yBACF,CAAC;AACF,wBAAA,IAAI,EAAE;4BACJ,KAAK,EAAE,MAAM,CAAC,KAAK;4BACnB,MAAM,EAAE,MAAM,CAAC,MAAM;AACtB,yBAAA;AACD,wBAAA,QAAQ,EAAE;4BACR,CAAC,EAAE,MAAM,CAAC,IAAI;4BACd,CAAC,EAAE,MAAM,CAAC,GAAG;AACd,yBAAA;AACF,qBAAA,CAAC,CAAC;oBACH,IAAI,CAAC,aAAa,GAAG;wBACnB,OAAO,EAAE,EAAE,CAAC,OAAO;wBACnB,OAAO,EAAE,EAAE,CAAC,OAAO;wBACnB,YAAY;qBACb,CAAC;AACF,oBAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACxC,oBAAA,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDtD,iBAAC,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA;gBACL,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,oBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE;AAC5C,wBAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AACrF,wBAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AACtF,qBAAA;;;;;;;;;;AAYF,iBAAA;AACF,aAAA;AACF,SAAA;KACF;IAED,iBAAiB,CAAC,IAAgB,EAAE,IAAgB,EAAA;QAClD,IAAI,IAAI,YAAY,aAAa,EAAE;AAClC,SAAA;aAAM,IAAI,IAAI,YAAY,cAAc,EAAE;;AAE1C,SAAA;aAAM,IAAI,IAAI,YAAY,cAAc,EAAE;YACzC,IAAI,IAAI,YAAY,aAAa,EAAE;gBACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7B,aAAA;AACF,SAAA;aAAM,IAAI,IAAI,YAAY,WAAW,EAAE;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7B,SAAA;aAAM,IAAI,IAAI,YAAY,cAAc,EAAE;AAC1C,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,mBAAmB,CAAC;AAC3B,SAAA;KACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuE6C,IAAA,SAAS,CAAC,EAAS,EAAA;AAC/D,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;KAChC;;uHAvQU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,+PCrBvC,2BAAyB,EAAA,MAAA,EAAA,CAAA,mKAAA,CAAA,EAAA,CAAA,CAAA;2FDqBZ,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,mKAAA,CAAA,EAAA,CAAA;qLAUO,WAAW,EAAA,CAAA;sBAAjD,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAKW,WAAW,EAAA,CAAA;sBAA1D,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAwPA,SAAS,EAAA,CAAA;sBAAtD,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAMd,MAAM,EAAA,CAAA;sBAAnC,WAAW;uBAAC,eAAe,CAAA;;;ME1PjB,YAAY,CAAA;;yGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,iBArBrB,eAAe;QACf,oBAAoB;QACpB,0BAA0B;AAC1B,QAAA,2BAA2B,aAG3B,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,kBAAkB;QAClB,gBAAgB;QAChB,kBAAkB;AAClB,QAAA,iBAAiB,aAGjB,eAAe;QACf,oBAAoB;QACpB,0BAA0B;QAC1B,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAGlB,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAfrB,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,kBAAkB;QAClB,gBAAgB;QAChB,kBAAkB;QAClB,iBAAiB,CAAA,EAAA,CAAA,CAAA;2FASR,YAAY,EAAA,UAAA,EAAA,CAAA;kBAvBxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,eAAe;wBACf,oBAAoB;wBACpB,0BAA0B;wBAC1B,2BAA2B;AAC5B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,kBAAkB;wBAClB,gBAAgB;wBAChB,kBAAkB;wBAClB,iBAAiB;AAClB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,eAAe;wBACf,oBAAoB;wBACpB,0BAA0B;wBAC1B,2BAA2B;AAC5B,qBAAA;AACF,iBAAA,CAAA;;;ACnCD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"mintplayer-ng-bootstrap-dock.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-panel/dock-panel.component.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-panel/dock-panel.component.html","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/dock-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/tab-group-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/document-host-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/content-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/floating-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/panes/split-pane.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/enums/pane-type.enum.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-pane-renderer/dock-pane-renderer.component.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-pane-renderer/dock-pane-renderer.component.html","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock/dock.component.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock/dock.component.html","../../../../libs/mintplayer-ng-bootstrap/dock/src/services/dock/dock.service.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-panel-header/dock-panel-header.component.ts","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock-panel-header/dock-panel-header.component.html","../../../../libs/mintplayer-ng-bootstrap/dock/src/dock.module.ts","../../../../libs/mintplayer-ng-bootstrap/dock/mintplayer-ng-bootstrap-dock.ts"],"sourcesContent":["import { DomPortal } from '@angular/cdk/portal';\nimport { Component, ElementRef, Input, AfterViewInit, ViewChild, Inject, Optional, forwardRef } from '@angular/core';\nimport { BsTabControlComponent } from '@mintplayer/ng-bootstrap/tab-control';\n\n@Component({\n selector: 'bs-dock-panel',\n templateUrl: './dock-panel.component.html',\n styleUrls: ['./dock-panel.component.scss']\n})\nexport class BsDockPanelComponent implements AfterViewInit {\n\n @ViewChild('headerElement') headerElement!: ElementRef<HTMLDivElement>;\n @ViewChild('contentElement') contentElement!: ElementRef<HTMLDivElement>;\n headerPortal?: DomPortal;\n contentPortal?: DomPortal;\n @Input() panelId = '';\n\n ngAfterViewInit() {\n this.headerPortal = new DomPortal(this.headerElement.nativeElement);\n this.contentPortal = new DomPortal(this.contentElement.nativeElement);\n }\n}\n","<!-- <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> -->","export abstract class BsDockPane {\n abstract get isEmpty(): boolean;\n}","import { BsContentPane } from \"./content-pane\";\nimport { BsDockPane } from \"./dock-pane\";\n\nexport class BsTabGroupPane extends BsDockPane {\n constructor(data?: Partial<BsTabGroupPane>) {\n super();\n Object.assign(this, data);\n }\n\n panes: BsContentPane[] = [];\n \n override get isEmpty() {\n return this.panes.length === 0;\n }\n}","import { BsDockPane } from \"./dock-pane\";\nimport { BsTabGroupPane } from \"./tab-group-pane\";\n\nexport class BsDocumentHost extends BsDockPane {\n constructor(data?: Partial<BsDocumentHost>) {\n super();\n Object.assign(this, data);\n }\n\n rootPane?: BsTabGroupPane\n\n override get isEmpty() {\n return this.rootPane?.isEmpty ?? true;\n }\n}","import { BsDockPanelComponent } from \"../dock-panel/dock-panel.component\";\nimport { BsDockPane } from \"./dock-pane\";\n\nexport class BsContentPane extends BsDockPane {\n constructor(data?: Partial<BsContentPane>) {\n super();\n Object.assign(this, data);\n }\n\n dockPanel!: BsDockPanelComponent;\n isPinned?: boolean;\n\n override get isEmpty() {\n return false;\n }\n}","import { BsDockPane } from \"./dock-pane\";\nimport { Point } from \"../interfaces/point\";\nimport { Size } from \"../interfaces/size\";\n\nexport class BsFloatingPane extends BsDockPane {\n constructor(data?: Partial<BsFloatingPane>) {\n super();\n Object.assign(this, data);\n }\n \n pane?: BsDockPane;\n size?: Size;\n location?: Point;\n\n override get isEmpty() {\n return this.pane?.isEmpty ?? true;\n }\n}","import { SplitPaneOrientation } from \"../types/split-pane-orientation.type\";\nimport { BsDockPane } from \"./dock-pane\";\n\nexport class BsSplitPane extends BsDockPane {\n constructor(data?: Partial<BsSplitPane>) {\n super();\n Object.assign(this, data);\n }\n\n orientation: SplitPaneOrientation = 'horizontal';\n panes: BsDockPane[] = [];\n\n override get isEmpty() {\n return this.panes.length === 0;\n }\n}","export enum EPaneType {\n documentHost = 1,\n splitPane = 2,\n contentPane = 3,\n tabGroupPane = 4,\n}","import { Component, ElementRef, HostBinding, Input } from '@angular/core';\nimport { DomPortal } from '@angular/cdk/portal';\nimport { BehaviorSubject, Observable, map } from 'rxjs';\nimport { BsDockPane } from '../panes/dock-pane';\nimport { EPaneType } from '../enums/pane-type.enum';\nimport { BsSplitPane } from '../panes/split-pane';\nimport { BsContentPane } from '../panes/content-pane';\nimport { BsDocumentHost } from '../panes/document-host-pane';\nimport { BsTabGroupPane } from '../panes/tab-group-pane';\nimport { BsFloatingPane } from '../panes/floating-pane';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\n\n@Component({\n selector: 'bs-dock-pane-renderer',\n templateUrl: './dock-pane-renderer.component.html',\n styleUrls: ['./dock-pane-renderer.component.scss']\n})\nexport class BsDockPaneRendererComponent {\n\n constructor(private overlay: Overlay, element: ElementRef) {\n this.portal = new DomPortal(element);\n }\n\n portal: DomPortal;\n\n paneTypes = EPaneType;\n readonly BsDocumentHostType = BsDocumentHost;\n readonly BsTabGroupType = BsTabGroupPane;\n readonly BsSplitterType = BsSplitPane;\n readonly BsContentPaneType = BsContentPane;\n readonly BsFloatingPaneType = BsFloatingPane;\n\n //#region Layout\n layout$ = new BehaviorSubject<BsDockPane | null>(null);\n public get layout() {\n return this.layout$.value;\n }\n @Input() public set layout(value: BsDockPane | null) {\n this.layout$.next(value);\n }\n //#endregion\n\n private overlayRef?: OverlayRef;\n public moveToOverlay() {\n if (!this.overlayRef && !this.portal.isAttached) {\n this.overlayRef = this.overlay.create({});\n this.portal.attach(this.overlayRef);\n }\n }\n\n public disposeOverlay() {\n if (this.overlayRef) {\n this.portal.detach();\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n }\n }\n}\n","<!-- <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\" [allowDragDrop]=\"false\" 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 <ng-container *bsInstanceofCase=\"BsFloatingPaneType; let floating\">\n <bs-resizable *ngIf=\"floating.pane\" [positioning]=\"'absolute'\" [presetPosition]=\"{ left: floating.location?.x ?? 0, top: floating.location?.y ?? 0, width: floating.size?.width ?? 200, height: floating.size?.height ?? 100 }\">\n <bs-dock-pane-renderer [layout]=\"floating.pane\"></bs-dock-pane-renderer>\n </bs-resizable>\n </ng-container>\n <div *bsInstanceofDefault>\n No match\n </div>\n</ng-container>","import { Component, ContentChildren, ViewChildren, Input, OnDestroy, QueryList, HostBinding } from '@angular/core';\nimport { BehaviorSubject, combineLatest, combineLatestAll, map, Observable, Subject, takeUntil } from 'rxjs';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { Parentified, deepClone } from '@mintplayer/parentify';\nimport { BsDockPanelComponent } from '../dock-panel/dock-panel.component';\nimport { EPaneType } from '../enums/pane-type.enum';\nimport { BsDockLayout } from '../interfaces/dock-layout';\nimport { BsTabGroupPane } from '../panes/tab-group-pane';\nimport { BsDocumentHost } from '../panes/document-host-pane';\nimport { BsContentPane } from '../panes/content-pane';\nimport { BsFloatingPane } from '../panes/floating-pane';\nimport { BsSplitPane } from '../panes/split-pane';\nimport { BsDockPaneRendererComponent } from '../dock-pane-renderer/dock-pane-renderer.component';\n\n@Component({\n selector: 'bs-dock',\n templateUrl: './dock.component.html',\n styleUrls: ['./dock.component.scss']\n})\nexport class BsDockComponent implements OnDestroy {\n constructor() {\n const tabs = new BsTabGroupPane();\n const docHost = new BsDocumentHost();\n docHost.rootPane = tabs;\n\n this.layout$ = new BehaviorSubject<BsDockLayout>({\n rootPane: docHost,\n floatingPanes: []\n });\n\n // combineLatest([this.layout$, this.panels$])\n // .pipe(takeUntil(this.destroyed$))\n // .subscribe(([layout, panels]) => {\n \n // })\n\n this.floating$.pipe(takeUntil(this.destroyed$))\n .subscribe((floating) => {\n floating.forEach((panel) => panel.moveToOverlay());\n });\n \n this.parentifiedLayout$ = this.layout$.pipe(map(layout => {\n const clone = deepClone(\n layout, true,\n // []\n [BsContentPane, BsDocumentHost, BsFloatingPane, BsSplitPane, BsTabGroupPane],\n true,\n this.paneCache);\n\n this.paneCache = clone.cache;\n\n return clone.result;\n }));\n\n this.parentifiedLayout$.pipe(takeUntil(this.destroyed$)).subscribe(console.log);\n }\n\n private paneCache?: Map<any, any>;\n\n //#region Panels\n panels$ = new BehaviorSubject<BsDockPanelComponent[]>([]);\n @ContentChildren(BsDockPanelComponent) set panels(value: QueryList<BsDockPanelComponent>) {\n this.panels$.next(value.toArray());\n }\n //#endregion\n //#region Layout\n layout$: BehaviorSubject<BsDockLayout>;\n public get layout() {\n return this.layout$.value;\n }\n @Input() public set layout(value: BsDockLayout) {\n this.layout$.next(value);\n }\n //#endregion\n\n floating$ = new BehaviorSubject<BsDockPaneRendererComponent[]>([]);\n @ViewChildren('floating') set floatingPanes(value: QueryList<BsDockPaneRendererComponent>) {\n this.floating$.next(value.toArray());\n }\n\n @HostBinding('class.position-absolute')\n positionAbsolute = true;\n\n @HostBinding('style.top')\n @HostBinding('style.left')\n @HostBinding('style.bottom')\n @HostBinding('style.right')\n positionPx = 0;\n\n parentifiedLayout$: Observable<Parentified<BsDockLayout>>;\n\n destroyed$ = new Subject();\n ngOnDestroy() {\n this.destroyed$.next(true);\n this.floating$.value.forEach(panel => panel.disposeOverlay());\n }\n}\n","<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\"></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","import { Injectable } from '@angular/core';\nimport { BsDockPane } from '../../panes/dock-pane';\nimport { BsSplitPane } from '../../panes/split-pane';\nimport { BsContentPane } from '../../panes/content-pane';\nimport { BsTabGroupPane } from '../../panes/tab-group-pane';\nimport { BsFloatingPane } from '../../panes/floating-pane';\nimport { BsDocumentHost } from '../../panes/document-host-pane';\nimport { BsDockLayout } from '../../interfaces/dock-layout';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BsDockService {\n public buildTraces(layout: BsDockLayout) {\n const result = [layout.rootPane, ...layout.floatingPanes].map(pane => this.buildTracesPrivate([pane]));\n // const result = this.buildTracesPrivate([layout.rootPane]);\n return result.flatMap(traceGroup => traceGroup);\n }\n\n private buildTracesPrivate(currentSequence: BsDockPane[]): PaneTraceResult[] {\n const children = this.getChildPanes(currentSequence[currentSequence.length - 1]);\n if (children.length === 0) {\n return [{\n finished: true,\n trace: currentSequence\n }];\n } else {\n const result = children.map(child => this.buildTracesPrivate([...currentSequence, child]));\n return result.flatMap(r => r);\n }\n }\n\n private getChildPanes(pane: BsDockPane): BsDockPane[] {\n if (pane instanceof BsContentPane) {\n return [];\n } else if (pane instanceof BsTabGroupPane) {\n return (<BsDockPane[]>pane.panes);\n } else if (pane instanceof BsSplitPane) {\n return pane.panes;\n } else if (pane instanceof BsFloatingPane) {\n return pane.pane ? [pane.pane] : [];\n } else if (pane instanceof BsDocumentHost) {\n return pane.rootPane ? [pane.rootPane] : [];\n } else {\n return [];\n }\n }\n}\n\nexport interface PaneTraceResult {\n trace: BsDockPane[];\n finished: boolean;\n}","import { Component, ElementRef, HostBinding, HostListener, Inject, Optional, forwardRef } from '@angular/core';\nimport { take } from 'rxjs';\nimport { BsTabControlComponent } from '@mintplayer/ng-bootstrap/tab-control';\nimport { Parentified } from '@mintplayer/parentify';\nimport { BsDockPanelComponent } from '../dock-panel/dock-panel.component';\nimport { BsDockComponent } from '../dock/dock.component';\nimport { BsDockPane } from '../panes/dock-pane';\nimport { BsSplitPane } from '../panes/split-pane';\nimport { BsContentPane } from '../panes/content-pane';\nimport { BsFloatingPane } from '../panes/floating-pane';\nimport { BsTabGroupPane } from '../panes/tab-group-pane';\nimport { BsDocumentHost } from '../panes/document-host-pane';\nimport { RemoveFromPaneResult } from '../interfaces/remove-from-pane-result';\nimport { DragOperation } from '../interfaces/drag-operation';\nimport { BsDockService } from '../services/dock/dock.service';\n\n@Component({\n selector: 'bs-dock-panel-header',\n templateUrl: './dock-panel-header.component.html',\n styleUrls: ['./dock-panel-header.component.scss']\n})\nexport class BsDockPanelHeaderComponent {\n constructor(private dockPanel: BsDockPanelComponent, private dock: BsDockComponent, private dockService: BsDockService, private element: ElementRef<HTMLElement>) {}\n\n isMouseDown = false;\n dragOperation?: DragOperation;\n isDragging = false;\n @HostListener('mousedown', ['$event']) onMouseDown(ev: MouseEvent) {\n ev.preventDefault();\n this.isMouseDown = true;\n }\n\n @HostListener('document:mousemove', ['$event']) onMouseMove(ev: MouseEvent) {\n if (this.isMouseDown) {\n if (!this.isDragging) {\n this.isDragging = true;\n \n this.dock.parentifiedLayout$.pipe(take(1)).subscribe((layout) => {\n // this.dock.layout$.pipe(take(1)).subscribe((layout) => {\n const traces = this.dockService.buildTraces(layout);\n console.log('traces', {layout, traces});\n const matching = traces.filter(t => {\n const lastPane = t.trace[t.trace.length - 1];\n // return (lastPane instanceof BsContentPane) && (lastPane.dockPanel === this.dockPanel);\n return (lastPane instanceof BsContentPane) && (lastPane.dockPanel === this.dockPanel);\n });\n console.log('matching', matching);\n if (matching.length !== 1) {\n return;\n }\n\n // const tabs = matching[0].trace.filter(pane => pane instanceof BsTabGroupPane);\n // const lastTabGroup = tabs[tabs.length - 1];\n // // console.log('last tabgroup', lastTabGroup);\n\n let tabControlEl = this.element.nativeElement;\n do {\n if (tabControlEl.parentElement) {\n tabControlEl = tabControlEl!.parentElement;\n } else {\n throw 'No more parents';\n }\n } while (tabControlEl.tagName.toUpperCase() !== 'BS-TAB-CONTROL');\n\n const coords = {\n width: tabControlEl.clientWidth,\n height: tabControlEl.clientHeight,\n left: ev.clientX - ev.offsetX,\n top: ev.clientY - ev.offsetY,\n };\n\n // this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();\n // this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();\n // this.removeFromPane(layout.rootPane, this.dockPanel);\n\n const trace = [...matching[0].trace];\n\n this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();\n this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();\n \n \n for (let index = trace.length - 1; index >= 0; index--) {\n if (index > 0) {\n this.removeFromPaneBis(trace[index - 1], trace[index]);\n if (!trace[index - 1].isEmpty) break;\n } else {\n const floatingIndex = layout.floatingPanes.indexOf(trace[0]);\n if (trace[0].isEmpty && (floatingIndex > -1)) {\n layout.floatingPanes.splice(floatingIndex, 1);\n }\n }\n }\n\n\n\n // this.removeFromPane((<any>matching[0].trace[0])['$original'], this.dockPanel);\n\n const floatingPane = new BsFloatingPane({\n pane: new BsTabGroupPane({\n panes: [\n new BsContentPane({\n dockPanel: this.dockPanel\n })\n ]\n }),\n size: {\n width: coords.width,\n height: coords.height,\n },\n location: {\n x: coords.left,\n y: coords.top,\n }\n });\n this.dragOperation = {\n offsetX: ev.offsetX,\n offsetY: ev.offsetY,\n floatingPane\n };\n layout.floatingPanes.push(floatingPane);\n setTimeout(() => this.dock.layout$.next(layout), 5);\n // console.log('traces', { traces, matching, dockPanel: this.dockPanel, equals: traces[2].trace[3] });\n\n // let element: HTMLElement | null = this.element.nativeElement;\n // let tree: HTMLElement[] = [];\n // do {\n // tree.push(element!);\n // element = element!.parentElement;\n // } while (element);\n\n // const tabControls = tree.filter(el => el.tagName.toUpperCase() === 'BS-TAB-CONTROL');\n // if (tabControls.length > 0) {\n // const coords = {\n // width: tabControls[0].clientWidth,\n // height: tabControls[0].clientHeight,\n // left: ev.clientX - ev.offsetX,\n // top: ev.clientY - ev.offsetY,\n // };\n\n // this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();\n // this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();\n // this.removeFromPane(layout.rootPane, this.dockPanel);\n\n // const floatingPane = new BsFloatingPane({\n // pane: new BsTabGroupPane({\n // panes: [\n // new BsContentPane({\n // dockPanel: this.dockPanel\n // })\n // ]\n // }),\n // size: {\n // width: coords.width,\n // height: coords.height,\n // },\n // location: {\n // x: coords.left,\n // y: coords.top,\n // }\n // });\n \n // this.dragOperation = {\n // offsetX: ev.offsetX,\n // offsetY: ev.offsetY,\n // floatingPane\n // };\n\n // layout.floatingPanes.push(floatingPane);\n // this.dock.layout$.next(layout);\n // }\n });\n } else {\n if (this.dragOperation) {\n if (this.dragOperation.floatingPane.location) {\n this.dragOperation.floatingPane.location.x = ev.clientX - this.dragOperation.offsetX;\n this.dragOperation.floatingPane.location.y = ev.clientY - this.dragOperation.offsetY;\n }\n // } else {\n // const traces = this.dockService.buildTraces(this.dock.layout);\n // const matchingTrace = traces.filter(trace => {\n // const pane = trace.trace[trace.trace.length - 1];\n // return (pane instanceof BsContentPane) && (pane.dockPanel === this.dockPanel);\n // });\n\n // console.log('matching', { traces, matchingTrace });\n // // this.dragOperation = {\n \n // // }\n }\n }\n }\n }\n\n removeFromPaneBis(host: BsDockPane, pane: BsDockPane) {\n if (host instanceof BsContentPane) {\n } else if (host instanceof BsDocumentHost) {\n // Actually documentHost should never be removed\n } else if (host instanceof BsTabGroupPane) {\n if (pane instanceof BsContentPane) {\n const index = host.panes.indexOf(pane);\n host.panes.splice(index, 1);\n }\n } else if (host instanceof BsSplitPane) {\n const index = host.panes.indexOf(pane);\n host.panes.splice(index, 1);\n } else if (host instanceof BsFloatingPane) {\n } else {\n throw 'Unknown pane type';\n }\n }\n\n // removeFromPane(host: BsDockPane, panel: BsDockPanelComponent /*, parents: BsDockPane[] */): RemoveFromPaneResult {\n // if (host instanceof BsContentPane) {\n // return { paneRemoved: false, hostIsEmpty: false };\n // } else if (host instanceof BsDocumentHost) {\n // // Actually documentHost should never be removed\n\n // if (!host.rootPane) {\n // return { paneRemoved: false, hostIsEmpty: true };\n // }\n\n // const result = this.removeFromPane(host.rootPane, panel);\n // return { paneRemoved: result.paneRemoved, hostIsEmpty: result.hostIsEmpty };\n\n // } else if (host instanceof BsTabGroupPane) {\n\n\n\n // const matching = host.panes.filter(p => p.dockPanel === panel);\n // if (matching.length > 0) {\n // host.panes.splice(host.panes.findIndex(p => p.dockPanel === panel), 1);\n // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };\n // } else {\n // // ATM. all panes are ContentPanes anyway.\n // // So unless you'd want to have splitters inside the tabs,\n // // This code will not be hit.\n\n // // const result = host.panes\n // // .map(parentPane => this.removeFromPane(parentPane, panel))\n // // .filter(r => r.paneRemoved);\n // //\n // // if (result.length > 0) {\n // // return { paneRemoved: true, hostIsEmpty: }\n // // }\n // return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };\n // }\n\n\n\n\n // } else if (host instanceof BsSplitPane) {\n // const matching = host.panes\n // .filter(p => p instanceof BsContentPane)\n // .map(p => <BsContentPane>p)\n // .filter(p => p.dockPanel === panel);\n \n // if (matching.length > 0) {\n // host.panes.splice(host.panes.findIndex(p => (p instanceof BsContentPane) && matching.includes(p)), 1);\n\n // // TODO: Remove splitter if only 1 pane left?\n // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };\n // } else {\n\n\n // for (let splitPane of host.panes) {\n // const result = this.removeFromPane(splitPane, panel);\n // if (result.paneRemoved && result.hostIsEmpty) {\n // // splitPane is empty now, so we can remove it from this splitter\n // host.panes.splice(host.panes.indexOf(splitPane), 1);\n // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };\n // }\n // }\n // }\n\n // return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };\n // } else {\n // throw 'unknown host type';\n // }\n // }\n\n @HostListener('document:mouseup', ['$event']) onMouseUp(ev: Event) {\n this.isMouseDown = false;\n this.isDragging = false;\n this.dragOperation = undefined;\n }\n\n @HostBinding('class.d-block') dBlock = true;\n}\n","<ng-content></ng-content>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { BsCardModule } from '@mintplayer/ng-bootstrap/card';\nimport { BsSplitterModule } from '@mintplayer/ng-bootstrap/splitter';\nimport { BsResizableModule } from '@mintplayer/ng-bootstrap/resizable';\nimport { BsTabControlModule } from '@mintplayer/ng-bootstrap/tab-control';\nimport { BsInstanceOfModule } from '@mintplayer/ng-bootstrap/instance-of';\nimport { BsDockComponent } from './dock/dock.component';\nimport { BsDockPanelComponent } from './dock-panel/dock-panel.component';\nimport { BsDockPanelHeaderComponent } from './dock-panel-header/dock-panel-header.component';\nimport { BsDockPaneRendererComponent } from './dock-pane-renderer/dock-pane-renderer.component';\n\n@NgModule({\n declarations: [\n BsDockComponent,\n BsDockPanelComponent,\n BsDockPanelHeaderComponent,\n BsDockPaneRendererComponent\n ],\n imports: [\n CommonModule,\n PortalModule,\n BsCardModule,\n BsInstanceOfModule,\n BsSplitterModule,\n BsTabControlModule,\n BsResizableModule\n ],\n exports: [\n BsDockComponent,\n BsDockPanelComponent,\n BsDockPanelHeaderComponent,\n BsDockPaneRendererComponent\n ]\n})\nexport class BsDockModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.BsDockPaneRendererComponent","i1.BsDockPanelComponent","i2.BsDockComponent","i3.BsDockService"],"mappings":";;;;;;;;;;;;;;;;;;;MASa,oBAAoB,CAAA;AALjC,IAAA,WAAA,GAAA;QAWW,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;AAMvB,KAAA;IAJC,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;KACvE;;iHAXU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,wSCTjC,wOAO0B,EAAA,MAAA,EAAA,CAAA,0KAAA,CAAA,EAAA,CAAA,CAAA;2FDEb,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,wOAAA,EAAA,MAAA,EAAA,CAAA,0KAAA,CAAA,EAAA,CAAA;8BAMG,aAAa,EAAA,CAAA;sBAAxC,SAAS;uBAAC,eAAe,CAAA;gBACG,cAAc,EAAA,CAAA;sBAA1C,SAAS;uBAAC,gBAAgB,CAAA;gBAGlB,OAAO,EAAA,CAAA;sBAAf,KAAK;;;MEfc,UAAU,CAAA;AAE/B;;ACCK,MAAO,cAAe,SAAQ,UAAU,CAAA;AAC1C,IAAA,WAAA,CAAY,IAA8B,EAAA;AACtC,QAAA,KAAK,EAAE,CAAC;QAIZ,IAAK,CAAA,KAAA,GAAoB,EAAE,CAAC;AAHxB,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC7B;AAID,IAAA,IAAa,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;KAClC;AACJ;;ACXK,MAAO,cAAe,SAAQ,UAAU,CAAA;AAC1C,IAAA,WAAA,CAAY,IAA8B,EAAA;AACtC,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC7B;AAID,IAAA,IAAa,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI,CAAC;KACzC;AACJ;;ACXK,MAAO,aAAc,SAAQ,UAAU,CAAA;AACzC,IAAA,WAAA,CAAY,IAA6B,EAAA;AACrC,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC7B;AAKD,IAAA,IAAa,OAAO,GAAA;AAChB,QAAA,OAAO,KAAK,CAAC;KAChB;AACJ;;ACXK,MAAO,cAAe,SAAQ,UAAU,CAAA;AAC1C,IAAA,WAAA,CAAY,IAA8B,EAAA;AACtC,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC7B;AAMD,IAAA,IAAa,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC;KACrC;AACJ;;ACdK,MAAO,WAAY,SAAQ,UAAU,CAAA;AACvC,IAAA,WAAA,CAAY,IAA2B,EAAA;AACnC,QAAA,KAAK,EAAE,CAAC;QAIZ,IAAW,CAAA,WAAA,GAAyB,YAAY,CAAC;QACjD,IAAK,CAAA,KAAA,GAAiB,EAAE,CAAC;AAJrB,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC7B;AAKD,IAAA,IAAa,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;KAClC;AACJ;;ICfW,UAKX;AALD,CAAA,UAAY,SAAS,EAAA;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB,CAAA;AAChB,IAAA,SAAA,CAAA,SAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa,CAAA;AACb,IAAA,SAAA,CAAA,SAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAe,CAAA;AACf,IAAA,SAAA,CAAA,SAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB,CAAA;AACpB,CAAC,EALW,SAAS,KAAT,SAAS,GAKpB,EAAA,CAAA,CAAA;;MCYY,2BAA2B,CAAA;IAEtC,WAAoB,CAAA,OAAgB,EAAE,OAAmB,EAAA;QAArC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAMpC,IAAS,CAAA,SAAA,GAAG,SAAS,CAAC;QACb,IAAkB,CAAA,kBAAA,GAAG,cAAc,CAAC;QACpC,IAAc,CAAA,cAAA,GAAG,cAAc,CAAC;QAChC,IAAc,CAAA,cAAA,GAAG,WAAW,CAAC;QAC7B,IAAiB,CAAA,iBAAA,GAAG,aAAa,CAAC;QAClC,IAAkB,CAAA,kBAAA,GAAG,cAAc,CAAC;;AAG7C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAoB,IAAI,CAAC,CAAC;QAbrD,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;KACtC;AAaD,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KAC3B;IACD,IAAoB,MAAM,CAAC,KAAwB,EAAA;AACjD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;IAIM,aAAa,GAAA;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACrC,SAAA;KACF;IAEM,cAAc,GAAA;QACnB,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC7B,SAAA;KACF;;wHAvCU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4GAA3B,2BAA2B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBxC,8uDA6Be,EAAA,MAAA,EAAA,CAAA,oGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDZF,2BAA2B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,8uDAAA,EAAA,MAAA,EAAA,CAAA,oGAAA,CAAA,EAAA,CAAA;uHAwBb,MAAM,EAAA,CAAA;sBAAzB,KAAK;;;MElBK,eAAe,CAAA;AAC1B,IAAA,WAAA,GAAA;;AAwCA,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAyB,EAAE,CAAC,CAAC;;AAe1D,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAgC,EAAE,CAAC,CAAC;QAMnE,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;QAMxB,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AAIf,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;AAtEzB,QAAA,MAAM,IAAI,GAAG,IAAI,cAAc,EAAE,CAAC;AAClC,QAAA,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;AACrC,QAAA,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AAExB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,CAAe;AAC/C,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,aAAa,EAAE,EAAE;AAClB,SAAA,CAAC,CAAC;;;;;QAQH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5C,aAAA,SAAS,CAAC,CAAC,QAAQ,KAAI;AACtB,YAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;AACrD,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAG;AACvD,YAAA,MAAM,KAAK,GAAG,SAAS,CACrB,MAAM,EAAE,IAAI;;AAEZ,YAAA,CAAC,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,CAAC,EAC5E,IAAI,EACJ,IAAI,CAAC,SAAS,CAAC,CAAC;AAElB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;YAE7B,OAAO,KAAK,CAAC,MAAM,CAAC;SACrB,CAAC,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KACjF;IAMD,IAA2C,MAAM,CAAC,KAAsC,EAAA;QACtF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;KACpC;AAID,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KAC3B;IACD,IAAoB,MAAM,CAAC,KAAmB,EAAA;AAC5C,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;IAID,IAA8B,aAAa,CAAC,KAA6C,EAAA;QACvF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;KACtC;IAcD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;KAC/D;;4GA5EU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gGAAf,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EA0CT,oBAAoB,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7DvC,ipBAgBA,EAAA,MAAA,EAAA,CAAA,8LAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDGa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,SAAS,EAAA,QAAA,EAAA,ipBAAA,EAAA,MAAA,EAAA,CAAA,8LAAA,CAAA,EAAA,CAAA;0EA8CwB,MAAM,EAAA,CAAA;sBAAhD,eAAe;uBAAC,oBAAoB,CAAA;gBASjB,MAAM,EAAA,CAAA;sBAAzB,KAAK;gBAMwB,aAAa,EAAA,CAAA;sBAA1C,YAAY;uBAAC,UAAU,CAAA;gBAKxB,gBAAgB,EAAA,CAAA;sBADf,WAAW;uBAAC,yBAAyB,CAAA;gBAOtC,UAAU,EAAA,CAAA;sBAJT,WAAW;uBAAC,WAAW,CAAA;;sBACvB,WAAW;uBAAC,YAAY,CAAA;;sBACxB,WAAW;uBAAC,cAAc,CAAA;;sBAC1B,WAAW;uBAAC,aAAa,CAAA;;;ME1Ef,aAAa,CAAA;AACjB,IAAA,WAAW,CAAC,MAAoB,EAAA;AACrC,QAAA,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;QAEvG,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC;KACjD;AAEO,IAAA,kBAAkB,CAAC,eAA6B,EAAA;AACtD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACjF,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,YAAA,OAAO,CAAC;AACN,oBAAA,QAAQ,EAAE,IAAI;AACd,oBAAA,KAAK,EAAE,eAAe;AACvB,iBAAA,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;YACL,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3F,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,SAAA;KACF;AAEO,IAAA,aAAa,CAAC,IAAgB,EAAA;QACpC,IAAI,IAAI,YAAY,aAAa,EAAE;AACjC,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;aAAM,IAAI,IAAI,YAAY,cAAc,EAAE;YACzC,OAAsB,IAAI,CAAC,KAAM,CAAC;AACnC,SAAA;aAAM,IAAI,IAAI,YAAY,WAAW,EAAE;YACtC,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB,SAAA;aAAM,IAAI,IAAI,YAAY,cAAc,EAAE;AACzC,YAAA,OAAO,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACrC,SAAA;aAAM,IAAI,IAAI,YAAY,cAAc,EAAE;AACzC,YAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AAC7C,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;KACF;;0GAlCU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCUY,0BAA0B,CAAA;AACrC,IAAA,WAAA,CAAoB,SAA+B,EAAU,IAAqB,EAAU,WAA0B,EAAU,OAAgC,EAAA;QAA5I,IAAS,CAAA,SAAA,GAAT,SAAS,CAAsB;QAAU,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAiB;QAAU,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;QAAU,IAAO,CAAA,OAAA,GAAP,OAAO,CAAyB;QAEhK,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAEpB,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QAoQW,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;KAxQwH;AAK7H,IAAA,WAAW,CAAC,EAAc,EAAA;QAC/D,EAAE,CAAC,cAAc,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KACzB;AAE+C,IAAA,WAAW,CAAC,EAAc,EAAA;QACxE,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAEvB,gBAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;;oBAE9D,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBACpD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC;oBACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAG;AACjC,wBAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;AAE7C,wBAAA,OAAO,CAAC,QAAQ,YAAY,aAAa,MAAM,QAAQ,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC;AACxF,qBAAC,CAAC,CAAC;AACH,oBAAA,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAClC,oBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;wBACzB,OAAO;AACR,qBAAA;;;;AAMD,oBAAA,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;oBAC9C,GAAG;wBACD,IAAI,YAAY,CAAC,aAAa,EAAE;AAC9B,4BAAA,YAAY,GAAG,YAAa,CAAC,aAAa,CAAC;AAC5C,yBAAA;AAAM,6BAAA;AACL,4BAAA,MAAM,iBAAiB,CAAC;AACzB,yBAAA;qBACF,QAAQ,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,gBAAgB,EAAE;AAElE,oBAAA,MAAM,MAAM,GAAG;wBACb,KAAK,EAAE,YAAY,CAAC,WAAW;wBAC/B,MAAM,EAAE,YAAY,CAAC,YAAY;AACjC,wBAAA,IAAI,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO;AAC7B,wBAAA,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO;qBAC7B,CAAC;;;;oBAMF,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAErC,oBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;AACjF,oBAAA,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;AAGnF,oBAAA,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;wBACtD,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,4BAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;4BACvD,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO;gCAAE,MAAM;AACtC,yBAAA;AAAM,6BAAA;AACL,4BAAA,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,4BAAA,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,aAAa,GAAG,CAAC,CAAC,CAAC,EAAE;gCAC5C,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AAC/C,6BAAA;AACF,yBAAA;AACF,qBAAA;;AAMD,oBAAA,MAAM,YAAY,GAAG,IAAI,cAAc,CAAC;wBACtC,IAAI,EAAE,IAAI,cAAc,CAAC;AACvB,4BAAA,KAAK,EAAE;AACL,gCAAA,IAAI,aAAa,CAAC;oCAChB,SAAS,EAAE,IAAI,CAAC,SAAS;iCAC1B,CAAC;AACH,6BAAA;yBACF,CAAC;AACF,wBAAA,IAAI,EAAE;4BACJ,KAAK,EAAE,MAAM,CAAC,KAAK;4BACnB,MAAM,EAAE,MAAM,CAAC,MAAM;AACtB,yBAAA;AACD,wBAAA,QAAQ,EAAE;4BACR,CAAC,EAAE,MAAM,CAAC,IAAI;4BACd,CAAC,EAAE,MAAM,CAAC,GAAG;AACd,yBAAA;AACF,qBAAA,CAAC,CAAC;oBACH,IAAI,CAAC,aAAa,GAAG;wBACnB,OAAO,EAAE,EAAE,CAAC,OAAO;wBACnB,OAAO,EAAE,EAAE,CAAC,OAAO;wBACnB,YAAY;qBACb,CAAC;AACF,oBAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACxC,oBAAA,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDtD,iBAAC,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA;gBACL,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,oBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE;AAC5C,wBAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AACrF,wBAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AACtF,qBAAA;;;;;;;;;;AAYF,iBAAA;AACF,aAAA;AACF,SAAA;KACF;IAED,iBAAiB,CAAC,IAAgB,EAAE,IAAgB,EAAA;QAClD,IAAI,IAAI,YAAY,aAAa,EAAE;AAClC,SAAA;aAAM,IAAI,IAAI,YAAY,cAAc,EAAE;;AAE1C,SAAA;aAAM,IAAI,IAAI,YAAY,cAAc,EAAE;YACzC,IAAI,IAAI,YAAY,aAAa,EAAE;gBACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7B,aAAA;AACF,SAAA;aAAM,IAAI,IAAI,YAAY,WAAW,EAAE;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7B,SAAA;aAAM,IAAI,IAAI,YAAY,cAAc,EAAE;AAC1C,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,mBAAmB,CAAC;AAC3B,SAAA;KACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuE6C,IAAA,SAAS,CAAC,EAAS,EAAA;AAC/D,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;KAChC;;uHAvQU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,+PCrBvC,2BAAyB,EAAA,MAAA,EAAA,CAAA,mKAAA,CAAA,EAAA,CAAA,CAAA;2FDqBZ,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,mKAAA,CAAA,EAAA,CAAA;qLAUO,WAAW,EAAA,CAAA;sBAAjD,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAKW,WAAW,EAAA,CAAA;sBAA1D,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAwPA,SAAS,EAAA,CAAA;sBAAtD,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAMd,MAAM,EAAA,CAAA;sBAAnC,WAAW;uBAAC,eAAe,CAAA;;;ME1PjB,YAAY,CAAA;;yGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,iBArBrB,eAAe;QACf,oBAAoB;QACpB,0BAA0B;AAC1B,QAAA,2BAA2B,aAG3B,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,kBAAkB;QAClB,gBAAgB;QAChB,kBAAkB;AAClB,QAAA,iBAAiB,aAGjB,eAAe;QACf,oBAAoB;QACpB,0BAA0B;QAC1B,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAGlB,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAfrB,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,kBAAkB;QAClB,gBAAgB;QAChB,kBAAkB;QAClB,iBAAiB,CAAA,EAAA,CAAA,CAAA;2FASR,YAAY,EAAA,UAAA,EAAA,CAAA;kBAvBxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,eAAe;wBACf,oBAAoB;wBACpB,0BAA0B;wBAC1B,2BAA2B;AAC5B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,kBAAkB;wBAClB,gBAAgB;wBAChB,kBAAkB;wBAClB,iBAAiB;AAClB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,eAAe;wBACf,oBAAoB;wBACpB,0BAA0B;wBAC1B,2BAA2B;AAC5B,qBAAA;AACF,iBAAA,CAAA;;;ACnCD;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mintplayer/ng-bootstrap",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "15.26.
|
|
4
|
+
"version": "15.26.2",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/MintPlayer/mintplayer-ng-bootstrap",
|
|
@@ -547,7 +547,7 @@
|
|
|
547
547
|
"@angular/cdk": "^15.2.0",
|
|
548
548
|
"@angular/forms": "^15.2.0",
|
|
549
549
|
"@angular/router": "^15.2.0",
|
|
550
|
-
"rxjs": "^7.
|
|
550
|
+
"rxjs": "^7.5.0",
|
|
551
551
|
"bootstrap": "^5.2.0",
|
|
552
552
|
"bootstrap-icons": "^1.7.2",
|
|
553
553
|
"ngx-highlightjs": "^7.0.1",
|