@ngutil/layout 0.0.3 → 0.0.4

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.
@@ -0,0 +1,6 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class DockingBackdropComponent {
3
+ state: "visible" | "hidden";
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<DockingBackdropComponent, never>;
5
+ static ɵcmp: i0.ɵɵComponentDeclaration<DockingBackdropComponent, "nu-docking-backdrop", never, {}, {}, never, never, true, never>;
6
+ }
@@ -1,4 +1,4 @@
1
- import { AfterViewInit, OnChanges, QueryList, SimpleChanges } from "@angular/core";
1
+ import { AfterViewInit, ElementRef, OnChanges, QueryList, SimpleChanges } from "@angular/core";
2
2
  import { Observable } from "rxjs";
3
3
  import { Destructible } from "@ngutil/common";
4
4
  import { DockingContentComponent } from "./docking-content.component";
@@ -12,10 +12,12 @@ export declare class DockingLayoutComponent extends Destructible implements Afte
12
12
  #private;
13
13
  contentOnly: boolean;
14
14
  contentComponent?: DockingContentComponent;
15
+ backdropEl?: ElementRef<HTMLElement>;
15
16
  dockingPanels: QueryList<DockingPanelComponent>;
16
17
  readonly panels: Observable<Array<DockingPanelComponent>>;
17
18
  ngAfterViewInit(): void;
18
19
  ngOnChanges(changes: SimpleChanges): void;
20
+ onHideBackdropPanel(event: Event): void;
19
21
  static ɵfac: i0.ɵɵFactoryDeclaration<DockingLayoutComponent, never>;
20
22
  static ɵcmp: i0.ɵɵComponentDeclaration<DockingLayoutComponent, "nu-docking", never, { "contentOnly": { "alias": "contentOnly"; "required": false; }; }, {}, ["contentComponent", "dockingPanels"], ["nu-docking-panel", "*", "nu-docking-content"], true, never>;
21
23
  }
@@ -19,6 +19,8 @@ export declare class DockingPanelComponent extends Destructible implements After
19
19
  set miniSizeInput(val: NumberWithUnitInput);
20
20
  set minimizable(val: BooleanInput);
21
21
  get minimizable(): boolean;
22
+ set backdrop(val: BooleanInput);
23
+ get backdrop(): boolean;
22
24
  readonly fullSize: Observable<NumberWithUnit>;
23
25
  readonly miniSize: Observable<NumberWithUnit>;
24
26
  readonly changes: Observable<{
@@ -38,7 +40,7 @@ export declare class DockingPanelComponent extends Destructible implements After
38
40
  close(): void;
39
41
  minimize(): void;
40
42
  static ɵfac: i0.ɵɵFactoryDeclaration<DockingPanelComponent, never>;
41
- static ɵcmp: i0.ɵɵComponentDeclaration<DockingPanelComponent, "nu-docking-panel", ["nuDockingPanel"], { "positionInput": { "alias": "position"; "required": false; }; "stateInput": { "alias": "state"; "required": false; }; "modeInput": { "alias": "mode"; "required": false; }; "fullSizeInput": { "alias": "fullSize"; "required": false; }; "miniSizeInput": { "alias": "miniSize"; "required": false; }; "minimizable": { "alias": "minimizable"; "required": false; }; }, { "state": "stateChanges"; }, never, ["*"], true, never>;
43
+ static ɵcmp: i0.ɵɵComponentDeclaration<DockingPanelComponent, "nu-docking-panel", ["nuDockingPanel"], { "positionInput": { "alias": "position"; "required": false; }; "stateInput": { "alias": "state"; "required": false; }; "modeInput": { "alias": "mode"; "required": false; }; "fullSizeInput": { "alias": "fullSize"; "required": false; }; "miniSizeInput": { "alias": "miniSize"; "required": false; }; "minimizable": { "alias": "minimizable"; "required": false; }; "backdrop": { "alias": "backdrop"; "required": false; }; }, { "state": "stateChanges"; }, never, ["*"], true, never>;
42
44
  }
43
45
  type ChangesObservable = typeof DockingPanelComponent.prototype.changes;
44
46
  export type DockingPanelChanges = ChangesObservable extends Observable<infer T> ? T : never;
@@ -0,0 +1,17 @@
1
+ import { Component, HostBinding } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class DockingBackdropComponent {
4
+ constructor() {
5
+ this.state = "hidden";
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingBackdropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: DockingBackdropComponent, isStandalone: true, selector: "nu-docking-backdrop", host: { properties: { "[attr.state]": "this.state" } }, ngImport: i0, template: ``, isInline: true, styles: [":host{display:flex;flex-direction:column;align-items:stretch;position:absolute;inset:0;transition:opacity var(---docking-layout-anim-duration) var(---docking-layout-anim-ease);z-index:-1;background-color:var(---docking-layout-backdrop-color)}:host[state=hidden]{animation:var(---docking-layout-anim-duration) var(---docking-layout-anim-ease) hide;animation-fill-mode:forwards;pointer-events:none;touch-action:none;opacity:0}:host[state=visible]{visibility:visible;opacity:.3}@keyframes hide{99%{visibility:visible}to{visibility:hidden}}\n"] }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingBackdropComponent, decorators: [{
11
+ type: Component,
12
+ args: [{ standalone: true, selector: "nu-docking-backdrop", template: ``, styles: [":host{display:flex;flex-direction:column;align-items:stretch;position:absolute;inset:0;transition:opacity var(---docking-layout-anim-duration) var(---docking-layout-anim-ease);z-index:-1;background-color:var(---docking-layout-backdrop-color)}:host[state=hidden]{animation:var(---docking-layout-anim-duration) var(---docking-layout-anim-ease) hide;animation-fill-mode:forwards;pointer-events:none;touch-action:none;opacity:0}:host[state=visible]{visibility:visible;opacity:.3}@keyframes hide{99%{visibility:visible}to{visibility:hidden}}\n"] }]
13
+ }], propDecorators: { state: [{
14
+ type: HostBinding,
15
+ args: ["[attr.state]"]
16
+ }] } });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1iYWNrZHJvcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2RvY2tpbmcvZG9ja2luZy1iYWNrZHJvcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUE7O0FBUXRELE1BQU0sT0FBTyx3QkFBd0I7SUFOckM7UUFRSSxVQUFLLEdBQXlCLFFBQVEsQ0FBQTtLQUN6Qzs4R0FIWSx3QkFBd0I7a0dBQXhCLHdCQUF3Qix1SUFGdkIsRUFBRTs7MkZBRUgsd0JBQXdCO2tCQU5wQyxTQUFTO2lDQUNNLElBQUksWUFDTixxQkFBcUIsWUFFckIsRUFBRTs4QkFJWixLQUFLO3NCQURKLFdBQVc7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6IFwibnUtZG9ja2luZy1iYWNrZHJvcFwiLFxuICAgIHN0eWxlVXJsOiBcIi4vZG9ja2luZy1iYWNrZHJvcC5jb21wb25lbnQuc2Nzc1wiLFxuICAgIHRlbXBsYXRlOiBgYFxufSlcbmV4cG9ydCBjbGFzcyBEb2NraW5nQmFja2Ryb3BDb21wb25lbnQge1xuICAgIEBIb3N0QmluZGluZyhcIlthdHRyLnN0YXRlXVwiKVxuICAgIHN0YXRlOiBcInZpc2libGVcIiB8IFwiaGlkZGVuXCIgPSBcImhpZGRlblwiXG59XG4iXX0=
@@ -1,20 +1,24 @@
1
- import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, ElementRef, inject, Input, QueryList } from "@angular/core";
1
+ import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, ElementRef, inject, Input, QueryList, ViewChild } from "@angular/core";
2
2
  import { combineLatest, map, shareReplay, startWith, Subject, switchMap } from "rxjs";
3
3
  import { Destructible, FastDOM } from "@ngutil/common";
4
+ import { DockingBackdropComponent } from "./docking-backdrop.component";
4
5
  import { DockingContentComponent } from "./docking-content.component";
5
6
  import { DockingPanelComponent } from "./docking-panel.component";
6
7
  import * as i0 from "@angular/core";
7
- const RIGID_ZINDEX = 20;
8
+ const RIGID_ZINDEX = 100;
8
9
  const OVER_ZINDEX = RIGID_ZINDEX * 2;
