@ngutil/layout 0.0.63 → 0.0.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class DockingBackdropComponent {
3
- state: "visible" | "hidden";
3
+ readonly visible: import("@angular/core").InputSignal<unknown>;
4
4
  static ɵfac: i0.ɵɵFactoryDeclaration<DockingBackdropComponent, never>;
5
- static ɵcmp: i0.ɵɵComponentDeclaration<DockingBackdropComponent, "nu-docking-backdrop", never, {}, {}, never, never, true, never>;
5
+ static ɵcmp: i0.ɵɵComponentDeclaration<DockingBackdropComponent, "nu-docking-backdrop", never, { "visible": { "alias": "visible"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
6
6
  }
@@ -1,24 +1,18 @@
1
- import { AfterViewInit, ElementRef, OnChanges, QueryList, SimpleChanges } from "@angular/core";
2
- import { Observable } from "rxjs";
3
- import { Destructible } from "@ngutil/common";
4
- import { DockingContentComponent } from "./docking-content.component";
5
1
  import { DockingPanelComponent } from "./docking-panel.component";
6
2
  import * as i0 from "@angular/core";
7
3
  type DockingVerticalPosition = "top" | "middle" | "bottom";
8
4
  type DockingHorizontalPositon = "left" | "center" | "right";
9
5
  type DockingPosition = `${DockingVerticalPosition}:${DockingHorizontalPositon}`;
10
6
  export type DockingRange = DockingVerticalPosition | DockingHorizontalPositon | DockingPosition | `${DockingPosition}-${DockingPosition}`;
11
- export declare class DockingLayoutComponent extends Destructible implements AfterViewInit, OnChanges {
12
- #private;
13
- contentOnly: boolean;
14
- contentComponent?: DockingContentComponent;
15
- backdropEl?: ElementRef<HTMLElement>;
16
- dockingPanels: QueryList<DockingPanelComponent>;
17
- readonly panels: Observable<Array<DockingPanelComponent>>;
18
- ngAfterViewInit(): void;
19
- ngOnChanges(changes: SimpleChanges): void;
20
- onHideBackdropPanel(event: Event): void;
7
+ export declare class DockingLayoutComponent {
8
+ /**
9
+ * True if u want to animate panel open/close with `mode="side"`
10
+ */
11
+ readonly panels: import("@angular/core").Signal<readonly DockingPanelComponent[]>;
12
+ readonly activeOverPanel: import("@angular/core").Signal<DockingPanelComponent | undefined>;
13
+ readonly backdropVisible: import("@angular/core").Signal<boolean>;
14
+ doCloseActiveOverPanel(): void;
21
15
  static ɵfac: i0.ɵɵFactoryDeclaration<DockingLayoutComponent, never>;
22
- static ɵcmp: i0.ɵɵComponentDeclaration<DockingLayoutComponent, "nu-docking", never, { "contentOnly": { "alias": "contentOnly"; "required": false; }; }, {}, ["contentComponent", "dockingPanels"], ["nu-docking-panel", "*", "nu-docking-content"], true, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<DockingLayoutComponent, "nu-docking", ["nuDocking"], {}, {}, ["panels"], ["*"], true, never>;
23
17
  }
24
18
  export {};
@@ -1,47 +1,27 @@
1
- import { AfterViewInit, ElementRef } from "@angular/core";
2
- import { BehaviorSubject, Observable } from "rxjs";
3
- import { BooleanInput, Destructible, NumberWithUnit, NumberWithUnitInput } from "@ngutil/common";
4
- import { L9Range, L9RangeName } from "../l9/range";
1
+ import { ElementRef } from "@angular/core";
2
+ import { L9Range } from "../l9/range";
5
3
  import * as i0 from "@angular/core";
6
4
  export type DockingPanelState = "full" | "mini" | "hidden";
7
5
  export type DockingPanelMode = "over" | "push" | "rigid";
8
- export declare class DockingPanelComponent extends Destructible implements AfterViewInit {
6
+ export type BackdropMode = boolean | "full" | "panel-size";
7
+ export declare class DockingPanelComponent {
9
8
  #private;
10
9
  readonly el: ElementRef<any>;
11
- readonly content: ElementRef<HTMLElement>;
12
- set positionInput(val: L9Range | L9RangeName);
13
- readonly position: BehaviorSubject<L9Range>;
14
- set stateInput(val: DockingPanelState);
15
- readonly state: BehaviorSubject<DockingPanelState>;
16
- set modeInput(val: DockingPanelMode);
17
- readonly mode: BehaviorSubject<DockingPanelMode>;
18
- set fullSizeInput(val: NumberWithUnitInput);
19
- set miniSizeInput(val: NumberWithUnitInput);
20
- set minimizable(val: BooleanInput);
21
- get minimizable(): boolean;
22
- set backdrop(val: BooleanInput);
23
- get backdrop(): boolean;
24
- readonly fullSize: Observable<NumberWithUnit>;
25
- readonly miniSize: Observable<NumberWithUnit>;
26
- readonly changes: Observable<{
27
- position: L9Range;
28
- state: DockingPanelState;
29
- mode: DockingPanelMode;
30
- fullSize: NumberWithUnit;
31
- miniSize: NumberWithUnit;
32
- contentSize: {
33
- width: NumberWithUnit;
34
- height: NumberWithUnit;
35
- };
36
- }>;
37
- constructor();
38
- ngAfterViewInit(): void;
10
+ readonly position: import("@angular/core").InputSignalWithTransform<L9Range, import("../l9/range").L9RangeName | L9Range>;
11
+ readonly opened: import("@angular/core").ModelSignal<boolean>;
12
+ readonly _opened: import("@angular/core").Signal<boolean>;
13
+ readonly mode: import("@angular/core").InputSignal<DockingPanelMode>;
14
+ readonly maxSize: import("@angular/core").InputSignal<number | null | undefined>;
15
+ readonly backdrop: import("@angular/core").InputSignal<BackdropMode>;
16
+ readonly gridArea: import("@angular/core").Signal<string>;
17
+ readonly orient: import("@angular/core").Signal<import("../l9/range").L9Orient>;
18
+ readonly side: import("@angular/core").Signal<"top" | "middle" | "bottom" | "left" | "center" | "right">;
19
+ readonly content: import("@angular/core").Signal<ElementRef<any>>;
20
+ readonly dimension$: import("rxjs").Observable<import("@ngutil/style").Dimension>;
21
+ readonly dimension: import("@angular/core").Signal<import("@ngutil/style").Dimension | undefined>;
22
+ readonly contentSize: import("@angular/core").Signal<number>;
39
23
  open(): void;
40
24
  close(): void;
41
- minimize(): void;
42
25
  static ɵfac: i0.ɵɵFactoryDeclaration<DockingPanelComponent, 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>;
26
+ static ɵcmp: i0.ɵɵComponentDeclaration<DockingPanelComponent, "nu-docking-panel", ["nuDockingPanel"], { "position": { "alias": "position"; "required": false; "isSignal": true; }; "opened": { "alias": "opened"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "maxSize": { "alias": "maxSize"; "required": false; "isSignal": true; }; "backdrop": { "alias": "backdrop"; "required": false; "isSignal": true; }; }, { "opened": "openedChange"; }, never, ["*"], true, never>;
44
27
  }
45
- type ChangesObservable = typeof DockingPanelComponent.prototype.changes;
46
- export type DockingPanelChanges = ChangesObservable extends Observable<infer T> ? T : never;
47
- export {};
@@ -1,17 +1,16 @@
1
- import { Component, HostBinding } from "@angular/core";
1
+ import { Component, input } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
3
  export class DockingBackdropComponent {
4
4
  constructor() {
5
- this.state = "hidden";
5
+ this.visible = input.required();
6
6
  }
7
7
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: DockingBackdropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", 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"] }); }
8
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.6", type: DockingBackdropComponent, isStandalone: true, selector: "nu-docking-backdrop", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "attr.state": "visible() ? 'visible' : 'hidden'" } }, ngImport: i0, template: ``, isInline: true, styles: [":host{display:flex;flex-direction:column;align-items:stretch;position:absolute;inset:0;transition:opacity .2s cubic-bezier(0,0,.2,1);z-index:200;background-color:#000}:host[state=hidden]{animation:.2s cubic-bezier(0,0,.2,1) hide;animation-fill-mode:forwards;pointer-events:none;touch-action:none;opacity:0}:host[state=visible]{visibility:visible;opacity:.7}@keyframes hide{99%{visibility:visible}to{visibility:hidden}}\n"] }); }
9
9
  }
10
10
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: DockingBackdropComponent, decorators: [{
11
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=
12
+ args: [{ standalone: true, selector: "nu-docking-backdrop", host: {
13
+ "[attr.state]": "visible() ? 'visible' : 'hidden'"
14
+ }, template: ``, styles: [":host{display:flex;flex-direction:column;align-items:stretch;position:absolute;inset:0;transition:opacity .2s cubic-bezier(0,0,.2,1);z-index:200;background-color:#000}:host[state=hidden]{animation:.2s cubic-bezier(0,0,.2,1) hide;animation-fill-mode:forwards;pointer-events:none;touch-action:none;opacity:0}:host[state=visible]{visibility:visible;opacity:.7}@keyframes hide{99%{visibility:visible}to{visibility:hidden}}\n"] }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1iYWNrZHJvcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2RvY2tpbmcvZG9ja2luZy1iYWNrZHJvcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7O0FBV2hELE1BQU0sT0FBTyx3QkFBd0I7SUFUckM7UUFVYSxZQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBO0tBQ3RDOzhHQUZZLHdCQUF3QjtrR0FBeEIsd0JBQXdCLG9TQUZ2QixFQUFFOzsyRkFFSCx3QkFBd0I7a0JBVHBDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLHFCQUFxQixRQUN6Qjt3QkFDRixjQUFjLEVBQUUsa0NBQWtDO3FCQUNyRCxZQUVTLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGlucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiBcIm51LWRvY2tpbmctYmFja2Ryb3BcIixcbiAgICBob3N0OiB7XG4gICAgICAgIFwiW2F0dHIuc3RhdGVdXCI6IFwidmlzaWJsZSgpID8gJ3Zpc2libGUnIDogJ2hpZGRlbidcIlxuICAgIH0sXG4gICAgc3R5bGVVcmw6IFwiLi9kb2NraW5nLWJhY2tkcm9wLmNvbXBvbmVudC5zY3NzXCIsXG4gICAgdGVtcGxhdGU6IGBgXG59KVxuZXhwb3J0IGNsYXNzIERvY2tpbmdCYWNrZHJvcENvbXBvbmVudCB7XG4gICAgcmVhZG9ubHkgdmlzaWJsZSA9IGlucHV0LnJlcXVpcmVkKClcbn1cbiJdfQ==
@@ -2,10 +2,10 @@ import { Component } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
3
  export class DockingContentComponent {
4
4
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: DockingContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: DockingContentComponent, isStandalone: true, selector: "nu-docking-content", exportAs: ["nuDockingContent"], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:flex;flex-flow:column nowrap;align-items:stretch;box-sizing:border-box;flex:1;overflow:hidden}\n"] }); }
5
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: DockingContentComponent, isStandalone: true, selector: "nu-docking-content", exportAs: ["nuDockingContent"], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{grid-column:2;grid-row:2;display:grid;grid-template-columns:1fr;grid-template-rows:1fr;align-items:stretch;justify-items:stretch;overflow:hidden;position:relative;z-index:10}\n"] }); }
6
6
  }
7
7
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: DockingContentComponent, decorators: [{
8
8
  type: Component,
9
- 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;overflow:hidden}\n"] }]
9
+ args: [{ selector: "nu-docking-content", exportAs: "nuDockingContent", standalone: true, template: `<ng-content></ng-content>`, styles: [":host{grid-column:2;grid-row:2;display:grid;grid-template-columns:1fr;grid-template-rows:1fr;align-items:stretch;justify-items:stretch;overflow:hidden;position:relative;z-index:10}\n"] }]
10
10
  }] });
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xheW91dC9zcmMvZG9ja2luZy9kb2NraW5nLWNvbnRlbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7O0FBU3pDLE1BQU0sT0FBTyx1QkFBdUI7OEdBQXZCLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDhHQUZ0QiwyQkFBMkI7OzJGQUU1Qix1QkFBdUI7a0JBUG5DLFNBQVM7aUNBQ00sSUFBSSxZQUNOLG9CQUFvQixZQUNwQixrQkFBa0IsWUFFbEIsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiBcIm51LWRvY2tpbmctY29udGVudFwiLFxuICAgIGV4cG9ydEFzOiBcIm51RG9ja2luZ0NvbnRlbnRcIixcbiAgICBzdHlsZVVybDogXCIuL2RvY2tpbmctY29udGVudC5jb21wb25lbnQuc2Nzc1wiLFxuICAgIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmBcbn0pXG5leHBvcnQgY2xhc3MgRG9ja2luZ0NvbnRlbnRDb21wb25lbnQge31cbiJdfQ==
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xheW91dC9zcmMvZG9ja2luZy9kb2NraW5nLWNvbnRlbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7O0FBU3pDLE1BQU0sT0FBTyx1QkFBdUI7OEdBQXZCLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDhHQUZ0QiwyQkFBMkI7OzJGQUU1Qix1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0ksb0JBQW9CLFlBQ3BCLGtCQUFrQixjQUNoQixJQUFJLFlBRU4sMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJudS1kb2NraW5nLWNvbnRlbnRcIixcbiAgICBleHBvcnRBczogXCJudURvY2tpbmdDb250ZW50XCIsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzdHlsZVVybDogXCIuL2RvY2tpbmctY29udGVudC5jb21wb25lbnQuc2Nzc1wiLFxuICAgIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmBcbn0pXG5leHBvcnQgY2xhc3MgRG9ja2luZ0NvbnRlbnRDb21wb25lbnQge31cbiJdfQ==
@@ -1,171 +1,40 @@
1
- import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, ElementRef, inject, Input, QueryList, ViewChild } from "@angular/core";
2
- import { combineLatest, map, shareReplay, startWith, Subject, switchMap } from "rxjs";
3
- import { Destructible, FastDOM } from "@ngutil/common";
1
+ import { Component, computed, contentChildren } from "@angular/core";
4
2
  import { DockingBackdropComponent } from "./docking-backdrop.component";
