@ngutil/layout 0.0.42 → 0.0.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm2022/index.mjs CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./l9";
2
2
  export * from "./docking";
3
3
  export * from "./services/slots.service";
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsTUFBTSxDQUFBO0FBQ3BCLGNBQWMsV0FBVyxDQUFBO0FBQ3pCLGNBQWMsMEJBQTBCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9sOVwiXG5leHBvcnQgKiBmcm9tIFwiLi9kb2NraW5nXCJcbmV4cG9ydCAqIGZyb20gXCIuL3NlcnZpY2VzL3Nsb3RzLnNlcnZpY2VcIlxuIl19
4
+ export * from "./sliding";
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsTUFBTSxDQUFBO0FBQ3BCLGNBQWMsV0FBVyxDQUFBO0FBQ3pCLGNBQWMsMEJBQTBCLENBQUE7QUFDeEMsY0FBYyxXQUFXLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9sOVwiXG5leHBvcnQgKiBmcm9tIFwiLi9kb2NraW5nXCJcbmV4cG9ydCAqIGZyb20gXCIuL3NlcnZpY2VzL3Nsb3RzLnNlcnZpY2VcIlxuZXhwb3J0ICogZnJvbSBcIi4vc2xpZGluZ1wiXG4iXX0=
@@ -0,0 +1,19 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { SlidingItemDirective } from "./sliding-item.directive";
3
+ import { SlidingComponent } from "./sliding.component";
4
+ import * as i0 from "@angular/core";
5
+ export { SlidingItemDirective, SlidingComponent };
6
+ const members = [SlidingItemDirective, SlidingComponent];
7
+ export class NuSlidingLayout {
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: NuSlidingLayout, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.6", ngImport: i0, type: NuSlidingLayout, imports: [SlidingItemDirective, SlidingComponent], exports: [SlidingItemDirective, SlidingComponent] }); }
10
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: NuSlidingLayout, imports: [SlidingComponent] }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: NuSlidingLayout, decorators: [{
13
+ type: NgModule,
14
+ args: [{
15
+ imports: members,
16
+ exports: members
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL3NsaWRpbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTs7QUFFdEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLENBQUE7QUFFakQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO0FBTXhELE1BQU0sT0FBTyxlQUFlOzhHQUFmLGVBQWU7K0dBQWYsZUFBZSxZQU5YLG9CQUFvQixFQUFFLGdCQUFnQixhQUF0QyxvQkFBb0IsRUFBRSxnQkFBZ0I7K0dBTTFDLGVBQWUsWUFOVyxnQkFBZ0I7OzJGQU0xQyxlQUFlO2tCQUozQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxPQUFPO29CQUNoQixPQUFPLEVBQUUsT0FBTztpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcblxuaW1wb3J0IHsgU2xpZGluZ0l0ZW1EaXJlY3RpdmUgfSBmcm9tIFwiLi9zbGlkaW5nLWl0ZW0uZGlyZWN0aXZlXCJcbmltcG9ydCB7IFNsaWRpbmdDb21wb25lbnQgfSBmcm9tIFwiLi9zbGlkaW5nLmNvbXBvbmVudFwiXG5cbmV4cG9ydCB7IFNsaWRpbmdJdGVtRGlyZWN0aXZlLCBTbGlkaW5nQ29tcG9uZW50IH1cblxuY29uc3QgbWVtYmVycyA9IFtTbGlkaW5nSXRlbURpcmVjdGl2ZSwgU2xpZGluZ0NvbXBvbmVudF1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBtZW1iZXJzLFxuICAgIGV4cG9ydHM6IG1lbWJlcnNcbn0pXG5leHBvcnQgY2xhc3MgTnVTbGlkaW5nTGF5b3V0IHt9XG4iXX0=
@@ -0,0 +1,24 @@
1
+ import { Directive, effect, inject, output, signal, TemplateRef } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class SlidingItemDirective {
4
+ constructor() {
5
+ this.tpl = inject(TemplateRef);
6
+ this.rendered = signal(false);
7
+ this.active = signal(false);
8
+ this.animation = signal(null);
9
+ this.activated = output();
10
+ effect(() => {
11
+ this.activated.emit(this.active());
12
+ }, { allowSignalWrites: true });
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: SlidingItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
15
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.6", type: SlidingItemDirective, isStandalone: true, selector: "ng-template[nuSlidingItem]", outputs: { activated: "activated" }, ngImport: i0 }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: SlidingItemDirective, decorators: [{
18
+ type: Directive,
19
+ args: [{
20
+ selector: "ng-template[nuSlidingItem]",
21
+ standalone: true
22
+ }]
23
+ }], ctorParameters: () => [] });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGluZy1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xheW91dC9zcmMvc2xpZGluZy9zbGlkaW5nLWl0ZW0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQTs7QUFldEYsTUFBTSxPQUFPLG9CQUFvQjtJQVE3QjtRQVBTLFFBQUcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7UUFFekIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN4QixXQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3RCLGNBQVMsR0FBRyxNQUFNLENBQXVDLElBQUksQ0FBQyxDQUFBO1FBQzlELGNBQVMsR0FBRyxNQUFNLEVBQVcsQ0FBQTtRQUdsQyxNQUFNLENBQ0YsR0FBRyxFQUFFO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDdEMsQ0FBQyxFQUNELEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQzlCLENBQUE7SUFDTCxDQUFDOzhHQWZRLG9CQUFvQjtrR0FBcEIsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQUpoQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZWZmZWN0LCBpbmplY3QsIG91dHB1dCwgc2lnbmFsLCBUZW1wbGF0ZVJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcblxuZXhwb3J0IGNvbnN0IGVudW0gSXRlbUFuaW1hdGlvblN0YXRlIHtcbiAgICBMZWZ0SW4gPSBcImxlZnQtaW5cIixcbiAgICBMZWZ0T3V0ID0gXCJsZWZ0LW91dFwiLFxuICAgIFJpZ2h0SW4gPSBcInJpZ2h0LWluXCIsXG4gICAgUmlnaHRPdXQgPSBcInJpZ2h0LW91dFwiLFxuICAgIEZhc3RPdXQgPSBcImZhc3Qtb3V0XCIsXG4gICAgRmFzdEluID0gXCJmYXN0LWluXCJcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6IFwibmctdGVtcGxhdGVbbnVTbGlkaW5nSXRlbV1cIixcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFNsaWRpbmdJdGVtRGlyZWN0aXZlIHtcbiAgICByZWFkb25seSB0cGwgPSBpbmplY3QoVGVtcGxhdGVSZWYpXG5cbiAgICByZWFkb25seSByZW5kZXJlZCA9IHNpZ25hbChmYWxzZSlcbiAgICByZWFkb25seSBhY3RpdmUgPSBzaWduYWwoZmFsc2UpXG4gICAgcmVhZG9ubHkgYW5pbWF0aW9uID0gc2lnbmFsPHsgdmFsdWU6IEl0ZW1BbmltYXRpb25TdGF0ZSB9IHwgbnVsbD4obnVsbClcbiAgICByZWFkb25seSBhY3RpdmF0ZWQgPSBvdXRwdXQ8Ym9vbGVhbj4oKVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGVmZmVjdChcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2YXRlZC5lbWl0KHRoaXMuYWN0aXZlKCkpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgICAgIClcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,176 @@
1
+ import { animate, state, style, transition, trigger } from "@angular/animations";
2
+ import { CommonModule } from "@angular/common";
3
+ import { Component, computed, contentChildren, effect, input, output, signal } from "@angular/core";
4
+ import { clamp } from "lodash";
5
+ import { Duration, Ease } from "@ngutil/style";
6
+ import { SlidingItemDirective } from "./sliding-item.directive";
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ const absolute = { position: "absolute", top: "0px", left: "0px" };
10
+ const anim = `${Duration.Fast} ${Ease.Acceleration}`;
11
+ export class SlidingComponent {
12
+ constructor() {
13
+ /**
14
+ * List of items
15
+ */
16
+ this.items = contentChildren(SlidingItemDirective);
17
+ /**
18
+ * Lazily rendering items
19
+ */
20
+ this.lazy = input(true);
21
+ /**
22
+ * Index of the preferred item
23
+ */
24
+ this.preferred = signal(0);
25
+ /**
26
+ * Index of the active item
27
+ */
28
+ this.active = computed(() => {
29
+ const items = this.items();
30
+ if (items.length === 0) {
31
+ return -1;
32
+ }
33
+ const index = this.preferred();
34
+ return clamp(index, 0, items.length - 1);
35
+ });
36
+ /**
37
+ * Changes of the active item
38
+ */
39
+ this.changes = output();
40
+ effect(() => {
41
+ const activeIndex = this.active();
42
+ const items = this.items();
43
+ const lazy = this.lazy();
44
+ const preferred = this.preferred();
45
+ const currentActiveIndex = items.findIndex(item => item.active());
46
+ if (activeIndex === currentActiveIndex) {
47
+ if (items[activeIndex]?.active()) {
48
+ return;
49
+ }
50
+ }
51
+ let activeItem;
52
+ let inAnimation = null;
53
+ for (let i = 0; i < items.length; i++) {
54
+ const item = items[i];
55
+ const isActive = i === activeIndex;
56
+ if (isActive) {
57
+ activeItem = item;
58
+ }
59
+ else {
60
+ const currentlyActive = item.active();
61
+ item.active.set(false);
62
+ if (lazy === false && !item.rendered()) {
63
+ item.rendered.set(true);
64
+ }
65
+ if (item.animation() || item.rendered()) {
66
+ if (currentlyActive) {
67
+ if (activeIndex < currentActiveIndex) {
68
+ item.animation.set({ value: "right-out" /* ItemAnimationState.RightOut */ });
69
+ inAnimation = "left-in" /* ItemAnimationState.LeftIn */;
70
+ }
71
+ else {
72
+ item.animation.set({ value: "left-out" /* ItemAnimationState.LeftOut */ });
73
+ inAnimation = "right-in" /* ItemAnimationState.RightIn */;
74
+ }
75
+ }
76
+ else {
77
+ item.animation.set({ value: "fast-out" /* ItemAnimationState.FastOut */ });
78
+ }
79
+ }
80
+ }
81
+ }
82
+ if (activeItem) {
83
+ if (inAnimation) {
84
+ activeItem.animation.set({ value: inAnimation });
85
+ }
86
+ else if (items.length === 1) {
87
+ activeItem.animation.set({ value: "fast-in" /* ItemAnimationState.FastIn */ });
88
+ }
89
+ activeItem.active.set(true);
90
+ activeItem.rendered.set(true);
91
+ }
92
+ const preferredClamp = clamp(preferred, 0, items.length - 1);
93
+ if (preferred !== preferredClamp) {
94
+ this.preferred.set(preferredClamp);
95
+ }
96
+ this.changes.emit(this);
97
+ }, { allowSignalWrites: true });
98
+ }
99
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: SlidingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
100
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.6", type: SlidingComponent, isStandalone: true, selector: "nu-sliding", inputs: { lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changes: "changes" }, queries: [{ propertyName: "items", predicate: SlidingItemDirective, isSignal: true }], ngImport: i0, template: `
101
+ @if (items(); as _items) {
102
+ @for (item of _items; track item; let index = $index) {
103
+ @if (item.rendered()) {
104
+ <div class="item" [@animate]="item.animation()">
105
+ <ng-template [ngTemplateOutlet]="item.tpl" />
106
+ </div>
107
+ }
108
+ }
109
+ }
110
+ `, isInline: true, styles: [":host{display:grid;grid-template-columns:1fr;grid-template-rows:1fr;overflow:hidden;position:relative}:host .item{grid-column:1;grid-row:1;display:flex;flex-direction:column;align-items:stretch;position:relative;overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [
111
+ trigger("animate", [
112
+ state("fast-out" /* ItemAnimationState.FastOut */, style({ display: "none", ...absolute, transform: "translateX(-100%)", pointerEvents: "none" })),
113
+ state("left-out" /* ItemAnimationState.LeftOut */, style({ display: "none", ...absolute, transform: "translateX(-100%)", pointerEvents: "none" })),
114
+ state("right-out" /* ItemAnimationState.RightOut */, style({ display: "none", ...absolute, transform: "translateX(100%)", pointerEvents: "none" })),
115
+ state("fast-in" /* ItemAnimationState.FastIn */, style({ display: "flex", position: "relative", transform: "translateX(0)" })),
116
+ state("left-in" /* ItemAnimationState.LeftIn */, style({ display: "flex", position: "relative", transform: "translateX(0)" })),
117
+ state("right-in" /* ItemAnimationState.RightIn */, style({ display: "flex", position: "relative", transform: "translateX(0)" })),
118
+ transition(`* => ${"left-out" /* ItemAnimationState.LeftOut */}`, [
119
+ style({ width: "*", ...absolute, transform: "translateX(0)", pointerEvents: "none" }),
120
+ animate(anim, style({ transform: "translateX(-100%)" }))
121
+ ]),
122
+ transition(`* => ${"right-out" /* ItemAnimationState.RightOut */}`, [
123
+ style({ width: "*", ...absolute, transform: "translateX(0)", pointerEvents: "none" }),
124
+ animate(anim, style({ transform: "translateX(100%)" }))
125
+ ]),
126
+ transition(`* => ${"left-in" /* ItemAnimationState.LeftIn */}`, [
127
+ style({ display: "flex", position: "relative", transform: "translateX(-100%)" }),
128
+ animate(anim, style({ transform: "translateX(0)" }))
129
+ ]),
130
+ transition(`* => ${"right-in" /* ItemAnimationState.RightIn */}`, [
131
+ style({ display: "flex", position: "relative", transform: "translateX(100%)" }),
132
+ animate(anim, style({ transform: "translateX(0%)" }))
133
+ ])
134
+ ])
135
+ ] }); }
136
+ }
137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: SlidingComponent, decorators: [{
138
+ type: Component,
139
+ args: [{ selector: "nu-sliding", standalone: true, imports: [CommonModule], animations: [
140
+ trigger("animate", [
141
+ state("fast-out" /* ItemAnimationState.FastOut */, style({ display: "none", ...absolute, transform: "translateX(-100%)", pointerEvents: "none" })),
142
+ state("left-out" /* ItemAnimationState.LeftOut */, style({ display: "none", ...absolute, transform: "translateX(-100%)", pointerEvents: "none" })),
143
+ state("right-out" /* ItemAnimationState.RightOut */, style({ display: "none", ...absolute, transform: "translateX(100%)", pointerEvents: "none" })),
144
+ state("fast-in" /* ItemAnimationState.FastIn */, style({ display: "flex", position: "relative", transform: "translateX(0)" })),
145
+ state("left-in" /* ItemAnimationState.LeftIn */, style({ display: "flex", position: "relative", transform: "translateX(0)" })),
146
+ state("right-in" /* ItemAnimationState.RightIn */, style({ display: "flex", position: "relative", transform: "translateX(0)" })),
147
+ transition(`* => ${"left-out" /* ItemAnimationState.LeftOut */}`, [
148
+ style({ width: "*", ...absolute, transform: "translateX(0)", pointerEvents: "none" }),
149
+ animate(anim, style({ transform: "translateX(-100%)" }))
150
+ ]),
151
+ transition(`* => ${"right-out" /* ItemAnimationState.RightOut */}`, [
152
+ style({ width: "*", ...absolute, transform: "translateX(0)", pointerEvents: "none" }),
153
+ animate(anim, style({ transform: "translateX(100%)" }))
154
+ ]),
155
+ transition(`* => ${"left-in" /* ItemAnimationState.LeftIn */}`, [
156
+ style({ display: "flex", position: "relative", transform: "translateX(-100%)" }),
157
+ animate(anim, style({ transform: "translateX(0)" }))
158
+ ]),
159
+ transition(`* => ${"right-in" /* ItemAnimationState.RightIn */}`, [
160
+ style({ display: "flex", position: "relative", transform: "translateX(100%)" }),
161
+ animate(anim, style({ transform: "translateX(0%)" }))
162
+ ])
163
+ ])
164
+ ], template: `
165
+ @if (items(); as _items) {
166
+ @for (item of _items; track item; let index = $index) {
167
+ @if (item.rendered()) {
168
+ <div class="item" [@animate]="item.animation()">
169
+ <ng-template [ngTemplateOutlet]="item.tpl" />
170
+ </div>
171
+ }
172
+ }
173
+ }
174
+ `, styles: [":host{display:grid;grid-template-columns:1fr;grid-template-rows:1fr;overflow:hidden;position:relative}:host .item{grid-column:1;grid-row:1;display:flex;flex-direction:column;align-items:stretch;position:relative;overflow:hidden}\n"] }]
175
+ }], ctorParameters: () => [] });
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL3NsaWRpbmcvc2xpZGluZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUVuRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBRTlCLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTlDLE9BQU8sRUFBc0Isb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTs7O0FBRW5GLE1BQU0sUUFBUSxHQUFHLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQTtBQUVsRSxNQUFNLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFBO0FBZ0VwRCxNQUFNLE9BQU8sZ0JBQWdCO0lBaUN6QjtRQWhDQTs7V0FFRztRQUNNLFVBQUssR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtRQUV0RDs7V0FFRztRQUNNLFNBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFM0I7O1dBRUc7UUFDTSxjQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRTlCOztXQUVHO1FBQ00sV0FBTSxH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RUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLENBQUM7Z0NBQ2hGLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7NkJBQ3ZELENBQUM7NEJBQ0YsVUFBVSxDQUFDLFFBQVEsMkNBQTBCLEVBQUUsRUFBRTtnQ0FDN0MsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO2dDQUMvRSxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7NkJBQ3hELENBQUM7eUJBQ0wsQ0FBQztxQkFDTCxZQUNTOzs7Ozs7Ozs7O0tBVVQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tIFwiQGFuZ3VsYXIvYW5pbWF0aW9uc1wiXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCJcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGNvbnRlbnRDaGlsZHJlbiwgZWZmZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7IGNsYW1wIH0gZnJvbSBcImxvZGFzaFwiXG5cbmltcG9ydCB7IER1cmF0aW9uLCBFYXNlIH0gZnJvbSBcIkBuZ3V0aWwvc3R5bGVcIlxuXG5pbXBvcnQgeyBJdGVtQW5pbWF0aW9uU3RhdGUsIFNsaWRpbmdJdGVtRGlyZWN0aXZlIH0gZnJvbSBcIi4vc2xpZGluZy1pdGVtLmRpcmVjdGl2ZVwiXG5cbmNvbnN0IGFic29sdXRlID0geyBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLCB0b3A6IFwiMHB4XCIsIGxlZnQ6IFwiMHB4XCIgfVxuXG5jb25zdCBhbmltID0gYCR7RHVyYXRpb24uRmFzdH0gJHtFYXNlLkFjY2VsZXJhdGlvbn1gXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm51LXNsaWRpbmdcIixcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHN0eWxlVXJsOiBcIi4vc2xpZGluZy5jb21wb25lbnQuc2Nzc1wiLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcihcImFuaW1hdGVcIiwgW1xuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgSXRlbUFuaW1hdGlvblN0YXRlLkZhc3RPdXQsXG4gICAgICAgICAgICAgICAgc3R5bGUoeyBkaXNwbGF5OiBcIm5vbmVcIiwgLi4uYWJzb2x1dGUsIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKC0xMDAlKVwiLCBwb2ludGVyRXZlbnRzOiBcIm5vbmVcIiB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgIEl0ZW1BbmltYXRpb25TdGF0ZS5MZWZ0T3V0LFxuICAgICAgICAgICAgICAgIHN0eWxlKHsgZGlzcGxheTogXCJub25lXCIsIC4uLmFic29sdXRlLCB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWCgtMTAwJSlcIiwgcG9pbnRlckV2ZW50czogXCJub25lXCIgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICBJdGVtQW5pbWF0aW9uU3RhdGUuUmlnaHRPdXQsXG4gICAgICAgICAgICAgICAgc3R5bGUoeyBkaXNwbGF5OiBcIm5vbmVcIiwgLi4uYWJzb2x1dGUsIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDEwMCUpXCIsIHBvaW50ZXJFdmVudHM6IFwibm9uZVwiIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgSXRlbUFuaW1hdGlvblN0YXRlLkZhc3RJbixcbiAgICAgICAgICAgICAgICBzdHlsZSh7IGRpc3BsYXk6IFwiZmxleFwiLCBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLCB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWCgwKVwiIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgSXRlbUFuaW1hdGlvblN0YXRlLkxlZnRJbixcbiAgICAgICAgICAgICAgICBzdHlsZSh7IGRpc3BsYXk6IFwiZmxleFwiLCBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLCB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWCgwKVwiIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgSXRlbUFuaW1hdGlvblN0YXRlLlJpZ2h0SW4sXG4gICAgICAgICAgICAgICAgc3R5bGUoeyBkaXNwbGF5OiBcImZsZXhcIiwgcG9zaXRpb246IFwicmVsYXRpdmVcIiwgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZVgoMClcIiB9KVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgdHJhbnNpdGlvbihgKiA9PiAke0l0ZW1BbmltYXRpb25TdGF0ZS5MZWZ0T3V0fWAsIFtcbiAgICAgICAgICAgICAgICBzdHlsZSh7IHdpZHRoOiBcIipcIiwgLi4uYWJzb2x1dGUsIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDApXCIsIHBvaW50ZXJFdmVudHM6IFwibm9uZVwiIH0pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoYW5pbSwgc3R5bGUoeyB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWCgtMTAwJSlcIiB9KSlcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbihgKiA9PiAke0l0ZW1BbmltYXRpb25TdGF0ZS5SaWdodE91dH1gLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoeyB3aWR0aDogXCIqXCIsIC4uLmFic29sdXRlLCB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWCgwKVwiLCBwb2ludGVyRXZlbnRzOiBcIm5vbmVcIiB9KSxcbiAgICAgICAgICAgICAgICBhbmltYXRlKGFuaW0sIHN0eWxlKHsgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZVgoMTAwJSlcIiB9KSlcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbihgKiA9PiAke0l0ZW1BbmltYXRpb25TdGF0ZS5MZWZ0SW59YCwgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHsgZGlzcGxheTogXCJmbGV4XCIsIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKC0xMDAlKVwiIH0pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoYW5pbSwgc3R5bGUoeyB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWCgwKVwiIH0pKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKGAqID0+ICR7SXRlbUFuaW1hdGlvblN0YXRlLlJpZ2h0SW59YCwgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHsgZGlzcGxheTogXCJmbGV4XCIsIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDEwMCUpXCIgfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZShhbmltLCBzdHlsZSh7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDAlKVwiIH0pKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIEBpZiAoaXRlbXMoKTsgYXMgX2l0ZW1zKSB7XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIF9pdGVtczsgdHJhY2sgaXRlbTsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgQGlmIChpdGVtLnJlbmRlcmVkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIiBbQGFuaW1hdGVdPVwiaXRlbS5hbmltYXRpb24oKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW0udHBsXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBTbGlkaW5nQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIGl0ZW1zXG4gICAgICovXG4gICAgcmVhZG9ubHkgaXRlbXMgPSBjb250ZW50Q2hpbGRyZW4oU2xpZGluZ0l0ZW1EaXJlY3RpdmUpXG5cbiAgICAvKipcbiAgICAgKiBMYXppbHkgcmVuZGVyaW5nIGl0ZW1zXG4gICAgICovXG4gICAgcmVhZG9ubHkgbGF6eSA9IGlucHV0KHRydWUpXG5cbiAgICAvKipcbiAgICAgKiBJbmRleCBvZiB0aGUgcHJlZmVycmVkIGl0ZW1cbiAgICAgKi9cbiAgICByZWFkb25seSBwcmVmZXJyZWQgPSBzaWduYWwoMClcblxuICAgIC8qKlxuICAgICAqIEluZGV4IG9mIHRoZSBhY3RpdmUgaXRlbVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGFjdGl2ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zKClcbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnByZWZlcnJlZCgpXG4gICAgICAgIHJldHVybiBjbGFtcChpbmRleCwgMCwgaXRlbXMubGVuZ3RoIC0gMSlcbiAgICB9KVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlcyBvZiB0aGUgYWN0aXZlIGl0ZW1cbiAgICAgKi9cbiAgICByZWFkb25seSBjaGFuZ2VzID0gb3V0cHV0PFNsaWRpbmdDb21wb25lbnQ+KClcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBlZmZlY3QoXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlSW5kZXggPSB0aGlzLmFjdGl2ZSgpXG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zKClcbiAgICAgICAgICAgICAgICBjb25zdCBsYXp5ID0gdGhpcy5sYXp5KClcbiAgICAgICAgICAgICAgICBjb25zdCBwcmVmZXJyZWQgPSB0aGlzLnByZWZlcnJlZCgpXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEFjdGl2ZUluZGV4ID0gaXRlbXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5hY3RpdmUoKSlcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlSW5kZXggPT09IGN1cnJlbnRBY3RpdmVJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbXNbYWN0aXZlSW5kZXhdPy5hY3RpdmUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgYWN0aXZlSXRlbTogU2xpZGluZ0l0ZW1EaXJlY3RpdmUgfCB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICBsZXQgaW5BbmltYXRpb246IEl0ZW1BbmltYXRpb25TdGF0ZSB8IG51bGwgPSBudWxsXG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1tpXVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IGkgPT09IGFjdGl2ZUluZGV4XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVJdGVtID0gaXRlbVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudGx5QWN0aXZlID0gaXRlbS5hY3RpdmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5hY3RpdmUuc2V0KGZhbHNlKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGF6eSA9PT0gZmFsc2UgJiYgIWl0ZW0ucmVuZGVyZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucmVuZGVyZWQuc2V0KHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmFuaW1hdGlvbigpIHx8IGl0ZW0ucmVuZGVyZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50bHlBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUluZGV4IDwgY3VycmVudEFjdGl2ZUluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmFuaW1hdGlvbi5zZXQoeyB2YWx1ZTogSXRlbUFuaW1hdGlvblN0YXRlLlJpZ2h0T3V0IH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbkFuaW1hdGlvbiA9IEl0ZW1BbmltYXRpb25TdGF0ZS5MZWZ0SW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYW5pbWF0aW9uLnNldCh7IHZhbHVlOiBJdGVtQW5pbWF0aW9uU3RhdGUuTGVmdE91dCB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5BbmltYXRpb24gPSBJdGVtQW5pbWF0aW9uU3RhdGUuUmlnaHRJblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5hbmltYXRpb24uc2V0KHsgdmFsdWU6IEl0ZW1BbmltYXRpb25TdGF0ZS5GYXN0T3V0IH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluQW5pbWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVJdGVtLmFuaW1hdGlvbi5zZXQoeyB2YWx1ZTogaW5BbmltYXRpb24gfSlcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUl0ZW0uYW5pbWF0aW9uLnNldCh7IHZhbHVlOiBJdGVtQW5pbWF0aW9uU3RhdGUuRmFzdEluIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlSXRlbS5hY3RpdmUuc2V0KHRydWUpXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUl0ZW0ucmVuZGVyZWQuc2V0KHRydWUpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgcHJlZmVycmVkQ2xhbXAgPSBjbGFtcChwcmVmZXJyZWQsIDAsIGl0ZW1zLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICAgICAgaWYgKHByZWZlcnJlZCAhPT0gcHJlZmVycmVkQ2xhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVmZXJyZWQuc2V0KHByZWZlcnJlZENsYW1wKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlcy5lbWl0KHRoaXMpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgICAgIClcbiAgICB9XG59XG4iXX0=
@@ -1,8 +1,12 @@
1
1
  import { BehaviorSubject, map, shareReplay, ReplaySubject, combineLatest, switchMap, of, Subject, startWith, scan, tap, distinctUntilChanged, finalize } from 'rxjs';
2
2
  import * as i0 from '@angular/core';
3
- import { Component, HostBinding, inject, ElementRef, ViewChild, Input, Output, ChangeDetectionStrategy, ContentChild, ContentChildren, NgModule, Injectable, TemplateRef, Directive, ViewContainerRef, Injector } from '@angular/core';
3
+ import { Component, HostBinding, inject, ElementRef, ViewChild, Input, Output, ChangeDetectionStrategy, ContentChild, ContentChildren, NgModule, Injectable, TemplateRef, Directive, ViewContainerRef, Injector, signal, output, effect, contentChildren, input, computed } from '@angular/core';
4
4
  import { NumberWithUnit, Destructible, coerceBoolAttr, FastDOM } from '@ngutil/common';
5
- import { DimensionWatcher } from '@ngutil/style';
5
+ import { DimensionWatcher, Duration, Ease } from '@ngutil/style';
6
+ import { trigger, state, style, transition, animate } from '@angular/animations';
7
+ import * as i1 from '@angular/common';
8
+ import { CommonModule } from '@angular/common';
9
+ import { clamp } from 'lodash';
6
10
 
7
11
  /**
8
12
  * -----------------------------------------------
@@ -530,7 +534,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
530
534
  args: [DockingPanelComponent]
531
535
  }] } });
532
536
 
533
- const members = [DockingLayoutComponent, DockingPanelComponent, DockingContentComponent];
537
+ const members$1 = [DockingLayoutComponent, DockingPanelComponent, DockingContentComponent];
534
538
  class NuDockingLayout {
535
539
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: NuDockingLayout, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
536
540
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.6", ngImport: i0, type: NuDockingLayout, imports: [DockingLayoutComponent, DockingPanelComponent, DockingContentComponent], exports: [DockingLayoutComponent, DockingPanelComponent, DockingContentComponent] }); }
@@ -539,8 +543,8 @@ class NuDockingLayout {
539
543
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: NuDockingLayout, decorators: [{
540
544
  type: NgModule,
541
545
  args: [{
542
- imports: members,
543
- exports: members
546
+ imports: members$1,
547
+ exports: members$1
544
548
  }]
545
549
  }] });
546
550
 
@@ -780,9 +784,213 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
780
784
  type: Directive
781
785
  }], ctorParameters: () => [] });
782
786
 
787
+ class SlidingItemDirective {
788
+ constructor() {
789
+ this.tpl = inject(TemplateRef);
790
+ this.rendered = signal(false);
791
+ this.active = signal(false);
792
+ this.animation = signal(null);
793
+ this.activated = output();
794
+ effect(() => {
795
+ this.activated.emit(this.active());
796
+ }, { allowSignalWrites: true });
797
+ }
798
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: SlidingItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
799
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.6", type: SlidingItemDirective, isStandalone: true, selector: "ng-template[nuSlidingItem]", outputs: { activated: "activated" }, ngImport: i0 }); }
800
+ }
801
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: SlidingItemDirective, decorators: [{
802
+ type: Directive,
803
+ args: [{
804
+ selector: "ng-template[nuSlidingItem]",
805
+ standalone: true
806
+ }]
807
+ }], ctorParameters: () => [] });
808
+
809
+ const absolute = { position: "absolute", top: "0px", left: "0px" };
810
+ const anim = `${Duration.Fast} ${Ease.Acceleration}`;
811
+ class SlidingComponent {
812
+ constructor() {
813
+ /**
814
+ * List of items
815
+ */
816
+ this.items = contentChildren(SlidingItemDirective);
817
+ /**
818
+ * Lazily rendering items
819
+ */
820
+ this.lazy = input(true);
821
+ /**
822
+ * Index of the preferred item
823
+ */
824
+ this.preferred = signal(0);
825
+ /**
826
+ * Index of the active item
827
+ */
828
+ this.active = computed(() => {
829
+ const items = this.items();
830
+ if (items.length === 0) {
831
+ return -1;
832
+ }
833
+ const index = this.preferred();
834
+ return clamp(index, 0, items.length - 1);
835
+ });
836
+ /**
837
+ * Changes of the active item
838
+ */
839
+ this.changes = output();
840
+ effect(() => {
841
+ const activeIndex = this.active();
842
+ const items = this.items();
843
+ const lazy = this.lazy();
844
+ const preferred = this.preferred();
845
+ const currentActiveIndex = items.findIndex(item => item.active());
846
+ if (activeIndex === currentActiveIndex) {
847
+ if (items[activeIndex]?.active()) {
848
+ return;
849
+ }
850
+ }
851
+ let activeItem;
852
+ let inAnimation = null;
853
+ for (let i = 0; i < items.length; i++) {
854
+ const item = items[i];
855
+ const isActive = i === activeIndex;
856
+ if (isActive) {
857
+ activeItem = item;
858
+ }
859
+ else {
860
+ const currentlyActive = item.active();
861
+ item.active.set(false);
862
+ if (lazy === false && !item.rendered()) {
863
+ item.rendered.set(true);
864
+ }
865
+ if (item.animation() || item.rendered()) {
866
+ if (currentlyActive) {
867
+ if (activeIndex < currentActiveIndex) {
868
+ item.animation.set({ value: "right-out" /* ItemAnimationState.RightOut */ });
869
+ inAnimation = "left-in" /* ItemAnimationState.LeftIn */;
870
+ }
871
+ else {
872
+ item.animation.set({ value: "left-out" /* ItemAnimationState.LeftOut */ });
873
+ inAnimation = "right-in" /* ItemAnimationState.RightIn */;
874
+ }
875
+ }
876
+ else {
877
+ item.animation.set({ value: "fast-out" /* ItemAnimationState.FastOut */ });
878
+ }
879
+ }
880
+ }
881
+ }
882
+ if (activeItem) {
883
+ if (inAnimation) {
884
+ activeItem.animation.set({ value: inAnimation });
885
+ }
886
+ else if (items.length === 1) {
887
+ activeItem.animation.set({ value: "fast-in" /* ItemAnimationState.FastIn */ });
888
+ }
889
+ activeItem.active.set(true);
890
+ activeItem.rendered.set(true);
891
+ }
892
+ const preferredClamp = clamp(preferred, 0, items.length - 1);
893
+ if (preferred !== preferredClamp) {
894
+ this.preferred.set(preferredClamp);
895
+ }
896
+ this.changes.emit(this);
897
+ }, { allowSignalWrites: true });
898
+ }
899
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: SlidingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
900
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.6", type: SlidingComponent, isStandalone: true, selector: "nu-sliding", inputs: { lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changes: "changes" }, queries: [{ propertyName: "items", predicate: SlidingItemDirective, isSignal: true }], ngImport: i0, template: `
901
+ @if (items(); as _items) {
902
+ @for (item of _items; track item; let index = $index) {
903
+ @if (item.rendered()) {
904
+ <div class="item" [@animate]="item.animation()">
905
+ <ng-template [ngTemplateOutlet]="item.tpl" />
906
+ </div>
907
+ }
908
+ }
909
+ }
910
+ `, isInline: true, styles: [":host{display:grid;grid-template-columns:1fr;grid-template-rows:1fr;overflow:hidden;position:relative}:host .item{grid-column:1;grid-row:1;display:flex;flex-direction:column;align-items:stretch;position:relative;overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [
911
+ trigger("animate", [
912
+ state("fast-out" /* ItemAnimationState.FastOut */, style({ display: "none", ...absolute, transform: "translateX(-100%)", pointerEvents: "none" })),
913
+ state("left-out" /* ItemAnimationState.LeftOut */, style({ display: "none", ...absolute, transform: "translateX(-100%)", pointerEvents: "none" })),
914
+ state("right-out" /* ItemAnimationState.RightOut */, style({ display: "none", ...absolute, transform: "translateX(100%)", pointerEvents: "none" })),
915
+ state("fast-in" /* ItemAnimationState.FastIn */, style({ display: "flex", position: "relative", transform: "translateX(0)" })),
916
+ state("left-in" /* ItemAnimationState.LeftIn */, style({ display: "flex", position: "relative", transform: "translateX(0)" })),
917
+ state("right-in" /* ItemAnimationState.RightIn */, style({ display: "flex", position: "relative", transform: "translateX(0)" })),
918
+ transition(`* => ${"left-out" /* ItemAnimationState.LeftOut */}`, [
919
+ style({ width: "*", ...absolute, transform: "translateX(0)", pointerEvents: "none" }),
920
+ animate(anim, style({ transform: "translateX(-100%)" }))
921
+ ]),
922
+ transition(`* => ${"right-out" /* ItemAnimationState.RightOut */}`, [
923
+ style({ width: "*", ...absolute, transform: "translateX(0)", pointerEvents: "none" }),
924
+ animate(anim, style({ transform: "translateX(100%)" }))
925
+ ]),
926
+ transition(`* => ${"left-in" /* ItemAnimationState.LeftIn */}`, [
927
+ style({ display: "flex", position: "relative", transform: "translateX(-100%)" }),
928
+ animate(anim, style({ transform: "translateX(0)" }))
929
+ ]),
930
+ transition(`* => ${"right-in" /* ItemAnimationState.RightIn */}`, [
931
+ style({ display: "flex", position: "relative", transform: "translateX(100%)" }),
932
+ animate(anim, style({ transform: "translateX(0%)" }))
933
+ ])
934
+ ])
935
+ ] }); }
936
+ }
937
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: SlidingComponent, decorators: [{
938
+ type: Component,
939
+ args: [{ selector: "nu-sliding", standalone: true, imports: [CommonModule], animations: [
940
+ trigger("animate", [
941
+ state("fast-out" /* ItemAnimationState.FastOut */, style({ display: "none", ...absolute, transform: "translateX(-100%)", pointerEvents: "none" })),
942
+ state("left-out" /* ItemAnimationState.LeftOut */, style({ display: "none", ...absolute, transform: "translateX(-100%)", pointerEvents: "none" })),
943
+ state("right-out" /* ItemAnimationState.RightOut */, style({ display: "none", ...absolute, transform: "translateX(100%)", pointerEvents: "none" })),
944
+ state("fast-in" /* ItemAnimationState.FastIn */, style({ display: "flex", position: "relative", transform: "translateX(0)" })),
945
+ state("left-in" /* ItemAnimationState.LeftIn */, style({ display: "flex", position: "relative", transform: "translateX(0)" })),
946
+ state("right-in" /* ItemAnimationState.RightIn */, style({ display: "flex", position: "relative", transform: "translateX(0)" })),
947
+ transition(`* => ${"left-out" /* ItemAnimationState.LeftOut */}`, [
948
+ style({ width: "*", ...absolute, transform: "translateX(0)", pointerEvents: "none" }),
949
+ animate(anim, style({ transform: "translateX(-100%)" }))
950
+ ]),
951
+ transition(`* => ${"right-out" /* ItemAnimationState.RightOut */}`, [
952
+ style({ width: "*", ...absolute, transform: "translateX(0)", pointerEvents: "none" }),
953
+ animate(anim, style({ transform: "translateX(100%)" }))
954
+ ]),
955
+ transition(`* => ${"left-in" /* ItemAnimationState.LeftIn */}`, [
956
+ style({ display: "flex", position: "relative", transform: "translateX(-100%)" }),
957
+ animate(anim, style({ transform: "translateX(0)" }))
958
+ ]),
959
+ transition(`* => ${"right-in" /* ItemAnimationState.RightIn */}`, [
960
+ style({ display: "flex", position: "relative", transform: "translateX(100%)" }),
961
+ animate(anim, style({ transform: "translateX(0%)" }))
962
+ ])
963
+ ])
964
+ ], template: `
965
+ @if (items(); as _items) {
966
+ @for (item of _items; track item; let index = $index) {
967
+ @if (item.rendered()) {
968
+ <div class="item" [@animate]="item.animation()">
969
+ <ng-template [ngTemplateOutlet]="item.tpl" />
970
+ </div>
971
+ }
972
+ }
973
+ }
974
+ `, styles: [":host{display:grid;grid-template-columns:1fr;grid-template-rows:1fr;overflow:hidden;position:relative}:host .item{grid-column:1;grid-row:1;display:flex;flex-direction:column;align-items:stretch;position:relative;overflow:hidden}\n"] }]
975
+ }], ctorParameters: () => [] });
976
+
977
+ const members = [SlidingItemDirective, SlidingComponent];
978
+ class NuSlidingLayout {
979
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: NuSlidingLayout, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
980
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.6", ngImport: i0, type: NuSlidingLayout, imports: [SlidingItemDirective, SlidingComponent], exports: [SlidingItemDirective, SlidingComponent] }); }
981
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: NuSlidingLayout, imports: [SlidingComponent] }); }
982
+ }
983
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: NuSlidingLayout, decorators: [{
984
+ type: NgModule,
985
+ args: [{
986
+ imports: members,
987
+ exports: members
988
+ }]
989
+ }] });
990
+
783
991
  /**
784
992
  * Generated bundle index. Do not edit.
785
993
  */
786
994
 
787
- export { DockingContentComponent, DockingLayoutComponent, DockingPanelComponent, L9Cell, L9Range, L9State, NuDockingLayout, SlotDef, SlotDirective, SlotOutletDirective, SlotsService };
995
+ export { DockingContentComponent, DockingLayoutComponent, DockingPanelComponent, L9Cell, L9Range, L9State, NuDockingLayout, NuSlidingLayout, SlidingComponent, SlidingItemDirective, SlotDef, SlotDirective, SlotOutletDirective, SlotsService };
788
996
  //# sourceMappingURL=ngutil-layout.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngutil-layout.mjs","sources":["../../../../packages/layout/src/l9/range.ts","../../../../packages/layout/src/l9/state.ts","../../../../packages/layout/src/docking/docking-content.component.ts","../../../../packages/layout/src/docking/docking-backdrop.component.ts","../../../../packages/layout/src/docking/docking-panel.component.ts","../../../../packages/layout/src/docking/docking-layout.component.ts","../../../../packages/layout/src/docking/index.ts","../../../../packages/layout/src/services/slots.service.ts","../../../../packages/layout/src/ngutil-layout.ts"],"sourcesContent":["/**\n * -----------------------------------------------\n * | TOP:LEFT | TOP:CENTER | TOP:RIGHT |\n * -----------------------------------------------\n * | MIDDLE:LEFT | MIDDLE:CENTER | MIDDLE:RIGH |\n * -----------------------------------------------\n * | BOTTOMN:LEFT | BOTTOM:CENTER | BOTTOM:RIGHT |\n * -----------------------------------------------\n */\n\nconst vertical = [\"top\", \"middle\", \"bottom\"] as const\nconst horizontal = [\"left\", \"center\", \"right\"] as const\n\nexport type L9Vertical = \"top\" | \"middle\" | \"bottom\"\nexport type L9Horizontal = \"left\" | \"center\" | \"right\"\nexport type L9CellName = `${L9Vertical}:${L9Horizontal}`\nexport type L9RangeName = L9Vertical | L9Horizontal | L9CellName | `${L9CellName}-${L9CellName}`\nexport type L9Orient = \"horizontal\" | \"vertical\" | \"rect\"\n\nexport class L9Cell {\n static coerce(value: L9CellName) {\n const [v, h] = value.split(\":\")\n\n if (vertical.includes(v as any) && horizontal.includes(h as any)) {\n return new L9Cell(v as any, h as any)\n }\n\n throw new Error(`Invalid cell value: ${value}`)\n }\n\n constructor(\n public readonly v: L9Vertical,\n public readonly h: L9Horizontal\n ) {}\n}\n\nexport class L9Range {\n static coerce(value: L9Range | L9RangeName) {\n if (value instanceof L9Range) {\n return value\n } else {\n return new L9Range(value)\n }\n }\n\n readonly cells: Array<L9Cell>\n readonly orient: L9Orient\n\n constructor(range: L9RangeName) {\n this.cells = parse(range)\n this.orient = this.#determineOrient()\n }\n\n isEq(other: L9Range) {\n if (other instanceof L9Range) {\n const selfFirst = this.cells[0]\n const otherFirst = other.cells[0]\n\n if (selfFirst.h !== otherFirst.h || selfFirst.v !== otherFirst.v) {\n return false\n }\n\n const selfLast = this.cells[this.cells.length - 1]\n const otherLast = other.cells[other.cells.length - 1]\n\n if (selfLast.h === otherLast.h && selfLast.v === otherLast.v) {\n return true\n }\n }\n return false\n }\n\n #determineOrient(): L9Orient {\n const { v: sv, h: sh } = this.cells[0]\n const { v: ev, h: eh } = this.cells[this.cells.length - 1]\n\n if (sv === ev) {\n return \"horizontal\"\n } else if (sh === eh) {\n return \"vertical\"\n } else {\n return \"rect\"\n }\n }\n}\n\nfunction parse(value: any): Array<L9Cell> {\n const cells: Array<L9Cell> = []\n\n if (vertical.includes(value)) {\n for (const h of horizontal) {\n cells.push(new L9Cell(value, h))\n }\n } else if (horizontal.includes(value)) {\n for (const v of vertical) {\n cells.push(new L9Cell(v, value))\n }\n } else if (value.includes(\"-\")) {\n const [begin, end] = value.split(\"-\")\n const beginCells = parse(begin)\n const endCells = parse(end)\n\n if (beginCells.length > 1) {\n throw new Error(`Currently not supported begin range value: ${begin}`)\n }\n\n if (endCells.length > 1) {\n throw new Error(`Currently not supported end range value: ${end}`)\n }\n\n const { v: bv, h: bh } = beginCells[0]\n const { v: ev, h: eh } = endCells[0]\n\n const vstart = Math.min(vertical.indexOf(bv as any), vertical.indexOf(ev as any))\n const vend = Math.max(vertical.indexOf(bv as any), vertical.indexOf(ev as any))\n const hstart = Math.min(horizontal.indexOf(bh as any), horizontal.indexOf(eh as any))\n const hend = Math.max(horizontal.indexOf(bh as any), horizontal.indexOf(eh as any))\n\n for (let vi = vstart; vi <= vend; vi++) {\n for (let hi = hstart; hi <= hend; hi++) {\n cells.push(new L9Cell(vertical[vi], horizontal[hi]))\n }\n }\n } else if (value.includes(\":\")) {\n cells.push(L9Cell.coerce(value))\n }\n\n if (cells.length === 0) {\n throw Error(`Undefined l9cell: \"${value}\"`)\n }\n\n return cells\n}\n","import { BehaviorSubject, map, Observable, shareReplay } from \"rxjs\"\n\nimport { type Dimension } from \"@ngutil/style\"\n\nimport { L9CellName, L9Horizontal, L9Vertical } from \"./range\"\n\nexport type L9StateVar<T extends string> = `--${T}-${L9Vertical}-${L9Horizontal}-${\"w\" | \"h\"}`\nexport type L9StyleVars<T extends string> = { [key in L9StateVar<T>]?: string }\n\ntype L9Dims = { [key in L9CellName]?: Dimension }\n\nexport class L9State<T extends string> {\n readonly #dims = new BehaviorSubject<L9Dims>({})\n\n readonly style: Observable<L9StyleVars<T>> = this.#dims.pipe(\n map(dims => {\n const res: L9StyleVars<T> = {}\n\n for (const [k, v] of Object.entries(dims)) {\n if (v == null) {\n continue\n }\n\n const [vertical, horizontal] = k.split(\":\")\n res[`--${this.prefix}-${vertical}-${horizontal}-w` as L9StateVar<T>] = v.width.toString()\n res[`--${this.prefix}-${vertical}-${horizontal}-h` as L9StateVar<T>] = v.height.toString()\n }\n\n return res\n }),\n shareReplay(1)\n )\n\n constructor(public readonly prefix: T) {}\n}\n","import { Component } from \"@angular/core\"\n\n@Component({\n standalone: true,\n selector: \"nu-docking-content\",\n exportAs: \"nuDockingContent\",\n styleUrl: \"./docking-content.component.scss\",\n template: `<ng-content></ng-content>`\n})\nexport class DockingContentComponent {}\n","import { Component, HostBinding } from \"@angular/core\"\n\n@Component({\n standalone: true,\n selector: \"nu-docking-backdrop\",\n styleUrl: \"./docking-backdrop.component.scss\",\n template: ``\n})\nexport class DockingBackdropComponent {\n @HostBinding(\"[attr.state]\")\n state: \"visible\" | \"hidden\" = \"hidden\"\n}\n","import { AfterViewInit, Component, ElementRef, inject, Input, Output, ViewChild } from \"@angular/core\"\n\nimport { BehaviorSubject, combineLatest, map, Observable, of, ReplaySubject, shareReplay, switchMap } from \"rxjs\"\n\nimport {\n BooleanInput,\n coerceBoolAttr,\n Destructible,\n FastDOM,\n NumberWithUnit,\n NumberWithUnitInput\n} from \"@ngutil/common\"\nimport { DimensionWatcher } from \"@ngutil/style\"\n\nimport { L9Range, L9RangeName } from \"../l9/range\"\n\nexport type DockingPanelState = \"full\" | \"mini\" | \"hidden\"\nexport type DockingPanelMode = \"over\" | \"push\" | \"rigid\"\n\nconst DEFAULT_POSITION = L9Range.coerce(\"left\")\nconst HIDDEN_SIZE = new NumberWithUnit(0, \"px\")\nconst AUTO_SIZE = NumberWithUnit.coerce(\"auto\")\n\n@Component({\n standalone: true,\n selector: \"nu-docking-panel\",\n exportAs: \"nuDockingPanel\",\n styleUrl: \"./docking-panel.component.scss\",\n template: `\n <div class=\"nu-docking-wrapper\" #content>\n <ng-content></ng-content>\n </div>\n `\n})\nexport class DockingPanelComponent extends Destructible implements AfterViewInit {\n readonly el = inject(ElementRef<HTMLElement>)\n readonly #dimWatcher = inject(DimensionWatcher)\n @ViewChild(\"content\", { read: ElementRef, static: true })\n readonly content!: ElementRef<HTMLElement>\n\n @Input(\"position\")\n set positionInput(val: L9Range | L9RangeName) {\n const coerced = L9Range.coerce(val)\n if (coerced.orient === \"rect\") {\n throw new Error(`Invalid position value: ${val}`)\n }\n\n if (!this.position.value.isEq(coerced)) {\n this.position.next(coerced)\n }\n }\n readonly position = new BehaviorSubject<L9Range>(DEFAULT_POSITION)\n\n @Input(\"state\")\n set stateInput(val: DockingPanelState) {\n if (this.state.value !== val) {\n this.state.next(val)\n }\n }\n @Output(\"stateChanges\")\n readonly state = new BehaviorSubject<DockingPanelState>(\"full\")\n\n @Input(\"mode\")\n set modeInput(val: DockingPanelMode) {\n if (this.mode.value !== val) {\n this.mode.next(val)\n }\n }\n readonly mode = new BehaviorSubject<DockingPanelMode>(\"rigid\")\n\n @Input(\"fullSize\")\n set fullSizeInput(val: NumberWithUnitInput) {\n const coerced = NumberWithUnit.coerce(val, \"px\")\n if (this.#fullSize.value !== coerced) {\n this.#fullSize.next(coerced)\n }\n }\n readonly #fullSize = new BehaviorSubject<NumberWithUnit>(AUTO_SIZE)\n\n @Input(\"miniSize\")\n set miniSizeInput(val: NumberWithUnitInput) {\n const coerced = NumberWithUnit.coerce(val, \"px\")\n if (this.#miniSize.value !== coerced) {\n this.#miniSize.next(coerced)\n }\n }\n readonly #miniSize = new BehaviorSubject<NumberWithUnit>(HIDDEN_SIZE)\n\n @Input(\"minimizable\")\n set minimizable(val: BooleanInput) {\n this.#minimizable = coerceBoolAttr(val)\n this.#minimizableAuto = false\n }\n get minimizable(): boolean {\n return this.#minimizable\n }\n #minimizable: boolean = false\n #minimizableAuto: boolean = true\n\n @Input(\"backdrop\")\n set backdrop(val: BooleanInput) {\n this.#backdrop = coerceBoolAttr(val)\n }\n get backdrop(): boolean {\n return this.#backdrop\n }\n #backdrop: boolean = false\n\n readonly #contentSize = new ReplaySubject<{ width: NumberWithUnit; height: NumberWithUnit }>(1)\n\n readonly #autoSize = combineLatest({\n dim: this.#contentSize,\n pos: this.position\n }).pipe(\n map(({ dim, pos }) => {\n if (pos.orient === \"horizontal\") {\n return dim.height\n } else {\n return dim.width\n }\n }),\n shareReplay(1)\n )\n\n readonly fullSize = this.#fullSize.pipe(\n switchMap(size => {\n if (size.unit === \"auto\") {\n return this.#autoSize\n } else {\n return of(size)\n }\n }),\n shareReplay(1)\n )\n\n readonly miniSize = this.#miniSize.pipe(\n switchMap(size => {\n if (size.unit === \"auto\") {\n return this.#autoSize\n } else {\n return of(size)\n }\n }),\n shareReplay(1)\n )\n\n readonly changes = combineLatest({\n position: this.position,\n state: this.state,\n mode: this.mode,\n fullSize: this.fullSize,\n miniSize: this.miniSize,\n contentSize: this.#contentSize\n })\n\n // TODO: better animation handling in min -> hidden -> min -> full\n constructor() {\n super()\n\n this.d.sub(this.changes).subscribe(changes => {\n if (this.#minimizableAuto) {\n this.#minimizable = this.#miniSize.value.value !== 0\n }\n\n FastDOM.setAttributes(this.el.nativeElement, {\n state: changes.state,\n orient: changes.position.orient,\n mode: changes.mode,\n side:\n changes.position.orient === \"horizontal\" ? changes.position.cells[0].v : changes.position.cells[0].h\n })\n\n const isHorizontal = changes.position.orient === \"horizontal\"\n let w = null\n let h = null\n\n // TODO: when change state from mini -> hidden, currently wrong behavior\n // the good behavior is to not gain fullSize ang go to hidden\n if (changes.state === \"mini\") {\n if (isHorizontal) {\n h = changes.miniSize.unit === \"auto\" ? changes.contentSize.height : changes.miniSize\n } else {\n w = changes.miniSize.unit === \"auto\" ? changes.contentSize.width : changes.miniSize\n }\n } else {\n if (isHorizontal) {\n h = changes.fullSize.unit === \"auto\" ? changes.contentSize.height : changes.fullSize\n } else {\n w = changes.fullSize.unit === \"auto\" ? changes.contentSize.width : changes.fullSize\n }\n }\n\n FastDOM.setStyle(\n this.el.nativeElement,\n {\n \"--docking-panel-w\": w != null ? `${w}` : null,\n \"--docking-panel-h\": h != null ? `${h}` : null,\n \"--docking-panel-content-w\": changes.contentSize.width,\n \"--docking-panel-content-h\": changes.contentSize.height\n },\n () => FastDOM.setAttributes(this.el.nativeElement, { animate: \"\" })\n )\n })\n }\n\n ngAfterViewInit(): void {\n this.d\n .sub(this.#dimWatcher.watch(this.content, \"scroll-box\"))\n .pipe(\n map(dim => {\n return {\n width: new NumberWithUnit(dim.width, \"px\"),\n height: new NumberWithUnit(dim.height, \"px\")\n }\n })\n )\n .subscribe(this.#contentSize)\n }\n\n open() {\n this.state.next(\"full\")\n }\n\n close() {\n this.state.next(\"hidden\")\n }\n\n minimize() {\n if (this.minimizable) {\n this.state.next(\"mini\")\n }\n }\n}\n\ntype ChangesObservable = typeof DockingPanelComponent.prototype.changes\nexport type DockingPanelChanges = ChangesObservable extends Observable<infer T> ? T : never\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n inject,\n Input,\n OnChanges,\n QueryList,\n SimpleChanges,\n ViewChild\n} from \"@angular/core\"\n\nimport { combineLatest, map, Observable, shareReplay, startWith, Subject, switchMap } from \"rxjs\"\n\nimport { Destructible, FastDOM } from \"@ngutil/common\"\n\nimport { DockingBackdropComponent } from \"./docking-backdrop.component\"\nimport { DockingContentComponent } from \"./docking-content.component\"\nimport { type DockingPanelChanges, DockingPanelComponent } from \"./docking-panel.component\"\n\ntype DockingVerticalPosition = \"top\" | \"middle\" | \"bottom\"\ntype DockingHorizontalPositon = \"left\" | \"center\" | \"right\"\ntype DockingPosition = `${DockingVerticalPosition}:${DockingHorizontalPositon}`\nexport type DockingRange =\n | DockingVerticalPosition\n | DockingHorizontalPositon\n | DockingPosition\n | `${DockingPosition}-${DockingPosition}`\n\nconst RIGID_ZINDEX = 100\nconst OVER_ZINDEX = RIGID_ZINDEX * 2\nconst BACKDROP_ZINDEX = 10000\n\ntype PanelsChanges = Array<{ panel: DockingPanelComponent; changes: DockingPanelChanges }>\n\n@Component({\n selector: \"nu-docking\",\n standalone: true,\n imports: [DockingContentComponent, DockingBackdropComponent],\n template: `\n <ng-content select=\"nu-docking-panel\"></ng-content>\n\n @if (!contentComponent) {\n <nu-docking-content>\n <ng-content></ng-content>\n </nu-docking-content>\n } @else {\n <ng-content select=\"nu-docking-content\"></ng-content>\n }\n\n <nu-docking-backdrop #backdrop (click)=\"onHideBackdropPanel($event)\" />\n `,\n styleUrl: \"./docking-layout.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DockingLayoutComponent extends Destructible implements AfterViewInit, OnChanges {\n readonly #el = inject(ElementRef<HTMLElement>)\n\n @Input() contentOnly = false\n\n @ContentChild(DockingContentComponent) contentComponent?: DockingContentComponent\n @ViewChild(\"backdrop\", { read: ElementRef, static: true })\n backdropEl?: ElementRef<HTMLElement>\n @ContentChildren(DockingPanelComponent) dockingPanels!: QueryList<DockingPanelComponent>\n\n // readonly panels = new BehaviorSubject<PanelRef[]>([])\n readonly panels!: Observable<Array<DockingPanelComponent>>\n\n #reflow = new Subject<void>()\n #backdropPanel: DockingPanelComponent | null = null\n\n ngAfterViewInit(): void {\n // eslint-disable-next-line prettier/prettier\n (this as { panels: Observable<Array<DockingPanelComponent>> }).panels = this.dockingPanels.changes.pipe(\n startWith(null),\n map(() => this.dockingPanels.toArray()),\n shareReplay(1)\n )\n\n this.d\n .sub(combineLatest({ panels: this.panels, reflow: this.#reflow.pipe(startWith(null)) }))\n .pipe(\n switchMap(({ panels }) =>\n combineLatest(\n panels.map(panel =>\n panel.changes.pipe(\n map(changes => {\n return { panel, changes }\n })\n )\n )\n )\n )\n )\n .subscribe(this.#layout.bind(this))\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\"contentOnly\" in changes || \"positionMode\" in changes) {\n this.#reflow.next()\n }\n }\n\n #layout(entries: PanelsChanges) {\n let paddingTop = 0\n let paddingRight = 0\n let paddingBottom = 0\n let paddingLeft = 0\n let rigidZIndex = RIGID_ZINDEX\n let overZIndex = OVER_ZINDEX\n let backdropZIndex = -1\n\n this.#backdropPanel = null\n\n if (this.contentOnly) {\n // TODO:...\n } else {\n for (const entry of entries) {\n const panelState = entry.changes\n const panelSize =\n panelState.state === \"full\"\n ? panelState.fullSize.value\n : panelState.state === \"mini\"\n ? panelState.miniSize.value\n : 0\n\n const isHorizontal = panelState.position.orient === \"horizontal\"\n const isRigid = panelState.mode === \"rigid\"\n\n let panelTop = null\n let panelRight = null\n let panelBottom = null\n let panelLeft = null\n\n if (isHorizontal) {\n panelLeft = 0\n panelRight = 0\n if (panelState.position.cells[0].v === \"top\") {\n if (isRigid) {\n paddingTop = Math.max(paddingTop, panelSize)\n }\n panelTop = 0\n } else if (panelState.position.cells[0].v === \"bottom\") {\n if (isRigid) {\n paddingBottom = Math.max(paddingBottom, panelSize)\n }\n panelBottom = 0\n }\n } else {\n panelTop = 0\n panelBottom = 0\n\n if (panelState.position.cells[0].h === \"left\") {\n if (isRigid) {\n paddingLeft = Math.max(paddingLeft, panelSize)\n }\n panelLeft = 0\n } else if (panelState.position.cells[0].h === \"right\") {\n if (isRigid) {\n paddingRight = Math.max(paddingRight, panelSize)\n }\n panelRight = 0\n }\n }\n\n let panelZIndex = isRigid ? (rigidZIndex += 2) : (overZIndex += 2)\n if (panelState.state !== \"hidden\" && entry.panel.backdrop) {\n backdropZIndex = BACKDROP_ZINDEX\n panelZIndex = backdropZIndex + 1\n this.#backdropPanel = entry.panel\n }\n\n FastDOM.setStyle(entry.panel.el.nativeElement, {\n \"z-index\": `${panelZIndex}`,\n \"--docking-panel-t\": panelTop != null ? `${panelTop}px` : null,\n \"--docking-panel-r\": panelRight != null ? `${panelRight}px` : null,\n \"--docking-panel-b\": panelBottom != null ? `${panelBottom}px` : null,\n \"--docking-panel-l\": panelLeft != null ? `${panelLeft}px` : null\n })\n }\n\n FastDOM.setStyle(this.#el.nativeElement, {\n \"--docking-layout-top\": `${paddingTop}px`,\n \"--docking-layout-right\": `${paddingRight}px`,\n \"--docking-layout-bottom\": `${paddingBottom}px`,\n \"--docking-layout-left\": `${paddingLeft}px`\n })\n\n if (this.backdropEl) {\n FastDOM.setAttributes(this.backdropEl.nativeElement, {\n state: backdropZIndex < 0 ? \"hidden\" : \"visible\"\n })\n FastDOM.setStyle(this.backdropEl.nativeElement, { \"z-index\": `${backdropZIndex}` })\n }\n }\n }\n\n onHideBackdropPanel(event: Event) {\n event.preventDefault()\n if (this.#backdropPanel) {\n this.#backdropPanel.close()\n }\n }\n}\n","import { NgModule } from \"@angular/core\"\n\nimport { DockingContentComponent } from \"./docking-content.component\"\nimport { DockingLayoutComponent } from \"./docking-layout.component\"\nimport { DockingPanelComponent } from \"./docking-panel.component\"\n\nexport { DockingLayoutComponent, DockingPanelComponent, DockingContentComponent }\n\nconst members = [DockingLayoutComponent, DockingPanelComponent, DockingContentComponent]\n\n@NgModule({\n imports: members,\n exports: members\n})\nexport class NuDockingLayout {}\n","import {\n Directive,\n EmbeddedViewRef,\n inject,\n Injectable,\n Injector,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef\n} from \"@angular/core\"\n\nimport {\n BehaviorSubject,\n distinctUntilChanged,\n finalize,\n map,\n Observable,\n of,\n scan,\n shareReplay,\n Subject,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { Destructible, IDisposable } from \"@ngutil/common\"\n\ntype SlotOrder = `:${number}`\ntype SlotId = ` as ${string}`\nexport type Slot<T extends string> = `${T}${SlotOrder | \"\"}${SlotId | \"\"}`\nexport type SlotTpl = TemplateRef<any>\nexport type SlotViewRef = EmbeddedViewRef<any>\n\nconst SLOT_REGEX = /^([^:\\s]+)(?::(\\d+))?(?:\\s+as\\s+(.*?))?$/i\n\nexport class SlotDef<T extends string> implements IDisposable {\n readonly slot!: T\n readonly order!: number\n readonly id?: string\n readonly viewRef?: SlotViewRef\n\n constructor(\n slot: Slot<T>,\n public readonly tpl: SlotTpl\n ) {\n const match = slot.match(SLOT_REGEX)\n if (!match) {\n console.warn(`Invalid slot definition: ${slot}`)\n } else {\n this.slot = match[1] as any\n this.order = match[2] != null ? Number(match[2]) : Infinity\n this.id = match[3] as string\n }\n }\n\n dispose(): void {\n this.viewRef?.destroy()\n ;(this as { viewRef?: SlotViewRef }).viewRef = undefined\n }\n}\n\nexport interface SlotEvent<T extends string> {\n type: \"add\" | \"del\"\n def: SlotDef<T>\n}\n\n/**\n * @Directive({selector: \"ng-template[xyzSlot]\", inputs: [{name: \"slot\", alias: \"xyzSlot\"}]})\n * class XYZSlotDirective extends SlotDirective<XYZComponentSlots> { }\n *\n * @Directive({selector: \"ng-template[xyzSlotOutlet]\", inputs: [{name: \"slot\", alias: \"xyzSlotOutlet\"}]})\n * class XYZSlotOutletDirective extends SlotOutletDirective<XYZComponentSlots> { }\n *\n *\n * @Component({provides: [SlotsService]})\n * class XYZComponent {\n * slots: inject(SlotsService<XYZComponentSlots>)\n * }\n *\n *\n */\n@Injectable()\nexport class SlotsService<T extends string = any> extends Destructible {\n #events = new Subject<SlotEvent<T>>()\n\n #entries = this.#events.pipe(\n scan((entries, event) => {\n if (event.type === \"add\") {\n const index = entries.findIndex(value => value === event.def)\n if (index > -1) {\n entries[index] = event.def\n } else {\n entries.push(event.def)\n }\n } else if (event.type === \"del\") {\n const index = entries.findIndex(value => value === event.def)\n if (index > -1) {\n entries.splice(index, 1)\n }\n }\n return entries\n }, [] as SlotDef<T>[]),\n tap(entries => {\n entries.sort((a, b) => {\n if (a.slot === b.slot) {\n return a.order - b.order\n } else {\n return a.slot.localeCompare(b.slot)\n }\n })\n }),\n shareReplay(1)\n )\n\n constructor() {\n super()\n // XXX: need to collect entries from the beginning\n this.d.sub(this.#entries).subscribe()\n }\n\n addTpl(def: SlotDef<T>) {\n this.#events.next({ type: \"add\", def })\n }\n\n delTpl(def: SlotDef<T>) {\n this.#events.next({ type: \"del\", def })\n }\n\n #watchers: { [key in T]: Observable<Array<SlotDef<T>>> } = {} as any\n\n watch(slot: T) {\n const existing = this.#watchers[slot]\n if (existing == null) {\n return (this.#watchers[slot] = this.#watch(slot))\n } else {\n return existing\n }\n }\n\n #watch(slot: T) {\n return this.#entries.pipe(\n map(entries => entries.filter(entry => entry.slot === slot)),\n distinctUntilChanged((prev, curr) => {\n if (prev.length === curr.length) {\n for (let i = 0; i < prev.length; i++) {\n if (prev[i] !== curr[i]) {\n return false\n }\n }\n return true\n } else {\n return false\n }\n }),\n finalize(() => {\n delete this.#watchers[slot]\n }),\n shareReplay(1)\n )\n }\n}\n\n@Directive()\nexport abstract class SlotDirective<T extends string, C = any> implements OnDestroy {\n protected abstract readonly slotSvc: SlotsService<T>\n protected readonly tpl = inject(TemplateRef<C>)\n\n set slot(slot: Slot<T>) {\n if (this.#slot !== slot) {\n this.#slot = slot\n\n if (this.#slotDef) {\n this.slotSvc.delTpl(this.#slotDef)\n }\n\n this.#slotDef = new SlotDef<T>(slot, this.tpl)\n this.slotSvc.addTpl(this.#slotDef)\n }\n }\n get slot() {\n return this.#slot\n }\n #slot!: Slot<T>\n #slotDef?: SlotDef<T>\n\n ngOnDestroy(): void {\n if (this.#slotDef) {\n this.slotSvc.delTpl(this.#slotDef)\n }\n }\n}\n\n@Directive()\nexport abstract class SlotOutletDirective<T extends string> extends Destructible implements OnInit {\n protected abstract readonly slotSvc: SlotsService<T>\n protected readonly vcr: ViewContainerRef = inject(ViewContainerRef)\n protected readonly injector: Injector = inject(Injector)\n\n set slot(slot: T | null) {\n if (this.#slot.value !== slot) {\n this.#slot.next(slot)\n }\n }\n get slot() {\n return this.#slot.value\n }\n #slot = new BehaviorSubject<T | null>(null)\n\n #watch = this.#slot.pipe(\n switchMap(slot => {\n if (slot) {\n return this.slotSvc.watch(slot)\n } else {\n return of([])\n }\n })\n )\n\n #views: Array<SlotDef<any>> = []\n\n constructor() {\n super()\n this.d.any(this.#clearViews.bind(this))\n }\n\n ngOnInit(): void {\n this.d.sub(this.#watch).subscribe(this.#onEntriesChanged)\n }\n\n #onEntriesChanged = (entries: Array<SlotDef<T>>) => {\n const { remove, undecided } = this.#determineActions(entries)\n\n for (const r of remove) {\n r.dispose()\n const idx = this.#views.indexOf(r)\n if (idx >= 0) {\n this.#views.splice(idx, 1)\n }\n }\n\n this.#views.length = 0\n for (const [pos, entry] of undecided.entries()) {\n if (entry.viewRef && !entry.viewRef.destroyed) {\n const currentPos = this.vcr.indexOf(entry.viewRef)\n if (currentPos !== pos) {\n this.vcr.insert(entry.viewRef, pos)\n }\n } else {\n ;(entry as { viewRef: SlotViewRef }).viewRef = this.vcr.createEmbeddedView(entry.tpl, null, {\n index: pos,\n injector: this.injector\n })\n entry.viewRef!.markForCheck()\n }\n this.#views.push(entry)\n }\n }\n\n #determineActions(entries: Array<SlotDef<T>>) {\n const byId: { [key: string]: Array<SlotDef<T>> } = {}\n let remove: Array<SlotDef<T>> = []\n const undecided: Array<SlotDef<T>> = []\n\n for (const entry of entries) {\n if (entry.id != null) {\n if (!byId[entry.id]) {\n byId[entry.id] = [entry]\n } else {\n byId[entry.id].push(entry)\n }\n } else {\n undecided.push(entry)\n }\n }\n\n for (const values of Object.values(byId)) {\n remove = remove.concat(values.slice(0, -1))\n undecided.push(values[values.length - 1])\n }\n\n for (const current of this.#views) {\n if (!undecided.includes(current)) {\n remove.push(current)\n }\n }\n\n return { remove, undecided }\n }\n\n #clearViews() {\n this.vcr.clear()\n this.#views = []\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngutil-layout.mjs","sources":["../../../../packages/layout/src/l9/range.ts","../../../../packages/layout/src/l9/state.ts","../../../../packages/layout/src/docking/docking-content.component.ts","../../../../packages/layout/src/docking/docking-backdrop.component.ts","../../../../packages/layout/src/docking/docking-panel.component.ts","../../../../packages/layout/src/docking/docking-layout.component.ts","../../../../packages/layout/src/docking/index.ts","../../../../packages/layout/src/services/slots.service.ts","../../../../packages/layout/src/sliding/sliding-item.directive.ts","../../../../packages/layout/src/sliding/sliding.component.ts","../../../../packages/layout/src/sliding/index.ts","../../../../packages/layout/src/ngutil-layout.ts"],"sourcesContent":["/**\n * -----------------------------------------------\n * | TOP:LEFT | TOP:CENTER | TOP:RIGHT |\n * -----------------------------------------------\n * | MIDDLE:LEFT | MIDDLE:CENTER | MIDDLE:RIGH |\n * -----------------------------------------------\n * | BOTTOMN:LEFT | BOTTOM:CENTER | BOTTOM:RIGHT |\n * -----------------------------------------------\n */\n\nconst vertical = [\"top\", \"middle\", \"bottom\"] as const\nconst horizontal = [\"left\", \"center\", \"right\"] as const\n\nexport type L9Vertical = \"top\" | \"middle\" | \"bottom\"\nexport type L9Horizontal = \"left\" | \"center\" | \"right\"\nexport type L9CellName = `${L9Vertical}:${L9Horizontal}`\nexport type L9RangeName = L9Vertical | L9Horizontal | L9CellName | `${L9CellName}-${L9CellName}`\nexport type L9Orient = \"horizontal\" | \"vertical\" | \"rect\"\n\nexport class L9Cell {\n static coerce(value: L9CellName) {\n const [v, h] = value.split(\":\")\n\n if (vertical.includes(v as any) && horizontal.includes(h as any)) {\n return new L9Cell(v as any, h as any)\n }\n\n throw new Error(`Invalid cell value: ${value}`)\n }\n\n constructor(\n public readonly v: L9Vertical,\n public readonly h: L9Horizontal\n ) {}\n}\n\nexport class L9Range {\n static coerce(value: L9Range | L9RangeName) {\n if (value instanceof L9Range) {\n return value\n } else {\n return new L9Range(value)\n }\n }\n\n readonly cells: Array<L9Cell>\n readonly orient: L9Orient\n\n constructor(range: L9RangeName) {\n this.cells = parse(range)\n this.orient = this.#determineOrient()\n }\n\n isEq(other: L9Range) {\n if (other instanceof L9Range) {\n const selfFirst = this.cells[0]\n const otherFirst = other.cells[0]\n\n if (selfFirst.h !== otherFirst.h || selfFirst.v !== otherFirst.v) {\n return false\n }\n\n const selfLast = this.cells[this.cells.length - 1]\n const otherLast = other.cells[other.cells.length - 1]\n\n if (selfLast.h === otherLast.h && selfLast.v === otherLast.v) {\n return true\n }\n }\n return false\n }\n\n #determineOrient(): L9Orient {\n const { v: sv, h: sh } = this.cells[0]\n const { v: ev, h: eh } = this.cells[this.cells.length - 1]\n\n if (sv === ev) {\n return \"horizontal\"\n } else if (sh === eh) {\n return \"vertical\"\n } else {\n return \"rect\"\n }\n }\n}\n\nfunction parse(value: any): Array<L9Cell> {\n const cells: Array<L9Cell> = []\n\n if (vertical.includes(value)) {\n for (const h of horizontal) {\n cells.push(new L9Cell(value, h))\n }\n } else if (horizontal.includes(value)) {\n for (const v of vertical) {\n cells.push(new L9Cell(v, value))\n }\n } else if (value.includes(\"-\")) {\n const [begin, end] = value.split(\"-\")\n const beginCells = parse(begin)\n const endCells = parse(end)\n\n if (beginCells.length > 1) {\n throw new Error(`Currently not supported begin range value: ${begin}`)\n }\n\n if (endCells.length > 1) {\n throw new Error(`Currently not supported end range value: ${end}`)\n }\n\n const { v: bv, h: bh } = beginCells[0]\n const { v: ev, h: eh } = endCells[0]\n\n const vstart = Math.min(vertical.indexOf(bv as any), vertical.indexOf(ev as any))\n const vend = Math.max(vertical.indexOf(bv as any), vertical.indexOf(ev as any))\n const hstart = Math.min(horizontal.indexOf(bh as any), horizontal.indexOf(eh as any))\n const hend = Math.max(horizontal.indexOf(bh as any), horizontal.indexOf(eh as any))\n\n for (let vi = vstart; vi <= vend; vi++) {\n for (let hi = hstart; hi <= hend; hi++) {\n cells.push(new L9Cell(vertical[vi], horizontal[hi]))\n }\n }\n } else if (value.includes(\":\")) {\n cells.push(L9Cell.coerce(value))\n }\n\n if (cells.length === 0) {\n throw Error(`Undefined l9cell: \"${value}\"`)\n }\n\n return cells\n}\n","import { BehaviorSubject, map, Observable, shareReplay } from \"rxjs\"\n\nimport { type Dimension } from \"@ngutil/style\"\n\nimport { L9CellName, L9Horizontal, L9Vertical } from \"./range\"\n\nexport type L9StateVar<T extends string> = `--${T}-${L9Vertical}-${L9Horizontal}-${\"w\" | \"h\"}`\nexport type L9StyleVars<T extends string> = { [key in L9StateVar<T>]?: string }\n\ntype L9Dims = { [key in L9CellName]?: Dimension }\n\nexport class L9State<T extends string> {\n readonly #dims = new BehaviorSubject<L9Dims>({})\n\n readonly style: Observable<L9StyleVars<T>> = this.#dims.pipe(\n map(dims => {\n const res: L9StyleVars<T> = {}\n\n for (const [k, v] of Object.entries(dims)) {\n if (v == null) {\n continue\n }\n\n const [vertical, horizontal] = k.split(\":\")\n res[`--${this.prefix}-${vertical}-${horizontal}-w` as L9StateVar<T>] = v.width.toString()\n res[`--${this.prefix}-${vertical}-${horizontal}-h` as L9StateVar<T>] = v.height.toString()\n }\n\n return res\n }),\n shareReplay(1)\n )\n\n constructor(public readonly prefix: T) {}\n}\n","import { Component } from \"@angular/core\"\n\n@Component({\n standalone: true,\n selector: \"nu-docking-content\",\n exportAs: \"nuDockingContent\",\n styleUrl: \"./docking-content.component.scss\",\n template: `<ng-content></ng-content>`\n})\nexport class DockingContentComponent {}\n","import { Component, HostBinding } from \"@angular/core\"\n\n@Component({\n standalone: true,\n selector: \"nu-docking-backdrop\",\n styleUrl: \"./docking-backdrop.component.scss\",\n template: ``\n})\nexport class DockingBackdropComponent {\n @HostBinding(\"[attr.state]\")\n state: \"visible\" | \"hidden\" = \"hidden\"\n}\n","import { AfterViewInit, Component, ElementRef, inject, Input, Output, ViewChild } from \"@angular/core\"\n\nimport { BehaviorSubject, combineLatest, map, Observable, of, ReplaySubject, shareReplay, switchMap } from \"rxjs\"\n\nimport {\n BooleanInput,\n coerceBoolAttr,\n Destructible,\n FastDOM,\n NumberWithUnit,\n NumberWithUnitInput\n} from \"@ngutil/common\"\nimport { DimensionWatcher } from \"@ngutil/style\"\n\nimport { L9Range, L9RangeName } from \"../l9/range\"\n\nexport type DockingPanelState = \"full\" | \"mini\" | \"hidden\"\nexport type DockingPanelMode = \"over\" | \"push\" | \"rigid\"\n\nconst DEFAULT_POSITION = L9Range.coerce(\"left\")\nconst HIDDEN_SIZE = new NumberWithUnit(0, \"px\")\nconst AUTO_SIZE = NumberWithUnit.coerce(\"auto\")\n\n@Component({\n standalone: true,\n selector: \"nu-docking-panel\",\n exportAs: \"nuDockingPanel\",\n styleUrl: \"./docking-panel.component.scss\",\n template: `\n <div class=\"nu-docking-wrapper\" #content>\n <ng-content></ng-content>\n </div>\n `\n})\nexport class DockingPanelComponent extends Destructible implements AfterViewInit {\n readonly el = inject(ElementRef<HTMLElement>)\n readonly #dimWatcher = inject(DimensionWatcher)\n @ViewChild(\"content\", { read: ElementRef, static: true })\n readonly content!: ElementRef<HTMLElement>\n\n @Input(\"position\")\n set positionInput(val: L9Range | L9RangeName) {\n const coerced = L9Range.coerce(val)\n if (coerced.orient === \"rect\") {\n throw new Error(`Invalid position value: ${val}`)\n }\n\n if (!this.position.value.isEq(coerced)) {\n this.position.next(coerced)\n }\n }\n readonly position = new BehaviorSubject<L9Range>(DEFAULT_POSITION)\n\n @Input(\"state\")\n set stateInput(val: DockingPanelState) {\n if (this.state.value !== val) {\n this.state.next(val)\n }\n }\n @Output(\"stateChanges\")\n readonly state = new BehaviorSubject<DockingPanelState>(\"full\")\n\n @Input(\"mode\")\n set modeInput(val: DockingPanelMode) {\n if (this.mode.value !== val) {\n this.mode.next(val)\n }\n }\n readonly mode = new BehaviorSubject<DockingPanelMode>(\"rigid\")\n\n @Input(\"fullSize\")\n set fullSizeInput(val: NumberWithUnitInput) {\n const coerced = NumberWithUnit.coerce(val, \"px\")\n if (this.#fullSize.value !== coerced) {\n this.#fullSize.next(coerced)\n }\n }\n readonly #fullSize = new BehaviorSubject<NumberWithUnit>(AUTO_SIZE)\n\n @Input(\"miniSize\")\n set miniSizeInput(val: NumberWithUnitInput) {\n const coerced = NumberWithUnit.coerce(val, \"px\")\n if (this.#miniSize.value !== coerced) {\n this.#miniSize.next(coerced)\n }\n }\n readonly #miniSize = new BehaviorSubject<NumberWithUnit>(HIDDEN_SIZE)\n\n @Input(\"minimizable\")\n set minimizable(val: BooleanInput) {\n this.#minimizable = coerceBoolAttr(val)\n this.#minimizableAuto = false\n }\n get minimizable(): boolean {\n return this.#minimizable\n }\n #minimizable: boolean = false\n #minimizableAuto: boolean = true\n\n @Input(\"backdrop\")\n set backdrop(val: BooleanInput) {\n this.#backdrop = coerceBoolAttr(val)\n }\n get backdrop(): boolean {\n return this.#backdrop\n }\n #backdrop: boolean = false\n\n readonly #contentSize = new ReplaySubject<{ width: NumberWithUnit; height: NumberWithUnit }>(1)\n\n readonly #autoSize = combineLatest({\n dim: this.#contentSize,\n pos: this.position\n }).pipe(\n map(({ dim, pos }) => {\n if (pos.orient === \"horizontal\") {\n return dim.height\n } else {\n return dim.width\n }\n }),\n shareReplay(1)\n )\n\n readonly fullSize = this.#fullSize.pipe(\n switchMap(size => {\n if (size.unit === \"auto\") {\n return this.#autoSize\n } else {\n return of(size)\n }\n }),\n shareReplay(1)\n )\n\n readonly miniSize = this.#miniSize.pipe(\n switchMap(size => {\n if (size.unit === \"auto\") {\n return this.#autoSize\n } else {\n return of(size)\n }\n }),\n shareReplay(1)\n )\n\n readonly changes = combineLatest({\n position: this.position,\n state: this.state,\n mode: this.mode,\n fullSize: this.fullSize,\n miniSize: this.miniSize,\n contentSize: this.#contentSize\n })\n\n // TODO: better animation handling in min -> hidden -> min -> full\n constructor() {\n super()\n\n this.d.sub(this.changes).subscribe(changes => {\n if (this.#minimizableAuto) {\n this.#minimizable = this.#miniSize.value.value !== 0\n }\n\n FastDOM.setAttributes(this.el.nativeElement, {\n state: changes.state,\n orient: changes.position.orient,\n mode: changes.mode,\n side:\n changes.position.orient === \"horizontal\" ? changes.position.cells[0].v : changes.position.cells[0].h\n })\n\n const isHorizontal = changes.position.orient === \"horizontal\"\n let w = null\n let h = null\n\n // TODO: when change state from mini -> hidden, currently wrong behavior\n // the good behavior is to not gain fullSize ang go to hidden\n if (changes.state === \"mini\") {\n if (isHorizontal) {\n h = changes.miniSize.unit === \"auto\" ? changes.contentSize.height : changes.miniSize\n } else {\n w = changes.miniSize.unit === \"auto\" ? changes.contentSize.width : changes.miniSize\n }\n } else {\n if (isHorizontal) {\n h = changes.fullSize.unit === \"auto\" ? changes.contentSize.height : changes.fullSize\n } else {\n w = changes.fullSize.unit === \"auto\" ? changes.contentSize.width : changes.fullSize\n }\n }\n\n FastDOM.setStyle(\n this.el.nativeElement,\n {\n \"--docking-panel-w\": w != null ? `${w}` : null,\n \"--docking-panel-h\": h != null ? `${h}` : null,\n \"--docking-panel-content-w\": changes.contentSize.width,\n \"--docking-panel-content-h\": changes.contentSize.height\n },\n () => FastDOM.setAttributes(this.el.nativeElement, { animate: \"\" })\n )\n })\n }\n\n ngAfterViewInit(): void {\n this.d\n .sub(this.#dimWatcher.watch(this.content, \"scroll-box\"))\n .pipe(\n map(dim => {\n return {\n width: new NumberWithUnit(dim.width, \"px\"),\n height: new NumberWithUnit(dim.height, \"px\")\n }\n })\n )\n .subscribe(this.#contentSize)\n }\n\n open() {\n this.state.next(\"full\")\n }\n\n close() {\n this.state.next(\"hidden\")\n }\n\n minimize() {\n if (this.minimizable) {\n this.state.next(\"mini\")\n }\n }\n}\n\ntype ChangesObservable = typeof DockingPanelComponent.prototype.changes\nexport type DockingPanelChanges = ChangesObservable extends Observable<infer T> ? T : never\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n inject,\n Input,\n OnChanges,\n QueryList,\n SimpleChanges,\n ViewChild\n} from \"@angular/core\"\n\nimport { combineLatest, map, Observable, shareReplay, startWith, Subject, switchMap } from \"rxjs\"\n\nimport { Destructible, FastDOM } from \"@ngutil/common\"\n\nimport { DockingBackdropComponent } from \"./docking-backdrop.component\"\nimport { DockingContentComponent } from \"./docking-content.component\"\nimport { type DockingPanelChanges, DockingPanelComponent } from \"./docking-panel.component\"\n\ntype DockingVerticalPosition = \"top\" | \"middle\" | \"bottom\"\ntype DockingHorizontalPositon = \"left\" | \"center\" | \"right\"\ntype DockingPosition = `${DockingVerticalPosition}:${DockingHorizontalPositon}`\nexport type DockingRange =\n | DockingVerticalPosition\n | DockingHorizontalPositon\n | DockingPosition\n | `${DockingPosition}-${DockingPosition}`\n\nconst RIGID_ZINDEX = 100\nconst OVER_ZINDEX = RIGID_ZINDEX * 2\nconst BACKDROP_ZINDEX = 10000\n\ntype PanelsChanges = Array<{ panel: DockingPanelComponent; changes: DockingPanelChanges }>\n\n@Component({\n selector: \"nu-docking\",\n standalone: true,\n imports: [DockingContentComponent, DockingBackdropComponent],\n template: `\n <ng-content select=\"nu-docking-panel\"></ng-content>\n\n @if (!contentComponent) {\n <nu-docking-content>\n <ng-content></ng-content>\n </nu-docking-content>\n } @else {\n <ng-content select=\"nu-docking-content\"></ng-content>\n }\n\n <nu-docking-backdrop #backdrop (click)=\"onHideBackdropPanel($event)\" />\n `,\n styleUrl: \"./docking-layout.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DockingLayoutComponent extends Destructible implements AfterViewInit, OnChanges {\n readonly #el = inject(ElementRef<HTMLElement>)\n\n @Input() contentOnly = false\n\n @ContentChild(DockingContentComponent) contentComponent?: DockingContentComponent\n @ViewChild(\"backdrop\", { read: ElementRef, static: true })\n backdropEl?: ElementRef<HTMLElement>\n @ContentChildren(DockingPanelComponent) dockingPanels!: QueryList<DockingPanelComponent>\n\n // readonly panels = new BehaviorSubject<PanelRef[]>([])\n readonly panels!: Observable<Array<DockingPanelComponent>>\n\n #reflow = new Subject<void>()\n #backdropPanel: DockingPanelComponent | null = null\n\n ngAfterViewInit(): void {\n // eslint-disable-next-line prettier/prettier\n (this as { panels: Observable<Array<DockingPanelComponent>> }).panels = this.dockingPanels.changes.pipe(\n startWith(null),\n map(() => this.dockingPanels.toArray()),\n shareReplay(1)\n )\n\n this.d\n .sub(combineLatest({ panels: this.panels, reflow: this.#reflow.pipe(startWith(null)) }))\n .pipe(\n switchMap(({ panels }) =>\n combineLatest(\n panels.map(panel =>\n panel.changes.pipe(\n map(changes => {\n return { panel, changes }\n })\n )\n )\n )\n )\n )\n .subscribe(this.#layout.bind(this))\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\"contentOnly\" in changes || \"positionMode\" in changes) {\n this.#reflow.next()\n }\n }\n\n #layout(entries: PanelsChanges) {\n let paddingTop = 0\n let paddingRight = 0\n let paddingBottom = 0\n let paddingLeft = 0\n let rigidZIndex = RIGID_ZINDEX\n let overZIndex = OVER_ZINDEX\n let backdropZIndex = -1\n\n this.#backdropPanel = null\n\n if (this.contentOnly) {\n // TODO:...\n } else {\n for (const entry of entries) {\n const panelState = entry.changes\n const panelSize =\n panelState.state === \"full\"\n ? panelState.fullSize.value\n : panelState.state === \"mini\"\n ? panelState.miniSize.value\n : 0\n\n const isHorizontal = panelState.position.orient === \"horizontal\"\n const isRigid = panelState.mode === \"rigid\"\n\n let panelTop = null\n let panelRight = null\n let panelBottom = null\n let panelLeft = null\n\n if (isHorizontal) {\n panelLeft = 0\n panelRight = 0\n if (panelState.position.cells[0].v === \"top\") {\n if (isRigid) {\n paddingTop = Math.max(paddingTop, panelSize)\n }\n panelTop = 0\n } else if (panelState.position.cells[0].v === \"bottom\") {\n if (isRigid) {\n paddingBottom = Math.max(paddingBottom, panelSize)\n }\n panelBottom = 0\n }\n } else {\n panelTop = 0\n panelBottom = 0\n\n if (panelState.position.cells[0].h === \"left\") {\n if (isRigid) {\n paddingLeft = Math.max(paddingLeft, panelSize)\n }\n panelLeft = 0\n } else if (panelState.position.cells[0].h === \"right\") {\n if (isRigid) {\n paddingRight = Math.max(paddingRight, panelSize)\n }\n panelRight = 0\n }\n }\n\n let panelZIndex = isRigid ? (rigidZIndex += 2) : (overZIndex += 2)\n if (panelState.state !== \"hidden\" && entry.panel.backdrop) {\n backdropZIndex = BACKDROP_ZINDEX\n panelZIndex = backdropZIndex + 1\n this.#backdropPanel = entry.panel\n }\n\n FastDOM.setStyle(entry.panel.el.nativeElement, {\n \"z-index\": `${panelZIndex}`,\n \"--docking-panel-t\": panelTop != null ? `${panelTop}px` : null,\n \"--docking-panel-r\": panelRight != null ? `${panelRight}px` : null,\n \"--docking-panel-b\": panelBottom != null ? `${panelBottom}px` : null,\n \"--docking-panel-l\": panelLeft != null ? `${panelLeft}px` : null\n })\n }\n\n FastDOM.setStyle(this.#el.nativeElement, {\n \"--docking-layout-top\": `${paddingTop}px`,\n \"--docking-layout-right\": `${paddingRight}px`,\n \"--docking-layout-bottom\": `${paddingBottom}px`,\n \"--docking-layout-left\": `${paddingLeft}px`\n })\n\n if (this.backdropEl) {\n FastDOM.setAttributes(this.backdropEl.nativeElement, {\n state: backdropZIndex < 0 ? \"hidden\" : \"visible\"\n })\n FastDOM.setStyle(this.backdropEl.nativeElement, { \"z-index\": `${backdropZIndex}` })\n }\n }\n }\n\n onHideBackdropPanel(event: Event) {\n event.preventDefault()\n if (this.#backdropPanel) {\n this.#backdropPanel.close()\n }\n }\n}\n","import { NgModule } from \"@angular/core\"\n\nimport { DockingContentComponent } from \"./docking-content.component\"\nimport { DockingLayoutComponent } from \"./docking-layout.component\"\nimport { DockingPanelComponent } from \"./docking-panel.component\"\n\nexport { DockingLayoutComponent, DockingPanelComponent, DockingContentComponent }\n\nconst members = [DockingLayoutComponent, DockingPanelComponent, DockingContentComponent]\n\n@NgModule({\n imports: members,\n exports: members\n})\nexport class NuDockingLayout {}\n","import {\n Directive,\n EmbeddedViewRef,\n inject,\n Injectable,\n Injector,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef\n} from \"@angular/core\"\n\nimport {\n BehaviorSubject,\n distinctUntilChanged,\n finalize,\n map,\n Observable,\n of,\n scan,\n shareReplay,\n Subject,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { Destructible, IDisposable } from \"@ngutil/common\"\n\ntype SlotOrder = `:${number}`\ntype SlotId = ` as ${string}`\nexport type Slot<T extends string> = `${T}${SlotOrder | \"\"}${SlotId | \"\"}`\nexport type SlotTpl = TemplateRef<any>\nexport type SlotViewRef = EmbeddedViewRef<any>\n\nconst SLOT_REGEX = /^([^:\\s]+)(?::(\\d+))?(?:\\s+as\\s+(.*?))?$/i\n\nexport class SlotDef<T extends string> implements IDisposable {\n readonly slot!: T\n readonly order!: number\n readonly id?: string\n readonly viewRef?: SlotViewRef\n\n constructor(\n slot: Slot<T>,\n public readonly tpl: SlotTpl\n ) {\n const match = slot.match(SLOT_REGEX)\n if (!match) {\n console.warn(`Invalid slot definition: ${slot}`)\n } else {\n this.slot = match[1] as any\n this.order = match[2] != null ? Number(match[2]) : Infinity\n this.id = match[3] as string\n }\n }\n\n dispose(): void {\n this.viewRef?.destroy()\n ;(this as { viewRef?: SlotViewRef }).viewRef = undefined\n }\n}\n\nexport interface SlotEvent<T extends string> {\n type: \"add\" | \"del\"\n def: SlotDef<T>\n}\n\n/**\n * @Directive({selector: \"ng-template[xyzSlot]\", inputs: [{name: \"slot\", alias: \"xyzSlot\"}]})\n * class XYZSlotDirective extends SlotDirective<XYZComponentSlots> { }\n *\n * @Directive({selector: \"ng-template[xyzSlotOutlet]\", inputs: [{name: \"slot\", alias: \"xyzSlotOutlet\"}]})\n * class XYZSlotOutletDirective extends SlotOutletDirective<XYZComponentSlots> { }\n *\n *\n * @Component({provides: [SlotsService]})\n * class XYZComponent {\n * slots: inject(SlotsService<XYZComponentSlots>)\n * }\n *\n *\n */\n@Injectable()\nexport class SlotsService<T extends string = any> extends Destructible {\n #events = new Subject<SlotEvent<T>>()\n\n #entries = this.#events.pipe(\n scan((entries, event) => {\n if (event.type === \"add\") {\n const index = entries.findIndex(value => value === event.def)\n if (index > -1) {\n entries[index] = event.def\n } else {\n entries.push(event.def)\n }\n } else if (event.type === \"del\") {\n const index = entries.findIndex(value => value === event.def)\n if (index > -1) {\n entries.splice(index, 1)\n }\n }\n return entries\n }, [] as SlotDef<T>[]),\n tap(entries => {\n entries.sort((a, b) => {\n if (a.slot === b.slot) {\n return a.order - b.order\n } else {\n return a.slot.localeCompare(b.slot)\n }\n })\n }),\n shareReplay(1)\n )\n\n constructor() {\n super()\n // XXX: need to collect entries from the beginning\n this.d.sub(this.#entries).subscribe()\n }\n\n addTpl(def: SlotDef<T>) {\n this.#events.next({ type: \"add\", def })\n }\n\n delTpl(def: SlotDef<T>) {\n this.#events.next({ type: \"del\", def })\n }\n\n #watchers: { [key in T]: Observable<Array<SlotDef<T>>> } = {} as any\n\n watch(slot: T) {\n const existing = this.#watchers[slot]\n if (existing == null) {\n return (this.#watchers[slot] = this.#watch(slot))\n } else {\n return existing\n }\n }\n\n #watch(slot: T) {\n return this.#entries.pipe(\n map(entries => entries.filter(entry => entry.slot === slot)),\n distinctUntilChanged((prev, curr) => {\n if (prev.length === curr.length) {\n for (let i = 0; i < prev.length; i++) {\n if (prev[i] !== curr[i]) {\n return false\n }\n }\n return true\n } else {\n return false\n }\n }),\n finalize(() => {\n delete this.#watchers[slot]\n }),\n shareReplay(1)\n )\n }\n}\n\n@Directive()\nexport abstract class SlotDirective<T extends string, C = any> implements OnDestroy {\n protected abstract readonly slotSvc: SlotsService<T>\n protected readonly tpl = inject(TemplateRef<C>)\n\n set slot(slot: Slot<T>) {\n if (this.#slot !== slot) {\n this.#slot = slot\n\n if (this.#slotDef) {\n this.slotSvc.delTpl(this.#slotDef)\n }\n\n this.#slotDef = new SlotDef<T>(slot, this.tpl)\n this.slotSvc.addTpl(this.#slotDef)\n }\n }\n get slot() {\n return this.#slot\n }\n #slot!: Slot<T>\n #slotDef?: SlotDef<T>\n\n ngOnDestroy(): void {\n if (this.#slotDef) {\n this.slotSvc.delTpl(this.#slotDef)\n }\n }\n}\n\n@Directive()\nexport abstract class SlotOutletDirective<T extends string> extends Destructible implements OnInit {\n protected abstract readonly slotSvc: SlotsService<T>\n protected readonly vcr: ViewContainerRef = inject(ViewContainerRef)\n protected readonly injector: Injector = inject(Injector)\n\n set slot(slot: T | null) {\n if (this.#slot.value !== slot) {\n this.#slot.next(slot)\n }\n }\n get slot() {\n return this.#slot.value\n }\n #slot = new BehaviorSubject<T | null>(null)\n\n #watch = this.#slot.pipe(\n switchMap(slot => {\n if (slot) {\n return this.slotSvc.watch(slot)\n } else {\n return of([])\n }\n })\n )\n\n #views: Array<SlotDef<any>> = []\n\n constructor() {\n super()\n this.d.any(this.#clearViews.bind(this))\n }\n\n ngOnInit(): void {\n this.d.sub(this.#watch).subscribe(this.#onEntriesChanged)\n }\n\n #onEntriesChanged = (entries: Array<SlotDef<T>>) => {\n const { remove, undecided } = this.#determineActions(entries)\n\n for (const r of remove) {\n r.dispose()\n const idx = this.#views.indexOf(r)\n if (idx >= 0) {\n this.#views.splice(idx, 1)\n }\n }\n\n this.#views.length = 0\n for (const [pos, entry] of undecided.entries()) {\n if (entry.viewRef && !entry.viewRef.destroyed) {\n const currentPos = this.vcr.indexOf(entry.viewRef)\n if (currentPos !== pos) {\n this.vcr.insert(entry.viewRef, pos)\n }\n } else {\n ;(entry as { viewRef: SlotViewRef }).viewRef = this.vcr.createEmbeddedView(entry.tpl, null, {\n index: pos,\n injector: this.injector\n })\n entry.viewRef!.markForCheck()\n }\n this.#views.push(entry)\n }\n }\n\n #determineActions(entries: Array<SlotDef<T>>) {\n const byId: { [key: string]: Array<SlotDef<T>> } = {}\n let remove: Array<SlotDef<T>> = []\n const undecided: Array<SlotDef<T>> = []\n\n for (const entry of entries) {\n if (entry.id != null) {\n if (!byId[entry.id]) {\n byId[entry.id] = [entry]\n } else {\n byId[entry.id].push(entry)\n }\n } else {\n undecided.push(entry)\n }\n }\n\n for (const values of Object.values(byId)) {\n remove = remove.concat(values.slice(0, -1))\n undecided.push(values[values.length - 1])\n }\n\n for (const current of this.#views) {\n if (!undecided.includes(current)) {\n remove.push(current)\n }\n }\n\n return { remove, undecided }\n }\n\n #clearViews() {\n this.vcr.clear()\n this.#views = []\n }\n}\n","import { Directive, effect, inject, output, signal, TemplateRef } from \"@angular/core\"\n\nexport const enum ItemAnimationState {\n LeftIn = \"left-in\",\n LeftOut = \"left-out\",\n RightIn = \"right-in\",\n RightOut = \"right-out\",\n FastOut = \"fast-out\",\n FastIn = \"fast-in\"\n}\n\n@Directive({\n selector: \"ng-template[nuSlidingItem]\",\n standalone: true\n})\nexport class SlidingItemDirective {\n readonly tpl = inject(TemplateRef)\n\n readonly rendered = signal(false)\n readonly active = signal(false)\n readonly animation = signal<{ value: ItemAnimationState } | null>(null)\n readonly activated = output<boolean>()\n\n constructor() {\n effect(\n () => {\n this.activated.emit(this.active())\n },\n { allowSignalWrites: true }\n )\n }\n}\n","import { animate, state, style, transition, trigger } from \"@angular/animations\"\nimport { CommonModule } from \"@angular/common\"\nimport { Component, computed, contentChildren, effect, input, output, signal } from \"@angular/core\"\n\nimport { clamp } from \"lodash\"\n\nimport { Duration, Ease } from \"@ngutil/style\"\n\nimport { ItemAnimationState, SlidingItemDirective } from \"./sliding-item.directive\"\n\nconst absolute = { position: \"absolute\", top: \"0px\", left: \"0px\" }\n\nconst anim = `${Duration.Fast} ${Ease.Acceleration}`\n\n@Component({\n selector: \"nu-sliding\",\n standalone: true,\n imports: [CommonModule],\n styleUrl: \"./sliding.component.scss\",\n animations: [\n trigger(\"animate\", [\n state(\n ItemAnimationState.FastOut,\n style({ display: \"none\", ...absolute, transform: \"translateX(-100%)\", pointerEvents: \"none\" })\n ),\n state(\n ItemAnimationState.LeftOut,\n style({ display: \"none\", ...absolute, transform: \"translateX(-100%)\", pointerEvents: \"none\" })\n ),\n state(\n ItemAnimationState.RightOut,\n style({ display: \"none\", ...absolute, transform: \"translateX(100%)\", pointerEvents: \"none\" })\n ),\n state(\n ItemAnimationState.FastIn,\n style({ display: \"flex\", position: \"relative\", transform: \"translateX(0)\" })\n ),\n state(\n ItemAnimationState.LeftIn,\n style({ display: \"flex\", position: \"relative\", transform: \"translateX(0)\" })\n ),\n state(\n ItemAnimationState.RightIn,\n style({ display: \"flex\", position: \"relative\", transform: \"translateX(0)\" })\n ),\n\n transition(`* => ${ItemAnimationState.LeftOut}`, [\n style({ width: \"*\", ...absolute, transform: \"translateX(0)\", pointerEvents: \"none\" }),\n animate(anim, style({ transform: \"translateX(-100%)\" }))\n ]),\n transition(`* => ${ItemAnimationState.RightOut}`, [\n style({ width: \"*\", ...absolute, transform: \"translateX(0)\", pointerEvents: \"none\" }),\n animate(anim, style({ transform: \"translateX(100%)\" }))\n ]),\n transition(`* => ${ItemAnimationState.LeftIn}`, [\n style({ display: \"flex\", position: \"relative\", transform: \"translateX(-100%)\" }),\n animate(anim, style({ transform: \"translateX(0)\" }))\n ]),\n transition(`* => ${ItemAnimationState.RightIn}`, [\n style({ display: \"flex\", position: \"relative\", transform: \"translateX(100%)\" }),\n animate(anim, style({ transform: \"translateX(0%)\" }))\n ])\n ])\n ],\n template: `\n @if (items(); as _items) {\n @for (item of _items; track item; let index = $index) {\n @if (item.rendered()) {\n <div class=\"item\" [@animate]=\"item.animation()\">\n <ng-template [ngTemplateOutlet]=\"item.tpl\" />\n </div>\n }\n }\n }\n `\n})\nexport class SlidingComponent {\n /**\n * List of items\n */\n readonly items = contentChildren(SlidingItemDirective)\n\n /**\n * Lazily rendering items\n */\n readonly lazy = input(true)\n\n /**\n * Index of the preferred item\n */\n readonly preferred = signal(0)\n\n /**\n * Index of the active item\n */\n readonly active = computed(() => {\n const items = this.items()\n if (items.length === 0) {\n return -1\n }\n const index = this.preferred()\n return clamp(index, 0, items.length - 1)\n })\n\n /**\n * Changes of the active item\n */\n readonly changes = output<SlidingComponent>()\n\n constructor() {\n effect(\n () => {\n const activeIndex = this.active()\n const items = this.items()\n const lazy = this.lazy()\n const preferred = this.preferred()\n const currentActiveIndex = items.findIndex(item => item.active())\n if (activeIndex === currentActiveIndex) {\n if (items[activeIndex]?.active()) {\n return\n }\n }\n\n let activeItem: SlidingItemDirective | undefined\n let inAnimation: ItemAnimationState | null = null\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const isActive = i === activeIndex\n\n if (isActive) {\n activeItem = item\n } else {\n const currentlyActive = item.active()\n item.active.set(false)\n\n if (lazy === false && !item.rendered()) {\n item.rendered.set(true)\n }\n\n if (item.animation() || item.rendered()) {\n if (currentlyActive) {\n if (activeIndex < currentActiveIndex) {\n item.animation.set({ value: ItemAnimationState.RightOut })\n inAnimation = ItemAnimationState.LeftIn\n } else {\n item.animation.set({ value: ItemAnimationState.LeftOut })\n inAnimation = ItemAnimationState.RightIn\n }\n } else {\n item.animation.set({ value: ItemAnimationState.FastOut })\n }\n }\n }\n }\n\n if (activeItem) {\n if (inAnimation) {\n activeItem.animation.set({ value: inAnimation })\n } else if (items.length === 1) {\n activeItem.animation.set({ value: ItemAnimationState.FastIn })\n }\n activeItem.active.set(true)\n activeItem.rendered.set(true)\n }\n\n const preferredClamp = clamp(preferred, 0, items.length - 1)\n if (preferred !== preferredClamp) {\n this.preferred.set(preferredClamp)\n }\n\n this.changes.emit(this)\n },\n { allowSignalWrites: true }\n )\n }\n}\n","import { NgModule } from \"@angular/core\"\n\nimport { SlidingItemDirective } from \"./sliding-item.directive\"\nimport { SlidingComponent } from \"./sliding.component\"\n\nexport { SlidingItemDirective, SlidingComponent }\n\nconst members = [SlidingItemDirective, SlidingComponent]\n\n@NgModule({\n imports: members,\n exports: members\n})\nexport class NuSlidingLayout {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["members"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from "./l9";
2
2
  export * from "./docking";
3
3
  export * from "./services/slots.service";
4
+ export * from "./sliding";
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@ngutil/layout",
3
- "version": "0.0.42",
3
+ "version": "0.0.44",
4
4
  "peerDependencies": {
5
+ "@angular/animations": "^17.3.6",
5
6
  "@angular/common": "^17.3.6",
6
7
  "@angular/core": "^17.3.6",
7
8
  "rxjs": "^7.8.1",
8
- "@ngutil/common": "0.0.42",
9
- "@ngutil/style": "0.0.42"
9
+ "@ngutil/common": "0.0.44",
10
+ "@ngutil/style": "0.0.44"
10
11
  },
11
12
  "publishConfig": {
12
13
  "access": "public",
@@ -0,0 +1,11 @@
1
+ import { SlidingItemDirective } from "./sliding-item.directive";
2
+ import { SlidingComponent } from "./sliding.component";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./sliding-item.directive";
5
+ import * as i2 from "./sliding.component";
6
+ export { SlidingItemDirective, SlidingComponent };
7
+ export declare class NuSlidingLayout {
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<NuSlidingLayout, never>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<NuSlidingLayout, never, [typeof i1.SlidingItemDirective, typeof i2.SlidingComponent], [typeof i1.SlidingItemDirective, typeof i2.SlidingComponent]>;
10
+ static ɵinj: i0.ɵɵInjectorDeclaration<NuSlidingLayout>;
11
+ }
@@ -0,0 +1,22 @@
1
+ import { TemplateRef } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export declare const enum ItemAnimationState {
4
+ LeftIn = "left-in",
5
+ LeftOut = "left-out",
6
+ RightIn = "right-in",
7
+ RightOut = "right-out",
8
+ FastOut = "fast-out",
9
+ FastIn = "fast-in"
10
+ }
11
+ export declare class SlidingItemDirective {
12
+ readonly tpl: TemplateRef<any>;
13
+ readonly rendered: import("@angular/core").WritableSignal<boolean>;
14
+ readonly active: import("@angular/core").WritableSignal<boolean>;
15
+ readonly animation: import("@angular/core").WritableSignal<{
16
+ value: ItemAnimationState;
17
+ } | null>;
18
+ readonly activated: import("@angular/core").OutputEmitterRef<boolean>;
19
+ constructor();
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<SlidingItemDirective, never>;
21
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SlidingItemDirective, "ng-template[nuSlidingItem]", never, {}, { "activated": "activated"; }, never, never, true, never>;
22
+ }
@@ -0,0 +1,27 @@
1
+ import { SlidingItemDirective } from "./sliding-item.directive";
2
+ import * as i0 from "@angular/core";
3
+ export declare class SlidingComponent {
4
+ /**
5
+ * List of items
6
+ */
7
+ readonly items: import("@angular/core").Signal<readonly SlidingItemDirective[]>;
8
+ /**
9
+ * Lazily rendering items
10
+ */
11
+ readonly lazy: import("@angular/core").InputSignal<boolean>;
12
+ /**
13
+ * Index of the preferred item
14
+ */
15
+ readonly preferred: import("@angular/core").WritableSignal<number>;
16
+ /**
17
+ * Index of the active item
18
+ */
19
+ readonly active: import("@angular/core").Signal<number>;
20
+ /**
21
+ * Changes of the active item
22
+ */
23
+ readonly changes: import("@angular/core").OutputEmitterRef<SlidingComponent>;
24
+ constructor();
25
+ static ɵfac: i0.ɵɵFactoryDeclaration<SlidingComponent, never>;
26
+ static ɵcmp: i0.ɵɵComponentDeclaration<SlidingComponent, "nu-sliding", never, { "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; }, { "changes": "changes"; }, ["items"], never, true, never>;
27
+ }