10
+ const BACKDROP_ZINDEX = 10000;
9
11
  export class DockingLayoutComponent extends Destructible {
10
12
  constructor() {
11
13
  super(...arguments);
12
14
  this.#el = inject((ElementRef));
13
15
  this.contentOnly = false;
14
16
  this.#reflow = new Subject();
17
+ this.#backdropPanel = null;
15
18
  }
16
19
  #el;
17
20
  #reflow;
21
+ #backdropPanel;
18
22
  ngAfterViewInit() {
19
23
  // eslint-disable-next-line prettier/prettier
20
24
  this.panels = this.dockingPanels.changes.pipe(startWith(null), map(() => this.dockingPanels.toArray()), shareReplay(1));
@@ -37,6 +41,8 @@ export class DockingLayoutComponent extends Destructible {
37
41
  let paddingLeft = 0;
38
42
  let rigidZIndex = RIGID_ZINDEX;
39
43
  let overZIndex = OVER_ZINDEX;
44
+ let backdropZIndex = -1;
45
+ this.#backdropPanel = null;
40
46
  if (this.contentOnly) {
41
47
  // TODO:...
42
48
  }
@@ -86,8 +92,14 @@ export class DockingLayoutComponent extends Destructible {
86
92
  panelRight = 0;
87
93
  }
88
94
  }
95
+ let panelZIndex = isRigid ? (rigidZIndex += 2) : (overZIndex += 2);
96
+ if (panelState.state !== "hidden" && entry.panel.backdrop) {
97
+ backdropZIndex = BACKDROP_ZINDEX;
98
+ panelZIndex = backdropZIndex + 1;
99
+ this.#backdropPanel = entry.panel;
100
+ }
89
101
  FastDOM.setStyle(entry.panel.el.nativeElement, {
90
- "z-index": `${isRigid ? rigidZIndex++ : overZIndex++}`,
102
+ "z-index": `${panelZIndex}`,
91
103
  "--docking-panel-t": panelTop != null ? `${panelTop}px` : null,
92
104
  "--docking-panel-r": panelRight != null ? `${panelRight}px` : null,
93
105
  "--docking-panel-b": panelBottom != null ? `${panelBottom}px` : null,
@@ -100,10 +112,22 @@ export class DockingLayoutComponent extends Destructible {
100
112
  "--docking-layout-bottom": `${paddingBottom}px`,
101
113
  "--docking-layout-left": `${paddingLeft}px`
102
114
  });
115
+ if (this.backdropEl) {
116
+ FastDOM.setAttributes(this.backdropEl.nativeElement, {
117
+ state: backdropZIndex < 0 ? "hidden" : "visible"
118
+ });
119
+ FastDOM.setStyle(this.backdropEl.nativeElement, { "z-index": `${backdropZIndex}` });
120
+ }
121
+ }
122
+ }
123
+ onHideBackdropPanel(event) {
124
+ event.preventDefault();
125
+ if (this.#backdropPanel) {
126
+ this.#backdropPanel.close();
103
127
  }
104
128
  }
105
129
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingLayoutComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
106
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: DockingLayoutComponent, isStandalone: true, selector: "nu-docking", inputs: { contentOnly: "contentOnly" }, queries: [{ propertyName: "contentComponent", first: true, predicate: DockingContentComponent, descendants: true }, { propertyName: "dockingPanels", predicate: DockingPanelComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
130
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: DockingLayoutComponent, isStandalone: true, selector: "nu-docking", inputs: { contentOnly: "contentOnly" }, queries: [{ propertyName: "contentComponent", first: true, predicate: DockingContentComponent, descendants: true }, { propertyName: "dockingPanels", predicate: DockingPanelComponent }], viewQueries: [{ propertyName: "backdropEl", first: true, predicate: ["backdrop"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
107
131
  <ng-content select="nu-docking-panel"></ng-content>
108
132
 
109
133
  @if (!contentComponent) {
@@ -113,11 +137,13 @@ export class DockingLayoutComponent extends Destructible {
113
137
  } @else {
114
138
  <ng-content select="nu-docking-content"></ng-content>
115
139
  }
116
- `, isInline: true, styles: [":host{---docking-layout-top: var(--docking-layout-top, 0px);---docking-layout-right: var(--docking-layout-right, 0px);---docking-layout-bottom: var(--docking-layout-bottom, 0px);---docking-layout-left: var(--docking-layout-left, 0px);---docking-layout-anim-duration: var(--docking-layout-anim-duration, .3s);---docking-layout-anim-ease: var(--docking-layout-anim-ease, cubic-bezier(.4, 0, .2, 1));display:flex;flex-flow:column nowrap;align-items:stretch;position:relative;overflow:hidden;box-sizing:border-box;z-index:0;padding:var(---docking-layout-top) var(---docking-layout-right) var(---docking-layout-bottom) var(---docking-layout-left);transition:padding var(---docking-layout-anim-duration) var(---docking-layout-anim-ease)}\n"], dependencies: [{ kind: "component", type: DockingContentComponent, selector: "nu-docking-content", exportAs: ["nuDockingContent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
140
+
141
+ <nu-docking-backdrop #backdrop (click)="onHideBackdropPanel($event)" />
142
+ `, isInline: true, styles: [":host{---docking-layout-top: var(--docking-layout-top, 0px);---docking-layout-right: var(--docking-layout-right, 0px);---docking-layout-bottom: var(--docking-layout-bottom, 0px);---docking-layout-left: var(--docking-layout-left, 0px);---docking-layout-anim-duration: var(--docking-layout-anim-duration, .3s);---docking-layout-anim-ease: var(--docking-layout-anim-ease, cubic-bezier(.4, 0, .2, 1));---docking-layout-backdrop-color: var(--docking-layout-backdrop-color, #000);display:flex;flex-flow:column nowrap;align-items:stretch;position:relative;overflow:hidden;box-sizing:border-box;z-index:0;padding:var(---docking-layout-top) var(---docking-layout-right) var(---docking-layout-bottom) var(---docking-layout-left);transition:padding var(---docking-layout-anim-duration) var(---docking-layout-anim-ease)}\n"], dependencies: [{ kind: "component", type: DockingContentComponent, selector: "nu-docking-content", exportAs: ["nuDockingContent"] }, { kind: "component", type: DockingBackdropComponent, selector: "nu-docking-backdrop" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
117
143
  }
118
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingLayoutComponent, decorators: [{
119
145
  type: Component,
120
- args: [{ selector: "nu-docking", standalone: true, imports: [DockingContentComponent], template: `
146
+ args: [{ selector: "nu-docking", standalone: true, imports: [DockingContentComponent, DockingBackdropComponent], template: `
121
147
  <ng-content select="nu-docking-panel"></ng-content>
122
148
 
123
149
  @if (!contentComponent) {
@@ -127,14 +153,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
127
153
  } @else {
128
154
  <ng-content select="nu-docking-content"></ng-content>
129
155
  }
130
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{---docking-layout-top: var(--docking-layout-top, 0px);---docking-layout-right: var(--docking-layout-right, 0px);---docking-layout-bottom: var(--docking-layout-bottom, 0px);---docking-layout-left: var(--docking-layout-left, 0px);---docking-layout-anim-duration: var(--docking-layout-anim-duration, .3s);---docking-layout-anim-ease: var(--docking-layout-anim-ease, cubic-bezier(.4, 0, .2, 1));display:flex;flex-flow:column nowrap;align-items:stretch;position:relative;overflow:hidden;box-sizing:border-box;z-index:0;padding:var(---docking-layout-top) var(---docking-layout-right) var(---docking-layout-bottom) var(---docking-layout-left);transition:padding var(---docking-layout-anim-duration) var(---docking-layout-anim-ease)}\n"] }]
156
+
157
+ <nu-docking-backdrop #backdrop (click)="onHideBackdropPanel($event)" />
158
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{---docking-layout-top: var(--docking-layout-top, 0px);---docking-layout-right: var(--docking-layout-right, 0px);---docking-layout-bottom: var(--docking-layout-bottom, 0px);---docking-layout-left: var(--docking-layout-left, 0px);---docking-layout-anim-duration: var(--docking-layout-anim-duration, .3s);---docking-layout-anim-ease: var(--docking-layout-anim-ease, cubic-bezier(.4, 0, .2, 1));---docking-layout-backdrop-color: var(--docking-layout-backdrop-color, #000);display:flex;flex-flow:column nowrap;align-items:stretch;position:relative;overflow:hidden;box-sizing:border-box;z-index:0;padding:var(---docking-layout-top) var(---docking-layout-right) var(---docking-layout-bottom) var(---docking-layout-left);transition:padding var(---docking-layout-anim-duration) var(---docking-layout-anim-ease)}\n"] }]
131
159
  }], propDecorators: { contentOnly: [{
132
160
  type: Input
133
161
  }], contentComponent: [{
134
162
  type: ContentChild,
135
163
  args: [DockingContentComponent]
164
+ }], backdropEl: [{
165
+ type: ViewChild,
166
+ args: ["backdrop", { read: ElementRef, static: true }]
136
167
  }], dockingPanels: [{
137
168
  type: ContentChildren,
138
169
  args: [DockingPanelComponent]
139
170
  }] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbGF5b3V0L3NyYy9kb2NraW5nL2RvY2tpbmctbGF5b3V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLFNBQVMsRUFFWixNQUFNLGVBQWUsQ0FBQTtBQUV0QixPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFakcsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUV0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUNyRSxPQUFPLEVBQTRCLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUE7O0FBVzNGLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQTtBQUN2QixNQUFNLFdBQVcsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFBO0FBc0JwQyxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsWUFBWTtJQWxCeEQ7O1FBbUJhLFFBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUF1QixDQUFBLENBQUMsQ0FBQTtRQUVyQyxnQkFBVyxHQUFHLEtBQUssQ0FBQTtRQVE1QixZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQTtLQThHaEM7SUF4SFksR0FBRyxDQUFrQztJQVU5QyxPQUFPLENBQXNCO0lBRTdCLGVBQWU7UUFDWCw2Q0FBNkM7UUFDNUMsSUFBNkQsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNuRyxTQUFTLENBQUMsSUFBSSxD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QUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwIH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBEZXN0cnVjdGlibGUsIEZhc3RET00gfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyBEb2NraW5nQ29udGVudENvbXBvbmVudCB9IGZyb20gXCIuL2RvY2tpbmctY29udGVudC5jb21wb25lbnRcIlxuaW1wb3J0IHsgdHlwZSBEb2NraW5nUGFuZWxDaGFuZ2VzLCBEb2NraW5nUGFuZWxDb21wb25lbnQgfSBmcm9tIFwiLi9kb2NraW5nLXBhbmVsLmNvbXBvbmVudFwiXG5cbnR5cGUgRG9ja2luZ1ZlcnRpY2FsUG9zaXRpb24gPSBcInRvcFwiIHwgXCJtaWRkbGVcIiB8IFwiYm90dG9tXCJcbnR5cGUgRG9ja2luZ0hvcml6b250YWxQb3NpdG9uID0gXCJsZWZ0XCIgfCBcImNlbnRlclwiIHwgXCJyaWdodFwiXG50eXBlIERvY2tpbmdQb3NpdGlvbiA9IGAke0RvY2tpbmdWZXJ0aWNhbFBvc2l0aW9ufToke0RvY2tpbmdIb3Jpem9udGFsUG9zaXRvbn1gXG5leHBvcnQgdHlwZSBEb2NraW5nUmFuZ2UgPVxuICAgIHwgRG9ja2luZ1ZlcnRpY2FsUG9zaXRpb25cbiAgICB8IERvY2tpbmdIb3Jpem9udGFsUG9zaXRvblxuICAgIHwgRG9ja2luZ1Bvc2l0aW9uXG4gICAgfCBgJHtEb2NraW5nUG9zaXRpb259LSR7RG9ja2luZ1Bvc2l0aW9ufWBcblxuY29uc3QgUklHSURfWklOREVYID0gMjBcbmNvbnN0IE9WRVJfWklOREVYID0gUklHSURfWklOREVYICogMlxuXG50eXBlIFBhbmVsc0NoYW5nZXMgPSBBcnJheTx7IHBhbmVsOiBEb2NraW5nUGFuZWxDb21wb25lbnQ7IGNoYW5nZXM6IERvY2tpbmdQYW5lbENoYW5nZXMgfT5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwibnUtZG9ja2luZ1wiLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0RvY2tpbmdDb250ZW50Q29tcG9uZW50XSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJudS1kb2NraW5nLXBhbmVsXCI+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIEBpZiAoIWNvbnRlbnRDb21wb25lbnQpIHtcbiAgICAgICAgICAgIDxudS1kb2NraW5nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPC9udS1kb2NraW5nLWNvbnRlbnQ+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibnUtZG9ja2luZy1jb250ZW50XCI+PC9uZy1jb250ZW50PlxuICAgICAgICB9XG4gICAgYCxcbiAgICBzdHlsZVVybDogXCIuL2RvY2tpbmctbGF5b3V0LmNvbXBvbmVudC5zY3NzXCIsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRG9ja2luZ0xheW91dENvbXBvbmVudCBleHRlbmRzIERlc3RydWN0aWJsZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gICAgcmVhZG9ubHkgI2VsID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KVxuXG4gICAgQElucHV0KCkgY29udGVudE9ubHkgPSBmYWxzZVxuXG4gICAgQENvbnRlbnRDaGlsZChEb2NraW5nQ29udGVudENvbXBvbmVudCkgY29udGVudENvbXBvbmVudD86IERvY2tpbmdDb250ZW50Q29tcG9uZW50XG4gICAgQENvbnRlbnRDaGlsZHJlbihEb2NraW5nUGFuZWxDb21wb25lbnQpIGRvY2tpbmdQYW5lbHMhOiBRdWVyeUxpc3Q8RG9ja2luZ1BhbmVsQ29tcG9uZW50PlxuXG4gICAgLy8gcmVhZG9ubHkgcGFuZWxzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYW5lbFJlZltdPihbXSlcbiAgICByZWFkb25seSBwYW5lbHMhOiBPYnNlcnZhYmxlPEFycmF5PERvY2tpbmdQYW5lbENvbXBvbmVudD4+XG5cbiAgICAjcmVmbG93ID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJldHRpZXIvcHJldHRpZXJcbiAgICAgICAgKHRoaXMgYXMgeyBwYW5lbHM6IE9ic2VydmFibGU8QXJyYXk8RG9ja2luZ1BhbmVsQ29tcG9uZW50Pj4gfSkucGFuZWxzID0gdGhpcy5kb2NraW5nUGFuZWxzLmNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmRvY2tpbmdQYW5lbHMudG9BcnJheSgpKSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgIClcblxuICAgICAgICB0aGlzLmRcbiAgICAgICAgICAgIC5zdWIoY29tYmluZUxhdGVzdCh7IHBhbmVsczogdGhpcy5wYW5lbHMsIHJlZmxvdzogdGhpcy4jcmVmbG93LnBpcGUoc3RhcnRXaXRoKG51bGwpKSB9KSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoeyBwYW5lbHMgfSkgPT5cbiAgICAgICAgICAgICAgICAgICAgY29tYmluZUxhdGVzdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVscy5tYXAocGFuZWwgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5lbC5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcChjaGFuZ2VzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHBhbmVsLCBjaGFuZ2VzIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHRoaXMuI2xheW91dC5iaW5kKHRoaXMpKVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKFwiY29udGVudE9ubHlcIiBpbiBjaGFuZ2VzIHx8IFwicG9zaXRpb25Nb2RlXCIgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy4jcmVmbG93Lm5leHQoKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgI2xheW91dChlbnRyaWVzOiBQYW5lbHNDaGFuZ2VzKSB7XG4gICAgICAgIGxldCBwYWRkaW5nVG9wID0gMFxuICAgICAgICBsZXQgcGFkZGluZ1JpZ2h0ID0gMFxuICAgICAgICBsZXQgcGFkZGluZ0JvdHRvbSA9IDBcbiAgICAgICAgbGV0IHBhZGRpbmdMZWZ0ID0gMFxuICAgICAgICBsZXQgcmlnaWRaSW5kZXggPSBSSUdJRF9aSU5ERVhcbiAgICAgICAgbGV0IG92ZXJaSW5kZXggPSBPVkVSX1pJTkRFWFxuXG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRPbmx5KSB7XG4gICAgICAgICAgICAvLyBUT0RPOi4uLlxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFuZWxTdGF0ZSA9IGVudHJ5LmNoYW5nZXNcbiAgICAgICAgICAgICAgICBjb25zdCBwYW5lbFNpemUgPVxuICAgICAgICAgICAgICAgICAgICBwYW5lbFN0YXRlLnN0YXRlID09PSBcImZ1bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwYW5lbFN0YXRlLmZ1bGxTaXplLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHBhbmVsU3RhdGUuc3RhdGUgPT09IFwibWluaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gcGFuZWxTdGF0ZS5taW5pU2l6ZS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IDBcblxuICAgICAgICAgICAgICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IHBhbmVsU3RhdGUucG9zaXRpb24ub3JpZW50ID09PSBcImhvcml6b250YWxcIlxuICAgICAgICAgICAgICAgIGNvbnN0IGlzUmlnaWQgPSBwYW5lbFN0YXRlLm1vZGUgPT09IFwicmlnaWRcIlxuXG4gICAgICAgICAgICAgICAgbGV0IHBhbmVsVG9wID0gbnVsbFxuICAgICAgICAgICAgICAgIGxldCBwYW5lbFJpZ2h0ID0gbnVsbFxuICAgICAgICAgICAgICAgIGxldCBwYW5lbEJvdHRvbSA9IG51bGxcbiAgICAgICAgICAgICAgICBsZXQgcGFuZWxMZWZ0ID0gbnVsbFxuXG4gICAgICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgICAgICAgICBwYW5lbExlZnQgPSAwXG4gICAgICAgICAgICAgICAgICAgIHBhbmVsUmlnaHQgPSAwXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYW5lbFN0YXRlLnBvc2l0aW9uLmNlbGxzWzBdLnYgPT09IFwidG9wXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1JpZ2lkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcCA9IE1hdGgubWF4KHBhZGRpbmdUb3AsIHBhbmVsU2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsVG9wID0gMFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhbmVsU3RhdGUucG9zaXRpb24uY2VsbHNbMF0udiA9PT0gXCJib3R0b21cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUmlnaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tID0gTWF0aC5tYXgocGFkZGluZ0JvdHRvbSwgcGFuZWxTaXplKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxCb3R0b20gPSAwXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwYW5lbFRvcCA9IDBcbiAgICAgICAgICAgICAgICAgICAgcGFuZWxCb3R0b20gPSAwXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhbmVsU3RhdGUucG9zaXRpb24uY2VsbHNbMF0uaCA9PT0gXCJsZWZ0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1JpZ2lkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQgPSBNYXRoLm1heChwYWRkaW5nTGVmdCwgcGFuZWxTaXplKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxMZWZ0ID0gMFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhbmVsU3RhdGUucG9zaXRpb24uY2VsbHNbMF0uaCA9PT0gXCJyaWdodFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNSaWdpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodCA9IE1hdGgubWF4KHBhZGRpbmdSaWdodCwgcGFuZWxTaXplKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxSaWdodCA9IDBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIEZhc3RET00uc2V0U3R5bGUoZW50cnkucGFuZWwuZWwubmF0aXZlRWxlbWVudCwge1xuICAgICAgICAgICAgICAgICAgICBcInotaW5kZXhcIjogYCR7aXNSaWdpZCA/IHJpZ2lkWkluZGV4KysgOiBvdmVyWkluZGV4Kyt9YCxcbiAgICAgICAgICAgICAgICAgICAgXCItLWRvY2tpbmctcGFuZWwtdFwiOiBwYW5lbFRvcCAhPSBudWxsID8gYCR7cGFuZWxUb3B9cHhgIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgXCItLWRvY2tpbmctcGFuZWwtclwiOiBwYW5lbFJpZ2h0ICE9IG51bGwgPyBgJHtwYW5lbFJpZ2h0fXB4YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLWJcIjogcGFuZWxCb3R0b20gIT0gbnVsbCA/IGAke3BhbmVsQm90dG9tfXB4YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLWxcIjogcGFuZWxMZWZ0ICE9IG51bGwgPyBgJHtwYW5lbExlZnR9cHhgIDogbnVsbFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEZhc3RET00uc2V0U3R5bGUodGhpcy4jZWwubmF0aXZlRWxlbWVudCwge1xuICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLWxheW91dC10b3BcIjogYCR7cGFkZGluZ1RvcH1weGAsXG4gICAgICAgICAgICAgICAgXCItLWRvY2tpbmctbGF5b3V0LXJpZ2h0XCI6IGAke3BhZGRpbmdSaWdodH1weGAsXG4gICAgICAgICAgICAgICAgXCItLWRvY2tpbmctbGF5b3V0LWJvdHRvbVwiOiBgJHtwYWRkaW5nQm90dG9tfXB4YCxcbiAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1sYXlvdXQtbGVmdFwiOiBgJHtwYWRkaW5nTGVmdH1weGBcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbGF5b3V0L3NyYy9kb2NraW5nL2RvY2tpbmctbGF5b3V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLFNBQVMsRUFFVCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUE7QUFFdEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRWpHLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFdEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDdkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDckUsT0FBTyxFQUE0QixxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFBOztBQVczRixNQUFNLFlBQVksR0FBRyxHQUFHLENBQUE7QUFDeEIsTUFBTSxXQUFXLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQTtBQUNwQyxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUE7QUF3QjdCLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxZQUFZO0lBcEJ4RDs7UUFxQmEsUUFBRyxHQUFHLE1BQU0sQ0FBQyxDQUFBLFVBQXVCLENBQUEsQ0FBQyxDQUFBO1FBRXJDLGdCQUFXLEdBQUcsS0FBSyxDQUFBO1FBVTVCLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFBO1FBQzdCLG1CQUFjLEdBQWlDLElBQUksQ0FBQTtLQXNJdEQ7SUFuSlksR0FBRyxDQUFrQztJQVk5QyxPQUFP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QUF0RCxZQUFZO3VCQUFDLHVCQUF1QjtnQkFFckMsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFakIsYUFBYTtzQkFBcEQsZUFBZTt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwIH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBEZXN0cnVjdGlibGUsIEZhc3RET00gfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyBEb2NraW5nQmFja2Ryb3BDb21wb25lbnQgfSBmcm9tIFwiLi9kb2NraW5nLWJhY2tkcm9wLmNvbXBvbmVudFwiXG5pbXBvcnQgeyBEb2NraW5nQ29udGVudENvbXBvbmVudCB9IGZyb20gXCIuL2RvY2tpbmctY29udGVudC5jb21wb25lbnRcIlxuaW1wb3J0IHsgdHlwZSBEb2NraW5nUGFuZWxDaGFuZ2VzLCBEb2NraW5nUGFuZWxDb21wb25lbnQgfSBmcm9tIFwiLi9kb2NraW5nLXBhbmVsLmNvbXBvbmVudFwiXG5cbnR5cGUgRG9ja2luZ1ZlcnRpY2FsUG9zaXRpb24gPSBcInRvcFwiIHwgXCJtaWRkbGVcIiB8IFwiYm90dG9tXCJcbnR5cGUgRG9ja2luZ0hvcml6b250YWxQb3NpdG9uID0gXCJsZWZ0XCIgfCBcImNlbnRlclwiIHwgXCJyaWdodFwiXG50eXBlIERvY2tpbmdQb3NpdGlvbiA9IGAke0RvY2tpbmdWZXJ0aWNhbFBvc2l0aW9ufToke0RvY2tpbmdIb3Jpem9udGFsUG9zaXRvbn1gXG5leHBvcnQgdHlwZSBEb2NraW5nUmFuZ2UgPVxuICAgIHwgRG9ja2luZ1ZlcnRpY2FsUG9zaXRpb25cbiAgICB8IERvY2tpbmdIb3Jpem9udGFsUG9zaXRvblxuICAgIHwgRG9ja2luZ1Bvc2l0aW9uXG4gICAgfCBgJHtEb2NraW5nUG9zaXRpb259LSR7RG9ja2luZ1Bvc2l0aW9ufWBcblxuY29uc3QgUklHSURfWklOREVYID0gMTAwXG5jb25zdCBPVkVSX1pJTkRFWCA9IFJJR0lEX1pJTkRFWCAqIDJcbmNvbnN0IEJBQ0tEUk9QX1pJTkRFWCA9IDEwMDAwXG5cbnR5cGUgUGFuZWxzQ2hhbmdlcyA9IEFycmF5PHsgcGFuZWw6IERvY2tpbmdQYW5lbENvbXBvbmVudDsgY2hhbmdlczogRG9ja2luZ1BhbmVsQ2hhbmdlcyB9PlxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJudS1kb2NraW5nXCIsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbRG9ja2luZ0NvbnRlbnRDb21wb25lbnQsIERvY2tpbmdCYWNrZHJvcENvbXBvbmVudF0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibnUtZG9ja2luZy1wYW5lbFwiPjwvbmctY29udGVudD5cblxuICAgICAgICBAaWYgKCFjb250ZW50Q29tcG9uZW50KSB7XG4gICAgICAgICAgICA8bnUtZG9ja2luZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDwvbnUtZG9ja2luZy1jb250ZW50PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm51LWRvY2tpbmctY29udGVudFwiPjwvbmctY29udGVudD5cbiAgICAgICAgfVxuXG4gICAgICAgIDxudS1kb2NraW5nLWJhY2tkcm9wICNiYWNrZHJvcCAoY2xpY2spPVwib25IaWRlQmFja2Ryb3BQYW5lbCgkZXZlbnQpXCIgLz5cbiAgICBgLFxuICAgIHN0eWxlVXJsOiBcIi4vZG9ja2luZy1sYXlvdXQuY29tcG9uZW50LnNjc3NcIixcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEb2NraW5nTGF5b3V0Q29tcG9uZW50IGV4dGVuZHMgRGVzdHJ1Y3RpYmxlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgICByZWFkb25seSAjZWwgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pXG5cbiAgICBASW5wdXQoKSBjb250ZW50T25seSA9IGZhbHNlXG5cbiAgICBAQ29udGVudENoaWxkKERvY2tpbmdDb250ZW50Q29tcG9uZW50KSBjb250ZW50Q29tcG9uZW50PzogRG9ja2luZ0NvbnRlbnRDb21wb25lbnRcbiAgICBAVmlld0NoaWxkKFwiYmFja2Ryb3BcIiwgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBiYWNrZHJvcEVsPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgICBAQ29udGVudENoaWxkcmVuKERvY2tpbmdQYW5lbENvbXBvbmVudCkgZG9ja2luZ1BhbmVscyE6IFF1ZXJ5TGlzdDxEb2NraW5nUGFuZWxDb21wb25lbnQ+XG5cbiAgICAvLyByZWFkb25seSBwYW5lbHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBhbmVsUmVmW10+KFtdKVxuICAgIHJlYWRvbmx5IHBhbmVscyE6IE9ic2VydmFibGU8QXJyYXk8RG9ja2luZ1BhbmVsQ29tcG9uZW50Pj5cblxuICAgICNyZWZsb3cgPSBuZXcgU3ViamVjdDx2b2lkPigpXG4gICAgI2JhY2tkcm9wUGFuZWw6IERvY2tpbmdQYW5lbENvbXBvbmVudCB8IG51bGwgPSBudWxsXG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmV0dGllci9wcmV0dGllclxuICAgICAgICAodGhpcyBhcyB7IHBhbmVsczogT2JzZXJ2YWJsZTxBcnJheTxEb2NraW5nUGFuZWxDb21wb25lbnQ+PiB9KS5wYW5lbHMgPSB0aGlzLmRvY2tpbmdQYW5lbHMuY2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMuZG9ja2luZ1BhbmVscy50b0FycmF5KCkpLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICAgKVxuXG4gICAgICAgIHRoaXMuZFxuICAgICAgICAgICAgLnN1Yihjb21iaW5lTGF0ZXN0KHsgcGFuZWxzOiB0aGlzLnBhbmVscywgcmVmbG93OiB0aGlzLiNyZWZsb3cucGlwZShzdGFydFdpdGgobnVsbCkpIH0pKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCh7IHBhbmVscyB9KSA9PlxuICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxzLm1hcChwYW5lbCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsLmNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKGNoYW5nZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcGFuZWwsIGNoYW5nZXMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy4jbGF5b3V0LmJpbmQodGhpcykpXG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoXCJjb250ZW50T25seVwiIGluIGNoYW5nZXMgfHwgXCJwb3NpdGlvbk1vZGVcIiBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLiNyZWZsb3cubmV4dCgpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjbGF5b3V0KGVudHJpZXM6IFBhbmVsc0NoYW5nZXMpIHtcbiAgICAgICAgbGV0IHBhZGRpbmdUb3AgPSAwXG4gICAgICAgIGxldCBwYWRkaW5nUmlnaHQgPSAwXG4gICAgICAgIGxldCBwYWRkaW5nQm90dG9tID0gMFxuICAgICAgICBsZXQgcGFkZGluZ0xlZnQgPSAwXG4gICAgICAgIGxldCByaWdpZFpJbmRleCA9IFJJR0lEX1pJTkRFWFxuICAgICAgICBsZXQgb3ZlclpJbmRleCA9IE9WRVJfWklOREVYXG4gICAgICAgIGxldCBiYWNrZHJvcFpJbmRleCA9IC0xXG5cbiAgICAgICAgdGhpcy4jYmFja2Ryb3BQYW5lbCA9IG51bGxcblxuICAgICAgICBpZiAodGhpcy5jb250ZW50T25seSkge1xuICAgICAgICAgICAgLy8gVE9ETzouLi5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhbmVsU3RhdGUgPSBlbnRyeS5jaGFuZ2VzXG4gICAgICAgICAgICAgICAgY29uc3QgcGFuZWxTaXplID1cbiAgICAgICAgICAgICAgICAgICAgcGFuZWxTdGF0ZS5zdGF0ZSA9PT0gXCJmdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFuZWxTdGF0ZS5mdWxsU2l6ZS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwYW5lbFN0YXRlLnN0YXRlID09PSBcIm1pbmlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHBhbmVsU3RhdGUubWluaVNpemUudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwXG5cbiAgICAgICAgICAgICAgICBjb25zdCBpc0hvcml6b250YWwgPSBwYW5lbFN0YXRlLnBvc2l0aW9uLm9yaWVudCA9PT0gXCJob3Jpem9udGFsXCJcbiAgICAgICAgICAgICAgICBjb25zdCBpc1JpZ2lkID0gcGFuZWxTdGF0ZS5tb2RlID09PSBcInJpZ2lkXCJcblxuICAgICAgICAgICAgICAgIGxldCBwYW5lbFRvcCA9IG51bGxcbiAgICAgICAgICAgICAgICBsZXQgcGFuZWxSaWdodCA9IG51bGxcbiAgICAgICAgICAgICAgICBsZXQgcGFuZWxCb3R0b20gPSBudWxsXG4gICAgICAgICAgICAgICAgbGV0IHBhbmVsTGVmdCA9IG51bGxcblxuICAgICAgICAgICAgICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFuZWxMZWZ0ID0gMFxuICAgICAgICAgICAgICAgICAgICBwYW5lbFJpZ2h0ID0gMFxuICAgICAgICAgICAgICAgICAgICBpZiAocGFuZWxTdGF0ZS5wb3NpdGlvbi5jZWxsc1swXS52ID09PSBcInRvcFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNSaWdpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3AgPSBNYXRoLm1heChwYWRkaW5nVG9wLCBwYW5lbFNpemUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYW5lbFRvcCA9IDBcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYW5lbFN0YXRlLnBvc2l0aW9uLmNlbGxzWzBdLnYgPT09IFwiYm90dG9tXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1JpZ2lkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSA9IE1hdGgubWF4KHBhZGRpbmdCb3R0b20sIHBhbmVsU2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsQm90dG9tID0gMFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGFuZWxUb3AgPSAwXG4gICAgICAgICAgICAgICAgICAgIHBhbmVsQm90dG9tID0gMFxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYW5lbFN0YXRlLnBvc2l0aW9uLmNlbGxzWzBdLmggPT09IFwibGVmdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNSaWdpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0ID0gTWF0aC5tYXgocGFkZGluZ0xlZnQsIHBhbmVsU2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsTGVmdCA9IDBcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYW5lbFN0YXRlLnBvc2l0aW9uLmNlbGxzWzBdLmggPT09IFwicmlnaHRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUmlnaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQgPSBNYXRoLm1heChwYWRkaW5nUmlnaHQsIHBhbmVsU2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsUmlnaHQgPSAwXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgcGFuZWxaSW5kZXggPSBpc1JpZ2lkID8gKHJpZ2lkWkluZGV4ICs9IDIpIDogKG92ZXJaSW5kZXggKz0gMilcbiAgICAgICAgICAgICAgICBpZiAocGFuZWxTdGF0ZS5zdGF0ZSAhPT0gXCJoaWRkZW5cIiAmJiBlbnRyeS5wYW5lbC5iYWNrZHJvcCkge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcFpJbmRleCA9IEJBQ0tEUk9QX1pJTkRFWFxuICAgICAgICAgICAgICAgICAgICBwYW5lbFpJbmRleCA9IGJhY2tkcm9wWkluZGV4ICsgMVxuICAgICAgICAgICAgICAgICAgICB0aGlzLiNiYWNrZHJvcFBhbmVsID0gZW50cnkucGFuZWxcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBGYXN0RE9NLnNldFN0eWxlKGVudHJ5LnBhbmVsLmVsLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ6LWluZGV4XCI6IGAke3BhbmVsWkluZGV4fWAsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLXRcIjogcGFuZWxUb3AgIT0gbnVsbCA/IGAke3BhbmVsVG9wfXB4YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLXJcIjogcGFuZWxSaWdodCAhPSBudWxsID8gYCR7cGFuZWxSaWdodH1weGAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1wYW5lbC1iXCI6IHBhbmVsQm90dG9tICE9IG51bGwgPyBgJHtwYW5lbEJvdHRvbX1weGAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1wYW5lbC1sXCI6IHBhbmVsTGVmdCAhPSBudWxsID8gYCR7cGFuZWxMZWZ0fXB4YCA6IG51bGxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBGYXN0RE9NLnNldFN0eWxlKHRoaXMuI2VsLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1sYXlvdXQtdG9wXCI6IGAke3BhZGRpbmdUb3B9cHhgLFxuICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLWxheW91dC1yaWdodFwiOiBgJHtwYWRkaW5nUmlnaHR9cHhgLFxuICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLWxheW91dC1ib3R0b21cIjogYCR7cGFkZGluZ0JvdHRvbX1weGAsXG4gICAgICAgICAgICAgICAgXCItLWRvY2tpbmctbGF5b3V0LWxlZnRcIjogYCR7cGFkZGluZ0xlZnR9cHhgXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBpZiAodGhpcy5iYWNrZHJvcEVsKSB7XG4gICAgICAgICAgICAgICAgRmFzdERPTS5zZXRBdHRyaWJ1dGVzKHRoaXMuYmFja2Ryb3BFbC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlOiBiYWNrZHJvcFpJbmRleCA8IDAgPyBcImhpZGRlblwiIDogXCJ2aXNpYmxlXCJcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIEZhc3RET00uc2V0U3R5bGUodGhpcy5iYWNrZHJvcEVsLm5hdGl2ZUVsZW1lbnQsIHsgXCJ6LWluZGV4XCI6IGAke2JhY2tkcm9wWkluZGV4fWAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSGlkZUJhY2tkcm9wUGFuZWwoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgaWYgKHRoaXMuI2JhY2tkcm9wUGFuZWwpIHtcbiAgICAgICAgICAgIHRoaXMuI2JhY2tkcm9wUGFuZWwuY2xvc2UoKVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -51,8 +51,16 @@ export class DockingPanelComponent extends Destructible {
51
51
  }
52
52
  #minimizable;
53
53
  #minimizableAuto;
54
+ set backdrop(val) {
55
+ this.#backdrop = coerceBoolAttr(val);
56
+ }
57
+ get backdrop() {
58
+ return this.#backdrop;
59
+ }
60
+ #backdrop;
54
61
  #contentSize;
55
62
  #autoSize;
63
+ // TODO: better animation handling in min -> hidden -> min -> full
56
64
  constructor() {
57
65
  super();
58
66
  this.el = inject((ElementRef));
@@ -64,6 +72,7 @@ export class DockingPanelComponent extends Destructible {
64
72
  this.#miniSize = new BehaviorSubject(HIDDEN_SIZE);
65
73
  this.#minimizable = false;
66
74
  this.#minimizableAuto = true;
75
+ this.#backdrop = false;
67
76
  this.#contentSize = new ReplaySubject(1);
68
77
  this.#autoSize = combineLatest({
69
78
  dim: this.#contentSize,
@@ -162,11 +171,11 @@ export class DockingPanelComponent extends Destructible {
162
171
  }
163
172
  }
164
173
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
165
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: DockingPanelComponent, isStandalone: true, selector: "nu-docking-panel", inputs: { positionInput: ["position", "positionInput"], stateInput: ["state", "stateInput"], modeInput: ["mode", "modeInput"], fullSizeInput: ["fullSize", "fullSizeInput"], miniSizeInput: ["miniSize", "miniSizeInput"], minimizable: "minimizable" }, outputs: { state: "stateChanges" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef, static: true }], exportAs: ["nuDockingPanel"], usesInheritance: true, ngImport: i0, template: `
174
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: DockingPanelComponent, isStandalone: true, selector: "nu-docking-panel", inputs: { positionInput: ["position", "positionInput"], stateInput: ["state", "stateInput"], modeInput: ["mode", "modeInput"], fullSizeInput: ["fullSize", "fullSizeInput"], miniSizeInput: ["miniSize", "miniSizeInput"], minimizable: "minimizable", backdrop: "backdrop" }, outputs: { state: "stateChanges" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef, static: true }], exportAs: ["nuDockingPanel"], usesInheritance: true, ngImport: i0, template: `
166
175
  <div class="content" #content>
167
176
  <ng-content></ng-content>
168
177
  </div>
169
- `, isInline: true, styles: [":host{---docking-panel-t: var(--docking-panel-t, auto);---docking-panel-r: var(--docking-panel-r, auto);---docking-panel-b: var(--docking-panel-b, auto);---docking-panel-l: var(--docking-panel-l, auto);---docking-panel-w: var(--docking-panel-w, auto);---docking-panel-h: var(--docking-panel-h, auto);---docking-panel-content-w: var(--docking-panel-content-w, var(---docking-panel-w));---docking-panel-content-g: var(--docking-panel-content-g, var(---docking-panel-h));display:flex;flex-flow:column nowrap;align-items:stretch;position:absolute;box-sizing:border-box;overflow:hidden;top:var(---docking-panel-t);right:var(---docking-panel-r);bottom:var(---docking-panel-b);left:var(---docking-panel-l);width:var(---docking-panel-w);height:var(---docking-panel-h)}:host[animate]{transition:transform var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),width var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),height var(---docking-layout-anim-duration) var(---docking-layout-anim-ease)}:host[side=top],:host[side=left]{---docking-panel-t-hide: -100%;---docking-panel-t-visible: 0%}:host[side=bottom],:host[side=right]{---docking-panel-t-hide: 100%;---docking-panel-t-visible: 0%}:host[state=hidden][orient=horizontal]{transform:translateY(var(---docking-panel-t-hide))}:host[state=hidden][orient=vertical]{transform:translate(var(---docking-panel-t-hide))}:host:not([state=hidden])[orient=horizontal]{transform:translateY(var(---docking-panel-t-visible))}:host:not([state=hidden])[orient=vertical]{transform:translate(var(---docking-panel-t-visible))}\n"] }); }
178
+ `, isInline: true, styles: [":host{---docking-panel-t: var(--docking-panel-t, auto);---docking-panel-r: var(--docking-panel-r, auto);---docking-panel-b: var(--docking-panel-b, auto);---docking-panel-l: var(--docking-panel-l, auto);---docking-panel-w: var(--docking-panel-w, auto);---docking-panel-h: var(--docking-panel-h, auto);---docking-panel-content-w: var(--docking-panel-content-w, var(---docking-panel-w));---docking-panel-content-g: var(--docking-panel-content-g, var(---docking-panel-h));display:flex;flex-flow:column nowrap;align-items:stretch;position:absolute;box-sizing:border-box;overflow:hidden;top:var(---docking-panel-t);right:var(---docking-panel-r);bottom:var(---docking-panel-b);left:var(---docking-panel-l);width:var(---docking-panel-w);height:var(---docking-panel-h)}:host[animate]{transition:transform var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),width var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),height var(---docking-layout-anim-duration) var(---docking-layout-anim-ease)}:host[side=top],:host[side=left]{---docking-panel-t-hide: -100%;---docking-panel-t-visible: 0%}:host[side=bottom],:host[side=right]{---docking-panel-t-hide: 100%;---docking-panel-t-visible: 0%}:host[state=hidden]{animation:var(---docking-layout-anim-duration) var(---docking-layout-anim-ease) hide;animation-fill-mode:forwards}:host[state=hidden][orient=horizontal]{transform:translateY(var(---docking-panel-t-hide))}:host[state=hidden][orient=vertical]{transform:translate(var(---docking-panel-t-hide))}:host:not([state=hidden]){visibility:visible}:host:not([state=hidden])[orient=horizontal]{transform:translateY(var(---docking-panel-t-visible))}:host:not([state=hidden])[orient=vertical]{transform:translate(var(---docking-panel-t-visible))}:host .content{display:flex;flex-direction:column;align-items:stretch}:host[orient=horizontal] .content{width:100%;min-width:100%;max-width:100%}:host[orient=vertical] .content{height:100%;min-height:100%;max-height:100%}@keyframes hide{99%{visibility:visible}to{visibility:hidden}}\n"] }); }
170
179
  }
171
180
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingPanelComponent, decorators: [{
172
181
  type: Component,
@@ -174,7 +183,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
174
183
  <div class="content" #content>
175
184
  <ng-content></ng-content>
176
185
  </div>
177
- `, styles: [":host{---docking-panel-t: var(--docking-panel-t, auto);---docking-panel-r: var(--docking-panel-r, auto);---docking-panel-b: var(--docking-panel-b, auto);---docking-panel-l: var(--docking-panel-l, auto);---docking-panel-w: var(--docking-panel-w, auto);---docking-panel-h: var(--docking-panel-h, auto);---docking-panel-content-w: var(--docking-panel-content-w, var(---docking-panel-w));---docking-panel-content-g: var(--docking-panel-content-g, var(---docking-panel-h));display:flex;flex-flow:column nowrap;align-items:stretch;position:absolute;box-sizing:border-box;overflow:hidden;top:var(---docking-panel-t);right:var(---docking-panel-r);bottom:var(---docking-panel-b);left:var(---docking-panel-l);width:var(---docking-panel-w);height:var(---docking-panel-h)}:host[animate]{transition:transform var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),width var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),height var(---docking-layout-anim-duration) var(---docking-layout-anim-ease)}:host[side=top],:host[side=left]{---docking-panel-t-hide: -100%;---docking-panel-t-visible: 0%}:host[side=bottom],:host[side=right]{---docking-panel-t-hide: 100%;---docking-panel-t-visible: 0%}:host[state=hidden][orient=horizontal]{transform:translateY(var(---docking-panel-t-hide))}:host[state=hidden][orient=vertical]{transform:translate(var(---docking-panel-t-hide))}:host:not([state=hidden])[orient=horizontal]{transform:translateY(var(---docking-panel-t-visible))}:host:not([state=hidden])[orient=vertical]{transform:translate(var(---docking-panel-t-visible))}\n"] }]
186
+ `, styles: [":host{---docking-panel-t: var(--docking-panel-t, auto);---docking-panel-r: var(--docking-panel-r, auto);---docking-panel-b: var(--docking-panel-b, auto);---docking-panel-l: var(--docking-panel-l, auto);---docking-panel-w: var(--docking-panel-w, auto);---docking-panel-h: var(--docking-panel-h, auto);---docking-panel-content-w: var(--docking-panel-content-w, var(---docking-panel-w));---docking-panel-content-g: var(--docking-panel-content-g, var(---docking-panel-h));display:flex;flex-flow:column nowrap;align-items:stretch;position:absolute;box-sizing:border-box;overflow:hidden;top:var(---docking-panel-t);right:var(---docking-panel-r);bottom:var(---docking-panel-b);left:var(---docking-panel-l);width:var(---docking-panel-w);height:var(---docking-panel-h)}:host[animate]{transition:transform var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),width var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),height var(---docking-layout-anim-duration) var(---docking-layout-anim-ease)}:host[side=top],:host[side=left]{---docking-panel-t-hide: -100%;---docking-panel-t-visible: 0%}:host[side=bottom],:host[side=right]{---docking-panel-t-hide: 100%;---docking-panel-t-visible: 0%}:host[state=hidden]{animation:var(---docking-layout-anim-duration) var(---docking-layout-anim-ease) hide;animation-fill-mode:forwards}:host[state=hidden][orient=horizontal]{transform:translateY(var(---docking-panel-t-hide))}:host[state=hidden][orient=vertical]{transform:translate(var(---docking-panel-t-hide))}:host:not([state=hidden]){visibility:visible}:host:not([state=hidden])[orient=horizontal]{transform:translateY(var(---docking-panel-t-visible))}:host:not([state=hidden])[orient=vertical]{transform:translate(var(---docking-panel-t-visible))}:host .content{display:flex;flex-direction:column;align-items:stretch}:host[orient=horizontal] .content{width:100%;min-width:100%;max-width:100%}:host[orient=vertical] .content{height:100%;min-height:100%;max-height:100%}@keyframes hide{99%{visibility:visible}to{visibility:hidden}}\n"] }]
178
187
  }], ctorParameters: () => [], propDecorators: { content: [{
179
188
  type: ViewChild,
180
189
  args: ["content", { read: ElementRef, static: true }]
@@ -199,5 +208,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
199
208
  }], minimizable: [{
200
209
  type: Input,
201
210
  args: ["minimizable"]
211
+ }], backdrop: [{
212
+ type: Input,
213
+ args: ["backdrop"]
202
214
  }] } });
203
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2RvY2tpbmcvZG9ja2luZy1wYW5lbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRWpILE9BQU8sRUFFSCxjQUFjLEVBQ2QsWUFBWSxFQUNaLE9BQU8sRUFDUCxjQUFjLEVBRWpCLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRWhELE9BQU8sRUFBRSxPQUFPLEVBQWUsTUFBTSxhQUFhLENBQUE7O0FBS2xELE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUMvQyxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7QUFDL0MsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQWEvQyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsWUFBWTtJQUUxQyxXQUFXLENBQTJCO0lBSS9DLElBQ0ksYUFBYSxDQUFDLEdBQTBCO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDbkMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQzVCLE1BQU0sSUFBSSxLQUFLLENB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a0JBQWtCLFlBQ2xCLGdCQUFnQixZQUVoQjs7OztLQUlUO3dEQU1RLE9BQU87c0JBRGYsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSXBELGFBQWE7c0JBRGhCLEtBQUs7dUJBQUMsVUFBVTtnQkFjYixVQUFVO3NCQURiLEtBQUs7dUJBQUMsT0FBTztnQkFPTCxLQUFLO3NCQURiLE1BQU07dUJBQUMsY0FBYztnQkFJbEIsU0FBUztzQkFEWixLQUFLO3VCQUFDLE1BQU07Z0JBU1QsYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyxVQUFVO2dCQVViLGFBQWE7c0JBRGhCLEtBQUs7dUJBQUMsVUFBVTtnQkFVYixXQUFXO3NCQURkLEtBQUs7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgUmVwbGF5U3ViamVjdCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHtcbiAgICBCb29sZWFuSW5wdXQsXG4gICAgY29lcmNlQm9vbEF0dHIsXG4gICAgRGVzdHJ1Y3RpYmxlLFxuICAgIEZhc3RET00sXG4gICAgTnVtYmVyV2l0aFVuaXQsXG4gICAgTnVtYmVyV2l0aFVuaXRJbnB1dFxufSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuaW1wb3J0IHsgRGltZW5zaW9uV2F0Y2hlciB9IGZyb20gXCJAbmd1dGlsL3N0eWxlXCJcblxuaW1wb3J0IHsgTDlSYW5nZSwgTDlSYW5nZU5hbWUgfSBmcm9tIFwiLi4vbDkvcmFuZ2VcIlxuXG5leHBvcnQgdHlwZSBEb2NraW5nUGFuZWxTdGF0ZSA9IFwiZnVsbFwiIHwgXCJtaW5pXCIgfCBcImhpZGRlblwiXG5leHBvcnQgdHlwZSBEb2NraW5nUGFuZWxNb2RlID0gXCJvdmVyXCIgfCBcInB1c2hcIiB8IFwicmlnaWRcIlxuXG5jb25zdCBERUZBVUxUX1BPU0lUSU9OID0gTDlSYW5nZS5jb2VyY2UoXCJsZWZ0XCIpXG5jb25zdCBISURERU5fU0laRSA9IG5ldyBOdW1iZXJXaXRoVW5pdCgwLCBcInB4XCIpXG5jb25zdCBBVVRPX1NJWkUgPSBOdW1iZXJXaXRoVW5pdC5jb2VyY2UoXCJhdXRvXCIpXG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6IFwibnUtZG9ja2luZy1wYW5lbFwiLFxuICAgIGV4cG9ydEFzOiBcIm51RG9ja2luZ1BhbmVsXCIsXG4gICAgc3R5bGVVcmw6IFwiLi9kb2NraW5nLXBhbmVsLmNvbXBvbmVudC5zY3NzXCIsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiAjY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBEb2NraW5nUGFuZWxDb21wb25lbnQgZXh0ZW5kcyBEZXN0cnVjdGlibGUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICByZWFkb25seSBlbCA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50PilcbiAgICByZWFkb25seSAjZGltV2F0Y2hlciA9IGluamVjdChEaW1lbnNpb25XYXRjaGVyKVxuICAgIEBWaWV3Q2hpbGQoXCJjb250ZW50XCIsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgcmVhZG9ubHkgY29udGVudCE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG5cbiAgICBASW5wdXQoXCJwb3NpdGlvblwiKVxuICAgIHNldCBwb3NpdGlvbklucHV0KHZhbDogTDlSYW5nZSB8IEw5UmFuZ2VOYW1lKSB7XG4gICAgICAgIGNvbnN0IGNvZXJjZWQgPSBMOVJhbmdlLmNvZXJjZSh2YWwpXG4gICAgICAgIGlmIChjb2VyY2VkLm9yaWVudCA9PT0gXCJyZWN0XCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwb3NpdGlvbiB2YWx1ZTogJHt2YWx9YClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5wb3NpdGlvbi52YWx1ZS5pc0VxKGNvZXJjZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSBwb3NpdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TDlSYW5nZT4oREVGQVVMVF9QT1NJVElPTilcblxuICAgIEBJbnB1dChcInN0YXRlXCIpXG4gICAgc2V0IHN0YXRlSW5wdXQodmFsOiBEb2NraW5nUGFuZWxTdGF0ZSkge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS52YWx1ZSAhPT0gdmFsKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLm5leHQodmFsKVxuICAgICAgICB9XG4gICAgfVxuICAgIEBPdXRwdXQoXCJzdGF0ZUNoYW5nZXNcIilcbiAgICByZWFkb25seSBzdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9ja2luZ1BhbmVsU3RhdGU+KFwiZnVsbFwiKVxuXG4gICAgQElucHV0KFwibW9kZVwiKVxuICAgIHNldCBtb2RlSW5wdXQodmFsOiBEb2NraW5nUGFuZWxNb2RlKSB7XG4gICAgICAgIGlmICh0aGlzLm1vZGUudmFsdWUgIT09IHZhbCkge1xuICAgICAgICAgICAgdGhpcy5tb2RlLm5leHQodmFsKVxuICAgICAgICB9XG4gICAgfVxuICAgIHJlYWRvbmx5IG1vZGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERvY2tpbmdQYW5lbE1vZGU+KFwicmlnaWRcIilcblxuICAgIEBJbnB1dChcImZ1bGxTaXplXCIpXG4gICAgc2V0IGZ1bGxTaXplSW5wdXQodmFsOiBOdW1iZXJXaXRoVW5pdElucHV0KSB7XG4gICAgICAgIGNvbnN0IGNvZXJjZWQgPSBOdW1iZXJXaXRoVW5pdC5jb2VyY2UodmFsLCBcInB4XCIpXG4gICAgICAgIGlmICh0aGlzLiNmdWxsU2l6ZS52YWx1ZSAhPT0gY29lcmNlZCkge1xuICAgICAgICAgICAgdGhpcy4jZnVsbFNpemUubmV4dChjb2VyY2VkKVxuICAgICAgICB9XG4gICAgfVxuICAgIHJlYWRvbmx5ICNmdWxsU2l6ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TnVtYmVyV2l0aFVuaXQ+KEFVVE9fU0laRSlcblxuICAgIEBJbnB1dChcIm1pbmlTaXplXCIpXG4gICAgc2V0IG1pbmlTaXplSW5wdXQodmFsOiBOdW1iZXJXaXRoVW5pdElucHV0KSB7XG4gICAgICAgIGNvbnN0IGNvZXJjZWQgPSBOdW1iZXJXaXRoVW5pdC5jb2VyY2UodmFsLCBcInB4XCIpXG4gICAgICAgIGlmICh0aGlzLiNtaW5pU2l6ZS52YWx1ZSAhPT0gY29lcmNlZCkge1xuICAgICAgICAgICAgdGhpcy4jbWluaVNpemUubmV4dChjb2VyY2VkKVxuICAgICAgICB9XG4gICAgfVxuICAgIHJlYWRvbmx5ICNtaW5pU2l6ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TnVtYmVyV2l0aFVuaXQ+KEhJRERFTl9TSVpFKVxuXG4gICAgQElucHV0KFwibWluaW1pemFibGVcIilcbiAgICBzZXQgbWluaW1pemFibGUodmFsOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy4jbWluaW1pemFibGUgPSBjb2VyY2VCb29sQXR0cih2YWwpXG4gICAgICAgIHRoaXMuI21pbmltaXphYmxlQXV0byA9IGZhbHNlXG4gICAgfVxuICAgIGdldCBtaW5pbWl6YWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI21pbmltaXphYmxlXG4gICAgfVxuICAgICNtaW5pbWl6YWJsZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgI21pbmltaXphYmxlQXV0bzogYm9vbGVhbiA9IHRydWVcblxuICAgIHJlYWRvbmx5ICNjb250ZW50U2l6ZSA9IG5ldyBSZXBsYXlTdWJqZWN0PHsgd2lkdGg6IE51bWJlcldpdGhVbml0OyBoZWlnaHQ6IE51bWJlcldpdGhVbml0IH0+KDEpXG5cbiAgICByZWFkb25seSAjYXV0b1NpemUgPSBjb21iaW5lTGF0ZXN0KHtcbiAgICAgICAgZGltOiB0aGlzLiNjb250ZW50U2l6ZSxcbiAgICAgICAgcG9zOiB0aGlzLnBvc2l0aW9uXG4gICAgfSkucGlwZShcbiAgICAgICAgbWFwKCh7IGRpbSwgcG9zIH0pID0+IHtcbiAgICAgICAgICAgIGlmIChwb3Mub3JpZW50ID09PSBcImhvcml6b250YWxcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBkaW0uaGVpZ2h0XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBkaW0ud2lkdGhcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKVxuXG4gICAgcmVhZG9ubHkgZnVsbFNpemUgPSB0aGlzLiNmdWxsU2l6ZS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoc2l6ZSA9PiB7XG4gICAgICAgICAgICBpZiAoc2l6ZS51bml0ID09PSBcImF1dG9cIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiNhdXRvU2l6ZVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2Yoc2l6ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKVxuXG4gICAgcmVhZG9ubHkgbWluaVNpemUgPSB0aGlzLiNtaW5pU2l6ZS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoc2l6ZSA9PiB7XG4gICAgICAgICAgICBpZiAoc2l6ZS51bml0ID09PSBcImF1dG9cIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiNhdXRvU2l6ZVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2Yoc2l6ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKVxuXG4gICAgcmVhZG9ubHkgY2hhbmdlcyA9IGNvbWJpbmVMYXRlc3Qoe1xuICAgICAgICBwb3NpdGlvbjogdGhpcy5wb3NpdGlvbixcbiAgICAgICAgc3RhdGU6IHRoaXMuc3RhdGUsXG4gICAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgICAgZnVsbFNpemU6IHRoaXMuZnVsbFNpemUsXG4gICAgICAgIG1pbmlTaXplOiB0aGlzLm1pbmlTaXplLFxuICAgICAgICBjb250ZW50U2l6ZTogdGhpcy4jY29udGVudFNpemVcbiAgICB9KVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKClcblxuICAgICAgICB0aGlzLmQuc3ViKHRoaXMuY2hhbmdlcykuc3Vic2NyaWJlKGNoYW5nZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuI21pbmltaXphYmxlQXV0bykge1xuICAgICAgICAgICAgICAgIHRoaXMuI21pbmltaXphYmxlID0gdGhpcy4jbWluaVNpemUudmFsdWUudmFsdWUgIT09IDBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgRmFzdERPTS5zZXRBdHRyaWJ1dGVzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwge1xuICAgICAgICAgICAgICAgIHN0YXRlOiBjaGFuZ2VzLnN0YXRlLFxuICAgICAgICAgICAgICAgIG9yaWVudDogY2hhbmdlcy5wb3NpdGlvbi5vcmllbnQsXG4gICAgICAgICAgICAgICAgbW9kZTogY2hhbmdlcy5tb2RlLFxuICAgICAgICAgICAgICAgIHNpZGU6XG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZXMucG9zaXRpb24ub3JpZW50ID09PSBcImhvcml6b250YWxcIiA/IGNoYW5nZXMucG9zaXRpb24uY2VsbHNbMF0udiA6IGNoYW5nZXMucG9zaXRpb24uY2VsbHNbMF0uaFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgY29uc3QgaXNIb3Jpem9udGFsID0gY2hhbmdlcy5wb3NpdGlvbi5vcmllbnQgPT09IFwiaG9yaXpvbnRhbFwiXG4gICAgICAgICAgICBsZXQgdyA9IG51bGxcbiAgICAgICAgICAgIGxldCBoID0gbnVsbFxuXG4gICAgICAgICAgICAvLyBUT0RPOiB3aGVuIGNoYW5nZSBzdGF0ZSBmcm9tIG1pbmkgLT4gaGlkZGVuLCBjdXJyZW50bHkgd3JvbmcgYmVoYXZpb3JcbiAgICAgICAgICAgIC8vIHRoZSBnb29kIGJlaGF2aW9yIGlzIHRvIG5vdCBnYWluIGZ1bGxTaXplIGFuZyBnbyB0byBoaWRkZW5cbiAgICAgICAgICAgIGlmIChjaGFuZ2VzLnN0YXRlID09PSBcIm1pbmlcIikge1xuICAgICAgICAgICAgICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgaCA9IGNoYW5nZXMubWluaVNpemUudW5pdCA9PT0gXCJhdXRvXCIgPyBjaGFuZ2VzLmNvbnRlbnRTaXplLmhlaWdodCA6IGNoYW5nZXMubWluaVNpemVcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB3ID0gY2hhbmdlcy5taW5pU2l6ZS51bml0ID09PSBcImF1dG9cIiA/IGNoYW5nZXMuY29udGVudFNpemUud2lkdGggOiBjaGFuZ2VzLm1pbmlTaXplXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGggPSBjaGFuZ2VzLmZ1bGxTaXplLnVuaXQgPT09IFwiYXV0b1wiID8gY2hhbmdlcy5jb250ZW50U2l6ZS5oZWlnaHQgOiBjaGFuZ2VzLmZ1bGxTaXplXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdyA9IGNoYW5nZXMuZnVsbFNpemUudW5pdCA9PT0gXCJhdXRvXCIgPyBjaGFuZ2VzLmNvbnRlbnRTaXplLndpZHRoIDogY2hhbmdlcy5mdWxsU2l6ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgRmFzdERPTS5zZXRTdHlsZShcbiAgICAgICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1wYW5lbC13XCI6IHcgIT0gbnVsbCA/IGAke3d9YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLWhcIjogaCAhPSBudWxsID8gYCR7aH1gIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgXCItLWRvY2tpbmctcGFuZWwtY29udGVudC13XCI6IGNoYW5nZXMuY29udGVudFNpemUud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLWNvbnRlbnQtaFwiOiBjaGFuZ2VzLmNvbnRlbnRTaXplLmhlaWdodFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKCkgPT4gRmFzdERPTS5zZXRBdHRyaWJ1dGVzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgeyBhbmltYXRlOiBcIlwiIH0pXG4gICAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRcbiAgICAgICAgICAgIC5zdWIodGhpcy4jZGltV2F0Y2hlci53YXRjaCh0aGlzLmNvbnRlbnQsIFwic2Nyb2xsLWJveFwiKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChkaW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IG5ldyBOdW1iZXJXaXRoVW5pdChkaW0ud2lkdGgsIFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IG5ldyBOdW1iZXJXaXRoVW5pdChkaW0uaGVpZ2h0LCBcInB4XCIpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh0aGlzLiNjb250ZW50U2l6ZSlcbiAgICB9XG5cbiAgICBvcGVuKCkge1xuICAgICAgICB0aGlzLnN0YXRlLm5leHQoXCJmdWxsXCIpXG4gICAgfVxuXG4gICAgY2xvc2UoKSB7XG4gICAgICAgIHRoaXMuc3RhdGUubmV4dChcImhpZGRlblwiKVxuICAgIH1cblxuICAgIG1pbmltaXplKCkge1xuICAgICAgICBpZiAodGhpcy5taW5pbWl6YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5uZXh0KFwibWluaVwiKVxuICAgICAgICB9XG4gICAgfVxufVxuXG50eXBlIENoYW5nZXNPYnNlcnZhYmxlID0gdHlwZW9mIERvY2tpbmdQYW5lbENvbXBvbmVudC5wcm90b3R5cGUuY2hhbmdlc1xuZXhwb3J0IHR5cGUgRG9ja2luZ1BhbmVsQ2hhbmdlcyA9IENoYW5nZXNPYnNlcnZhYmxlIGV4dGVuZHMgT2JzZXJ2YWJsZTxpbmZlciBUPiA/IFQgOiBuZXZlclxuIl19
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2RvY2tpbmcvZG9ja2luZy1wYW5lbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRWpILE9BQU8sRUFFSCxjQUFjLEVBQ2QsWUFBWSxFQUNaLE9BQU8sRUFDUCxjQUFjLEVBRWpCLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRWhELE9BQU8sRUFBRSxPQUFPLEVBQWUsTUFBTSxhQUFhLENBQUE7O0FBS2xELE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUMvQyxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7QUFDL0MsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQWEvQyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsWUFBWTtJQUUxQyxXQUFXLENBQTJCO0lBSS9DLElBQ0ksYUFBYSxDQUFDLEdBQTBCO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDbkMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQzVCLE1BQU0sSUFBSSxLQUFLLENB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SixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUMzQixDQUFDO0lBQ0wsQ0FBQzs4R0FyTVEscUJBQXFCO2tHQUFyQixxQkFBcUIsOGNBR0EsVUFBVSxnR0FUOUI7Ozs7S0FJVDs7MkZBRVEscUJBQXFCO2tCQVhqQyxTQUFTO2lDQUNNLElBQUksWUFDTixrQkFBa0IsWUFDbEIsZ0JBQWdCLFlBRWhCOzs7O0tBSVQ7d0RBTVEsT0FBTztzQkFEZixTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJcEQsYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyxVQUFVO2dCQWNiLFVBQVU7c0JBRGIsS0FBSzt1QkFBQyxPQUFPO2dCQU9MLEtBQUs7c0JBRGIsTUFBTTt1QkFBQyxjQUFjO2dCQUlsQixTQUFTO3NCQURaLEtBQUs7dUJBQUMsTUFBTTtnQkFTVCxhQUFhO3NCQURoQixLQUFLO3VCQUFDLFVBQVU7Z0JBVWIsYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyxVQUFVO2dCQVViLFdBQVc7c0JBRGQsS0FBSzt1QkFBQyxhQUFhO2dCQVloQixRQUFRO3NCQURYLEtBQUs7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgUmVwbGF5U3ViamVjdCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHtcbiAgICBCb29sZWFuSW5wdXQsXG4gICAgY29lcmNlQm9vbEF0dHIsXG4gICAgRGVzdHJ1Y3RpYmxlLFxuICAgIEZhc3RET00sXG4gICAgTnVtYmVyV2l0aFVuaXQsXG4gICAgTnVtYmVyV2l0aFVuaXRJbnB1dFxufSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuaW1wb3J0IHsgRGltZW5zaW9uV2F0Y2hlciB9IGZyb20gXCJAbmd1dGlsL3N0eWxlXCJcblxuaW1wb3J0IHsgTDlSYW5nZSwgTDlSYW5nZU5hbWUgfSBmcm9tIFwiLi4vbDkvcmFuZ2VcIlxuXG5leHBvcnQgdHlwZSBEb2NraW5nUGFuZWxTdGF0ZSA9IFwiZnVsbFwiIHwgXCJtaW5pXCIgfCBcImhpZGRlblwiXG5leHBvcnQgdHlwZSBEb2NraW5nUGFuZWxNb2RlID0gXCJvdmVyXCIgfCBcInB1c2hcIiB8IFwicmlnaWRcIlxuXG5jb25zdCBERUZBVUxUX1BPU0lUSU9OID0gTDlSYW5nZS5jb2VyY2UoXCJsZWZ0XCIpXG5jb25zdCBISURERU5fU0laRSA9IG5ldyBOdW1iZXJXaXRoVW5pdCgwLCBcInB4XCIpXG5jb25zdCBBVVRPX1NJWkUgPSBOdW1iZXJXaXRoVW5pdC5jb2VyY2UoXCJhdXRvXCIpXG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6IFwibnUtZG9ja2luZy1wYW5lbFwiLFxuICAgIGV4cG9ydEFzOiBcIm51RG9ja2luZ1BhbmVsXCIsXG4gICAgc3R5bGVVcmw6IFwiLi9kb2NraW5nLXBhbmVsLmNvbXBvbmVudC5zY3NzXCIsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiAjY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBEb2NraW5nUGFuZWxDb21wb25lbnQgZXh0ZW5kcyBEZXN0cnVjdGlibGUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICByZWFkb25seSBlbCA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50PilcbiAgICByZWFkb25seSAjZGltV2F0Y2hlciA9IGluamVjdChEaW1lbnNpb25XYXRjaGVyKVxuICAgIEBWaWV3Q2hpbGQoXCJjb250ZW50XCIsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgcmVhZG9ubHkgY29udGVudCE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG5cbiAgICBASW5wdXQoXCJwb3NpdGlvblwiKVxuICAgIHNldCBwb3NpdGlvbklucHV0KHZhbDogTDlSYW5nZSB8IEw5UmFuZ2VOYW1lKSB7XG4gICAgICAgIGNvbnN0IGNvZXJjZWQgPSBMOVJhbmdlLmNvZXJjZSh2YWwpXG4gICAgICAgIGlmIChjb2VyY2VkLm9yaWVudCA9PT0gXCJyZWN0XCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwb3NpdGlvbiB2YWx1ZTogJHt2YWx9YClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5wb3NpdGlvbi52YWx1ZS5pc0VxKGNvZXJjZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSBwb3NpdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TDlSYW5nZT4oREVGQVVMVF9QT1NJVElPTilcblxuICAgIEBJbnB1dChcInN0YXRlXCIpXG4gICAgc2V0IHN0YXRlSW5wdXQodmFsOiBEb2NraW5nUGFuZWxTdGF0ZSkge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS52YWx1ZSAhPT0gdmFsKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLm5leHQodmFsKVxuICAgICAgICB9XG4gICAgfVxuICAgIEBPdXRwdXQoXCJzdGF0ZUNoYW5nZXNcIilcbiAgICByZWFkb25seSBzdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9ja2luZ1BhbmVsU3RhdGU+KFwiZnVsbFwiKVxuXG4gICAgQElucHV0KFwibW9kZVwiKVxuICAgIHNldCBtb2RlSW5wdXQodmFsOiBEb2NraW5nUGFuZWxNb2RlKSB7XG4gICAgICAgIGlmICh0aGlzLm1vZGUudmFsdWUgIT09IHZhbCkge1xuICAgICAgICAgICAgdGhpcy5tb2RlLm5leHQodmFsKVxuICAgICAgICB9XG4gICAgfVxuICAgIHJlYWRvbmx5IG1vZGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERvY2tpbmdQYW5lbE1vZGU+KFwicmlnaWRcIilcblxuICAgIEBJbnB1dChcImZ1bGxTaXplXCIpXG4gICAgc2V0IGZ1bGxTaXplSW5wdXQodmFsOiBOdW1iZXJXaXRoVW5pdElucHV0KSB7XG4gICAgICAgIGNvbnN0IGNvZXJjZWQgPSBOdW1iZXJXaXRoVW5pdC5jb2VyY2UodmFsLCBcInB4XCIpXG4gICAgICAgIGlmICh0aGlzLiNmdWxsU2l6ZS52YWx1ZSAhPT0gY29lcmNlZCkge1xuICAgICAgICAgICAgdGhpcy4jZnVsbFNpemUubmV4dChjb2VyY2VkKVxuICAgICAgICB9XG4gICAgfVxuICAgIHJlYWRvbmx5ICNmdWxsU2l6ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TnVtYmVyV2l0aFVuaXQ+KEFVVE9fU0laRSlcblxuICAgIEBJbnB1dChcIm1pbmlTaXplXCIpXG4gICAgc2V0IG1pbmlTaXplSW5wdXQodmFsOiBOdW1iZXJXaXRoVW5pdElucHV0KSB7XG4gICAgICAgIGNvbnN0IGNvZXJjZWQgPSBOdW1iZXJXaXRoVW5pdC5jb2VyY2UodmFsLCBcInB4XCIpXG4gICAgICAgIGlmICh0aGlzLiNtaW5pU2l6ZS52YWx1ZSAhPT0gY29lcmNlZCkge1xuICAgICAgICAgICAgdGhpcy4jbWluaVNpemUubmV4dChjb2VyY2VkKVxuICAgICAgICB9XG4gICAgfVxuICAgIHJlYWRvbmx5ICNtaW5pU2l6ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TnVtYmVyV2l0aFVuaXQ+KEhJRERFTl9TSVpFKVxuXG4gICAgQElucHV0KFwibWluaW1pemFibGVcIilcbiAgICBzZXQgbWluaW1pemFibGUodmFsOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy4jbWluaW1pemFibGUgPSBjb2VyY2VCb29sQXR0cih2YWwpXG4gICAgICAgIHRoaXMuI21pbmltaXphYmxlQXV0byA9IGZhbHNlXG4gICAgfVxuICAgIGdldCBtaW5pbWl6YWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI21pbmltaXphYmxlXG4gICAgfVxuICAgICNtaW5pbWl6YWJsZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgI21pbmltaXphYmxlQXV0bzogYm9vbGVhbiA9IHRydWVcblxuICAgIEBJbnB1dChcImJhY2tkcm9wXCIpXG4gICAgc2V0IGJhY2tkcm9wKHZhbDogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuI2JhY2tkcm9wID0gY29lcmNlQm9vbEF0dHIodmFsKVxuICAgIH1cbiAgICBnZXQgYmFja2Ryb3AoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLiNiYWNrZHJvcFxuICAgIH1cbiAgICAjYmFja2Ryb3A6IGJvb2xlYW4gPSBmYWxzZVxuXG4gICAgcmVhZG9ubHkgI2NvbnRlbnRTaXplID0gbmV3IFJlcGxheVN1YmplY3Q8eyB3aWR0aDogTnVtYmVyV2l0aFVuaXQ7IGhlaWdodDogTnVtYmVyV2l0aFVuaXQgfT4oMSlcblxuICAgIHJlYWRvbmx5ICNhdXRvU2l6ZSA9IGNvbWJpbmVMYXRlc3Qoe1xuICAgICAgICBkaW06IHRoaXMuI2NvbnRlbnRTaXplLFxuICAgICAgICBwb3M6IHRoaXMucG9zaXRpb25cbiAgICB9KS5waXBlKFxuICAgICAgICBtYXAoKHsgZGltLCBwb3MgfSkgPT4ge1xuICAgICAgICAgICAgaWYgKHBvcy5vcmllbnQgPT09IFwiaG9yaXpvbnRhbFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpbS5oZWlnaHRcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpbS53aWR0aFxuICAgICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApXG5cbiAgICByZWFkb25seSBmdWxsU2l6ZSA9IHRoaXMuI2Z1bGxTaXplLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChzaXplID0+IHtcbiAgICAgICAgICAgIGlmIChzaXplLnVuaXQgPT09IFwiYXV0b1wiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2F1dG9TaXplXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBvZihzaXplKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApXG5cbiAgICByZWFkb25seSBtaW5pU2l6ZSA9IHRoaXMuI21pbmlTaXplLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChzaXplID0+IHtcbiAgICAgICAgICAgIGlmIChzaXplLnVuaXQgPT09IFwiYXV0b1wiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2F1dG9TaXplXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBvZihzaXplKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApXG5cbiAgICByZWFkb25seSBjaGFuZ2VzID0gY29tYmluZUxhdGVzdCh7XG4gICAgICAgIHBvc2l0aW9uOiB0aGlzLnBvc2l0aW9uLFxuICAgICAgICBzdGF0ZTogdGhpcy5zdGF0ZSxcbiAgICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgICBmdWxsU2l6ZTogdGhpcy5mdWxsU2l6ZSxcbiAgICAgICAgbWluaVNpemU6IHRoaXMubWluaVNpemUsXG4gICAgICAgIGNvbnRlbnRTaXplOiB0aGlzLiNjb250ZW50U2l6ZVxuICAgIH0pXG5cbiAgICAvLyBUT0RPOiBiZXR0ZXIgYW5pbWF0aW9uIGhhbmRsaW5nIGluIG1pbiAtPiBoaWRkZW4gLT4gbWluIC0+IGZ1bGxcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKVxuXG4gICAgICAgIHRoaXMuZC5zdWIodGhpcy5jaGFuZ2VzKS5zdWJzY3JpYmUoY2hhbmdlcyA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy4jbWluaW1pemFibGVBdXRvKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jbWluaW1pemFibGUgPSB0aGlzLiNtaW5pU2l6ZS52YWx1ZS52YWx1ZSAhPT0gMFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBGYXN0RE9NLnNldEF0dHJpYnV0ZXModGhpcy5lbC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgc3RhdGU6IGNoYW5nZXMuc3RhdGUsXG4gICAgICAgICAgICAgICAgb3JpZW50OiBjaGFuZ2VzLnBvc2l0aW9uLm9yaWVudCxcbiAgICAgICAgICAgICAgICBtb2RlOiBjaGFuZ2VzLm1vZGUsXG4gICAgICAgICAgICAgICAgc2lkZTpcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlcy5wb3NpdGlvbi5vcmllbnQgPT09IFwiaG9yaXpvbnRhbFwiID8gY2hhbmdlcy5wb3NpdGlvbi5jZWxsc1swXS52IDogY2hhbmdlcy5wb3NpdGlvbi5jZWxsc1swXS5oXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBjb25zdCBpc0hvcml6b250YWwgPSBjaGFuZ2VzLnBvc2l0aW9uLm9yaWVudCA9PT0gXCJob3Jpem9udGFsXCJcbiAgICAgICAgICAgIGxldCB3ID0gbnVsbFxuICAgICAgICAgICAgbGV0IGggPSBudWxsXG5cbiAgICAgICAgICAgIC8vIFRPRE86IHdoZW4gY2hhbmdlIHN0YXRlIGZyb20gbWluaSAtPiBoaWRkZW4sIGN1cnJlbnRseSB3cm9uZyBiZWhhdmlvclxuICAgICAgICAgICAgLy8gdGhlIGdvb2QgYmVoYXZpb3IgaXMgdG8gbm90IGdhaW4gZnVsbFNpemUgYW5nIGdvIHRvIGhpZGRlblxuICAgICAgICAgICAgaWYgKGNoYW5nZXMuc3RhdGUgPT09IFwibWluaVwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgICAgICAgICBoID0gY2hhbmdlcy5taW5pU2l6ZS51bml0ID09PSBcImF1dG9cIiA/IGNoYW5nZXMuY29udGVudFNpemUuaGVpZ2h0IDogY2hhbmdlcy5taW5pU2l6ZVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHcgPSBjaGFuZ2VzLm1pbmlTaXplLnVuaXQgPT09IFwiYXV0b1wiID8gY2hhbmdlcy5jb250ZW50U2l6ZS53aWR0aCA6IGNoYW5nZXMubWluaVNpemVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgaCA9IGNoYW5nZXMuZnVsbFNpemUudW5pdCA9PT0gXCJhdXRvXCIgPyBjaGFuZ2VzLmNvbnRlbnRTaXplLmhlaWdodCA6IGNoYW5nZXMuZnVsbFNpemVcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB3ID0gY2hhbmdlcy5mdWxsU2l6ZS51bml0ID09PSBcImF1dG9cIiA/IGNoYW5nZXMuY29udGVudFNpemUud2lkdGggOiBjaGFuZ2VzLmZ1bGxTaXplXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBGYXN0RE9NLnNldFN0eWxlKFxuICAgICAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLXdcIjogdyAhPSBudWxsID8gYCR7d31gIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgXCItLWRvY2tpbmctcGFuZWwtaFwiOiBoICE9IG51bGwgPyBgJHtofWAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1wYW5lbC1jb250ZW50LXdcIjogY2hhbmdlcy5jb250ZW50U2l6ZS53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgXCItLWRvY2tpbmctcGFuZWwtY29udGVudC1oXCI6IGNoYW5nZXMuY29udGVudFNpemUuaGVpZ2h0XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoKSA9PiBGYXN0RE9NLnNldEF0dHJpYnV0ZXModGhpcy5lbC5uYXRpdmVFbGVtZW50LCB7IGFuaW1hdGU6IFwiXCIgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZFxuICAgICAgICAgICAgLnN1Yih0aGlzLiNkaW1XYXRjaGVyLndhdGNoKHRoaXMuY29udGVudCwgXCJzY3JvbGwtYm94XCIpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKGRpbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogbmV3IE51bWJlcldpdGhVbml0KGRpbS53aWR0aCwgXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogbmV3IE51bWJlcldpdGhVbml0KGRpbS5oZWlnaHQsIFwicHhcIilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHRoaXMuI2NvbnRlbnRTaXplKVxuICAgIH1cblxuICAgIG9wZW4oKSB7XG4gICAgICAgIHRoaXMuc3RhdGUubmV4dChcImZ1bGxcIilcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5uZXh0KFwiaGlkZGVuXCIpXG4gICAgfVxuXG4gICAgbWluaW1pemUoKSB7XG4gICAgICAgIGlmICh0aGlzLm1pbmltaXphYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLm5leHQoXCJtaW5pXCIpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbnR5cGUgQ2hhbmdlc09ic2VydmFibGUgPSB0eXBlb2YgRG9ja2luZ1BhbmVsQ29tcG9uZW50LnByb3RvdHlwZS5jaGFuZ2VzXG5leHBvcnQgdHlwZSBEb2NraW5nUGFuZWxDaGFuZ2VzID0gQ2hhbmdlc09ic2VydmFibGUgZXh0ZW5kcyBPYnNlcnZhYmxlPGluZmVyIFQ+ID8gVCA6IG5ldmVyXG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { BehaviorSubject, map, shareReplay, ReplaySubject, combineLatest, switchMap, of, Subject, startWith, scan, tap, distinctUntilChanged, finalize } from 'rxjs';
2
2
  import * as i0 from '@angular/core';
3
- import { Component, inject, ElementRef, ViewChild, Input, Output, ChangeDetectionStrategy, ContentChild, ContentChildren, NgModule, Injectable, TemplateRef, Directive, ViewContainerRef, Injector } from '@angular/core';
3
+ import { Component, HostBinding, inject, ElementRef, ViewChild, Input, Output, ChangeDetectionStrategy, ContentChild, ContentChildren, NgModule, Injectable, TemplateRef, Directive, ViewContainerRef, Injector } from '@angular/core';
4
4
  import { NumberWithUnit, Destructible, coerceBoolAttr, FastDOM } from '@ngutil/common';
5
5
  import { DimensionWatcher } from '@ngutil/style';
6
6
 
@@ -142,6 +142,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
142
142
  args: [{ standalone: true, selector: "nu-docking-content", exportAs: "nuDockingContent", template: `<ng-content></ng-content>`, styles: [":host{display:flex;flex-flow:column nowrap;align-items:stretch;box-sizing:border-box;flex:1}\n"] }]
143
143
  }] });
144
144
 
145
+ class DockingBackdropComponent {
146
+ constructor() {
147
+ this.state = "hidden";
148
+ }
149
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingBackdropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
150
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: DockingBackdropComponent, isStandalone: true, selector: "nu-docking-backdrop", host: { properties: { "[attr.state]": "this.state" } }, ngImport: i0, template: ``, isInline: true, styles: [":host{display:flex;flex-direction:column;align-items:stretch;position:absolute;inset:0;transition:opacity var(---docking-layout-anim-duration) var(---docking-layout-anim-ease);z-index:-1;background-color:var(---docking-layout-backdrop-color)}:host[state=hidden]{animation:var(---docking-layout-anim-duration) var(---docking-layout-anim-ease) hide;animation-fill-mode:forwards;pointer-events:none;touch-action:none;opacity:0}:host[state=visible]{visibility:visible;opacity:.3}@keyframes hide{99%{visibility:visible}to{visibility:hidden}}\n"] }); }
151
+ }
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingBackdropComponent, decorators: [{
153
+ type: Component,
154
+ args: [{ standalone: true, selector: "nu-docking-backdrop", template: ``, styles: [":host{display:flex;flex-direction:column;align-items:stretch;position:absolute;inset:0;transition:opacity var(---docking-layout-anim-duration) var(---docking-layout-anim-ease);z-index:-1;background-color:var(---docking-layout-backdrop-color)}:host[state=hidden]{animation:var(---docking-layout-anim-duration) var(---docking-layout-anim-ease) hide;animation-fill-mode:forwards;pointer-events:none;touch-action:none;opacity:0}:host[state=visible]{visibility:visible;opacity:.3}@keyframes hide{99%{visibility:visible}to{visibility:hidden}}\n"] }]
155
+ }], propDecorators: { state: [{
156
+ type: HostBinding,
157
+ args: ["[attr.state]"]
158
+ }] } });
159
+
145
160
  const DEFAULT_POSITION = L9Range.coerce("left");