5
- import { DockingContentComponent } from "./docking-content.component";
6
3
  import { DockingPanelComponent } from "./docking-panel.component";
7
4
  import * as i0 from "@angular/core";
8
- const RIGID_ZINDEX = 100;
9
- const OVER_ZINDEX = RIGID_ZINDEX * 2;
10
- const BACKDROP_ZINDEX = 10000;
11
- export class DockingLayoutComponent extends Destructible {
5
+ export class DockingLayoutComponent {
12
6
  constructor() {
13
- super(...arguments);
14
- this.#el = inject((ElementRef));
15
- this.contentOnly = false;
16
- this.#reflow = new Subject();
17
- this.#backdropPanel = null;
7
+ /**
8
+ * True if u want to animate panel open/close with `mode="side"`
9
+ */
10
+ // readonly animateSide = input(false)
11
+ this.panels = contentChildren(DockingPanelComponent);
12
+ this.activeOverPanel = computed(() => {
13
+ const panels = this.panels();
14
+ return panels.find(panel => panel.mode() === "over" && panel.opened());
15
+ });
16
+ this.backdropVisible = computed(() => {
17
+ const active = this.activeOverPanel();
18
+ return active != null ? active.backdrop() !== false : false;
19
+ });
18
20
  }
19
- #el;
20
- #reflow;
21
- #backdropPanel;
22
- ngAfterViewInit() {
23
- // eslint-disable-next-line prettier/prettier
24
- this.panels = this.dockingPanels.changes.pipe(startWith(null), map(() => this.dockingPanels.toArray()), shareReplay(1));
25
- this.d
26
- .sub(combineLatest({ panels: this.panels, reflow: this.#reflow.pipe(startWith(null)) }))
27
- .pipe(switchMap(({ panels }) => combineLatest(panels.map(panel => panel.changes.pipe(map(changes => {
28
- return { panel, changes };
29
- }))))))
30
- .subscribe(this.#layout.bind(this));
31
- }
32
- ngOnChanges(changes) {
33
- if ("contentOnly" in changes || "positionMode" in changes) {
34
- this.#reflow.next();
35
- }
36
- }
37
- #layout(entries) {
38
- let paddingTop = 0;
39
- let paddingRight = 0;
40
- let paddingBottom = 0;
41
- let paddingLeft = 0;
42
- let rigidZIndex = RIGID_ZINDEX;
43
- let overZIndex = OVER_ZINDEX;
44
- let backdropZIndex = -1;
45
- this.#backdropPanel = null;
46
- if (this.contentOnly) {
47
- // TODO:...
48
- }
49
- else {
50
- for (const entry of entries) {
51
- const panelState = entry.changes;
52
- const panelSize = panelState.state === "full"
53
- ? panelState.fullSize.value
54
- : panelState.state === "mini"
55
- ? panelState.miniSize.value
56
- : 0;
57
- const isHorizontal = panelState.position.orient === "horizontal";
58
- const isRigid = panelState.mode === "rigid";
59
- let panelTop = null;
60
- let panelRight = null;
61
- let panelBottom = null;
62
- let panelLeft = null;
63
- if (isHorizontal) {
64
- panelLeft = 0;
65
- panelRight = 0;
66
- if (panelState.position.cells[0].v === "top") {
67
- if (isRigid) {
68
- paddingTop = Math.max(paddingTop, panelSize);
69
- }
70
- panelTop = 0;
71
- }
72
- else if (panelState.position.cells[0].v === "bottom") {
73
- if (isRigid) {
74
- paddingBottom = Math.max(paddingBottom, panelSize);
75
- }
76
- panelBottom = 0;
77
- }
78
- }
79
- else {
80
- panelTop = 0;
81
- panelBottom = 0;
82
- if (panelState.position.cells[0].h === "left") {
83
- if (isRigid) {
84
- paddingLeft = Math.max(paddingLeft, panelSize);
85
- }
86
- panelLeft = 0;
87
- }
88
- else if (panelState.position.cells[0].h === "right") {
89
- if (isRigid) {
90
- paddingRight = Math.max(paddingRight, panelSize);
91
- }
92
- panelRight = 0;
93
- }
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
- }
101
- FastDOM.setStyle(entry.panel.el.nativeElement, {
102
- "z-index": `${panelZIndex}`,
103
- "--docking-panel-t": panelTop != null ? `${panelTop}px` : null,
104
- "--docking-panel-r": panelRight != null ? `${panelRight}px` : null,
105
- "--docking-panel-b": panelBottom != null ? `${panelBottom}px` : null,
106
- "--docking-panel-l": panelLeft != null ? `${panelLeft}px` : null
107
- });
108
- }
109
- FastDOM.setStyle(this.#el.nativeElement, {
110
- "--docking-layout-top": `${paddingTop}px`,
111
- "--docking-layout-right": `${paddingRight}px`,
112
- "--docking-layout-bottom": `${paddingBottom}px`,
113
- "--docking-layout-left": `${paddingLeft}px`
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
- }
21
+ doCloseActiveOverPanel() {
22
+ const activePanel = this.activeOverPanel();
23
+ if (activePanel) {
24
+ activePanel.close();
121
25
  }
122
26
  }
123
- onHideBackdropPanel(event) {
124
- event.preventDefault();
125
- if (this.#backdropPanel) {
126
- this.#backdropPanel.close();
127
- }
128
- }
129
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: DockingLayoutComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
130
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", 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: `
131
- <ng-content select="nu-docking-panel"></ng-content>
132
-
133
- @if (!contentComponent) {
134
- <nu-docking-content>
135
- <ng-content></ng-content>
136
- </nu-docking-content>
137
- } @else {
138
- <ng-content select="nu-docking-content"></ng-content>
139
- }
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 }); }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: DockingLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.6", type: DockingLayoutComponent, isStandalone: true, selector: "nu-docking", queries: [{ propertyName: "panels", predicate: DockingPanelComponent, isSignal: true }], exportAs: ["nuDocking"], ngImport: i0, template: `
29
+ <ng-content />
30
+ <nu-docking-backdrop [visible]="backdropVisible()" (click)="doCloseActiveOverPanel()"></nu-docking-backdrop>
31
+ `, isInline: true, styles: [":host{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto 1fr auto;position:relative;align-items:stretch;justify-items:stretch;overflow:clip}\n"], dependencies: [{ kind: "component", type: DockingBackdropComponent, selector: "nu-docking-backdrop", inputs: ["visible"] }] }); }
143
32
  }
144
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: DockingLayoutComponent, decorators: [{
145
34
  type: Component,
146
- args: [{ selector: "nu-docking", standalone: true, imports: [DockingContentComponent, DockingBackdropComponent], template: `
147
- <ng-content select="nu-docking-panel"></ng-content>
148
-
149
- @if (!contentComponent) {
150
- <nu-docking-content>
151
- <ng-content></ng-content>
152
- </nu-docking-content>
153
- } @else {
154
- <ng-content select="nu-docking-content"></ng-content>
155
- }
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"] }]
159
- }], propDecorators: { contentOnly: [{
160
- type: Input
161
- }], contentComponent: [{
162
- type: ContentChild,
163
- args: [DockingContentComponent]
164
- }], backdropEl: [{
165
- type: ViewChild,
166
- args: ["backdrop", { read: ElementRef, static: true }]
167
- }], dockingPanels: [{
168
- type: ContentChildren,
169
- args: [DockingPanelComponent]
170
- }] } });
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbGF5b3V0L3NyYy9kb2NraW5nL2RvY2tpbmctbGF5b3V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLFNBQVMsRUFFVCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUE7QUFFdEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRWpHLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFdEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDdkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDckUsT0FBTyxFQUE0QixxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFBOztBQVczRixNQUFNLFlBQVksR0FBRyxHQUFHLENBQUE7QUFDeEIsTUFBTSxXQUFXLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQTtBQUNwQyxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUE7QUF3QjdCLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxZQUFZO0lBcEJ4RDs7UUFxQmEsUUFBRyxHQUFHLE1BQU0sQ0FBQyxDQUFBLFVBQXVCLENBQUEsQ0FBQyxDQUFBO1FBRXJDLGdCQUFXLEdBQUcsS0FBSyxDQUFBO1FBVTVCLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFBO1FBQzdCLG1CQUFjLEdBQWlDLElBQUksQ0FBQTtLQXNJdEQ7SUFuSlksR0FBRyxDQUFrQztJQVk5QyxPQUFP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QUF0RCxZQUFZO3VCQUFDLHVCQUF1QjtnQkFFckMsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFakIsYUFBYTtzQkFBcEQsZUFBZTt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwIH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBEZXN0cnVjdGlibGUsIEZhc3RET00gfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyBEb2NraW5nQmFja2Ryb3BDb21wb25lbnQgfSBmcm9tIFwiLi9kb2NraW5nLWJhY2tkcm9wLmNvbXBvbmVudFwiXG5pbXBvcnQgeyBEb2NraW5nQ29udGVudENvbXBvbmVudCB9IGZyb20gXCIuL2RvY2tpbmctY29udGVudC5jb21wb25lbnRcIlxuaW1wb3J0IHsgdHlwZSBEb2NraW5nUGFuZWxDaGFuZ2VzLCBEb2NraW5nUGFuZWxDb21wb25lbnQgfSBmcm9tIFwiLi9kb2NraW5nLXBhbmVsLmNvbXBvbmVudFwiXG5cbnR5cGUgRG9ja2luZ1ZlcnRpY2FsUG9zaXRpb24gPSBcInRvcFwiIHwgXCJtaWRkbGVcIiB8IFwiYm90dG9tXCJcbnR5cGUgRG9ja2luZ0hvcml6b250YWxQb3NpdG9uID0gXCJsZWZ0XCIgfCBcImNlbnRlclwiIHwgXCJyaWdodFwiXG50eXBlIERvY2tpbmdQb3NpdGlvbiA9IGAke0RvY2tpbmdWZXJ0aWNhbFBvc2l0aW9ufToke0RvY2tpbmdIb3Jpem9udGFsUG9zaXRvbn1gXG5leHBvcnQgdHlwZSBEb2NraW5nUmFuZ2UgPVxuICAgIHwgRG9ja2luZ1ZlcnRpY2FsUG9zaXRpb25cbiAgICB8IERvY2tpbmdIb3Jpem9udGFsUG9zaXRvblxuICAgIHwgRG9ja2luZ1Bvc2l0aW9uXG4gICAgfCBgJHtEb2NraW5nUG9zaXRpb259LSR7RG9ja2luZ1Bvc2l0aW9ufWBcblxuY29uc3QgUklHSURfWklOREVYID0gMTAwXG5jb25zdCBPVkVSX1pJTkRFWCA9IFJJR0lEX1pJTkRFWCAqIDJcbmNvbnN0IEJBQ0tEUk9QX1pJTkRFWCA9IDEwMDAwXG5cbnR5cGUgUGFuZWxzQ2hhbmdlcyA9IEFycmF5PHsgcGFuZWw6IERvY2tpbmdQYW5lbENvbXBvbmVudDsgY2hhbmdlczogRG9ja2luZ1BhbmVsQ2hhbmdlcyB9PlxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJudS1kb2NraW5nXCIsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbRG9ja2luZ0NvbnRlbnRDb21wb25lbnQsIERvY2tpbmdCYWNrZHJvcENvbXBvbmVudF0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibnUtZG9ja2luZy1wYW5lbFwiPjwvbmctY29udGVudD5cblxuICAgICAgICBAaWYgKCFjb250ZW50Q29tcG9uZW50KSB7XG4gICAgICAgICAgICA8bnUtZG9ja2luZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDwvbnUtZG9ja2luZy1jb250ZW50PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm51LWRvY2tpbmctY29udGVudFwiPjwvbmctY29udGVudD5cbiAgICAgICAgfVxuXG4gICAgICAgIDxudS1kb2NraW5nLWJhY2tkcm9wICNiYWNrZHJvcCAoY2xpY2spPVwib25IaWRlQmFja2Ryb3BQYW5lbCgkZXZlbnQpXCIgLz5cbiAgICBgLFxuICAgIHN0eWxlVXJsOiBcIi4vZG9ja2luZy1sYXlvdXQuY29tcG9uZW50LnNjc3NcIixcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEb2NraW5nTGF5b3V0Q29tcG9uZW50IGV4dGVuZHMgRGVzdHJ1Y3RpYmxlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgICByZWFkb25seSAjZWwgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pXG5cbiAgICBASW5wdXQoKSBjb250ZW50T25seSA9IGZhbHNlXG5cbiAgICBAQ29udGVudENoaWxkKERvY2tpbmdDb250ZW50Q29tcG9uZW50KSBjb250ZW50Q29tcG9uZW50PzogRG9ja2luZ0NvbnRlbnRDb21wb25lbnRcbiAgICBAVmlld0NoaWxkKFwiYmFja2Ryb3BcIiwgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBiYWNrZHJvcEVsPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgICBAQ29udGVudENoaWxkcmVuKERvY2tpbmdQYW5lbENvbXBvbmVudCkgZG9ja2luZ1BhbmVscyE6IFF1ZXJ5TGlzdDxEb2NraW5nUGFuZWxDb21wb25lbnQ+XG5cbiAgICAvLyByZWFkb25seSBwYW5lbHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBhbmVsUmVmW10+KFtdKVxuICAgIHJlYWRvbmx5IHBhbmVscyE6IE9ic2VydmFibGU8QXJyYXk8RG9ja2luZ1BhbmVsQ29tcG9uZW50Pj5cblxuICAgICNyZWZsb3cgPSBuZXcgU3ViamVjdDx2b2lkPigpXG4gICAgI2JhY2tkcm9wUGFuZWw6IERvY2tpbmdQYW5lbENvbXBvbmVudCB8IG51bGwgPSBudWxsXG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmV0dGllci9wcmV0dGllclxuICAgICAgICAodGhpcyBhcyB7IHBhbmVsczogT2JzZXJ2YWJsZTxBcnJheTxEb2NraW5nUGFuZWxDb21wb25lbnQ+PiB9KS5wYW5lbHMgPSB0aGlzLmRvY2tpbmdQYW5lbHMuY2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMuZG9ja2luZ1BhbmVscy50b0FycmF5KCkpLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICAgKVxuXG4gICAgICAgIHRoaXMuZFxuICAgICAgICAgICAgLnN1Yihjb21iaW5lTGF0ZXN0KHsgcGFuZWxzOiB0aGlzLnBhbmVscywgcmVmbG93OiB0aGlzLiNyZWZsb3cucGlwZShzdGFydFdpdGgobnVsbCkpIH0pKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCh7IHBhbmVscyB9KSA9PlxuICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxzLm1hcChwYW5lbCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsLmNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKGNoYW5nZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcGFuZWwsIGNoYW5nZXMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy4jbGF5b3V0LmJpbmQodGhpcykpXG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoXCJjb250ZW50T25seVwiIGluIGNoYW5nZXMgfHwgXCJwb3NpdGlvbk1vZGVcIiBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLiNyZWZsb3cubmV4dCgpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjbGF5b3V0KGVudHJpZXM6IFBhbmVsc0NoYW5nZXMpIHtcbiAgICAgICAgbGV0IHBhZGRpbmdUb3AgPSAwXG4gICAgICAgIGxldCBwYWRkaW5nUmlnaHQgPSAwXG4gICAgICAgIGxldCBwYWRkaW5nQm90dG9tID0gMFxuICAgICAgICBsZXQgcGFkZGluZ0xlZnQgPSAwXG4gICAgICAgIGxldCByaWdpZFpJbmRleCA9IFJJR0lEX1pJTkRFWFxuICAgICAgICBsZXQgb3ZlclpJbmRleCA9IE9WRVJfWklOREVYXG4gICAgICAgIGxldCBiYWNrZHJvcFpJbmRleCA9IC0xXG5cbiAgICAgICAgdGhpcy4jYmFja2Ryb3BQYW5lbCA9IG51bGxcblxuICAgICAgICBpZiAodGhpcy5jb250ZW50T25seSkge1xuICAgICAgICAgICAgLy8gVE9ETzouLi5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhbmVsU3RhdGUgPSBlbnRyeS5jaGFuZ2VzXG4gICAgICAgICAgICAgICAgY29uc3QgcGFuZWxTaXplID1cbiAgICAgICAgICAgICAgICAgICAgcGFuZWxTdGF0ZS5zdGF0ZSA9PT0gXCJmdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFuZWxTdGF0ZS5mdWxsU2l6ZS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwYW5lbFN0YXRlLnN0YXRlID09PSBcIm1pbmlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHBhbmVsU3RhdGUubWluaVNpemUudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwXG5cbiAgICAgICAgICAgICAgICBjb25zdCBpc0hvcml6b250YWwgPSBwYW5lbFN0YXRlLnBvc2l0aW9uLm9yaWVudCA9PT0gXCJob3Jpem9udGFsXCJcbiAgICAgICAgICAgICAgICBjb25zdCBpc1JpZ2lkID0gcGFuZWxTdGF0ZS5tb2RlID09PSBcInJpZ2lkXCJcblxuICAgICAgICAgICAgICAgIGxldCBwYW5lbFRvcCA9IG51bGxcbiAgICAgICAgICAgICAgICBsZXQgcGFuZWxSaWdodCA9IG51bGxcbiAgICAgICAgICAgICAgICBsZXQgcGFuZWxCb3R0b20gPSBudWxsXG4gICAgICAgICAgICAgICAgbGV0IHBhbmVsTGVmdCA9IG51bGxcblxuICAgICAgICAgICAgICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFuZWxMZWZ0ID0gMFxuICAgICAgICAgICAgICAgICAgICBwYW5lbFJpZ2h0ID0gMFxuICAgICAgICAgICAgICAgICAgICBpZiAocGFuZWxTdGF0ZS5wb3NpdGlvbi5jZWxsc1swXS52ID09PSBcInRvcFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNSaWdpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3AgPSBNYXRoLm1heChwYWRkaW5nVG9wLCBwYW5lbFNpemUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYW5lbFRvcCA9IDBcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYW5lbFN0YXRlLnBvc2l0aW9uLmNlbGxzWzBdLnYgPT09IFwiYm90dG9tXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1JpZ2lkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSA9IE1hdGgubWF4KHBhZGRpbmdCb3R0b20sIHBhbmVsU2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsQm90dG9tID0gMFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGFuZWxUb3AgPSAwXG4gICAgICAgICAgICAgICAgICAgIHBhbmVsQm90dG9tID0gMFxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYW5lbFN0YXRlLnBvc2l0aW9uLmNlbGxzWzBdLmggPT09IFwibGVmdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNSaWdpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0ID0gTWF0aC5tYXgocGFkZGluZ0xlZnQsIHBhbmVsU2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsTGVmdCA9IDBcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYW5lbFN0YXRlLnBvc2l0aW9uLmNlbGxzWzBdLmggPT09IFwicmlnaHRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUmlnaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQgPSBNYXRoLm1heChwYWRkaW5nUmlnaHQsIHBhbmVsU2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsUmlnaHQgPSAwXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgcGFuZWxaSW5kZXggPSBpc1JpZ2lkID8gKHJpZ2lkWkluZGV4ICs9IDIpIDogKG92ZXJaSW5kZXggKz0gMilcbiAgICAgICAgICAgICAgICBpZiAocGFuZWxTdGF0ZS5zdGF0ZSAhPT0gXCJoaWRkZW5cIiAmJiBlbnRyeS5wYW5lbC5iYWNrZHJvcCkge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcFpJbmRleCA9IEJBQ0tEUk9QX1pJTkRFWFxuICAgICAgICAgICAgICAgICAgICBwYW5lbFpJbmRleCA9IGJhY2tkcm9wWkluZGV4ICsgMVxuICAgICAgICAgICAgICAgICAgICB0aGlzLiNiYWNrZHJvcFBhbmVsID0gZW50cnkucGFuZWxcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBGYXN0RE9NLnNldFN0eWxlKGVudHJ5LnBhbmVsLmVsLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ6LWluZGV4XCI6IGAke3BhbmVsWkluZGV4fWAsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLXRcIjogcGFuZWxUb3AgIT0gbnVsbCA/IGAke3BhbmVsVG9wfXB4YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLXJcIjogcGFuZWxSaWdodCAhPSBudWxsID8gYCR7cGFuZWxSaWdodH1weGAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1wYW5lbC1iXCI6IHBhbmVsQm90dG9tICE9IG51bGwgPyBgJHtwYW5lbEJvdHRvbX1weGAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1wYW5lbC1sXCI6IHBhbmVsTGVmdCAhPSBudWxsID8gYCR7cGFuZWxMZWZ0fXB4YCA6IG51bGxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBGYXN0RE9NLnNldFN0eWxlKHRoaXMuI2VsLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1sYXlvdXQtdG9wXCI6IGAke3BhZGRpbmdUb3B9cHhgLFxuICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLWxheW91dC1yaWdodFwiOiBgJHtwYWRkaW5nUmlnaHR9cHhgLFxuICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLWxheW91dC1ib3R0b21cIjogYCR7cGFkZGluZ0JvdHRvbX1weGAsXG4gICAgICAgICAgICAgICAgXCItLWRvY2tpbmctbGF5b3V0LWxlZnRcIjogYCR7cGFkZGluZ0xlZnR9cHhgXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBpZiAodGhpcy5iYWNrZHJvcEVsKSB7XG4gICAgICAgICAgICAgICAgRmFzdERPTS5zZXRBdHRyaWJ1dGVzKHRoaXMuYmFja2Ryb3BFbC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlOiBiYWNrZHJvcFpJbmRleCA8IDAgPyBcImhpZGRlblwiIDogXCJ2aXNpYmxlXCJcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIEZhc3RET00uc2V0U3R5bGUodGhpcy5iYWNrZHJvcEVsLm5hdGl2ZUVsZW1lbnQsIHsgXCJ6LWluZGV4XCI6IGAke2JhY2tkcm9wWkluZGV4fWAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSGlkZUJhY2tkcm9wUGFuZWwoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgaWYgKHRoaXMuI2JhY2tkcm9wUGFuZWwpIHtcbiAgICAgICAgICAgIHRoaXMuI2JhY2tkcm9wUGFuZWwuY2xvc2UoKVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
35
+ args: [{ selector: "nu-docking", exportAs: "nuDocking", standalone: true, imports: [DockingBackdropComponent], template: `
36
+ <ng-content />
37
+ <nu-docking-backdrop [visible]="backdropVisible()" (click)="doCloseActiveOverPanel()"></nu-docking-backdrop>
38
+ `, styles: [":host{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto 1fr auto;position:relative;align-items:stretch;justify-items:stretch;overflow:clip}\n"] }]
39
+ }] });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbGF5b3V0L3NyYy9kb2NraW5nL2RvY2tpbmctbGF5b3V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFcEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUE7O0FBc0JqRSxNQUFNLE9BQU8sc0JBQXNCO0lBWG5DO1FBWUk7O1dBRUc7UUFDSCxzQ0FBc0M7UUFFN0IsV0FBTSxHQUFHLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1FBRS9DLG9CQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7WUFDNUIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUMxRSxDQUFDLENBQUMsQ0FBQTtRQUVPLG9CQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUE7WUFDckMsT0FBTyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7UUFDL0QsQ0FBQyxDQUFDLENBQUE7S0FRTDtJQU5HLHNCQUFzQjtRQUNsQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUE7UUFDMUMsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNkLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUN2QixDQUFDO0lBQ0wsQ0FBQzs4R0F2QlEsc0JBQXNCO2tHQUF0QixzQkFBc0IsNkZBTUcscUJBQXFCLHNFQVg3Qzs7O0tBR1QsOE9BTFMsd0JBQXdCOzsyRkFPekIsc0JBQXNCO2tCQVhsQyxTQUFTOytCQUNJLFlBQVksWUFDWixXQUFXLGNBQ1QsSUFBSSxXQUNQLENBQUMsd0JBQXdCLENBQUMsWUFFekI7OztLQUdUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgY29udGVudENoaWxkcmVuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQgeyBEb2NraW5nQmFja2Ryb3BDb21wb25lbnQgfSBmcm9tIFwiLi9kb2NraW5nLWJhY2tkcm9wLmNvbXBvbmVudFwiXG5pbXBvcnQgeyBEb2NraW5nUGFuZWxDb21wb25lbnQgfSBmcm9tIFwiLi9kb2NraW5nLXBhbmVsLmNvbXBvbmVudFwiXG5cbnR5cGUgRG9ja2luZ1ZlcnRpY2FsUG9zaXRpb24gPSBcInRvcFwiIHwgXCJtaWRkbGVcIiB8IFwiYm90dG9tXCJcbnR5cGUgRG9ja2luZ0hvcml6b250YWxQb3NpdG9uID0gXCJsZWZ0XCIgfCBcImNlbnRlclwiIHwgXCJyaWdodFwiXG50eXBlIERvY2tpbmdQb3NpdGlvbiA9IGAke0RvY2tpbmdWZXJ0aWNhbFBvc2l0aW9ufToke0RvY2tpbmdIb3Jpem9udGFsUG9zaXRvbn1gXG5leHBvcnQgdHlwZSBEb2NraW5nUmFuZ2UgPVxuICAgIHwgRG9ja2luZ1ZlcnRpY2FsUG9zaXRpb25cbiAgICB8IERvY2tpbmdIb3Jpem9udGFsUG9zaXRvblxuICAgIHwgRG9ja2luZ1Bvc2l0aW9uXG4gICAgfCBgJHtEb2NraW5nUG9zaXRpb259LSR7RG9ja2luZ1Bvc2l0aW9ufWBcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwibnUtZG9ja2luZ1wiLFxuICAgIGV4cG9ydEFzOiBcIm51RG9ja2luZ1wiLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0RvY2tpbmdCYWNrZHJvcENvbXBvbmVudF0sXG4gICAgc3R5bGVVcmw6IFwiLi9kb2NraW5nLWxheW91dC5jb21wb25lbnQuc2Nzc1wiLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgIDxudS1kb2NraW5nLWJhY2tkcm9wIFt2aXNpYmxlXT1cImJhY2tkcm9wVmlzaWJsZSgpXCIgKGNsaWNrKT1cImRvQ2xvc2VBY3RpdmVPdmVyUGFuZWwoKVwiPjwvbnUtZG9ja2luZy1iYWNrZHJvcD5cbiAgICBgXG59KVxuZXhwb3J0IGNsYXNzIERvY2tpbmdMYXlvdXRDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqIFRydWUgaWYgdSB3YW50IHRvIGFuaW1hdGUgcGFuZWwgb3Blbi9jbG9zZSB3aXRoIGBtb2RlPVwic2lkZVwiYFxuICAgICAqL1xuICAgIC8vIHJlYWRvbmx5IGFuaW1hdGVTaWRlID0gaW5wdXQoZmFsc2UpXG5cbiAgICByZWFkb25seSBwYW5lbHMgPSBjb250ZW50Q2hpbGRyZW4oRG9ja2luZ1BhbmVsQ29tcG9uZW50KVxuXG4gICAgcmVhZG9ubHkgYWN0aXZlT3ZlclBhbmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBwYW5lbHMgPSB0aGlzLnBhbmVscygpXG4gICAgICAgIHJldHVybiBwYW5lbHMuZmluZChwYW5lbCA9PiBwYW5lbC5tb2RlKCkgPT09IFwib3ZlclwiICYmIHBhbmVsLm9wZW5lZCgpKVxuICAgIH0pXG5cbiAgICByZWFkb25seSBiYWNrZHJvcFZpc2libGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuYWN0aXZlT3ZlclBhbmVsKClcbiAgICAgICAgcmV0dXJuIGFjdGl2ZSAhPSBudWxsID8gYWN0aXZlLmJhY2tkcm9wKCkgIT09IGZhbHNlIDogZmFsc2VcbiAgICB9KVxuXG4gICAgZG9DbG9zZUFjdGl2ZU92ZXJQYW5lbCgpIHtcbiAgICAgICAgY29uc3QgYWN0aXZlUGFuZWwgPSB0aGlzLmFjdGl2ZU92ZXJQYW5lbCgpXG4gICAgICAgIGlmIChhY3RpdmVQYW5lbCkge1xuICAgICAgICAgICAgYWN0aXZlUGFuZWwuY2xvc2UoKVxuICAgICAgICB9XG4gICAgfVxufVxuIl19