@ngutil/layout 0.0.3-dev.6 → 0.0.3-dev.7

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,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class DockingContentComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<DockingContentComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<DockingContentComponent, "nu-docking-content", never, {}, {}, never, ["*"], true, never>;
5
+ }
@@ -0,0 +1,24 @@
1
+ import { AfterViewInit, 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
+ import { DockingPanelComponent } from "./docking-panel.component";
6
+ import * as i0 from "@angular/core";
7
+ type DockingVerticalPosition = "top" | "middle" | "bottom";
8
+ type DockingHorizontalPositon = "left" | "center" | "right";
9
+ type DockingPosition = `${DockingVerticalPosition}:${DockingHorizontalPositon}`;
10
+ export type DockingRange = DockingVerticalPosition | DockingHorizontalPositon | DockingPosition | `${DockingPosition}-${DockingPosition}`;
11
+ export type DockingPositionMode = "absolute" | "fixed";
12
+ export declare class DockingLayoutComponent extends Destructible implements AfterViewInit, OnChanges {
13
+ #private;
14
+ contentOnly: boolean;
15
+ positionMode: DockingPositionMode;
16
+ contentComponent?: DockingContentComponent;
17
+ dockingPanels: QueryList<DockingPanelComponent>;
18
+ readonly panels: Observable<Array<DockingPanelComponent>>;
19
+ ngAfterViewInit(): void;
20
+ ngOnChanges(changes: SimpleChanges): void;
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<DockingLayoutComponent, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<DockingLayoutComponent, "nu-docking", never, { "contentOnly": { "alias": "contentOnly"; "required": false; }; "positionMode": { "alias": "positionMode"; "required": false; }; }, {}, ["contentComponent", "dockingPanels"], ["nu-docking-panel", "*", "nu-docking-content"], true, never>;
23
+ }
24
+ export {};
@@ -0,0 +1,39 @@
1
+ import { 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";
5
+ import * as i0 from "@angular/core";
6
+ export type DockingPanelState = "full" | "mini" | "invisible";
7
+ export type DockingPanelMode = "overlay" | "embedded";
8
+ export declare class DockingPanelComponent extends Destructible {
9
+ #private;
10
+ readonly el: ElementRef<any>;
11
+ set positionInput(val: L9Range | L9RangeName);
12
+ readonly position: BehaviorSubject<L9Range>;
13
+ set stateInput(val: DockingPanelState);
14
+ readonly state: BehaviorSubject<DockingPanelState>;
15
+ set modeInput(val: DockingPanelMode);
16
+ readonly mode: BehaviorSubject<DockingPanelMode>;
17
+ set fullSizeInput(val: NumberWithUnitInput);
18
+ set miniSizeInput(val: NumberWithUnitInput);
19
+ set minimizable(val: BooleanInput);
20
+ get minimizable(): boolean;
21
+ readonly fullSize: Observable<NumberWithUnit>;
22
+ readonly miniSize: Observable<NumberWithUnit>;
23
+ readonly changes: Observable<{
24
+ position: L9Range;
25
+ state: DockingPanelState;
26
+ mode: DockingPanelMode;
27
+ fullSize: NumberWithUnit;
28
+ miniSize: NumberWithUnit;
29
+ }>;
30
+ constructor();
31
+ open(): void;
32
+ close(): void;
33
+ minimize(): void;
34
+ static ɵfac: i0.ɵɵFactoryDeclaration<DockingPanelComponent, never>;
35
+ 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>;
36
+ }
37
+ type ChangesObservable = typeof DockingPanelComponent.prototype.changes;
38
+ export type DockingPanelChanges = ChangesObservable extends Observable<infer T> ? T : never;
39
+ export {};
@@ -0,0 +1,13 @@
1
+ import { DockingContentComponent } from "./docking-content.component";
2
+ import { DockingLayoutComponent } from "./docking-layout.component";
3
+ import { DockingPanelComponent } from "./docking-panel.component";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./docking-layout.component";
6
+ import * as i2 from "./docking-panel.component";
7
+ import * as i3 from "./docking-content.component";
8
+ export { DockingLayoutComponent, DockingPanelComponent, DockingContentComponent };
9
+ export declare class NuDockingLayout {
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<NuDockingLayout, never>;
11
+ static ɵmod: i0.ɵɵNgModuleDeclaration<NuDockingLayout, never, [typeof i1.DockingLayoutComponent, typeof i2.DockingPanelComponent, typeof i3.DockingContentComponent], [typeof i1.DockingLayoutComponent, typeof i2.DockingPanelComponent, typeof i3.DockingContentComponent]>;
12
+ static ɵinj: i0.ɵɵInjectorDeclaration<NuDockingLayout>;
13
+ }
@@ -0,0 +1,11 @@
1
+ import { Component } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class DockingContentComponent {
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: DockingContentComponent, isStandalone: true, selector: "nu-docking-content", 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:auto}\n"] }); }
6
+ }
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingContentComponent, decorators: [{
8
+ type: Component,
9
+ args: [{ standalone: true, selector: "nu-docking-content", template: `<ng-content></ng-content>`, styles: [":host{display:flex;flex-flow:column nowrap;align-items:stretch;box-sizing:border-box;flex:1;overflow:auto}\n"] }]
10
+ }] });
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xheW91dC9zcmMvZG9ja2luZy9kb2NraW5nLWNvbnRlbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7O0FBUXpDLE1BQU0sT0FBTyx1QkFBdUI7OEdBQXZCLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDhFQUZ0QiwyQkFBMkI7OzJGQUU1Qix1QkFBdUI7a0JBTm5DLFNBQVM7aUNBQ00sSUFBSSxZQUNOLG9CQUFvQixZQUVwQiwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6IFwibnUtZG9ja2luZy1jb250ZW50XCIsXG4gICAgc3R5bGVVcmw6IFwiLi9kb2NraW5nLWNvbnRlbnQuY29tcG9uZW50LnNjc3NcIixcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gXG59KVxuZXhwb3J0IGNsYXNzIERvY2tpbmdDb250ZW50Q29tcG9uZW50IHt9XG4iXX0=
@@ -0,0 +1,265 @@
1
+ import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, ElementRef, inject, Input, QueryList } from "@angular/core";
2
+ import { combineLatest, map, shareReplay, startWith, Subject, switchMap } from "rxjs";
3
+ import { Destructible, NumberWithUnit } from "@ngutil/common";
4
+ import { FastDOM } from "../util";
5
+ import { DockingContentComponent } from "./docking-content.component";
6
+ import { DockingPanelComponent } from "./docking-panel.component";
7
+ import * as i0 from "@angular/core";
8
+ const EMBEDDED_ZINDEX = 20;
9
+ const OVERLAY_ZINDEX = EMBEDDED_ZINDEX * 2;
10
+ // interface PanelRefChanges {
11
+ // ref: PanelRef
12
+ // changes: DockingPanelChanges
13
+ // }
14
+ // class PanelRef {
15
+ // style: Partial<CSSStyleDeclaration> = {}
16
+ // readonly changes: Observable<PanelRefChanges>
17
+ // constructor(public readonly panel: DockingPanelDirective) {
18
+ // this.changes = panel.changes.pipe(
19
+ // map(changes => {
20
+ // return { ref: this, changes }
21
+ // })
22
+ // )
23
+ // }
24
+ // }
25
+ export class DockingLayoutComponent extends Destructible {
26
+ constructor() {
27
+ super(...arguments);
28
+ this.#el = inject((ElementRef));
29
+ this.contentOnly = false;
30
+ this.positionMode = "absolute";
31
+ this.#reflow = new Subject();
32
+ }
33
+ #el;
34
+ #reflow;
35
+ ngAfterViewInit() {
36
+ // eslint-disable-next-line prettier/prettier
37
+ this.panels = this.dockingPanels.changes.pipe(startWith(null), map(() => this.dockingPanels.toArray()), shareReplay(1));
38
+ // this.panels.subscribe(panels => console.log({ panels }))
39
+ this.d
40
+ .sub(combineLatest({ panels: this.panels, reflow: this.#reflow.pipe(startWith(null)) }))
41
+ .pipe(switchMap(({ panels }) => combineLatest(panels.map(panel => panel.changes.pipe(map(changes => {
42
+ return { panel, changes };
43
+ }))))))
44
+ .subscribe(this.#layout.bind(this));
45
+ // this.d
46
+ // .sub(merge(this.dockingPanels.changes, this.#reflow))
47
+ // .pipe(
48
+ // startWith(null),
49
+ // map(() => this.dockingPanels.map(panel => new PanelRef(panel))),
50
+ // switchMap(refs => combineLatest(refs.map(ref => ref.changes))),
51
+ // map(changes => {
52
+ // this.#layout(changes)
53
+ // return changes.map(c => c.ref)
54
+ // })
55
+ // )
56
+ // .subscribe(this.panels)
57
+ }
58
+ ngOnChanges(changes) {
59
+ if ("contentOnly" in changes || "positionMode" in changes) {
60
+ this.#reflow.next();
61
+ }
62
+ }
63
+ #layout(entries) {
64
+ console.log("layout", entries);
65
+ let paddingTop = 0;
66
+ let paddingRight = 0;
67
+ let paddingBottom = 0;
68
+ let paddingLeft = 0;
69
+ let embeddedZIndex = EMBEDDED_ZINDEX;
70
+ let overlayZIndex = OVERLAY_ZINDEX;
71
+ if (this.contentOnly) {
72
+ // TODO:...
73
+ }
74
+ else {
75
+ for (const entry of entries) {
76
+ const panelState = entry.changes;
77
+ const panelSize = panelState.state === "full"
78
+ ? panelState.fullSize.value
79
+ : panelState.state === "mini"
80
+ ? panelState.miniSize.value
81
+ : 0;
82
+ const isHorizontal = panelState.position.orient === "horizontal";
83
+ const isEmbedded = panelState.mode === "embedded";
84
+ let panelTop = null;
85
+ let panelRight = null;
86
+ let panelBottom = null;
87
+ let panelLeft = null;
88
+ if (isHorizontal) {
89
+ panelLeft = 0;
90
+ panelRight = 0;
91
+ if (panelState.position.cells[0].v === "top") {
92
+ if (isEmbedded) {
93
+ paddingTop = Math.max(paddingTop, panelSize);
94
+ }
95
+ panelTop = 0;
96
+ }
97
+ else if (panelState.position.cells[0].v === "bottom") {
98
+ if (isEmbedded) {
99
+ paddingBottom = Math.max(paddingBottom, panelSize);
100
+ }
101
+ panelBottom = 0;
102
+ }
103
+ }
104
+ else {
105
+ panelTop = 0;
106
+ panelBottom = 0;
107
+ if (panelState.position.cells[0].h === "left") {
108
+ if (isEmbedded) {
109
+ paddingLeft = Math.max(paddingLeft, panelSize);
110
+ }
111
+ panelLeft = 0;
112
+ }
113
+ else if (panelState.position.cells[0].h === "right") {
114
+ if (isEmbedded) {
115
+ paddingRight = Math.max(paddingRight, panelSize);
116
+ }
117
+ panelRight = 0;
118
+ }
119
+ }
120
+ const panelGivenSize = panelState.state === "full"
121
+ ? panelState.fullSize
122
+ : panelState.state === "mini"
123
+ ? panelState.miniSize
124
+ : new NumberWithUnit(0, "px");
125
+ FastDOM.setStyle(entry.panel.el.nativeElement, {
126
+ "z-index": `${isEmbedded ? embeddedZIndex++ : overlayZIndex++}`,
127
+ "--docking-panel-t": panelTop != null ? `${panelTop}px` : null,
128
+ "--docking-panel-r": panelRight != null ? `${panelRight}px` : null,
129
+ "--docking-panel-b": panelBottom != null ? `${panelBottom}px` : null,
130
+ "--docking-panel-l": panelLeft != null ? `${panelLeft}px` : null,
131
+ "--docking-panel-w": !isHorizontal
132
+ ? `${panelGivenSize.unit === "auto" ? "auto" : panelGivenSize}`
133
+ : null,
134
+ "--docking-panel-h": isHorizontal
135
+ ? `${panelGivenSize.unit === "auto" ? "auto" : panelGivenSize}`
136
+ : null,
137
+ "--docking-panel-real-w": !isHorizontal ? `${panelSize}px` : null,
138
+ "--docking-panel-real-h": isHorizontal ? `${panelSize}px` : null
139
+ });
140
+ }
141
+ console.log({ paddingTop, paddingRight, paddingBottom, paddingLeft });
142
+ FastDOM.setStyle(this.#el.nativeElement, {
143
+ "--docking-layout-top": `${paddingTop}px`,
144
+ "--docking-layout-right": `${paddingRight}px`,
145
+ "--docking-layout-bottom": `${paddingBottom}px`,
146
+ "--docking-layout-left": `${paddingLeft}px`
147
+ });
148
+ }
149
+ }
150
+ #layoutOld(entries) {
151
+ // let paddingTop = 0
152
+ // let paddingRight = 0
153
+ // let paddingBottom = 0
154
+ // let paddingLeft = 0
155
+ // if (!this.contentOnly) {
156
+ // let embeddedZIndex = EMBEDDED_ZINDEX
157
+ // let overlayZIndex = OVERLAY_ZINDEX
158
+ // const leftRight: PanelRefChanges[] = entries.filter(v =>
159
+ // ["left", "right"].includes(v.changes.position.side)
160
+ // )
161
+ // const topBottom: PanelRefChanges[] = entries.filter(v =>
162
+ // ["top", "bottom"].includes(v.changes.position.side)
163
+ // )
164
+ // for (const entry of entries) {
165
+ // const changes = entry.changes
166
+ // const ref = entry.ref
167
+ // if (changes.mode === "embedded") {
168
+ // ref.style.zIndex = `${embeddedZIndex++}`
169
+ // } else if (changes.mode === "overlay") {
170
+ // ref.style.zIndex = `${overlayZIndex++}`
171
+ // }
172
+ // }
173
+ // for (const entry of leftRight) {
174
+ // const changes = entry.changes
175
+ // const ref = entry.ref
176
+ // const padding =
177
+ // changes.mode === "embedded"
178
+ // ? changes.state === "full"
179
+ // ? changes.fullSize
180
+ // : changes.state === "mini"
181
+ // ? changes.miniSize
182
+ // : 0
183
+ // : 0
184
+ // ref.style.top = "0"
185
+ // ref.style.bottom = "0"
186
+ // if (changes.position.side === "left") {
187
+ // paddingLeft = Math.max(paddingLeft, padding)
188
+ // ref.style.left = "0"
189
+ // ref.style.right = ""
190
+ // } else {
191
+ // paddingRight = Math.max(paddingRight, padding)
192
+ // ref.style.right = "0"
193
+ // ref.style.left = ""
194
+ // }
195
+ // }
196
+ // for (const entry of topBottom) {
197
+ // const changes = entry.changes
198
+ // const ref = entry.ref
199
+ // const padding =
200
+ // changes.mode === "embedded"
201
+ // ? changes.state === "full"
202
+ // ? changes.fullSize
203
+ // : changes.state === "mini"
204
+ // ? changes.miniSize
205
+ // : 0
206
+ // : 0
207
+ // if (changes.mode === "embedded") {
208
+ // ref.style.left = `${paddingLeft}px`
209
+ // ref.style.right = `${paddingRight}px`
210
+ // } else {
211
+ // ref.style.left = "0"
212
+ // ref.style.right = "0"
213
+ // }
214
+ // if (changes.position?.cells[0].v === "top") {
215
+ // paddingTop = Math.max(paddingTop, padding)
216
+ // ref.style.top = "0"
217
+ // ref.style.bottom = ""
218
+ // } else {
219
+ // paddingBottom = Math.max(paddingBottom, padding)
220
+ // ref.style.bottom = `0`
221
+ // ref.style.top = ""
222
+ // }
223
+ // }
224
+ // }
225
+ // const cel = this.contentEl.nativeElement
226
+ // cel.style.padding = `${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px`
227
+ }
228
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingLayoutComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
229
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: DockingLayoutComponent, isStandalone: true, selector: "nu-docking", inputs: { contentOnly: "contentOnly", positionMode: "positionMode" }, queries: [{ propertyName: "contentComponent", first: true, predicate: DockingContentComponent, descendants: true }, { propertyName: "dockingPanels", predicate: DockingPanelComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
230
+ <ng-content select="nu-docking-panel"></ng-content>
231
+
232
+ @if (!contentComponent) {
233
+ <nu-docking-content>
234
+ <ng-content></ng-content>
235
+ </nu-docking-content>
236
+ } @else {
237
+ <ng-content select="nu-docking-content"></ng-content>
238
+ }
239
+ `, 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, .2s);---docking-layout-anim-ease: var(--docking-layout-anim-ease, ease-out);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" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
240
+ }
241
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingLayoutComponent, decorators: [{
242
+ type: Component,
243
+ args: [{ selector: "nu-docking", standalone: true, imports: [DockingContentComponent], template: `
244
+ <ng-content select="nu-docking-panel"></ng-content>
245
+
246
+ @if (!contentComponent) {
247
+ <nu-docking-content>
248
+ <ng-content></ng-content>
249
+ </nu-docking-content>
250
+ } @else {
251
+ <ng-content select="nu-docking-content"></ng-content>
252
+ }
253
+ `, 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, .2s);---docking-layout-anim-ease: var(--docking-layout-anim-ease, ease-out);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"] }]
254
+ }], propDecorators: { contentOnly: [{
255
+ type: Input
256
+ }], positionMode: [{
257
+ type: Input
258
+ }], contentComponent: [{
259
+ type: ContentChild,
260
+ args: [DockingContentComponent]
261
+ }], dockingPanels: [{
262
+ type: ContentChildren,
263
+ args: [DockingPanelComponent]
264
+ }] } });
265
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbGF5b3V0L3NyYy9kb2NraW5nL2RvY2tpbmctbGF5b3V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLFNBQVMsRUFFWixNQUFNLGVBQWUsQ0FBQTtBQUV0QixPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFakcsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUU3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ2pDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ3JFLE9BQU8sRUFBNEIscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTs7QUFhM0YsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFBO0FBQzFCLE1BQU0sY0FBYyxHQUFHLGVBQWUsR0FBRyxDQUFDLENBQUE7QUFJMUMsOEJBQThCO0FBQzlCLG9CQUFvQjtBQUNwQixtQ0FBbUM7QUFDbkMsSUFBSTtBQUVKLG1CQUFtQjtBQUNuQiwrQ0FBK0M7QUFDL0Msb0RBQW9EO0FBQ3BELGtFQUFrRTtBQUNsRSw2Q0FBNkM7QUFDN0MsK0JBQStCO0FBQy9CLGdEQUFnRDtBQUNoRCxpQkFBaUI7QUFDakIsWUFBWTtBQUNaLFFBQVE7QUFDUixJQUFJO0FBb0JKLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxZQUFZO0lBbEJ4RDs7UUFtQmEsUUFBRyxHQUFHLE1BQU0sQ0FBQyxDQUFBLFVBQXVCLENB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Q3JDLGlDQUFpQztRQUNqQyxZQUFZO1FBQ1osUUFBUTtRQUNSLElBQUk7UUFDSiwyQ0FBMkM7UUFDM0MsOEZBQThGO0lBQ2xHLENBQUM7OEdBek9RLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDBMQU1qQix1QkFBdUIsbUVBQ3BCLHFCQUFxQix5RUFyQjVCOzs7Ozs7Ozs7O0tBVVQscXhCQVhTLHVCQUF1Qjs7MkZBZXhCLHNCQUFzQjtrQkFsQmxDLFNBQVM7K0JBQ0ksWUFBWSxjQUNWLElBQUksV0FDUCxDQUFDLHVCQUF1QixDQUFDLFlBQ3hCOzs7Ozs7Ozs7O0tBVVQsbUJBRWdCLHVCQUF1QixDQUFDLE1BQU07OEJBS3RDLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFaUMsZ0JBQWdCO3NCQUF0RCxZQUFZO3VCQUFDLHVCQUF1QjtnQkFDRyxhQUFhO3NCQUFwRCxlQUFlO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIFN1YmplY3QsIHN3aXRjaE1hcCB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgRGVzdHJ1Y3RpYmxlLCBOdW1iZXJXaXRoVW5pdCB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbmltcG9ydCB7IEZhc3RET00gfSBmcm9tIFwiLi4vdXRpbFwiXG5pbXBvcnQgeyBEb2NraW5nQ29udGVudENvbXBvbmVudCB9IGZyb20gXCIuL2RvY2tpbmctY29udGVudC5jb21wb25lbnRcIlxuaW1wb3J0IHsgdHlwZSBEb2NraW5nUGFuZWxDaGFuZ2VzLCBEb2NraW5nUGFuZWxDb21wb25lbnQgfSBmcm9tIFwiLi9kb2NraW5nLXBhbmVsLmNvbXBvbmVudFwiXG5cbnR5cGUgRG9ja2luZ1ZlcnRpY2FsUG9zaXRpb24gPSBcInRvcFwiIHwgXCJtaWRkbGVcIiB8IFwiYm90dG9tXCJcbnR5cGUgRG9ja2luZ0hvcml6b250YWxQb3NpdG9uID0gXCJsZWZ0XCIgfCBcImNlbnRlclwiIHwgXCJyaWdodFwiXG50eXBlIERvY2tpbmdQb3NpdGlvbiA9IGAke0RvY2tpbmdWZXJ0aWNhbFBvc2l0aW9ufToke0RvY2tpbmdIb3Jpem9udGFsUG9zaXRvbn1gXG5leHBvcnQgdHlwZSBEb2NraW5nUmFuZ2UgPVxuICAgIHwgRG9ja2luZ1ZlcnRpY2FsUG9zaXRpb25cbiAgICB8IERvY2tpbmdIb3Jpem9udGFsUG9zaXRvblxuICAgIHwgRG9ja2luZ1Bvc2l0aW9uXG4gICAgfCBgJHtEb2NraW5nUG9zaXRpb259LSR7RG9ja2luZ1Bvc2l0aW9ufWBcblxuZXhwb3J0IHR5cGUgRG9ja2luZ1Bvc2l0aW9uTW9kZSA9IFwiYWJzb2x1dGVcIiB8IFwiZml4ZWRcIlxuXG5jb25zdCBFTUJFRERFRF9aSU5ERVggPSAyMFxuY29uc3QgT1ZFUkxBWV9aSU5ERVggPSBFTUJFRERFRF9aSU5ERVggKiAyXG5cbnR5cGUgUGFuZWxzQ2hhbmdlcyA9IEFycmF5PHsgcGFuZWw6IERvY2tpbmdQYW5lbENvbXBvbmVudDsgY2hhbmdlczogRG9ja2luZ1BhbmVsQ2hhbmdlcyB9PlxuXG4vLyBpbnRlcmZhY2UgUGFuZWxSZWZDaGFuZ2VzIHtcbi8vICAgICByZWY6IFBhbmVsUmVmXG4vLyAgICAgY2hhbmdlczogRG9ja2luZ1BhbmVsQ2hhbmdlc1xuLy8gfVxuXG4vLyBjbGFzcyBQYW5lbFJlZiB7XG4vLyAgICAgc3R5bGU6IFBhcnRpYWw8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gPSB7fVxuLy8gICAgIHJlYWRvbmx5IGNoYW5nZXM6IE9ic2VydmFibGU8UGFuZWxSZWZDaGFuZ2VzPlxuLy8gICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBwYW5lbDogRG9ja2luZ1BhbmVsRGlyZWN0aXZlKSB7XG4vLyAgICAgICAgIHRoaXMuY2hhbmdlcyA9IHBhbmVsLmNoYW5nZXMucGlwZShcbi8vICAgICAgICAgICAgIG1hcChjaGFuZ2VzID0+IHtcbi8vICAgICAgICAgICAgICAgICByZXR1cm4geyByZWY6IHRoaXMsIGNoYW5nZXMgfVxuLy8gICAgICAgICAgICAgfSlcbi8vICAgICAgICAgKVxuLy8gICAgIH1cbi8vIH1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwibnUtZG9ja2luZ1wiLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0RvY2tpbmdDb250ZW50Q29tcG9uZW50XSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJudS1kb2NraW5nLXBhbmVsXCI+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIEBpZiAoIWNvbnRlbnRDb21wb25lbnQpIHtcbiAgICAgICAgICAgIDxudS1kb2NraW5nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPC9udS1kb2NraW5nLWNvbnRlbnQ+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibnUtZG9ja2luZy1jb250ZW50XCI+PC9uZy1jb250ZW50PlxuICAgICAgICB9XG4gICAgYCxcbiAgICBzdHlsZVVybDogXCIuL2RvY2tpbmctbGF5b3V0LmNvbXBvbmVudC5zY3NzXCIsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRG9ja2luZ0xheW91dENvbXBvbmVudCBleHRlbmRzIERlc3RydWN0aWJsZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gICAgcmVhZG9ubHkgI2VsID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KVxuXG4gICAgQElucHV0KCkgY29udGVudE9ubHkgPSBmYWxzZVxuICAgIEBJbnB1dCgpIHBvc2l0aW9uTW9kZTogRG9ja2luZ1Bvc2l0aW9uTW9kZSA9IFwiYWJzb2x1dGVcIlxuXG4gICAgQENvbnRlbnRDaGlsZChEb2NraW5nQ29udGVudENvbXBvbmVudCkgY29udGVudENvbXBvbmVudD86IERvY2tpbmdDb250ZW50Q29tcG9uZW50XG4gICAgQENvbnRlbnRDaGlsZHJlbihEb2NraW5nUGFuZWxDb21wb25lbnQpIGRvY2tpbmdQYW5lbHMhOiBRdWVyeUxpc3Q8RG9ja2luZ1BhbmVsQ29tcG9uZW50PlxuXG4gICAgLy8gcmVhZG9ubHkgcGFuZWxzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYW5lbFJlZltdPihbXSlcbiAgICByZWFkb25seSBwYW5lbHMhOiBPYnNlcnZhYmxlPEFycmF5PERvY2tpbmdQYW5lbENvbXBvbmVudD4+XG5cbiAgICAjcmVmbG93ID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJldHRpZXIvcHJldHRpZXJcbiAgICAgICAgKHRoaXMgYXMgeyBwYW5lbHM6IE9ic2VydmFibGU8QXJyYXk8RG9ja2luZ1BhbmVsQ29tcG9uZW50Pj4gfSkucGFuZWxzID0gdGhpcy5kb2NraW5nUGFuZWxzLmNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmRvY2tpbmdQYW5lbHMudG9BcnJheSgpKSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgIClcblxuICAgICAgICAvLyB0aGlzLnBhbmVscy5zdWJzY3JpYmUocGFuZWxzID0+IGNvbnNvbGUubG9nKHsgcGFuZWxzIH0pKVxuXG4gICAgICAgIHRoaXMuZFxuICAgICAgICAgICAgLnN1Yihjb21iaW5lTGF0ZXN0KHsgcGFuZWxzOiB0aGlzLnBhbmVscywgcmVmbG93OiB0aGlzLiNyZWZsb3cucGlwZShzdGFydFdpdGgobnVsbCkpIH0pKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCh7IHBhbmVscyB9KSA9PlxuICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxzLm1hcChwYW5lbCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsLmNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKGNoYW5nZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcGFuZWwsIGNoYW5nZXMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy4jbGF5b3V0LmJpbmQodGhpcykpXG5cbiAgICAgICAgLy8gdGhpcy5kXG4gICAgICAgIC8vICAgICAuc3ViKG1lcmdlKHRoaXMuZG9ja2luZ1BhbmVscy5jaGFuZ2VzLCB0aGlzLiNyZWZsb3cpKVxuICAgICAgICAvLyAgICAgLnBpcGUoXG4gICAgICAgIC8vICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICAvLyAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmRvY2tpbmdQYW5lbHMubWFwKHBhbmVsID0+IG5ldyBQYW5lbFJlZihwYW5lbCkpKSxcbiAgICAgICAgLy8gICAgICAgICBzd2l0Y2hNYXAocmVmcyA9PiBjb21iaW5lTGF0ZXN0KHJlZnMubWFwKHJlZiA9PiByZWYuY2hhbmdlcykpKSxcbiAgICAgICAgLy8gICAgICAgICBtYXAoY2hhbmdlcyA9PiB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHRoaXMuI2xheW91dChjaGFuZ2VzKVxuICAgICAgICAvLyAgICAgICAgICAgICByZXR1cm4gY2hhbmdlcy5tYXAoYyA9PiBjLnJlZilcbiAgICAgICAgLy8gICAgICAgICB9KVxuICAgICAgICAvLyAgICAgKVxuICAgICAgICAvLyAgICAgLnN1YnNjcmliZSh0aGlzLnBhbmVscylcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChcImNvbnRlbnRPbmx5XCIgaW4gY2hhbmdlcyB8fCBcInBvc2l0aW9uTW9kZVwiIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuI3JlZmxvdy5uZXh0KClcbiAgICAgICAgfVxuICAgIH1cblxuICAgICNsYXlvdXQoZW50cmllczogUGFuZWxzQ2hhbmdlcykge1xuICAgICAgICBjb25zb2xlLmxvZyhcImxheW91dFwiLCBlbnRyaWVzKVxuICAgICAgICBsZXQgcGFkZGluZ1RvcCA9IDBcbiAgICAgICAgbGV0IHBhZGRpbmdSaWdodCA9IDBcbiAgICAgICAgbGV0IHBhZGRpbmdCb3R0b20gPSAwXG4gICAgICAgIGxldCBwYWRkaW5nTGVmdCA9IDBcbiAgICAgICAgbGV0IGVtYmVkZGVkWkluZGV4ID0gRU1CRURERURfWklOREVYXG4gICAgICAgIGxldCBvdmVybGF5WkluZGV4ID0gT1ZFUkxBWV9aSU5ERVhcblxuICAgICAgICBpZiAodGhpcy5jb250ZW50T25seSkge1xuICAgICAgICAgICAgLy8gVE9ETzouLi5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhbmVsU3RhdGUgPSBlbnRyeS5jaGFuZ2VzXG4gICAgICAgICAgICAgICAgY29uc3QgcGFuZWxTaXplID1cbiAgICAgICAgICAgICAgICAgICAgcGFuZWxTdGF0ZS5zdGF0ZSA9PT0gXCJmdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFuZWxTdGF0ZS5mdWxsU2l6ZS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwYW5lbFN0YXRlLnN0YXRlID09PSBcIm1pbmlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHBhbmVsU3RhdGUubWluaVNpemUudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwXG5cbiAgICAgICAgICAgICAgICBjb25zdCBpc0hvcml6b250YWwgPSBwYW5lbFN0YXRlLnBvc2l0aW9uLm9yaWVudCA9PT0gXCJob3Jpem9udGFsXCJcbiAgICAgICAgICAgICAgICBjb25zdCBpc0VtYmVkZGVkID0gcGFuZWxTdGF0ZS5tb2RlID09PSBcImVtYmVkZGVkXCJcblxuICAgICAgICAgICAgICAgIGxldCBwYW5lbFRvcCA9IG51bGxcbiAgICAgICAgICAgICAgICBsZXQgcGFuZWxSaWdodCA9IG51bGxcbiAgICAgICAgICAgICAgICBsZXQgcGFuZWxCb3R0b20gPSBudWxsXG4gICAgICAgICAgICAgICAgbGV0IHBhbmVsTGVmdCA9IG51bGxcblxuICAgICAgICAgICAgICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFuZWxMZWZ0ID0gMFxuICAgICAgICAgICAgICAgICAgICBwYW5lbFJpZ2h0ID0gMFxuICAgICAgICAgICAgICAgICAgICBpZiAocGFuZWxTdGF0ZS5wb3NpdGlvbi5jZWxsc1swXS52ID09PSBcInRvcFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNFbWJlZGRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3AgPSBNYXRoLm1heChwYWRkaW5nVG9wLCBwYW5lbFNpemUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYW5lbFRvcCA9IDBcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYW5lbFN0YXRlLnBvc2l0aW9uLmNlbGxzWzBdLnYgPT09IFwiYm90dG9tXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0VtYmVkZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSA9IE1hdGgubWF4KHBhZGRpbmdCb3R0b20sIHBhbmVsU2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsQm90dG9tID0gMFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGFuZWxUb3AgPSAwXG4gICAgICAgICAgICAgICAgICAgIHBhbmVsQm90dG9tID0gMFxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYW5lbFN0YXRlLnBvc2l0aW9uLmNlbGxzWzBdLmggPT09IFwibGVmdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNFbWJlZGRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0ID0gTWF0aC5tYXgocGFkZGluZ0xlZnQsIHBhbmVsU2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsTGVmdCA9IDBcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYW5lbFN0YXRlLnBvc2l0aW9uLmNlbGxzWzBdLmggPT09IFwicmlnaHRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRW1iZWRkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQgPSBNYXRoLm1heChwYWRkaW5nUmlnaHQsIHBhbmVsU2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsUmlnaHQgPSAwXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBwYW5lbEdpdmVuU2l6ZSA9XG4gICAgICAgICAgICAgICAgICAgIHBhbmVsU3RhdGUuc3RhdGUgPT09IFwiZnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHBhbmVsU3RhdGUuZnVsbFNpemVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcGFuZWxTdGF0ZS5zdGF0ZSA9PT0gXCJtaW5pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwYW5lbFN0YXRlLm1pbmlTaXplXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogbmV3IE51bWJlcldpdGhVbml0KDAsIFwicHhcIilcblxuICAgICAgICAgICAgICAgIEZhc3RET00uc2V0U3R5bGUoZW50cnkucGFuZWwuZWwubmF0aXZlRWxlbWVudCwge1xuICAgICAgICAgICAgICAgICAgICBcInotaW5kZXhcIjogYCR7aXNFbWJlZGRlZCA/IGVtYmVkZGVkWkluZGV4KysgOiBvdmVybGF5WkluZGV4Kyt9YCxcbiAgICAgICAgICAgICAgICAgICAgXCItLWRvY2tpbmctcGFuZWwtdFwiOiBwYW5lbFRvcCAhPSBudWxsID8gYCR7cGFuZWxUb3B9cHhgIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgXCItLWRvY2tpbmctcGFuZWwtclwiOiBwYW5lbFJpZ2h0ICE9IG51bGwgPyBgJHtwYW5lbFJpZ2h0fXB4YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLWJcIjogcGFuZWxCb3R0b20gIT0gbnVsbCA/IGAke3BhbmVsQm90dG9tfXB4YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLWxcIjogcGFuZWxMZWZ0ICE9IG51bGwgPyBgJHtwYW5lbExlZnR9cHhgIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgXCItLWRvY2tpbmctcGFuZWwtd1wiOiAhaXNIb3Jpem9udGFsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGAke3BhbmVsR2l2ZW5TaXplLnVuaXQgPT09IFwiYXV0b1wiID8gXCJhdXRvXCIgOiBwYW5lbEdpdmVuU2l6ZX1gXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLWhcIjogaXNIb3Jpem9udGFsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGAke3BhbmVsR2l2ZW5TaXplLnVuaXQgPT09IFwiYXV0b1wiID8gXCJhdXRvXCIgOiBwYW5lbEdpdmVuU2l6ZX1gXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLXJlYWwtd1wiOiAhaXNIb3Jpem9udGFsID8gYCR7cGFuZWxTaXplfXB4YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLXJlYWwtaFwiOiBpc0hvcml6b250YWwgPyBgJHtwYW5lbFNpemV9cHhgIDogbnVsbFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHsgcGFkZGluZ1RvcCwgcGFkZGluZ1JpZ2h0LCBwYWRkaW5nQm90dG9tLCBwYWRkaW5nTGVmdCB9KVxuXG4gICAgICAgICAgICBGYXN0RE9NLnNldFN0eWxlKHRoaXMuI2VsLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1sYXlvdXQtdG9wXCI6IGAke3BhZGRpbmdUb3B9cHhgLFxuICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLWxheW91dC1yaWdodFwiOiBgJHtwYWRkaW5nUmlnaHR9cHhgLFxuICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLWxheW91dC1ib3R0b21cIjogYCR7cGFkZGluZ0JvdHRvbX1weGAsXG4gICAgICAgICAgICAgICAgXCItLWRvY2tpbmctbGF5b3V0LWxlZnRcIjogYCR7cGFkZGluZ0xlZnR9cHhgXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgI2xheW91dE9sZChlbnRyaWVzOiBQYW5lbHNDaGFuZ2VzKSB7XG4gICAgICAgIC8vIGxldCBwYWRkaW5nVG9wID0gMFxuICAgICAgICAvLyBsZXQgcGFkZGluZ1JpZ2h0ID0gMFxuICAgICAgICAvLyBsZXQgcGFkZGluZ0JvdHRvbSA9IDBcbiAgICAgICAgLy8gbGV0IHBhZGRpbmdMZWZ0ID0gMFxuICAgICAgICAvLyBpZiAoIXRoaXMuY29udGVudE9ubHkpIHtcbiAgICAgICAgLy8gICAgIGxldCBlbWJlZGRlZFpJbmRleCA9IEVNQkVEREVEX1pJTkRFWFxuICAgICAgICAvLyAgICAgbGV0IG92ZXJsYXlaSW5kZXggPSBPVkVSTEFZX1pJTkRFWFxuICAgICAgICAvLyAgICAgY29uc3QgbGVmdFJpZ2h0OiBQYW5lbFJlZkNoYW5nZXNbXSA9IGVudHJpZXMuZmlsdGVyKHYgPT5cbiAgICAgICAgLy8gICAgICAgICBbXCJsZWZ0XCIsIFwicmlnaHRcIl0uaW5jbHVkZXModi5jaGFuZ2VzLnBvc2l0aW9uLnNpZGUpXG4gICAgICAgIC8vICAgICApXG4gICAgICAgIC8vICAgICBjb25zdCB0b3BCb3R0b206IFBhbmVsUmVmQ2hhbmdlc1tdID0gZW50cmllcy5maWx0ZXIodiA9PlxuICAgICAgICAvLyAgICAgICAgIFtcInRvcFwiLCBcImJvdHRvbVwiXS5pbmNsdWRlcyh2LmNoYW5nZXMucG9zaXRpb24uc2lkZSlcbiAgICAgICAgLy8gICAgIClcbiAgICAgICAgLy8gICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAvLyAgICAgICAgIGNvbnN0IGNoYW5nZXMgPSBlbnRyeS5jaGFuZ2VzXG4gICAgICAgIC8vICAgICAgICAgY29uc3QgcmVmID0gZW50cnkucmVmXG4gICAgICAgIC8vICAgICAgICAgaWYgKGNoYW5nZXMubW9kZSA9PT0gXCJlbWJlZGRlZFwiKSB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS56SW5kZXggPSBgJHtlbWJlZGRlZFpJbmRleCsrfWBcbiAgICAgICAgLy8gICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZXMubW9kZSA9PT0gXCJvdmVybGF5XCIpIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgcmVmLnN0eWxlLnpJbmRleCA9IGAke292ZXJsYXlaSW5kZXgrK31gXG4gICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBsZWZ0UmlnaHQpIHtcbiAgICAgICAgLy8gICAgICAgICBjb25zdCBjaGFuZ2VzID0gZW50cnkuY2hhbmdlc1xuICAgICAgICAvLyAgICAgICAgIGNvbnN0IHJlZiA9IGVudHJ5LnJlZlxuICAgICAgICAvLyAgICAgICAgIGNvbnN0IHBhZGRpbmcgPVxuICAgICAgICAvLyAgICAgICAgICAgICBjaGFuZ2VzLm1vZGUgPT09IFwiZW1iZWRkZWRcIlxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgPyBjaGFuZ2VzLnN0YXRlID09PSBcImZ1bGxcIlxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgID8gY2hhbmdlcy5mdWxsU2l6ZVxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIDogY2hhbmdlcy5zdGF0ZSA9PT0gXCJtaW5pXCJcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgID8gY2hhbmdlcy5taW5pU2l6ZVxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgOiAwXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICA6IDBcbiAgICAgICAgLy8gICAgICAgICByZWYuc3R5bGUudG9wID0gXCIwXCJcbiAgICAgICAgLy8gICAgICAgICByZWYuc3R5bGUuYm90dG9tID0gXCIwXCJcbiAgICAgICAgLy8gICAgICAgICBpZiAoY2hhbmdlcy5wb3NpdGlvbi5zaWRlID09PSBcImxlZnRcIikge1xuICAgICAgICAvLyAgICAgICAgICAgICBwYWRkaW5nTGVmdCA9IE1hdGgubWF4KHBhZGRpbmdMZWZ0LCBwYWRkaW5nKVxuICAgICAgICAvLyAgICAgICAgICAgICByZWYuc3R5bGUubGVmdCA9IFwiMFwiXG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS5yaWdodCA9IFwiXCJcbiAgICAgICAgLy8gICAgICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgICAgICAgICBwYWRkaW5nUmlnaHQgPSBNYXRoLm1heChwYWRkaW5nUmlnaHQsIHBhZGRpbmcpXG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS5yaWdodCA9IFwiMFwiXG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS5sZWZ0ID0gXCJcIlxuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gICAgIGZvciAoY29uc3QgZW50cnkgb2YgdG9wQm90dG9tKSB7XG4gICAgICAgIC8vICAgICAgICAgY29uc3QgY2hhbmdlcyA9IGVudHJ5LmNoYW5nZXNcbiAgICAgICAgLy8gICAgICAgICBjb25zdCByZWYgPSBlbnRyeS5yZWZcbiAgICAgICAgLy8gICAgICAgICBjb25zdCBwYWRkaW5nID1cbiAgICAgICAgLy8gICAgICAgICAgICAgY2hhbmdlcy5tb2RlID09PSBcImVtYmVkZGVkXCJcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgID8gY2hhbmdlcy5zdGF0ZSA9PT0gXCJmdWxsXCJcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICA/IGNoYW5nZXMuZnVsbFNpemVcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICA6IGNoYW5nZXMuc3RhdGUgPT09IFwibWluaVwiXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICA/IGNoYW5nZXMubWluaVNpemVcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIDogMFxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgOiAwXG4gICAgICAgIC8vICAgICAgICAgaWYgKGNoYW5nZXMubW9kZSA9PT0gXCJlbWJlZGRlZFwiKSB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS5sZWZ0ID0gYCR7cGFkZGluZ0xlZnR9cHhgXG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS5yaWdodCA9IGAke3BhZGRpbmdSaWdodH1weGBcbiAgICAgICAgLy8gICAgICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgICAgICAgICByZWYuc3R5bGUubGVmdCA9IFwiMFwiXG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS5yaWdodCA9IFwiMFwiXG4gICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAvLyAgICAgICAgIGlmIChjaGFuZ2VzLnBvc2l0aW9uPy5jZWxsc1swXS52ID09PSBcInRvcFwiKSB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHBhZGRpbmdUb3AgPSBNYXRoLm1heChwYWRkaW5nVG9wLCBwYWRkaW5nKVxuICAgICAgICAvLyAgICAgICAgICAgICByZWYuc3R5bGUudG9wID0gXCIwXCJcbiAgICAgICAgLy8gICAgICAgICAgICAgcmVmLnN0eWxlLmJvdHRvbSA9IFwiXCJcbiAgICAgICAgLy8gICAgICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgICAgICAgICBwYWRkaW5nQm90dG9tID0gTWF0aC5tYXgocGFkZGluZ0JvdHRvbSwgcGFkZGluZylcbiAgICAgICAgLy8gICAgICAgICAgICAgcmVmLnN0eWxlLmJvdHRvbSA9IGAwYFxuICAgICAgICAvLyAgICAgICAgICAgICByZWYuc3R5bGUudG9wID0gXCJcIlxuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gfVxuICAgICAgICAvLyBjb25zdCBjZWwgPSB0aGlzLmNvbnRlbnRFbC5uYXRpdmVFbGVtZW50XG4gICAgICAgIC8vIGNlbC5zdHlsZS5wYWRkaW5nID0gYCR7cGFkZGluZ1RvcH1weCAke3BhZGRpbmdSaWdodH1weCAke3BhZGRpbmdCb3R0b219cHggJHtwYWRkaW5nTGVmdH1weGBcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,148 @@
1
+ import { Component, ElementRef, inject, Input, Output } from "@angular/core";
2
+ import { BehaviorSubject, combineLatest, map, of, shareReplay, switchMap } from "rxjs";
3
+ import { coerceBoolAttr, Destructible, NumberWithUnit } from "@ngutil/common";
4
+ import { L9Range } from "../l9/range";
5
+ import { FastDOM, watchDimension } from "../util";
6
+ import * as i0 from "@angular/core";
7
+ const DEFAULT_POSITION = L9Range.coerce("left");
8
+ export class DockingPanelComponent extends Destructible {
9
+ set positionInput(val) {
10
+ const coerced = L9Range.coerce(val);
11
+ console.log("SET POSITION", coerced, this.position.value.isEq(coerced));
12
+ if (coerced.orient === "rect") {
13
+ throw new Error(`Invalid position value: ${val}`);
14
+ }
15
+ if (!this.position.value.isEq(coerced)) {
16
+ this.position.next(coerced);
17
+ }
18
+ }
19
+ set stateInput(val) {
20
+ if (this.state.value !== val) {
21
+ this.state.next(val);
22
+ }
23
+ }
24
+ set modeInput(val) {
25
+ if (this.mode.value !== val) {
26
+ this.mode.next(val);
27
+ }
28
+ }
29
+ set fullSizeInput(val) {
30
+ const coerced = NumberWithUnit.coerce(val, "px");
31
+ if (this.#fullSize.value !== coerced) {
32
+ this.#fullSize.next(coerced);
33
+ }
34
+ }
35
+ #fullSize;
36
+ set miniSizeInput(val) {
37
+ const coerced = NumberWithUnit.coerce(val, "px");
38
+ if (this.#miniSize.value !== coerced) {
39
+ this.#miniSize.next(coerced);
40
+ }
41
+ }
42
+ #miniSize;
43
+ set minimizable(val) {
44
+ this.#minimizable = coerceBoolAttr(val);
45
+ this.#minimizableAuto = false;
46
+ }
47
+ get minimizable() {
48
+ return this.#minimizable;
49
+ }
50
+ #minimizable;
51
+ #minimizableAuto;
52
+ #autoSize;
53
+ constructor() {
54
+ super();
55
+ this.el = inject((ElementRef));
56
+ this.position = new BehaviorSubject(DEFAULT_POSITION);
57
+ this.state = new BehaviorSubject("invisible");
58
+ this.mode = new BehaviorSubject("overlay");
59
+ this.#fullSize = new BehaviorSubject(NumberWithUnit.coerce(0));
60
+ this.#miniSize = new BehaviorSubject(NumberWithUnit.coerce(0));
61
+ this.#minimizable = false;
62
+ this.#minimizableAuto = true;
63
+ this.#autoSize = combineLatest({
64
+ dim: watchDimension(this.el.nativeElement, "scroll-box"),
65
+ pos: this.position
66
+ }).pipe(map(({ dim, pos }) => {
67
+ if (pos.orient === "horizontal") {
68
+ return dim.height;
69
+ }
70
+ else {
71
+ return dim.width;
72
+ }
73
+ }), shareReplay(1));
74
+ this.fullSize = this.#fullSize.pipe(switchMap(size => {
75
+ if (size.unit === "auto") {
76
+ return this.#autoSize;
77
+ }
78
+ else {
79
+ return of(size);
80
+ }
81
+ }), shareReplay(1));
82
+ this.miniSize = this.#miniSize.pipe(switchMap(size => {
83
+ if (size.unit === "auto") {
84
+ return this.#autoSize;
85
+ }
86
+ else {
87
+ return of(size);
88
+ }
89
+ }), shareReplay(1));
90
+ this.changes = combineLatest({
91
+ position: this.position,
92
+ state: this.state,
93
+ mode: this.mode,
94
+ fullSize: this.fullSize,
95
+ miniSize: this.miniSize
96
+ });
97
+ this.d.sub(this.changes).subscribe(changes => {
98
+ if (this.#minimizableAuto) {
99
+ this.#minimizable = this.#miniSize.value.value !== 0;
100
+ }
101
+ FastDOM.setAttributes(this.el.nativeElement, {
102
+ state: changes.state,
103
+ orient: changes.position.orient,
104
+ mode: changes.mode,
105
+ side: changes.position.orient === "horizontal" ? changes.position.cells[0].v : changes.position.cells[0].h
106
+ });
107
+ });
108
+ }
109
+ open() {
110
+ this.state.next("full");
111
+ }
112
+ close() {
113
+ this.state.next("invisible");
114
+ }
115
+ minimize() {
116
+ if (this.minimizable) {
117
+ this.state.next("mini");
118
+ }
119
+ }
120
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
121
+ 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" }, exportAs: ["nuDockingPanel"], usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, 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-real-w: var(--docking-panel-real-w, var(---docking-panel-w));---docking-panel-real-h: var(--docking-panel-real-h, var(---docking-panel-h));display:flex;flex-flow:column nowrap;align-items:stretch;position:absolute;box-sizing:border-box;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);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=invisible][orient=horizontal]{transform:translateY(var(---docking-panel-t-hide))}:host[state=invisible][orient=vertical]{transform:translate(var(---docking-panel-t-hide))}:host:not([state=invisible])[orient=horizontal]{transform:translateY(var(---docking-panel-t-visible))}:host:not([state=invisible])[orient=vertical]{transform:translate(var(---docking-panel-t-visible))}\n"] }); }
122
+ }
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DockingPanelComponent, decorators: [{
124
+ type: Component,
125
+ args: [{ standalone: true, selector: "nu-docking-panel", exportAs: "nuDockingPanel", template: `<ng-content></ng-content>`, 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-real-w: var(--docking-panel-real-w, var(---docking-panel-w));---docking-panel-real-h: var(--docking-panel-real-h, var(---docking-panel-h));display:flex;flex-flow:column nowrap;align-items:stretch;position:absolute;box-sizing:border-box;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);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=invisible][orient=horizontal]{transform:translateY(var(---docking-panel-t-hide))}:host[state=invisible][orient=vertical]{transform:translate(var(---docking-panel-t-hide))}:host:not([state=invisible])[orient=horizontal]{transform:translateY(var(---docking-panel-t-visible))}:host:not([state=invisible])[orient=vertical]{transform:translate(var(---docking-panel-t-visible))}\n"] }]
126
+ }], ctorParameters: () => [], propDecorators: { positionInput: [{
127
+ type: Input,
128
+ args: ["position"]
129
+ }], stateInput: [{
130
+ type: Input,
131
+ args: ["state"]
132
+ }], state: [{
133
+ type: Output,
134
+ args: ["stateChanges"]
135
+ }], modeInput: [{
136
+ type: Input,
137
+ args: ["mode"]
138
+ }], fullSizeInput: [{
139
+ type: Input,
140
+ args: ["fullSize"]
141
+ }], miniSizeInput: [{
142
+ type: Input,
143
+ args: ["miniSize"]
144
+ }], minimizable: [{
145
+ type: Input,
146
+ args: ["minimizable"]
147
+ }] } });
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2RvY2tpbmcvZG9ja2luZy1wYW5lbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRWxHLE9BQU8sRUFBZ0IsY0FBYyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQXVCLE1BQU0sZ0JBQWdCLENBQUE7QUFFaEgsT0FBTyxFQUFFLE9BQU8sRUFBZSxNQUFNLGFBQWEsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQTs7QUFLakQsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBUy9DLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxZQUFZO0lBR25ELElBQ0ksYUFBYSxDQUFDLEdBQTBCO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFFbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBRXZFLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixHQUFHLEVBQUUsQ0FBQyxDQUFBO1FBQ3JELENBQUM7UUFFRCxJQUFJ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RkFFNUIscUJBQXFCO2tCQVBqQyxTQUFTO2lDQUNNLElBQUksWUFDTixrQkFBa0IsWUFDbEIsZ0JBQWdCLFlBRWhCLDJCQUEyQjt3REFNakMsYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyxVQUFVO2dCQWlCYixVQUFVO3NCQURiLEtBQUs7dUJBQUMsT0FBTztnQkFPTCxLQUFLO3NCQURiLE1BQU07dUJBQUMsY0FBYztnQkFJbEIsU0FBUztzQkFEWixLQUFLO3VCQUFDLE1BQU07Z0JBU1QsYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyxVQUFVO2dCQVViLGFBQWE7c0JBRGhCLEtBQUs7dUJBQUMsVUFBVTtnQkFVYixXQUFXO3NCQURkLEtBQUs7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbEF0dHIsIERlc3RydWN0aWJsZSwgTnVtYmVyV2l0aFVuaXQsIE51bWJlcldpdGhVbml0SW5wdXQgfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyBMOVJhbmdlLCBMOVJhbmdlTmFtZSB9IGZyb20gXCIuLi9sOS9yYW5nZVwiXG5pbXBvcnQgeyBGYXN0RE9NLCB3YXRjaERpbWVuc2lvbiB9IGZyb20gXCIuLi91dGlsXCJcblxuZXhwb3J0IHR5cGUgRG9ja2luZ1BhbmVsU3RhdGUgPSBcImZ1bGxcIiB8IFwibWluaVwiIHwgXCJpbnZpc2libGVcIlxuZXhwb3J0IHR5cGUgRG9ja2luZ1BhbmVsTW9kZSA9IFwib3ZlcmxheVwiIHwgXCJlbWJlZGRlZFwiXG5cbmNvbnN0IERFRkFVTFRfUE9TSVRJT04gPSBMOVJhbmdlLmNvZXJjZShcImxlZnRcIilcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogXCJudS1kb2NraW5nLXBhbmVsXCIsXG4gICAgZXhwb3J0QXM6IFwibnVEb2NraW5nUGFuZWxcIixcbiAgICBzdHlsZVVybDogXCIuL2RvY2tpbmctcGFuZWwuY29tcG9uZW50LnNjc3NcIixcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gXG59KVxuZXhwb3J0IGNsYXNzIERvY2tpbmdQYW5lbENvbXBvbmVudCBleHRlbmRzIERlc3RydWN0aWJsZSB7XG4gICAgcmVhZG9ubHkgZWwgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pXG5cbiAgICBASW5wdXQoXCJwb3NpdGlvblwiKVxuICAgIHNldCBwb3NpdGlvbklucHV0KHZhbDogTDlSYW5nZSB8IEw5UmFuZ2VOYW1lKSB7XG4gICAgICAgIGNvbnN0IGNvZXJjZWQgPSBMOVJhbmdlLmNvZXJjZSh2YWwpXG5cbiAgICAgICAgY29uc29sZS5sb2coXCJTRVQgUE9TSVRJT05cIiwgY29lcmNlZCwgdGhpcy5wb3NpdGlvbi52YWx1ZS5pc0VxKGNvZXJjZWQpKVxuXG4gICAgICAgIGlmIChjb2VyY2VkLm9yaWVudCA9PT0gXCJyZWN0XCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwb3NpdGlvbiB2YWx1ZTogJHt2YWx9YClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5wb3NpdGlvbi52YWx1ZS5pc0VxKGNvZXJjZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSBwb3NpdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TDlSYW5nZT4oREVGQVVMVF9QT1NJVElPTilcblxuICAgIEBJbnB1dChcInN0YXRlXCIpXG4gICAgc2V0IHN0YXRlSW5wdXQodmFsOiBEb2NraW5nUGFuZWxTdGF0ZSkge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS52YWx1ZSAhPT0gdmFsKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLm5leHQodmFsKVxuICAgICAgICB9XG4gICAgfVxuICAgIEBPdXRwdXQoXCJzdGF0ZUNoYW5nZXNcIilcbiAgICByZWFkb25seSBzdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9ja2luZ1BhbmVsU3RhdGU+KFwiaW52aXNpYmxlXCIpXG5cbiAgICBASW5wdXQoXCJtb2RlXCIpXG4gICAgc2V0IG1vZGVJbnB1dCh2YWw6IERvY2tpbmdQYW5lbE1vZGUpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZS52YWx1ZSAhPT0gdmFsKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGUubmV4dCh2YWwpXG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVhZG9ubHkgbW9kZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9ja2luZ1BhbmVsTW9kZT4oXCJvdmVybGF5XCIpXG5cbiAgICBASW5wdXQoXCJmdWxsU2l6ZVwiKVxuICAgIHNldCBmdWxsU2l6ZUlucHV0KHZhbDogTnVtYmVyV2l0aFVuaXRJbnB1dCkge1xuICAgICAgICBjb25zdCBjb2VyY2VkID0gTnVtYmVyV2l0aFVuaXQuY29lcmNlKHZhbCwgXCJweFwiKVxuICAgICAgICBpZiAodGhpcy4jZnVsbFNpemUudmFsdWUgIT09IGNvZXJjZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI2Z1bGxTaXplLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSAjZnVsbFNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE51bWJlcldpdGhVbml0PihOdW1iZXJXaXRoVW5pdC5jb2VyY2UoMCkpXG5cbiAgICBASW5wdXQoXCJtaW5pU2l6ZVwiKVxuICAgIHNldCBtaW5pU2l6ZUlucHV0KHZhbDogTnVtYmVyV2l0aFVuaXRJbnB1dCkge1xuICAgICAgICBjb25zdCBjb2VyY2VkID0gTnVtYmVyV2l0aFVuaXQuY29lcmNlKHZhbCwgXCJweFwiKVxuICAgICAgICBpZiAodGhpcy4jbWluaVNpemUudmFsdWUgIT09IGNvZXJjZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI21pbmlTaXplLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSAjbWluaVNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE51bWJlcldpdGhVbml0PihOdW1iZXJXaXRoVW5pdC5jb2VyY2UoMCkpXG5cbiAgICBASW5wdXQoXCJtaW5pbWl6YWJsZVwiKVxuICAgIHNldCBtaW5pbWl6YWJsZSh2YWw6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLiNtaW5pbWl6YWJsZSA9IGNvZXJjZUJvb2xBdHRyKHZhbClcbiAgICAgICAgdGhpcy4jbWluaW1pemFibGVBdXRvID0gZmFsc2VcbiAgICB9XG4gICAgZ2V0IG1pbmltaXphYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy4jbWluaW1pemFibGVcbiAgICB9XG4gICAgI21pbmltaXphYmxlOiBib29sZWFuID0gZmFsc2VcbiAgICAjbWluaW1pemFibGVBdXRvOiBib29sZWFuID0gdHJ1ZVxuXG4gICAgcmVhZG9ubHkgI2F1dG9TaXplID0gY29tYmluZUxhdGVzdCh7XG4gICAgICAgIGRpbTogd2F0Y2hEaW1lbnNpb24odGhpcy5lbC5uYXRpdmVFbGVtZW50LCBcInNjcm9sbC1ib3hcIiksXG4gICAgICAgIHBvczogdGhpcy5wb3NpdGlvblxuICAgIH0pLnBpcGUoXG4gICAgICAgIG1hcCgoeyBkaW0sIHBvcyB9KSA9PiB7XG4gICAgICAgICAgICBpZiAocG9zLm9yaWVudCA9PT0gXCJob3Jpem9udGFsXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGltLmhlaWdodFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGltLndpZHRoXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IGZ1bGxTaXplID0gdGhpcy4jZnVsbFNpemUucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHNpemUgPT4ge1xuICAgICAgICAgICAgaWYgKHNpemUudW5pdCA9PT0gXCJhdXRvXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jYXV0b1NpemVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHNpemUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IG1pbmlTaXplID0gdGhpcy4jbWluaVNpemUucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHNpemUgPT4ge1xuICAgICAgICAgICAgaWYgKHNpemUudW5pdCA9PT0gXCJhdXRvXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jYXV0b1NpemVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHNpemUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IGNoYW5nZXMgPSBjb21iaW5lTGF0ZXN0KHtcbiAgICAgICAgcG9zaXRpb246IHRoaXMucG9zaXRpb24sXG4gICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICAgIGZ1bGxTaXplOiB0aGlzLmZ1bGxTaXplLFxuICAgICAgICBtaW5pU2l6ZTogdGhpcy5taW5pU2l6ZVxuICAgIH0pXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKVxuXG4gICAgICAgIHRoaXMuZC5zdWIodGhpcy5jaGFuZ2VzKS5zdWJzY3JpYmUoY2hhbmdlcyA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy4jbWluaW1pemFibGVBdXRvKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jbWluaW1pemFibGUgPSB0aGlzLiNtaW5pU2l6ZS52YWx1ZS52YWx1ZSAhPT0gMFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBGYXN0RE9NLnNldEF0dHJpYnV0ZXModGhpcy5lbC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgc3RhdGU6IGNoYW5nZXMuc3RhdGUsXG4gICAgICAgICAgICAgICAgb3JpZW50OiBjaGFuZ2VzLnBvc2l0aW9uLm9yaWVudCxcbiAgICAgICAgICAgICAgICBtb2RlOiBjaGFuZ2VzLm1vZGUsXG4gICAgICAgICAgICAgICAgc2lkZTpcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlcy5wb3NpdGlvbi5vcmllbnQgPT09IFwiaG9yaXpvbnRhbFwiID8gY2hhbmdlcy5wb3NpdGlvbi5jZWxsc1swXS52IDogY2hhbmdlcy5wb3NpdGlvbi5jZWxsc1swXS5oXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIG9wZW4oKSB7XG4gICAgICAgIHRoaXMuc3RhdGUubmV4dChcImZ1bGxcIilcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5uZXh0KFwiaW52aXNpYmxlXCIpXG4gICAgfVxuXG4gICAgbWluaW1pemUoKSB7XG4gICAgICAgIGlmICh0aGlzLm1pbmltaXphYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLm5leHQoXCJtaW5pXCIpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbnR5cGUgQ2hhbmdlc09ic2VydmFibGUgPSB0eXBlb2YgRG9ja2luZ1BhbmVsQ29tcG9uZW50LnByb3RvdHlwZS5jaGFuZ2VzXG5leHBvcnQgdHlwZSBEb2NraW5nUGFuZWxDaGFuZ2VzID0gQ2hhbmdlc09ic2VydmFibGUgZXh0ZW5kcyBPYnNlcnZhYmxlPGluZmVyIFQ+ID8gVCA6IG5ldmVyXG4iXX0=
@@ -0,0 +1,20 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { DockingContentComponent } from "./docking-content.component";
3
+ import { DockingLayoutComponent } from "./docking-layout.component";
4
+ import { DockingPanelComponent } from "./docking-panel.component";
5
+ import * as i0 from "@angular/core";
6
+ export { DockingLayoutComponent, DockingPanelComponent, DockingContentComponent };
7
+ const members = [DockingLayoutComponent, DockingPanelComponent, DockingContentComponent];
8
+ export class NuDockingLayout {
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NuDockingLayout, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: NuDockingLayout, imports: [DockingLayoutComponent, DockingPanelComponent, DockingContentComponent], exports: [DockingLayoutComponent, DockingPanelComponent, DockingContentComponent] }); }
11
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NuDockingLayout }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NuDockingLayout, decorators: [{
14
+ type: NgModule,
15
+ args: [{
16
+ imports: members,
17
+ exports: members
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2RvY2tpbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUNyRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUNuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTs7QUFFakUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLHVCQUF1QixFQUFFLENBQUE7QUFFakYsTUFBTSxPQUFPLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSx1QkFBdUIsQ0FBQyxDQUFBO0FBTXhGLE1BQU0sT0FBTyxlQUFlOzhHQUFmLGVBQWU7K0dBQWYsZUFBZSxZQU5YLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLHVCQUF1QixhQUF0RSxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSx1QkFBdUI7K0dBTTFFLGVBQWU7OzJGQUFmLGVBQWU7a0JBSjNCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLE9BQU87b0JBQ2hCLE9BQU8sRUFBRSxPQUFPO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQgeyBEb2NraW5nQ29udGVudENvbXBvbmVudCB9IGZyb20gXCIuL2RvY2tpbmctY29udGVudC5jb21wb25lbnRcIlxuaW1wb3J0IHsgRG9ja2luZ0xheW91dENvbXBvbmVudCB9IGZyb20gXCIuL2RvY2tpbmctbGF5b3V0LmNvbXBvbmVudFwiXG5pbXBvcnQgeyBEb2NraW5nUGFuZWxDb21wb25lbnQgfSBmcm9tIFwiLi9kb2NraW5nLXBhbmVsLmNvbXBvbmVudFwiXG5cbmV4cG9ydCB7IERvY2tpbmdMYXlvdXRDb21wb25lbnQsIERvY2tpbmdQYW5lbENvbXBvbmVudCwgRG9ja2luZ0NvbnRlbnRDb21wb25lbnQgfVxuXG5jb25zdCBtZW1iZXJzID0gW0RvY2tpbmdMYXlvdXRDb21wb25lbnQsIERvY2tpbmdQYW5lbENvbXBvbmVudCwgRG9ja2luZ0NvbnRlbnRDb21wb25lbnRdXG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogbWVtYmVycyxcbiAgICBleHBvcnRzOiBtZW1iZXJzXG59KVxuZXhwb3J0IGNsYXNzIE51RG9ja2luZ0xheW91dCB7fVxuIl19
package/esm2022/index.mjs CHANGED
@@ -1,2 +1,4 @@
1
- export * from "./lib/layout/layout.component";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsK0JBQStCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9saWIvbGF5b3V0L2xheW91dC5jb21wb25lbnRcIlxuIl19
1
+ export * from "./util";
2
+ export * from "./l9";
3
+ export * from "./docking";
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsUUFBUSxDQUFBO0FBQ3RCLGNBQWMsTUFBTSxDQUFBO0FBQ3BCLGNBQWMsV0FBVyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vdXRpbFwiXG5leHBvcnQgKiBmcm9tIFwiLi9sOVwiXG5leHBvcnQgKiBmcm9tIFwiLi9kb2NraW5nXCJcbiJdfQ==