146
161
  const HIDDEN_SIZE = new NumberWithUnit(0, "px");
147
162
  const AUTO_SIZE = NumberWithUnit.coerce("auto");
@@ -189,8 +204,16 @@ class DockingPanelComponent extends Destructible {
189
204
  }
190
205
  #minimizable;
191
206
  #minimizableAuto;
207
+ set backdrop(val) {
208
+ this.#backdrop = coerceBoolAttr(val);
209
+ }
210
+ get backdrop() {
211
+ return this.#backdrop;
212
+ }
213
+ #backdrop;
192
214
  #contentSize;
193
215
  #autoSize;
216
+ // TODO: better animation handling in min -> hidden -> min -> full
194
217
  constructor() {
195
218
  super();
196
219
  this.el = inject((ElementRef));
@@ -202,6 +225,7 @@ class DockingPanelComponent extends Destructible {
202
225
  this.#miniSize = new BehaviorSubject(HIDDEN_SIZE);
203
226
  this.#minimizable = false;
204
227
  this.#minimizableAuto = true;
228
+ this.#backdrop = false;
205
229
  this.#contentSize = new ReplaySubject(1);
206
230
  this.#autoSize = combineLatest({
207
231
  dim: this.#contentSize,
@@ -300,11 +324,11 @@ class DockingPanelComponent extends Destructible {
300
324
  }
301
325
  }
302
326
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
303
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: DockingPanelComponent, isStandalone: true, selector: "nu-docking-panel", inputs: { positionInput: ["position", "positionInput"], stateInput: ["state", "stateInput"], modeInput: ["mode", "modeInput"], fullSizeInput: ["fullSize", "fullSizeInput"], miniSizeInput: ["miniSize", "miniSizeInput"], minimizable: "minimizable" }, outputs: { state: "stateChanges" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef, static: true }], exportAs: ["nuDockingPanel"], usesInheritance: true, ngImport: i0, template: `
327
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: DockingPanelComponent, isStandalone: true, selector: "nu-docking-panel", inputs: { positionInput: ["position", "positionInput"], stateInput: ["state", "stateInput"], modeInput: ["mode", "modeInput"], fullSizeInput: ["fullSize", "fullSizeInput"], miniSizeInput: ["miniSize", "miniSizeInput"], minimizable: "minimizable", backdrop: "backdrop" }, outputs: { state: "stateChanges" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef, static: true }], exportAs: ["nuDockingPanel"], usesInheritance: true, ngImport: i0, template: `
304
328
  <div class="content" #content>
305
329
  <ng-content></ng-content>
306
330
  </div>
307
- `, isInline: true, styles: [":host{---docking-panel-t: var(--docking-panel-t, auto);---docking-panel-r: var(--docking-panel-r, auto);---docking-panel-b: var(--docking-panel-b, auto);---docking-panel-l: var(--docking-panel-l, auto);---docking-panel-w: var(--docking-panel-w, auto);---docking-panel-h: var(--docking-panel-h, auto);---docking-panel-content-w: var(--docking-panel-content-w, var(---docking-panel-w));---docking-panel-content-g: var(--docking-panel-content-g, var(---docking-panel-h));display:flex;flex-flow:column nowrap;align-items:stretch;position:absolute;box-sizing:border-box;overflow:hidden;top:var(---docking-panel-t);right:var(---docking-panel-r);bottom:var(---docking-panel-b);left:var(---docking-panel-l);width:var(---docking-panel-w);height:var(---docking-panel-h)}:host[animate]{transition:transform var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),width var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),height var(---docking-layout-anim-duration) var(---docking-layout-anim-ease)}:host[side=top],:host[side=left]{---docking-panel-t-hide: -100%;---docking-panel-t-visible: 0%}:host[side=bottom],:host[side=right]{---docking-panel-t-hide: 100%;---docking-panel-t-visible: 0%}:host[state=hidden][orient=horizontal]{transform:translateY(var(---docking-panel-t-hide))}:host[state=hidden][orient=vertical]{transform:translate(var(---docking-panel-t-hide))}:host:not([state=hidden])[orient=horizontal]{transform:translateY(var(---docking-panel-t-visible))}:host:not([state=hidden])[orient=vertical]{transform:translate(var(---docking-panel-t-visible))}\n"] }); }
331
+ `, isInline: true, styles: [":host{---docking-panel-t: var(--docking-panel-t, auto);---docking-panel-r: var(--docking-panel-r, auto);---docking-panel-b: var(--docking-panel-b, auto);---docking-panel-l: var(--docking-panel-l, auto);---docking-panel-w: var(--docking-panel-w, auto);---docking-panel-h: var(--docking-panel-h, auto);---docking-panel-content-w: var(--docking-panel-content-w, var(---docking-panel-w));---docking-panel-content-g: var(--docking-panel-content-g, var(---docking-panel-h));display:flex;flex-flow:column nowrap;align-items:stretch;position:absolute;box-sizing:border-box;overflow:hidden;top:var(---docking-panel-t);right:var(---docking-panel-r);bottom:var(---docking-panel-b);left:var(---docking-panel-l);width:var(---docking-panel-w);height:var(---docking-panel-h)}:host[animate]{transition:transform var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),width var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),height var(---docking-layout-anim-duration) var(---docking-layout-anim-ease)}:host[side=top],:host[side=left]{---docking-panel-t-hide: -100%;---docking-panel-t-visible: 0%}:host[side=bottom],:host[side=right]{---docking-panel-t-hide: 100%;---docking-panel-t-visible: 0%}:host[state=hidden]{animation:var(---docking-layout-anim-duration) var(---docking-layout-anim-ease) hide;animation-fill-mode:forwards}:host[state=hidden][orient=horizontal]{transform:translateY(var(---docking-panel-t-hide))}:host[state=hidden][orient=vertical]{transform:translate(var(---docking-panel-t-hide))}:host:not([state=hidden]){visibility:visible}:host:not([state=hidden])[orient=horizontal]{transform:translateY(var(---docking-panel-t-visible))}:host:not([state=hidden])[orient=vertical]{transform:translate(var(---docking-panel-t-visible))}:host .content{display:flex;flex-direction:column;align-items:stretch}:host[orient=horizontal] .content{width:100%;min-width:100%;max-width:100%}:host[orient=vertical] .content{height:100%;min-height:100%;max-height:100%}@keyframes hide{99%{visibility:visible}to{visibility:hidden}}\n"] }); }
308
332
  }
309
333
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingPanelComponent, decorators: [{
310
334
  type: Component,
@@ -312,7 +336,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
312
336
  <div class="content" #content>
313
337
  <ng-content></ng-content>
314
338
  </div>
315
- `, styles: [":host{---docking-panel-t: var(--docking-panel-t, auto);---docking-panel-r: var(--docking-panel-r, auto);---docking-panel-b: var(--docking-panel-b, auto);---docking-panel-l: var(--docking-panel-l, auto);---docking-panel-w: var(--docking-panel-w, auto);---docking-panel-h: var(--docking-panel-h, auto);---docking-panel-content-w: var(--docking-panel-content-w, var(---docking-panel-w));---docking-panel-content-g: var(--docking-panel-content-g, var(---docking-panel-h));display:flex;flex-flow:column nowrap;align-items:stretch;position:absolute;box-sizing:border-box;overflow:hidden;top:var(---docking-panel-t);right:var(---docking-panel-r);bottom:var(---docking-panel-b);left:var(---docking-panel-l);width:var(---docking-panel-w);height:var(---docking-panel-h)}:host[animate]{transition:transform var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),width var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),height var(---docking-layout-anim-duration) var(---docking-layout-anim-ease)}:host[side=top],:host[side=left]{---docking-panel-t-hide: -100%;---docking-panel-t-visible: 0%}:host[side=bottom],:host[side=right]{---docking-panel-t-hide: 100%;---docking-panel-t-visible: 0%}:host[state=hidden][orient=horizontal]{transform:translateY(var(---docking-panel-t-hide))}:host[state=hidden][orient=vertical]{transform:translate(var(---docking-panel-t-hide))}:host:not([state=hidden])[orient=horizontal]{transform:translateY(var(---docking-panel-t-visible))}:host:not([state=hidden])[orient=vertical]{transform:translate(var(---docking-panel-t-visible))}\n"] }]
339
+ `, styles: [":host{---docking-panel-t: var(--docking-panel-t, auto);---docking-panel-r: var(--docking-panel-r, auto);---docking-panel-b: var(--docking-panel-b, auto);---docking-panel-l: var(--docking-panel-l, auto);---docking-panel-w: var(--docking-panel-w, auto);---docking-panel-h: var(--docking-panel-h, auto);---docking-panel-content-w: var(--docking-panel-content-w, var(---docking-panel-w));---docking-panel-content-g: var(--docking-panel-content-g, var(---docking-panel-h));display:flex;flex-flow:column nowrap;align-items:stretch;position:absolute;box-sizing:border-box;overflow:hidden;top:var(---docking-panel-t);right:var(---docking-panel-r);bottom:var(---docking-panel-b);left:var(---docking-panel-l);width:var(---docking-panel-w);height:var(---docking-panel-h)}:host[animate]{transition:transform var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),width var(---docking-layout-anim-duration) var(---docking-layout-anim-ease),height var(---docking-layout-anim-duration) var(---docking-layout-anim-ease)}:host[side=top],:host[side=left]{---docking-panel-t-hide: -100%;---docking-panel-t-visible: 0%}:host[side=bottom],:host[side=right]{---docking-panel-t-hide: 100%;---docking-panel-t-visible: 0%}:host[state=hidden]{animation:var(---docking-layout-anim-duration) var(---docking-layout-anim-ease) hide;animation-fill-mode:forwards}:host[state=hidden][orient=horizontal]{transform:translateY(var(---docking-panel-t-hide))}:host[state=hidden][orient=vertical]{transform:translate(var(---docking-panel-t-hide))}:host:not([state=hidden]){visibility:visible}:host:not([state=hidden])[orient=horizontal]{transform:translateY(var(---docking-panel-t-visible))}:host:not([state=hidden])[orient=vertical]{transform:translate(var(---docking-panel-t-visible))}:host .content{display:flex;flex-direction:column;align-items:stretch}:host[orient=horizontal] .content{width:100%;min-width:100%;max-width:100%}:host[orient=vertical] .content{height:100%;min-height:100%;max-height:100%}@keyframes hide{99%{visibility:visible}to{visibility:hidden}}\n"] }]
316
340
  }], ctorParameters: () => [], propDecorators: { content: [{
317
341
  type: ViewChild,
318
342
  args: ["content", { read: ElementRef, static: true }]
@@ -337,19 +361,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
337
361
  }], minimizable: [{
338
362
  type: Input,
339
363
  args: ["minimizable"]
364
+ }], backdrop: [{
365
+ type: Input,
366
+ args: ["backdrop"]
340
367
  }] } });
341
368
 
342
- const RIGID_ZINDEX = 20;
369
+ const RIGID_ZINDEX = 100;
343
370
  const OVER_ZINDEX = RIGID_ZINDEX * 2;
371
+ const BACKDROP_ZINDEX = 10000;
344
372
  class DockingLayoutComponent extends Destructible {
345
373
  constructor() {
346
374
  super(...arguments);
347
375
  this.#el = inject((ElementRef));
348
376
  this.contentOnly = false;
349
377
  this.#reflow = new Subject();
378
+ this.#backdropPanel = null;
350
379
  }
351
380
  #el;
352
381
  #reflow;
382
+ #backdropPanel;
353
383
  ngAfterViewInit() {
354
384
  // eslint-disable-next-line prettier/prettier
355
385
  this.panels = this.dockingPanels.changes.pipe(startWith(null), map(() => this.dockingPanels.toArray()), shareReplay(1));
@@ -372,6 +402,8 @@ class DockingLayoutComponent extends Destructible {
372
402
  let paddingLeft = 0;
373
403
  let rigidZIndex = RIGID_ZINDEX;
374
404
  let overZIndex = OVER_ZINDEX;
405
+ let backdropZIndex = -1;
406
+ this.#backdropPanel = null;
375
407
  if (this.contentOnly) {
376
408
  // TODO:...
377
409
  }
@@ -421,8 +453,14 @@ class DockingLayoutComponent extends Destructible {
421
453
  panelRight = 0;
422
454
  }
423
455
  }
456
+ let panelZIndex = isRigid ? (rigidZIndex += 2) : (overZIndex += 2);
457
+ if (panelState.state !== "hidden" && entry.panel.backdrop) {
458
+ backdropZIndex = BACKDROP_ZINDEX;
459
+ panelZIndex = backdropZIndex + 1;
460
+ this.#backdropPanel = entry.panel;
461
+ }
424
462
  FastDOM.setStyle(entry.panel.el.nativeElement, {
425
- "z-index": `${isRigid ? rigidZIndex++ : overZIndex++}`,
463
+ "z-index": `${panelZIndex}`,
426
464
  "--docking-panel-t": panelTop != null ? `${panelTop}px` : null,
427
465
  "--docking-panel-r": panelRight != null ? `${panelRight}px` : null,
428
466
  "--docking-panel-b": panelBottom != null ? `${panelBottom}px` : null,
@@ -435,10 +473,22 @@ class DockingLayoutComponent extends Destructible {
435
473
  "--docking-layout-bottom": `${paddingBottom}px`,
436
474
  "--docking-layout-left": `${paddingLeft}px`
437
475
  });
476
+ if (this.backdropEl) {
477
+ FastDOM.setAttributes(this.backdropEl.nativeElement, {
478
+ state: backdropZIndex < 0 ? "hidden" : "visible"
479
+ });
480
+ FastDOM.setStyle(this.backdropEl.nativeElement, { "z-index": `${backdropZIndex}` });
481
+ }
482
+ }
483
+ }
484
+ onHideBackdropPanel(event) {
485
+ event.preventDefault();
486
+ if (this.#backdropPanel) {
487
+ this.#backdropPanel.close();
438
488
  }
439
489
  }
440
490
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingLayoutComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
441
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: DockingLayoutComponent, isStandalone: true, selector: "nu-docking", inputs: { contentOnly: "contentOnly" }, queries: [{ propertyName: "contentComponent", first: true, predicate: DockingContentComponent, descendants: true }, { propertyName: "dockingPanels", predicate: DockingPanelComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
491
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: DockingLayoutComponent, isStandalone: true, selector: "nu-docking", inputs: { contentOnly: "contentOnly" }, queries: [{ propertyName: "contentComponent", first: true, predicate: DockingContentComponent, descendants: true }, { propertyName: "dockingPanels", predicate: DockingPanelComponent }], viewQueries: [{ propertyName: "backdropEl", first: true, predicate: ["backdrop"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
442
492
  <ng-content select="nu-docking-panel"></ng-content>
443
493
 
444
494
  @if (!contentComponent) {
@@ -448,11 +498,13 @@ class DockingLayoutComponent extends Destructible {
448
498
  } @else {
449
499
  <ng-content select="nu-docking-content"></ng-content>
450
500
  }
451
- `, isInline: true, styles: [":host{---docking-layout-top: var(--docking-layout-top, 0px);---docking-layout-right: var(--docking-layout-right, 0px);---docking-layout-bottom: var(--docking-layout-bottom, 0px);---docking-layout-left: var(--docking-layout-left, 0px);---docking-layout-anim-duration: var(--docking-layout-anim-duration, .3s);---docking-layout-anim-ease: var(--docking-layout-anim-ease, cubic-bezier(.4, 0, .2, 1));display:flex;flex-flow:column nowrap;align-items:stretch;position:relative;overflow:hidden;box-sizing:border-box;z-index:0;padding:var(---docking-layout-top) var(---docking-layout-right) var(---docking-layout-bottom) var(---docking-layout-left);transition:padding var(---docking-layout-anim-duration) var(---docking-layout-anim-ease)}\n"], dependencies: [{ kind: "component", type: DockingContentComponent, selector: "nu-docking-content", exportAs: ["nuDockingContent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
501
+
502
+ <nu-docking-backdrop #backdrop (click)="onHideBackdropPanel($event)" />
503
+ `, isInline: true, styles: [":host{---docking-layout-top: var(--docking-layout-top, 0px);---docking-layout-right: var(--docking-layout-right, 0px);---docking-layout-bottom: var(--docking-layout-bottom, 0px);---docking-layout-left: var(--docking-layout-left, 0px);---docking-layout-anim-duration: var(--docking-layout-anim-duration, .3s);---docking-layout-anim-ease: var(--docking-layout-anim-ease, cubic-bezier(.4, 0, .2, 1));---docking-layout-backdrop-color: var(--docking-layout-backdrop-color, #000);display:flex;flex-flow:column nowrap;align-items:stretch;position:relative;overflow:hidden;box-sizing:border-box;z-index:0;padding:var(---docking-layout-top) var(---docking-layout-right) var(---docking-layout-bottom) var(---docking-layout-left);transition:padding var(---docking-layout-anim-duration) var(---docking-layout-anim-ease)}\n"], dependencies: [{ kind: "component", type: DockingContentComponent, selector: "nu-docking-content", exportAs: ["nuDockingContent"] }, { kind: "component", type: DockingBackdropComponent, selector: "nu-docking-backdrop" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
452
504
  }
453
505
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingLayoutComponent, decorators: [{
454
506
  type: Component,
455
- args: [{ selector: "nu-docking", standalone: true, imports: [DockingContentComponent], template: `
507
+ args: [{ selector: "nu-docking", standalone: true, imports: [DockingContentComponent, DockingBackdropComponent], template: `
456
508
  <ng-content select="nu-docking-panel"></ng-content>
457
509
 
458
510
  @if (!contentComponent) {
@@ -462,12 +514,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
462
514
  } @else {
463
515
  <ng-content select="nu-docking-content"></ng-content>
464
516
  }
465
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{---docking-layout-top: var(--docking-layout-top, 0px);---docking-layout-right: var(--docking-layout-right, 0px);---docking-layout-bottom: var(--docking-layout-bottom, 0px);---docking-layout-left: var(--docking-layout-left, 0px);---docking-layout-anim-duration: var(--docking-layout-anim-duration, .3s);---docking-layout-anim-ease: var(--docking-layout-anim-ease, cubic-bezier(.4, 0, .2, 1));display:flex;flex-flow:column nowrap;align-items:stretch;position:relative;overflow:hidden;box-sizing:border-box;z-index:0;padding:var(---docking-layout-top) var(---docking-layout-right) var(---docking-layout-bottom) var(---docking-layout-left);transition:padding var(---docking-layout-anim-duration) var(---docking-layout-anim-ease)}\n"] }]
517
+
518
+ <nu-docking-backdrop #backdrop (click)="onHideBackdropPanel($event)" />
519
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{---docking-layout-top: var(--docking-layout-top, 0px);---docking-layout-right: var(--docking-layout-right, 0px);---docking-layout-bottom: var(--docking-layout-bottom, 0px);---docking-layout-left: var(--docking-layout-left, 0px);---docking-layout-anim-duration: var(--docking-layout-anim-duration, .3s);---docking-layout-anim-ease: var(--docking-layout-anim-ease, cubic-bezier(.4, 0, .2, 1));---docking-layout-backdrop-color: var(--docking-layout-backdrop-color, #000);display:flex;flex-flow:column nowrap;align-items:stretch;position:relative;overflow:hidden;box-sizing:border-box;z-index:0;padding:var(---docking-layout-top) var(---docking-layout-right) var(---docking-layout-bottom) var(---docking-layout-left);transition:padding var(---docking-layout-anim-duration) var(---docking-layout-anim-ease)}\n"] }]
466
520
  }], propDecorators: { contentOnly: [{
467
521
  type: Input
468
522
  }], contentComponent: [{
469
523
  type: ContentChild,
470
524
  args: [DockingContentComponent]
525
+ }], backdropEl: [{
526
+ type: ViewChild,
527
+ args: ["backdrop", { read: ElementRef, static: true }]
471
528
  }], dockingPanels: [{
472
529
  type: ContentChildren,
473
530
  args: [DockingPanelComponent]
@@ -1 +1 @@
1
- {"version":3,"file":"ngutil-layout.mjs","sources":["../../../../packages/layout/src/l9/range.ts","../../../../packages/layout/src/l9/state.ts","../../../../packages/layout/src/docking/docking-content.component.ts","../../../../packages/layout/src/docking/docking-panel.component.ts","../../../../packages/layout/src/docking/docking-layout.component.ts","../../../../packages/layout/src/docking/index.ts","../../../../packages/layout/src/services/slots.service.ts","../../../../packages/layout/src/ngutil-layout.ts"],"sourcesContent":["/**\n * -----------------------------------------------\n * | TOP:LEFT | TOP:CENTER | TOP:RIGHT |\n * -----------------------------------------------\n * | MIDDLE:LEFT | MIDDLE:CENTER | MIDDLE:RIGH |\n * -----------------------------------------------\n * | BOTTOMN:LEFT | BOTTOM:CENTER | BOTTOM:RIGHT |\n * -----------------------------------------------\n */\n\nconst vertical = [\"top\", \"middle\", \"bottom\"] as const\nconst horizontal = [\"left\", \"center\", \"right\"] as const\n\nexport type L9Vertical = \"top\" | \"middle\" | \"bottom\"\nexport type L9Horizontal = \"left\" | \"center\" | \"right\"\nexport type L9CellName = `${L9Vertical}:${L9Horizontal}`\nexport type L9RangeName = L9Vertical | L9Horizontal | L9CellName | `${L9CellName}-${L9CellName}`\nexport type L9Orient = \"horizontal\" | \"vertical\" | \"rect\"\n\nexport class L9Cell {\n static coerce(value: L9CellName) {\n const [v, h] = value.split(\":\")\n\n if (vertical.includes(v as any) && horizontal.includes(h as any)) {\n return new L9Cell(v as any, h as any)\n }\n\n throw new Error(`Invalid cell value: ${value}`)\n }\n\n constructor(\n public readonly v: L9Vertical,\n public readonly h: L9Horizontal\n ) {}\n}\n\nexport class L9Range {\n static coerce(value: L9Range | L9RangeName) {\n if (value instanceof L9Range) {\n return value\n } else {\n return new L9Range(value)\n }\n }\n\n readonly cells: Array<L9Cell>\n readonly orient: L9Orient\n\n constructor(range: L9RangeName) {\n this.cells = parse(range)\n this.orient = this.#determineOrient()\n }\n\n isEq(other: L9Range) {\n if (other instanceof L9Range) {\n const selfFirst = this.cells[0]\n const otherFirst = other.cells[0]\n\n if (selfFirst.h !== otherFirst.h || selfFirst.v !== otherFirst.v) {\n return false\n }\n\n const selfLast = this.cells[this.cells.length - 1]\n const otherLast = other.cells[other.cells.length - 1]\n\n if (selfLast.h === otherLast.h && selfLast.v === otherLast.v) {\n return true\n }\n }\n return false\n }\n\n #determineOrient(): L9Orient {\n const { v: sv, h: sh } = this.cells[0]\n const { v: ev, h: eh } = this.cells[this.cells.length - 1]\n\n if (sv === ev) {\n return \"horizontal\"\n } else if (sh === eh) {\n return \"vertical\"\n } else {\n return \"rect\"\n }\n }\n}\n\nfunction parse(value: any): Array<L9Cell> {\n const cells: Array<L9Cell> = []\n\n if (vertical.includes(value)) {\n for (const h of horizontal) {\n cells.push(new L9Cell(value, h))\n }\n } else if (horizontal.includes(value)) {\n for (const v of vertical) {\n cells.push(new L9Cell(v, value))\n }\n } else if (value.includes(\"-\")) {\n const [begin, end] = value.split(\"-\")\n const beginCells = parse(begin)\n const endCells = parse(end)\n\n if (beginCells.length > 1) {\n throw new Error(`Currently not supported begin range value: ${begin}`)\n }\n\n if (endCells.length > 1) {\n throw new Error(`Currently not supported end range value: ${end}`)\n }\n\n const { v: bv, h: bh } = beginCells[0]\n const { v: ev, h: eh } = endCells[0]\n\n const vstart = Math.min(vertical.indexOf(bv as any), vertical.indexOf(ev as any))\n const vend = Math.max(vertical.indexOf(bv as any), vertical.indexOf(ev as any))\n const hstart = Math.min(horizontal.indexOf(bh as any), horizontal.indexOf(eh as any))\n const hend = Math.max(horizontal.indexOf(bh as any), horizontal.indexOf(eh as any))\n\n for (let vi = vstart; vi <= vend; vi++) {\n for (let hi = hstart; hi <= hend; hi++) {\n cells.push(new L9Cell(vertical[vi], horizontal[hi]))\n }\n }\n } else if (value.includes(\":\")) {\n cells.push(L9Cell.coerce(value))\n }\n\n if (cells.length === 0) {\n throw Error(`Undefined l9cell: \"${value}\"`)\n }\n\n return cells\n}\n","import { BehaviorSubject, map, Observable, shareReplay } from \"rxjs\"\n\nimport { type Dimension } from \"@ngutil/style\"\n\nimport { L9CellName, L9Horizontal, L9Vertical } from \"./range\"\n\nexport type L9StateVar<T extends string> = `--${T}-${L9Vertical}-${L9Horizontal}-${\"w\" | \"h\"}`\nexport type L9StyleVars<T extends string> = { [key in L9StateVar<T>]?: string }\n\ntype L9Dims = { [key in L9CellName]?: Dimension }\n\nexport class L9State<T extends string> {\n readonly #dims = new BehaviorSubject<L9Dims>({})\n\n readonly style: Observable<L9StyleVars<T>> = this.#dims.pipe(\n map(dims => {\n const res: L9StyleVars<T> = {}\n\n for (const [k, v] of Object.entries(dims)) {\n if (v == null) {\n continue\n }\n\n const [vertical, horizontal] = k.split(\":\")\n res[`--${this.prefix}-${vertical}-${horizontal}-w` as L9StateVar<T>] = v.width.toString()\n res[`--${this.prefix}-${vertical}-${horizontal}-h` as L9StateVar<T>] = v.height.toString()\n }\n\n return res\n }),\n shareReplay(1)\n )\n\n constructor(public readonly prefix: T) {}\n}\n","import { Component } from \"@angular/core\"\n\n@Component({\n standalone: true,\n selector: \"nu-docking-content\",\n exportAs: \"nuDockingContent\",\n styleUrl: \"./docking-content.component.scss\",\n template: `<ng-content></ng-content>`\n})\nexport class DockingContentComponent {}\n","import { AfterViewInit, Component, ElementRef, inject, Input, Output, ViewChild } from \"@angular/core\"\n\nimport { BehaviorSubject, combineLatest, map, Observable, of, ReplaySubject, shareReplay, switchMap } from \"rxjs\"\n\nimport {\n BooleanInput,\n coerceBoolAttr,\n Destructible,\n FastDOM,\n NumberWithUnit,\n NumberWithUnitInput\n} from \"@ngutil/common\"\nimport { DimensionWatcher } from \"@ngutil/style\"\n\nimport { L9Range, L9RangeName } from \"../l9/range\"\n\nexport type DockingPanelState = \"full\" | \"mini\" | \"hidden\"\nexport type DockingPanelMode = \"over\" | \"push\" | \"rigid\"\n\nconst DEFAULT_POSITION = L9Range.coerce(\"left\")\nconst HIDDEN_SIZE = new NumberWithUnit(0, \"px\")\nconst AUTO_SIZE = NumberWithUnit.coerce(\"auto\")\n\n@Component({\n standalone: true,\n selector: \"nu-docking-panel\",\n exportAs: \"nuDockingPanel\",\n styleUrl: \"./docking-panel.component.scss\",\n template: `\n <div class=\"content\" #content>\n <ng-content></ng-content>\n </div>\n `\n})\nexport class DockingPanelComponent extends Destructible implements AfterViewInit {\n readonly el = inject(ElementRef<HTMLElement>)\n readonly #dimWatcher = inject(DimensionWatcher)\n @ViewChild(\"content\", { read: ElementRef, static: true })\n readonly content!: ElementRef<HTMLElement>\n\n @Input(\"position\")\n set positionInput(val: L9Range | L9RangeName) {\n const coerced = L9Range.coerce(val)\n if (coerced.orient === \"rect\") {\n throw new Error(`Invalid position value: ${val}`)\n }\n\n if (!this.position.value.isEq(coerced)) {\n this.position.next(coerced)\n }\n }\n readonly position = new BehaviorSubject<L9Range>(DEFAULT_POSITION)\n\n @Input(\"state\")\n set stateInput(val: DockingPanelState) {\n if (this.state.value !== val) {\n this.state.next(val)\n }\n }\n @Output(\"stateChanges\")\n readonly state = new BehaviorSubject<DockingPanelState>(\"full\")\n\n @Input(\"mode\")\n set modeInput(val: DockingPanelMode) {\n if (this.mode.value !== val) {\n this.mode.next(val)\n }\n }\n readonly mode = new BehaviorSubject<DockingPanelMode>(\"rigid\")\n\n @Input(\"fullSize\")\n set fullSizeInput(val: NumberWithUnitInput) {\n const coerced = NumberWithUnit.coerce(val, \"px\")\n if (this.#fullSize.value !== coerced) {\n this.#fullSize.next(coerced)\n }\n }\n readonly #fullSize = new BehaviorSubject<NumberWithUnit>(AUTO_SIZE)\n\n @Input(\"miniSize\")\n set miniSizeInput(val: NumberWithUnitInput) {\n const coerced = NumberWithUnit.coerce(val, \"px\")\n if (this.#miniSize.value !== coerced) {\n this.#miniSize.next(coerced)\n }\n }\n readonly #miniSize = new BehaviorSubject<NumberWithUnit>(HIDDEN_SIZE)\n\n @Input(\"minimizable\")\n set minimizable(val: BooleanInput) {\n this.#minimizable = coerceBoolAttr(val)\n this.#minimizableAuto = false\n }\n get minimizable(): boolean {\n return this.#minimizable\n }\n #minimizable: boolean = false\n #minimizableAuto: boolean = true\n\n readonly #contentSize = new ReplaySubject<{ width: NumberWithUnit; height: NumberWithUnit }>(1)\n\n readonly #autoSize = combineLatest({\n dim: this.#contentSize,\n pos: this.position\n }).pipe(\n map(({ dim, pos }) => {\n if (pos.orient === \"horizontal\") {\n return dim.height\n } else {\n return dim.width\n }\n }),\n shareReplay(1)\n )\n\n readonly fullSize = this.#fullSize.pipe(\n switchMap(size => {\n if (size.unit === \"auto\") {\n return this.#autoSize\n } else {\n return of(size)\n }\n }),\n shareReplay(1)\n )\n\n readonly miniSize = this.#miniSize.pipe(\n switchMap(size => {\n if (size.unit === \"auto\") {\n return this.#autoSize\n } else {\n return of(size)\n }\n }),\n shareReplay(1)\n )\n\n readonly changes = combineLatest({\n position: this.position,\n state: this.state,\n mode: this.mode,\n fullSize: this.fullSize,\n miniSize: this.miniSize,\n contentSize: this.#contentSize\n })\n\n constructor() {\n super()\n\n this.d.sub(this.changes).subscribe(changes => {\n if (this.#minimizableAuto) {\n this.#minimizable = this.#miniSize.value.value !== 0\n }\n\n FastDOM.setAttributes(this.el.nativeElement, {\n state: changes.state,\n orient: changes.position.orient,\n mode: changes.mode,\n side:\n changes.position.orient === \"horizontal\" ? changes.position.cells[0].v : changes.position.cells[0].h\n })\n\n const isHorizontal = changes.position.orient === \"horizontal\"\n let w = null\n let h = null\n\n // TODO: when change state from mini -> hidden, currently wrong behavior\n // the good behavior is to not gain fullSize ang go to hidden\n if (changes.state === \"mini\") {\n if (isHorizontal) {\n h = changes.miniSize.unit === \"auto\" ? changes.contentSize.height : changes.miniSize\n } else {\n w = changes.miniSize.unit === \"auto\" ? changes.contentSize.width : changes.miniSize\n }\n } else {\n if (isHorizontal) {\n h = changes.fullSize.unit === \"auto\" ? changes.contentSize.height : changes.fullSize\n } else {\n w = changes.fullSize.unit === \"auto\" ? changes.contentSize.width : changes.fullSize\n }\n }\n\n FastDOM.setStyle(\n this.el.nativeElement,\n {\n \"--docking-panel-w\": w != null ? `${w}` : null,\n \"--docking-panel-h\": h != null ? `${h}` : null,\n \"--docking-panel-content-w\": changes.contentSize.width,\n \"--docking-panel-content-h\": changes.contentSize.height\n },\n () => FastDOM.setAttributes(this.el.nativeElement, { animate: \"\" })\n )\n })\n }\n\n ngAfterViewInit(): void {\n this.d\n .sub(this.#dimWatcher.watch(this.content, \"scroll-box\"))\n .pipe(\n map(dim => {\n return {\n width: new NumberWithUnit(dim.width, \"px\"),\n height: new NumberWithUnit(dim.height, \"px\")\n }\n })\n )\n .subscribe(this.#contentSize)\n }\n\n open() {\n this.state.next(\"full\")\n }\n\n close() {\n this.state.next(\"hidden\")\n }\n\n minimize() {\n if (this.minimizable) {\n this.state.next(\"mini\")\n }\n }\n}\n\ntype ChangesObservable = typeof DockingPanelComponent.prototype.changes\nexport type DockingPanelChanges = ChangesObservable extends Observable<infer T> ? T : never\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n inject,\n Input,\n OnChanges,\n QueryList,\n SimpleChanges\n} from \"@angular/core\"\n\nimport { combineLatest, map, Observable, shareReplay, startWith, Subject, switchMap } from \"rxjs\"\n\nimport { Destructible, FastDOM } from \"@ngutil/common\"\n\nimport { DockingContentComponent } from \"./docking-content.component\"\nimport { type DockingPanelChanges, DockingPanelComponent } from \"./docking-panel.component\"\n\ntype DockingVerticalPosition = \"top\" | \"middle\" | \"bottom\"\ntype DockingHorizontalPositon = \"left\" | \"center\" | \"right\"\ntype DockingPosition = `${DockingVerticalPosition}:${DockingHorizontalPositon}`\nexport type DockingRange =\n | DockingVerticalPosition\n | DockingHorizontalPositon\n | DockingPosition\n | `${DockingPosition}-${DockingPosition}`\n\nconst RIGID_ZINDEX = 20\nconst OVER_ZINDEX = RIGID_ZINDEX * 2\n\ntype PanelsChanges = Array<{ panel: DockingPanelComponent; changes: DockingPanelChanges }>\n\n@Component({\n selector: \"nu-docking\",\n standalone: true,\n imports: [DockingContentComponent],\n template: `\n <ng-content select=\"nu-docking-panel\"></ng-content>\n\n @if (!contentComponent) {\n <nu-docking-content>\n <ng-content></ng-content>\n </nu-docking-content>\n } @else {\n <ng-content select=\"nu-docking-content\"></ng-content>\n }\n `,\n styleUrl: \"./docking-layout.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DockingLayoutComponent extends Destructible implements AfterViewInit, OnChanges {\n readonly #el = inject(ElementRef<HTMLElement>)\n\n @Input() contentOnly = false\n\n @ContentChild(DockingContentComponent) contentComponent?: DockingContentComponent\n @ContentChildren(DockingPanelComponent) dockingPanels!: QueryList<DockingPanelComponent>\n\n // readonly panels = new BehaviorSubject<PanelRef[]>([])\n readonly panels!: Observable<Array<DockingPanelComponent>>\n\n #reflow = new Subject<void>()\n\n ngAfterViewInit(): void {\n // eslint-disable-next-line prettier/prettier\n (this as { panels: Observable<Array<DockingPanelComponent>> }).panels = this.dockingPanels.changes.pipe(\n startWith(null),\n map(() => this.dockingPanels.toArray()),\n shareReplay(1)\n )\n\n this.d\n .sub(combineLatest({ panels: this.panels, reflow: this.#reflow.pipe(startWith(null)) }))\n .pipe(\n switchMap(({ panels }) =>\n combineLatest(\n panels.map(panel =>\n panel.changes.pipe(\n map(changes => {\n return { panel, changes }\n })\n )\n )\n )\n )\n )\n .subscribe(this.#layout.bind(this))\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\"contentOnly\" in changes || \"positionMode\" in changes) {\n this.#reflow.next()\n }\n }\n\n #layout(entries: PanelsChanges) {\n let paddingTop = 0\n let paddingRight = 0\n let paddingBottom = 0\n let paddingLeft = 0\n let rigidZIndex = RIGID_ZINDEX\n let overZIndex = OVER_ZINDEX\n\n if (this.contentOnly) {\n // TODO:...\n } else {\n for (const entry of entries) {\n const panelState = entry.changes\n const panelSize =\n panelState.state === \"full\"\n ? panelState.fullSize.value\n : panelState.state === \"mini\"\n ? panelState.miniSize.value\n : 0\n\n const isHorizontal = panelState.position.orient === \"horizontal\"\n const isRigid = panelState.mode === \"rigid\"\n\n let panelTop = null\n let panelRight = null\n let panelBottom = null\n let panelLeft = null\n\n if (isHorizontal) {\n panelLeft = 0\n panelRight = 0\n if (panelState.position.cells[0].v === \"top\") {\n if (isRigid) {\n paddingTop = Math.max(paddingTop, panelSize)\n }\n panelTop = 0\n } else if (panelState.position.cells[0].v === \"bottom\") {\n if (isRigid) {\n paddingBottom = Math.max(paddingBottom, panelSize)\n }\n panelBottom = 0\n }\n } else {\n panelTop = 0\n panelBottom = 0\n\n if (panelState.position.cells[0].h === \"left\") {\n if (isRigid) {\n paddingLeft = Math.max(paddingLeft, panelSize)\n }\n panelLeft = 0\n } else if (panelState.position.cells[0].h === \"right\") {\n if (isRigid) {\n paddingRight = Math.max(paddingRight, panelSize)\n }\n panelRight = 0\n }\n }\n\n FastDOM.setStyle(entry.panel.el.nativeElement, {\n \"z-index\": `${isRigid ? rigidZIndex++ : overZIndex++}`,\n \"--docking-panel-t\": panelTop != null ? `${panelTop}px` : null,\n \"--docking-panel-r\": panelRight != null ? `${panelRight}px` : null,\n \"--docking-panel-b\": panelBottom != null ? `${panelBottom}px` : null,\n \"--docking-panel-l\": panelLeft != null ? `${panelLeft}px` : null\n })\n }\n\n FastDOM.setStyle(this.#el.nativeElement, {\n \"--docking-layout-top\": `${paddingTop}px`,\n \"--docking-layout-right\": `${paddingRight}px`,\n \"--docking-layout-bottom\": `${paddingBottom}px`,\n \"--docking-layout-left\": `${paddingLeft}px`\n })\n }\n }\n}\n","import { NgModule } from \"@angular/core\"\n\nimport { DockingContentComponent } from \"./docking-content.component\"\nimport { DockingLayoutComponent } from \"./docking-layout.component\"\nimport { DockingPanelComponent } from \"./docking-panel.component\"\n\nexport { DockingLayoutComponent, DockingPanelComponent, DockingContentComponent }\n\nconst members = [DockingLayoutComponent, DockingPanelComponent, DockingContentComponent]\n\n@NgModule({\n imports: members,\n exports: members\n})\nexport class NuDockingLayout {}\n","import {\n Directive,\n EmbeddedViewRef,\n inject,\n Injectable,\n Injector,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef\n} from \"@angular/core\"\n\nimport {\n BehaviorSubject,\n distinctUntilChanged,\n finalize,\n map,\n Observable,\n of,\n scan,\n shareReplay,\n Subject,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { Destructible, IDisposable } from \"@ngutil/common\"\n\ntype SlotOrder = `:${number}`\ntype SlotId = ` as ${string}`\nexport type Slot<T extends string> = `${T}${SlotOrder | \"\"}${SlotId | \"\"}`\nexport type SlotTpl = TemplateRef<any>\nexport type SlotViewRef = EmbeddedViewRef<any>\n\nconst SLOT_REGEX = /^([^:\\s]+)(?::(\\d+))?(?:\\s+as\\s+(.*?))?$/i\n\nexport class SlotDef<T extends string> implements IDisposable {\n readonly slot!: T\n readonly order!: number\n readonly id?: string\n readonly viewRef?: SlotViewRef\n\n constructor(\n slot: Slot<T>,\n public readonly tpl: SlotTpl\n ) {\n const match = slot.match(SLOT_REGEX)\n if (!match) {\n console.warn(`Invalid slot definition: ${slot}`)\n } else {\n this.slot = match[1] as any\n this.order = match[2] != null ? Number(match[2]) : Infinity\n this.id = match[3] as string\n }\n }\n\n dispose(): void {\n this.viewRef?.destroy()\n ;(this as { viewRef?: SlotViewRef }).viewRef = undefined\n }\n}\n\nexport interface SlotEvent<T extends string> {\n type: \"add\" | \"del\"\n def: SlotDef<T>\n}\n\n/**\n * @Directive({selector: \"ng-template[xyzSlot]\", inputs: [{name: \"slot\", alias: \"xyzSlot\"}]})\n * class XYZSlotDirective extends SlotDirective<XYZComponentSlots> { }\n *\n * @Directive({selector: \"ng-template[xyzSlotOutlet]\", inputs: [{name: \"slot\", alias: \"xyzSlotOutlet\"}]})\n * class XYZSlotOutletDirective extends SlotOutletDirective<XYZComponentSlots> { }\n *\n *\n * @Component({provides: [SlotsService]})\n * class XYZComponent {\n * slots: inject(SlotsService<XYZComponentSlots>)\n * }\n *\n *\n */\n@Injectable()\nexport class SlotsService<T extends string = any> extends Destructible {\n #events = new Subject<SlotEvent<T>>()\n\n #entries = this.#events.pipe(\n scan((entries, event) => {\n if (event.type === \"add\") {\n const index = entries.findIndex(value => value === event.def)\n if (index > -1) {\n entries[index] = event.def\n } else {\n entries.push(event.def)\n }\n } else if (event.type === \"del\") {\n const index = entries.findIndex(value => value === event.def)\n if (index > -1) {\n entries.splice(index, 1)\n }\n }\n return entries\n }, [] as SlotDef<T>[]),\n tap(entries => {\n entries.sort((a, b) => {\n if (a.slot === b.slot) {\n return a.order - b.order\n } else {\n return a.slot.localeCompare(b.slot)\n }\n })\n }),\n shareReplay(1)\n )\n\n constructor() {\n super()\n // XXX: need to collect entries from the beginning\n this.d.sub(this.#entries).subscribe()\n }\n\n addTpl(def: SlotDef<T>) {\n this.#events.next({ type: \"add\", def })\n }\n\n delTpl(def: SlotDef<T>) {\n this.#events.next({ type: \"del\", def })\n }\n\n #watchers: { [key in T]: Observable<Array<SlotDef<T>>> } = {} as any\n\n watch(slot: T) {\n const existing = this.#watchers[slot]\n if (existing == null) {\n return (this.#watchers[slot] = this.#watch(slot))\n } else {\n return existing\n }\n }\n\n #watch(slot: T) {\n return this.#entries.pipe(\n map(entries => entries.filter(entry => entry.slot === slot)),\n distinctUntilChanged((prev, curr) => {\n if (prev.length === curr.length) {\n for (let i = 0; i < prev.length; i++) {\n if (prev[i] !== curr[i]) {\n return false\n }\n }\n return true\n } else {\n return false\n }\n }),\n finalize(() => {\n delete this.#watchers[slot]\n }),\n shareReplay(1)\n )\n }\n}\n\n@Directive()\nexport abstract class SlotDirective<T extends string, C = any> implements OnDestroy {\n protected abstract readonly slotSvc: SlotsService<T>\n protected readonly tpl = inject(TemplateRef<C>)\n\n set slot(slot: Slot<T>) {\n if (this.#slot !== slot) {\n this.#slot = slot\n\n if (this.#slotDef) {\n this.slotSvc.delTpl(this.#slotDef)\n }\n\n this.#slotDef = new SlotDef<T>(slot, this.tpl)\n this.slotSvc.addTpl(this.#slotDef)\n }\n }\n get slot() {\n return this.#slot\n }\n #slot!: Slot<T>\n #slotDef?: SlotDef<T>\n\n ngOnDestroy(): void {\n if (this.#slotDef) {\n this.slotSvc.delTpl(this.#slotDef)\n }\n }\n}\n\n@Directive()\nexport abstract class SlotOutletDirective<T extends string> extends Destructible implements OnInit {\n protected abstract readonly slotSvc: SlotsService<T>\n protected readonly vcr: ViewContainerRef = inject(ViewContainerRef)\n protected readonly injector: Injector = inject(Injector)\n\n set slot(slot: T | null) {\n if (this.#slot.value !== slot) {\n this.#slot.next(slot)\n }\n }\n get slot() {\n return this.#slot.value\n }\n #slot = new BehaviorSubject<T | null>(null)\n\n #watch = this.#slot.pipe(\n switchMap(slot => {\n if (slot) {\n return this.slotSvc.watch(slot)\n } else {\n return of([])\n }\n })\n )\n\n #views: Array<SlotDef<any>> = []\n\n constructor() {\n super()\n this.d.any(this.#clearViews.bind(this))\n }\n\n ngOnInit(): void {\n this.d.sub(this.#watch).subscribe(this.#onEntriesChanged)\n }\n\n #onEntriesChanged = (entries: Array<SlotDef<T>>) => {\n const { remove, undecided } = this.#determineActions(entries)\n\n for (const r of remove) {\n r.dispose()\n const idx = this.#views.indexOf(r)\n if (idx >= 0) {\n this.#views.splice(idx, 1)\n }\n }\n\n this.#views.length = 0\n for (const [pos, entry] of undecided.entries()) {\n if (entry.viewRef && !entry.viewRef.destroyed) {\n const currentPos = this.vcr.indexOf(entry.viewRef)\n if (currentPos !== pos) {\n this.vcr.insert(entry.viewRef, pos)\n }\n } else {\n ;(entry as { viewRef: SlotViewRef }).viewRef = this.vcr.createEmbeddedView(entry.tpl, null, {\n index: pos,\n injector: this.injector\n })\n entry.viewRef!.markForCheck()\n }\n this.#views.push(entry)\n }\n }\n\n #determineActions(entries: Array<SlotDef<T>>) {\n const byId: { [key: string]: Array<SlotDef<T>> } = {}\n let remove: Array<SlotDef<T>> = []\n const undecided: Array<SlotDef<T>> = []\n\n for (const entry of entries) {\n if (entry.id != null) {\n if (!byId[entry.id]) {\n byId[entry.id] = [entry]\n } else {\n byId[entry.id].push(entry)\n }\n } else {\n undecided.push(entry)\n }\n }\n\n for (const values of Object.values(byId)) {\n remove = remove.concat(values.slice(0, -1))\n undecided.push(values[values.length - 1])\n }\n\n for (const current of this.#views) {\n if (!undecided.includes(current)) {\n remove.push(current)\n }\n }\n\n return { remove, undecided }\n }\n\n #clearViews() {\n this.vcr.clear()\n this.#views = []\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngutil-layout.mjs","sources":["../../../../packages/layout/src/l9/range.ts","../../../../packages/layout/src/l9/state.ts","../../../../packages/layout/src/docking/docking-content.component.ts","../../../../packages/layout/src/docking/docking-backdrop.component.ts","../../../../packages/layout/src/docking/docking-panel.component.ts","../../../../packages/layout/src/docking/docking-layout.component.ts","../../../../packages/layout/src/docking/index.ts","../../../../packages/layout/src/services/slots.service.ts","../../../../packages/layout/src/ngutil-layout.ts"],"sourcesContent":["/**\n * -----------------------------------------------\n * | TOP:LEFT | TOP:CENTER | TOP:RIGHT |\n * -----------------------------------------------\n * | MIDDLE:LEFT | MIDDLE:CENTER | MIDDLE:RIGH |\n * -----------------------------------------------\n * | BOTTOMN:LEFT | BOTTOM:CENTER | BOTTOM:RIGHT |\n * -----------------------------------------------\n */\n\nconst vertical = [\"top\", \"middle\", \"bottom\"] as const\nconst horizontal = [\"left\", \"center\", \"right\"] as const\n\nexport type L9Vertical = \"top\" | \"middle\" | \"bottom\"\nexport type L9Horizontal = \"left\" | \"center\" | \"right\"\nexport type L9CellName = `${L9Vertical}:${L9Horizontal}`\nexport type L9RangeName = L9Vertical | L9Horizontal | L9CellName | `${L9CellName}-${L9CellName}`\nexport type L9Orient = \"horizontal\" | \"vertical\" | \"rect\"\n\nexport class L9Cell {\n static coerce(value: L9CellName) {\n const [v, h] = value.split(\":\")\n\n if (vertical.includes(v as any) && horizontal.includes(h as any)) {\n return new L9Cell(v as any, h as any)\n }\n\n throw new Error(`Invalid cell value: ${value}`)\n }\n\n constructor(\n public readonly v: L9Vertical,\n public readonly h: L9Horizontal\n ) {}\n}\n\nexport class L9Range {\n static coerce(value: L9Range | L9RangeName) {\n if (value instanceof L9Range) {\n return value\n } else {\n return new L9Range(value)\n }\n }\n\n readonly cells: Array<L9Cell>\n readonly orient: L9Orient\n\n constructor(range: L9RangeName) {\n this.cells = parse(range)\n this.orient = this.#determineOrient()\n }\n\n isEq(other: L9Range) {\n if (other instanceof L9Range) {\n const selfFirst = this.cells[0]\n const otherFirst = other.cells[0]\n\n if (selfFirst.h !== otherFirst.h || selfFirst.v !== otherFirst.v) {\n return false\n }\n\n const selfLast = this.cells[this.cells.length - 1]\n const otherLast = other.cells[other.cells.length - 1]\n\n if (selfLast.h === otherLast.h && selfLast.v === otherLast.v) {\n return true\n }\n }\n return false\n }\n\n #determineOrient(): L9Orient {\n const { v: sv, h: sh } = this.cells[0]\n const { v: ev, h: eh } = this.cells[this.cells.length - 1]\n\n if (sv === ev) {\n return \"horizontal\"\n } else if (sh === eh) {\n return \"vertical\"\n } else {\n return \"rect\"\n }\n }\n}\n\nfunction parse(value: any): Array<L9Cell> {\n const cells: Array<L9Cell> = []\n\n if (vertical.includes(value)) {\n for (const h of horizontal) {\n cells.push(new L9Cell(value, h))\n }\n } else if (horizontal.includes(value)) {\n for (const v of vertical) {\n cells.push(new L9Cell(v, value))\n }\n } else if (value.includes(\"-\")) {\n const [begin, end] = value.split(\"-\")\n const beginCells = parse(begin)\n const endCells = parse(end)\n\n if (beginCells.length > 1) {\n throw new Error(`Currently not supported begin range value: ${begin}`)\n }\n\n if (endCells.length > 1) {\n throw new Error(`Currently not supported end range value: ${end}`)\n }\n\n const { v: bv, h: bh } = beginCells[0]\n const { v: ev, h: eh } = endCells[0]\n\n const vstart = Math.min(vertical.indexOf(bv as any), vertical.indexOf(ev as any))\n const vend = Math.max(vertical.indexOf(bv as any), vertical.indexOf(ev as any))\n const hstart = Math.min(horizontal.indexOf(bh as any), horizontal.indexOf(eh as any))\n const hend = Math.max(horizontal.indexOf(bh as any), horizontal.indexOf(eh as any))\n\n for (let vi = vstart; vi <= vend; vi++) {\n for (let hi = hstart; hi <= hend; hi++) {\n cells.push(new L9Cell(vertical[vi], horizontal[hi]))\n }\n }\n } else if (value.includes(\":\")) {\n cells.push(L9Cell.coerce(value))\n }\n\n if (cells.length === 0) {\n throw Error(`Undefined l9cell: \"${value}\"`)\n }\n\n return cells\n}\n","import { BehaviorSubject, map, Observable, shareReplay } from \"rxjs\"\n\nimport { type Dimension } from \"@ngutil/style\"\n\nimport { L9CellName, L9Horizontal, L9Vertical } from \"./range\"\n\nexport type L9StateVar<T extends string> = `--${T}-${L9Vertical}-${L9Horizontal}-${\"w\" | \"h\"}`\nexport type L9StyleVars<T extends string> = { [key in L9StateVar<T>]?: string }\n\ntype L9Dims = { [key in L9CellName]?: Dimension }\n\nexport class L9State<T extends string> {\n readonly #dims = new BehaviorSubject<L9Dims>({})\n\n readonly style: Observable<L9StyleVars<T>> = this.#dims.pipe(\n map(dims => {\n const res: L9StyleVars<T> = {}\n\n for (const [k, v] of Object.entries(dims)) {\n if (v == null) {\n continue\n }\n\n const [vertical, horizontal] = k.split(\":\")\n res[`--${this.prefix}-${vertical}-${horizontal}-w` as L9StateVar<T>] = v.width.toString()\n res[`--${this.prefix}-${vertical}-${horizontal}-h` as L9StateVar<T>] = v.height.toString()\n }\n\n return res\n }),\n shareReplay(1)\n )\n\n constructor(public readonly prefix: T) {}\n}\n","import { Component } from \"@angular/core\"\n\n@Component({\n standalone: true,\n selector: \"nu-docking-content\",\n exportAs: \"nuDockingContent\",\n styleUrl: \"./docking-content.component.scss\",\n template: `<ng-content></ng-content>`\n})\nexport class DockingContentComponent {}\n","import { Component, HostBinding } from \"@angular/core\"\n\n@Component({\n standalone: true,\n selector: \"nu-docking-backdrop\",\n styleUrl: \"./docking-backdrop.component.scss\",\n template: ``\n})\nexport class DockingBackdropComponent {\n @HostBinding(\"[attr.state]\")\n state: \"visible\" | \"hidden\" = \"hidden\"\n}\n","import { AfterViewInit, Component, ElementRef, inject, Input, Output, ViewChild } from \"@angular/core\"\n\nimport { BehaviorSubject, combineLatest, map, Observable, of, ReplaySubject, shareReplay, switchMap } from \"rxjs\"\n\nimport {\n BooleanInput,\n coerceBoolAttr,\n Destructible,\n FastDOM,\n NumberWithUnit,\n NumberWithUnitInput\n} from \"@ngutil/common\"\nimport { DimensionWatcher } from \"@ngutil/style\"\n\nimport { L9Range, L9RangeName } from \"../l9/range\"\n\nexport type DockingPanelState = \"full\" | \"mini\" | \"hidden\"\nexport type DockingPanelMode = \"over\" | \"push\" | \"rigid\"\n\nconst DEFAULT_POSITION = L9Range.coerce(\"left\")\nconst HIDDEN_SIZE = new NumberWithUnit(0, \"px\")\nconst AUTO_SIZE = NumberWithUnit.coerce(\"auto\")\n\n@Component({\n standalone: true,\n selector: \"nu-docking-panel\",\n exportAs: \"nuDockingPanel\",\n styleUrl: \"./docking-panel.component.scss\",\n template: `\n <div class=\"content\" #content>\n <ng-content></ng-content>\n </div>\n `\n})\nexport class DockingPanelComponent extends Destructible implements AfterViewInit {\n readonly el = inject(ElementRef<HTMLElement>)\n readonly #dimWatcher = inject(DimensionWatcher)\n @ViewChild(\"content\", { read: ElementRef, static: true })\n readonly content!: ElementRef<HTMLElement>\n\n @Input(\"position\")\n set positionInput(val: L9Range | L9RangeName) {\n const coerced = L9Range.coerce(val)\n if (coerced.orient === \"rect\") {\n throw new Error(`Invalid position value: ${val}`)\n }\n\n if (!this.position.value.isEq(coerced)) {\n this.position.next(coerced)\n }\n }\n readonly position = new BehaviorSubject<L9Range>(DEFAULT_POSITION)\n\n @Input(\"state\")\n set stateInput(val: DockingPanelState) {\n if (this.state.value !== val) {\n this.state.next(val)\n }\n }\n @Output(\"stateChanges\")\n readonly state = new BehaviorSubject<DockingPanelState>(\"full\")\n\n @Input(\"mode\")\n set modeInput(val: DockingPanelMode) {\n if (this.mode.value !== val) {\n this.mode.next(val)\n }\n }\n readonly mode = new BehaviorSubject<DockingPanelMode>(\"rigid\")\n\n @Input(\"fullSize\")\n set fullSizeInput(val: NumberWithUnitInput) {\n const coerced = NumberWithUnit.coerce(val, \"px\")\n if (this.#fullSize.value !== coerced) {\n this.#fullSize.next(coerced)\n }\n }\n readonly #fullSize = new BehaviorSubject<NumberWithUnit>(AUTO_SIZE)\n\n @Input(\"miniSize\")\n set miniSizeInput(val: NumberWithUnitInput) {\n const coerced = NumberWithUnit.coerce(val, \"px\")\n if (this.#miniSize.value !== coerced) {\n this.#miniSize.next(coerced)\n }\n }\n readonly #miniSize = new BehaviorSubject<NumberWithUnit>(HIDDEN_SIZE)\n\n @Input(\"minimizable\")\n set minimizable(val: BooleanInput) {\n this.#minimizable = coerceBoolAttr(val)\n this.#minimizableAuto = false\n }\n get minimizable(): boolean {\n return this.#minimizable\n }\n #minimizable: boolean = false\n #minimizableAuto: boolean = true\n\n @Input(\"backdrop\")\n set backdrop(val: BooleanInput) {\n this.#backdrop = coerceBoolAttr(val)\n }\n get backdrop(): boolean {\n return this.#backdrop\n }\n #backdrop: boolean = false\n\n readonly #contentSize = new ReplaySubject<{ width: NumberWithUnit; height: NumberWithUnit }>(1)\n\n readonly #autoSize = combineLatest({\n dim: this.#contentSize,\n pos: this.position\n }).pipe(\n map(({ dim, pos }) => {\n if (pos.orient === \"horizontal\") {\n return dim.height\n } else {\n return dim.width\n }\n }),\n shareReplay(1)\n )\n\n readonly fullSize = this.#fullSize.pipe(\n switchMap(size => {\n if (size.unit === \"auto\") {\n return this.#autoSize\n } else {\n return of(size)\n }\n }),\n shareReplay(1)\n )\n\n readonly miniSize = this.#miniSize.pipe(\n switchMap(size => {\n if (size.unit === \"auto\") {\n return this.#autoSize\n } else {\n return of(size)\n }\n }),\n shareReplay(1)\n )\n\n readonly changes = combineLatest({\n position: this.position,\n state: this.state,\n mode: this.mode,\n fullSize: this.fullSize,\n miniSize: this.miniSize,\n contentSize: this.#contentSize\n })\n\n // TODO: better animation handling in min -> hidden -> min -> full\n constructor() {\n super()\n\n this.d.sub(this.changes).subscribe(changes => {\n if (this.#minimizableAuto) {\n this.#minimizable = this.#miniSize.value.value !== 0\n }\n\n FastDOM.setAttributes(this.el.nativeElement, {\n state: changes.state,\n orient: changes.position.orient,\n mode: changes.mode,\n side:\n changes.position.orient === \"horizontal\" ? changes.position.cells[0].v : changes.position.cells[0].h\n })\n\n const isHorizontal = changes.position.orient === \"horizontal\"\n let w = null\n let h = null\n\n // TODO: when change state from mini -> hidden, currently wrong behavior\n // the good behavior is to not gain fullSize ang go to hidden\n if (changes.state === \"mini\") {\n if (isHorizontal) {\n h = changes.miniSize.unit === \"auto\" ? changes.contentSize.height : changes.miniSize\n } else {\n w = changes.miniSize.unit === \"auto\" ? changes.contentSize.width : changes.miniSize\n }\n } else {\n if (isHorizontal) {\n h = changes.fullSize.unit === \"auto\" ? changes.contentSize.height : changes.fullSize\n } else {\n w = changes.fullSize.unit === \"auto\" ? changes.contentSize.width : changes.fullSize\n }\n }\n\n FastDOM.setStyle(\n this.el.nativeElement,\n {\n \"--docking-panel-w\": w != null ? `${w}` : null,\n \"--docking-panel-h\": h != null ? `${h}` : null,\n \"--docking-panel-content-w\": changes.contentSize.width,\n \"--docking-panel-content-h\": changes.contentSize.height\n },\n () => FastDOM.setAttributes(this.el.nativeElement, { animate: \"\" })\n )\n })\n }\n\n ngAfterViewInit(): void {\n this.d\n .sub(this.#dimWatcher.watch(this.content, \"scroll-box\"))\n .pipe(\n map(dim => {\n return {\n width: new NumberWithUnit(dim.width, \"px\"),\n height: new NumberWithUnit(dim.height, \"px\")\n }\n })\n )\n .subscribe(this.#contentSize)\n }\n\n open() {\n this.state.next(\"full\")\n }\n\n close() {\n this.state.next(\"hidden\")\n }\n\n minimize() {\n if (this.minimizable) {\n this.state.next(\"mini\")\n }\n }\n}\n\ntype ChangesObservable = typeof DockingPanelComponent.prototype.changes\nexport type DockingPanelChanges = ChangesObservable extends Observable<infer T> ? T : never\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n inject,\n Input,\n OnChanges,\n QueryList,\n SimpleChanges,\n ViewChild\n} from \"@angular/core\"\n\nimport { combineLatest, map, Observable, shareReplay, startWith, Subject, switchMap } from \"rxjs\"\n\nimport { Destructible, FastDOM } from \"@ngutil/common\"\n\nimport { DockingBackdropComponent } from \"./docking-backdrop.component\"\nimport { DockingContentComponent } from \"./docking-content.component\"\nimport { type DockingPanelChanges, DockingPanelComponent } from \"./docking-panel.component\"\n\ntype DockingVerticalPosition = \"top\" | \"middle\" | \"bottom\"\ntype DockingHorizontalPositon = \"left\" | \"center\" | \"right\"\ntype DockingPosition = `${DockingVerticalPosition}:${DockingHorizontalPositon}`\nexport type DockingRange =\n | DockingVerticalPosition\n | DockingHorizontalPositon\n | DockingPosition\n | `${DockingPosition}-${DockingPosition}`\n\nconst RIGID_ZINDEX = 100\nconst OVER_ZINDEX = RIGID_ZINDEX * 2\nconst BACKDROP_ZINDEX = 10000\n\ntype PanelsChanges = Array<{ panel: DockingPanelComponent; changes: DockingPanelChanges }>\n\n@Component({\n selector: \"nu-docking\",\n standalone: true,\n imports: [DockingContentComponent, DockingBackdropComponent],\n template: `\n <ng-content select=\"nu-docking-panel\"></ng-content>\n\n @if (!contentComponent) {\n <nu-docking-content>\n <ng-content></ng-content>\n </nu-docking-content>\n } @else {\n <ng-content select=\"nu-docking-content\"></ng-content>\n }\n\n <nu-docking-backdrop #backdrop (click)=\"onHideBackdropPanel($event)\" />\n `,\n styleUrl: \"./docking-layout.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DockingLayoutComponent extends Destructible implements AfterViewInit, OnChanges {\n readonly #el = inject(ElementRef<HTMLElement>)\n\n @Input() contentOnly = false\n\n @ContentChild(DockingContentComponent) contentComponent?: DockingContentComponent\n @ViewChild(\"backdrop\", { read: ElementRef, static: true })\n backdropEl?: ElementRef<HTMLElement>\n @ContentChildren(DockingPanelComponent) dockingPanels!: QueryList<DockingPanelComponent>\n\n // readonly panels = new BehaviorSubject<PanelRef[]>([])\n readonly panels!: Observable<Array<DockingPanelComponent>>\n\n #reflow = new Subject<void>()\n #backdropPanel: DockingPanelComponent | null = null\n\n ngAfterViewInit(): void {\n // eslint-disable-next-line prettier/prettier\n (this as { panels: Observable<Array<DockingPanelComponent>> }).panels = this.dockingPanels.changes.pipe(\n startWith(null),\n map(() => this.dockingPanels.toArray()),\n shareReplay(1)\n )\n\n this.d\n .sub(combineLatest({ panels: this.panels, reflow: this.#reflow.pipe(startWith(null)) }))\n .pipe(\n switchMap(({ panels }) =>\n combineLatest(\n panels.map(panel =>\n panel.changes.pipe(\n map(changes => {\n return { panel, changes }\n })\n )\n )\n )\n )\n )\n .subscribe(this.#layout.bind(this))\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\"contentOnly\" in changes || \"positionMode\" in changes) {\n this.#reflow.next()\n }\n }\n\n #layout(entries: PanelsChanges) {\n let paddingTop = 0\n let paddingRight = 0\n let paddingBottom = 0\n let paddingLeft = 0\n let rigidZIndex = RIGID_ZINDEX\n let overZIndex = OVER_ZINDEX\n let backdropZIndex = -1\n\n this.#backdropPanel = null\n\n if (this.contentOnly) {\n // TODO:...\n } else {\n for (const entry of entries) {\n const panelState = entry.changes\n const panelSize =\n panelState.state === \"full\"\n ? panelState.fullSize.value\n : panelState.state === \"mini\"\n ? panelState.miniSize.value\n : 0\n\n const isHorizontal = panelState.position.orient === \"horizontal\"\n const isRigid = panelState.mode === \"rigid\"\n\n let panelTop = null\n let panelRight = null\n let panelBottom = null\n let panelLeft = null\n\n if (isHorizontal) {\n panelLeft = 0\n panelRight = 0\n if (panelState.position.cells[0].v === \"top\") {\n if (isRigid) {\n paddingTop = Math.max(paddingTop, panelSize)\n }\n panelTop = 0\n } else if (panelState.position.cells[0].v === \"bottom\") {\n if (isRigid) {\n paddingBottom = Math.max(paddingBottom, panelSize)\n }\n panelBottom = 0\n }\n } else {\n panelTop = 0\n panelBottom = 0\n\n if (panelState.position.cells[0].h === \"left\") {\n if (isRigid) {\n paddingLeft = Math.max(paddingLeft, panelSize)\n }\n panelLeft = 0\n } else if (panelState.position.cells[0].h === \"right\") {\n if (isRigid) {\n paddingRight = Math.max(paddingRight, panelSize)\n }\n panelRight = 0\n }\n }\n\n let panelZIndex = isRigid ? (rigidZIndex += 2) : (overZIndex += 2)\n if (panelState.state !== \"hidden\" && entry.panel.backdrop) {\n backdropZIndex = BACKDROP_ZINDEX\n panelZIndex = backdropZIndex + 1\n this.#backdropPanel = entry.panel\n }\n\n FastDOM.setStyle(entry.panel.el.nativeElement, {\n \"z-index\": `${panelZIndex}`,\n \"--docking-panel-t\": panelTop != null ? `${panelTop}px` : null,\n \"--docking-panel-r\": panelRight != null ? `${panelRight}px` : null,\n \"--docking-panel-b\": panelBottom != null ? `${panelBottom}px` : null,\n \"--docking-panel-l\": panelLeft != null ? `${panelLeft}px` : null\n })\n }\n\n FastDOM.setStyle(this.#el.nativeElement, {\n \"--docking-layout-top\": `${paddingTop}px`,\n \"--docking-layout-right\": `${paddingRight}px`,\n \"--docking-layout-bottom\": `${paddingBottom}px`,\n \"--docking-layout-left\": `${paddingLeft}px`\n })\n\n if (this.backdropEl) {\n FastDOM.setAttributes(this.backdropEl.nativeElement, {\n state: backdropZIndex < 0 ? \"hidden\" : \"visible\"\n })\n FastDOM.setStyle(this.backdropEl.nativeElement, { \"z-index\": `${backdropZIndex}` })\n }\n }\n }\n\n onHideBackdropPanel(event: Event) {\n event.preventDefault()\n if (this.#backdropPanel) {\n this.#backdropPanel.close()\n }\n }\n}\n","import { NgModule } from \"@angular/core\"\n\nimport { DockingContentComponent } from \"./docking-content.component\"\nimport { DockingLayoutComponent } from \"./docking-layout.component\"\nimport { DockingPanelComponent } from \"./docking-panel.component\"\n\nexport { DockingLayoutComponent, DockingPanelComponent, DockingContentComponent }\n\nconst members = [DockingLayoutComponent, DockingPanelComponent, DockingContentComponent]\n\n@NgModule({\n imports: members,\n exports: members\n})\nexport class NuDockingLayout {}\n","import {\n Directive,\n EmbeddedViewRef,\n inject,\n Injectable,\n Injector,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef\n} from \"@angular/core\"\n\nimport {\n BehaviorSubject,\n distinctUntilChanged,\n finalize,\n map,\n Observable,\n of,\n scan,\n shareReplay,\n Subject,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { Destructible, IDisposable } from \"@ngutil/common\"\n\ntype SlotOrder = `:${number}`\ntype SlotId = ` as ${string}`\nexport type Slot<T extends string> = `${T}${SlotOrder | \"\"}${SlotId | \"\"}`\nexport type SlotTpl = TemplateRef<any>\nexport type SlotViewRef = EmbeddedViewRef<any>\n\nconst SLOT_REGEX = /^([^:\\s]+)(?::(\\d+))?(?:\\s+as\\s+(.*?))?$/i\n\nexport class SlotDef<T extends string> implements IDisposable {\n readonly slot!: T\n readonly order!: number\n readonly id?: string\n readonly viewRef?: SlotViewRef\n\n constructor(\n slot: Slot<T>,\n public readonly tpl: SlotTpl\n ) {\n const match = slot.match(SLOT_REGEX)\n if (!match) {\n console.warn(`Invalid slot definition: ${slot}`)\n } else {\n this.slot = match[1] as any\n this.order = match[2] != null ? Number(match[2]) : Infinity\n this.id = match[3] as string\n }\n }\n\n dispose(): void {\n this.viewRef?.destroy()\n ;(this as { viewRef?: SlotViewRef }).viewRef = undefined\n }\n}\n\nexport interface SlotEvent<T extends string> {\n type: \"add\" | \"del\"\n def: SlotDef<T>\n}\n\n/**\n * @Directive({selector: \"ng-template[xyzSlot]\", inputs: [{name: \"slot\", alias: \"xyzSlot\"}]})\n * class XYZSlotDirective extends SlotDirective<XYZComponentSlots> { }\n *\n * @Directive({selector: \"ng-template[xyzSlotOutlet]\", inputs: [{name: \"slot\", alias: \"xyzSlotOutlet\"}]})\n * class XYZSlotOutletDirective extends SlotOutletDirective<XYZComponentSlots> { }\n *\n *\n * @Component({provides: [SlotsService]})\n * class XYZComponent {\n * slots: inject(SlotsService<XYZComponentSlots>)\n * }\n *\n *\n */\n@Injectable()\nexport class SlotsService<T extends string = any> extends Destructible {\n #events = new Subject<SlotEvent<T>>()\n\n #entries = this.#events.pipe(\n scan((entries, event) => {\n if (event.type === \"add\") {\n const index = entries.findIndex(value => value === event.def)\n if (index > -1) {\n entries[index] = event.def\n } else {\n entries.push(event.def)\n }\n } else if (event.type === \"del\") {\n const index = entries.findIndex(value => value === event.def)\n if (index > -1) {\n entries.splice(index, 1)\n }\n }\n return entries\n }, [] as SlotDef<T>[]),\n tap(entries => {\n entries.sort((a, b) => {\n if (a.slot === b.slot) {\n return a.order - b.order\n } else {\n return a.slot.localeCompare(b.slot)\n }\n })\n }),\n shareReplay(1)\n )\n\n constructor() {\n super()\n // XXX: need to collect entries from the beginning\n this.d.sub(this.#entries).subscribe()\n }\n\n addTpl(def: SlotDef<T>) {\n this.#events.next({ type: \"add\", def })\n }\n\n delTpl(def: SlotDef<T>) {\n this.#events.next({ type: \"del\", def })\n }\n\n #watchers: { [key in T]: Observable<Array<SlotDef<T>>> } = {} as any\n\n watch(slot: T) {\n const existing = this.#watchers[slot]\n if (existing == null) {\n return (this.#watchers[slot] = this.#watch(slot))\n } else {\n return existing\n }\n }\n\n #watch(slot: T) {\n return this.#entries.pipe(\n map(entries => entries.filter(entry => entry.slot === slot)),\n distinctUntilChanged((prev, curr) => {\n if (prev.length === curr.length) {\n for (let i = 0; i < prev.length; i++) {\n if (prev[i] !== curr[i]) {\n return false\n }\n }\n return true\n } else {\n return false\n }\n }),\n finalize(() => {\n delete this.#watchers[slot]\n }),\n shareReplay(1)\n )\n }\n}\n\n@Directive()\nexport abstract class SlotDirective<T extends string, C = any> implements OnDestroy {\n protected abstract readonly slotSvc: SlotsService<T>\n protected readonly tpl = inject(TemplateRef<C>)\n\n set slot(slot: Slot<T>) {\n if (this.#slot !== slot) {\n this.#slot = slot\n\n if (this.#slotDef) {\n this.slotSvc.delTpl(this.#slotDef)\n }\n\n this.#slotDef = new SlotDef<T>(slot, this.tpl)\n this.slotSvc.addTpl(this.#slotDef)\n }\n }\n get slot() {\n return this.#slot\n }\n #slot!: Slot<T>\n #slotDef?: SlotDef<T>\n\n ngOnDestroy(): void {\n if (this.#slotDef) {\n this.slotSvc.delTpl(this.#slotDef)\n }\n }\n}\n\n@Directive()\nexport abstract class SlotOutletDirective<T extends string> extends Destructible implements OnInit {\n protected abstract readonly slotSvc: SlotsService<T>\n protected readonly vcr: ViewContainerRef = inject(ViewContainerRef)\n protected readonly injector: Injector = inject(Injector)\n\n set slot(slot: T | null) {\n if (this.#slot.value !== slot) {\n this.#slot.next(slot)\n }\n }\n get slot() {\n return this.#slot.value\n }\n #slot = new BehaviorSubject<T | null>(null)\n\n #watch = this.#slot.pipe(\n switchMap(slot => {\n if (slot) {\n return this.slotSvc.watch(slot)\n } else {\n return of([])\n }\n })\n )\n\n #views: Array<SlotDef<any>> = []\n\n constructor() {\n super()\n this.d.any(this.#clearViews.bind(this))\n }\n\n ngOnInit(): void {\n this.d.sub(this.#watch).subscribe(this.#onEntriesChanged)\n }\n\n #onEntriesChanged = (entries: Array<SlotDef<T>>) => {\n const { remove, undecided } = this.#determineActions(entries)\n\n for (const r of remove) {\n r.dispose()\n const idx = this.#views.indexOf(r)\n if (idx >= 0) {\n this.#views.splice(idx, 1)\n }\n }\n\n this.#views.length = 0\n for (const [pos, entry] of undecided.entries()) {\n if (entry.viewRef && !entry.viewRef.destroyed) {\n const currentPos = this.vcr.indexOf(entry.viewRef)\n if (currentPos !== pos) {\n this.vcr.insert(entry.viewRef, pos)\n }\n } else {\n ;(entry as { viewRef: SlotViewRef }).viewRef = this.vcr.createEmbeddedView(entry.tpl, null, {\n index: pos,\n injector: this.injector\n })\n entry.viewRef!.markForCheck()\n }\n this.#views.push(entry)\n }\n }\n\n #determineActions(entries: Array<SlotDef<T>>) {\n const byId: { [key: string]: Array<SlotDef<T>> } = {}\n let remove: Array<SlotDef<T>> = []\n const undecided: Array<SlotDef<T>> = []\n\n for (const entry of entries) {\n if (entry.id != null) {\n if (!byId[entry.id]) {\n byId[entry.id] = [entry]\n } else {\n byId[entry.id].push(entry)\n }\n } else {\n undecided.push(entry)\n }\n }\n\n for (const values of Object.values(byId)) {\n remove = remove.concat(values.slice(0, -1))\n undecided.push(values[values.length - 1])\n }\n\n for (const current of this.#views) {\n if (!undecided.includes(current)) {\n remove.push(current)\n }\n }\n\n return { remove, undecided }\n }\n\n #clearViews() {\n this.vcr.clear()\n this.#views = []\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngutil/layout",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "directory": "../../dist/packages/layout/"
@@ -9,8 +9,8 @@
9
9
  "@angular/common": "^17.1.0",
10
10
  "@angular/core": "^17.1.0",
11
11
  "rxjs": "^7.8.1",
12
- "@ngutil/style": "0.0.3",
13
- "@ngutil/common": "0.0.3"
12
+ "@ngutil/common": "0.0.4",
13
+ "@ngutil/style": "0.0.4"
14
14
  },
15
15
  "dependencies": {
16
16
  "tslib": "^2.3.0"