@ngutil/layout 0.0.81 → 0.0.82

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,70 +0,0 @@
1
- import { Component, computed, ElementRef, inject, input, model, viewChild } from "@angular/core";
2
- import { takeUntilDestroyed, toObservable, toSignal } from "@angular/core/rxjs-interop";
3
- import { switchMap } from "rxjs";
4
- import { coerceBoolAttr } from "@ngutil/common";
5
- import { DimensionWatcher } from "@ngutil/style";
6
- import { L9Range } from "../l9/range";
7
- import * as i0 from "@angular/core";
8
- const DEFAULT_POSITION = L9Range.coerce("left");
9
- export class DockingPanelComponent {
10
- constructor() {
11
- this.#dimWatcher = inject(DimensionWatcher);
12
- this.el = inject(ElementRef);
13
- this.position = input(DEFAULT_POSITION, { transform: L9Range.coerce });
14
- // TODO: linkedSignal
15
- this.opened = model(false);
16
- this._opened = computed(() => coerceBoolAttr(this.opened()));
17
- this.mode = input("rigid");
18
- this.maxSize = input(undefined);
19
- this.backdrop = input(false);
20
- this.gridArea = computed(() => this.position().intoGridArea());
21
- this.orient = computed(() => this.position().orient);
22
- this.side = computed(() => {
23
- const pos = this.position();
24
- return pos.orient === "horizontal" ? pos.cells[0].v : pos.cells[0].h;
25
- });
26
- this.content = viewChild.required("content", { read: ElementRef });
27
- this.dimension$ = toObservable(this.content).pipe(switchMap(content => this.#dimWatcher.watch(content, "border-box")), takeUntilDestroyed());
28
- this.dimension = toSignal(this.dimension$);
29
- this.contentSize = computed(() => {
30
- const dim = this.dimension();
31
- if (!dim) {
32
- return 0;
33
- }
34
- return this.orient() === "horizontal" ? dim.height : dim.width;
35
- });
36
- }
37
- #dimWatcher;
38
- // readonly backdropSize = computed(() => {
39
- // const mode = this.backdrop()
40
- // if (mode === true || mode === "full") {
41
- // return L9Range.coerce("top:left-bottom:right").intoGridArea()
42
- // } else if (mode === "panel-size") {
43
- // const pos = this.position()
44
- // if (pos.orient === "horizontal") {
45
- // }
46
- // return ""
47
- // }
48
- // return null
49
- // })
50
- open() {
51
- this.opened.set(true);
52
- }
53
- close() {
54
- this.opened.set(false);
55
- }
56
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: DockingPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
57
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.6", type: DockingPanelComponent, isStandalone: true, selector: "nu-docking-panel", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, opened: { classPropertyName: "opened", publicName: "opened", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, maxSize: { classPropertyName: "maxSize", publicName: "maxSize", isSignal: true, isRequired: false, transformFunction: null }, backdrop: { classPropertyName: "backdrop", publicName: "backdrop", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { opened: "openedChange" }, host: { properties: { "style.grid-area": "gridArea()", "style.--nudp-content-size.px": "contentSize()", "attr.state": "_opened() ? 'opened' : 'closed'", "attr.orient": "orient()", "attr.side": "side()", "attr.mode": "mode()" } }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef, isSignal: true }], exportAs: ["nuDockingPanel"], ngImport: i0, template: `<div class="wrapper" #content><ng-content /></div>`, isInline: true, styles: [":host{--nudp-tx: 0;--nudp-ty: 0;--nudp-t: auto;--nudp-r: auto;--nudp-b: auto;--nudp-l: auto;display:block;position:relative;z-index:100}:host .wrapper{all:inherit;display:grid;grid-template-columns:auto;grid-template-rows:auto;align-items:stretch;justify-items:stretch;position:absolute;top:var(--nudp-t);right:var(--nudp-r);bottom:var(--nudp-b);left:var(--nudp-l);width:auto;height:auto;transition:transform .2s cubic-bezier(0,0,.2,1);transform:translate(var(--nudp-tx),var(--nudp-ty))}:host[mode=rigid]{overflow:clip}:host[mode=rigid][orient=horizontal]{transition:height .2s cubic-bezier(0,0,.2,1);height:var(--nudp-content-size)}:host[mode=rigid][orient=horizontal][state=closed]{height:0px}:host[mode=rigid][orient=vertical]{transition:width .2s cubic-bezier(0,0,.2,1);width:var(--nudp-content-size)}:host[mode=rigid][orient=vertical][state=closed]{width:0}:host[mode=over]{z-index:300}:host[orient=horizontal]{--nudp-l: 0px;--nudp-r: 0px}:host[orient=horizontal][side=top]{--nudp-t: 0px}:host[orient=horizontal][side=top][state=closed]{--nudp-ty: -100%}:host[orient=horizontal][side=bottom]{--nudp-b: 0px}:host[orient=horizontal][side=bottom][state=closed]{--nudp-ty: 100%}:host[orient=horizontal]:not([mode=rigid]){height:0px}:host[orient=vertical]{--nudp-t: 0px;--nudp-b: 0px}:host[orient=vertical][side=left]{--nudp-l: 0px}:host[orient=vertical][side=left][state=closed]{--nudp-tx: -100%}:host[orient=vertical][side=right]{--nudp-r: 0px}:host[orient=vertical][side=right][state=closed]{--nudp-tx: 100%}:host[orient=vertical]:not([mode=rigid]){width:0px}\n"] }); }
58
- }
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: DockingPanelComponent, decorators: [{
60
- type: Component,
61
- args: [{ selector: "nu-docking-panel", exportAs: "nuDockingPanel", standalone: true, host: {
62
- "[style.grid-area]": "gridArea()",
63
- "[style.--nudp-content-size.px]": "contentSize()",
64
- "[attr.state]": "_opened() ? 'opened' : 'closed'",
65
- "[attr.orient]": "orient()",
66
- "[attr.side]": "side()",
67
- "[attr.mode]": "mode()"
68
- }, template: `<div class="wrapper" #content><ng-content /></div>`, styles: [":host{--nudp-tx: 0;--nudp-ty: 0;--nudp-t: auto;--nudp-r: auto;--nudp-b: auto;--nudp-l: auto;display:block;position:relative;z-index:100}:host .wrapper{all:inherit;display:grid;grid-template-columns:auto;grid-template-rows:auto;align-items:stretch;justify-items:stretch;position:absolute;top:var(--nudp-t);right:var(--nudp-r);bottom:var(--nudp-b);left:var(--nudp-l);width:auto;height:auto;transition:transform .2s cubic-bezier(0,0,.2,1);transform:translate(var(--nudp-tx),var(--nudp-ty))}:host[mode=rigid]{overflow:clip}:host[mode=rigid][orient=horizontal]{transition:height .2s cubic-bezier(0,0,.2,1);height:var(--nudp-content-size)}:host[mode=rigid][orient=horizontal][state=closed]{height:0px}:host[mode=rigid][orient=vertical]{transition:width .2s cubic-bezier(0,0,.2,1);width:var(--nudp-content-size)}:host[mode=rigid][orient=vertical][state=closed]{width:0}:host[mode=over]{z-index:300}:host[orient=horizontal]{--nudp-l: 0px;--nudp-r: 0px}:host[orient=horizontal][side=top]{--nudp-t: 0px}:host[orient=horizontal][side=top][state=closed]{--nudp-ty: -100%}:host[orient=horizontal][side=bottom]{--nudp-b: 0px}:host[orient=horizontal][side=bottom][state=closed]{--nudp-ty: 100%}:host[orient=horizontal]:not([mode=rigid]){height:0px}:host[orient=vertical]{--nudp-t: 0px;--nudp-b: 0px}:host[orient=vertical][side=left]{--nudp-l: 0px}:host[orient=vertical][side=left][state=closed]{--nudp-tx: -100%}:host[orient=vertical][side=right]{--nudp-r: 0px}:host[orient=vertical][side=right][state=closed]{--nudp-tx: 100%}:host[orient=vertical]:not([mode=rigid]){width:0px}\n"] }]
69
- }] });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2RvY2tpbmcvZG9ja2luZy1wYW5lbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNoRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBRXZGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFaEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUVoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBOztBQU1yQyxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7QUFpQi9DLE1BQU0sT0FBTyxxQkFBcUI7SUFmbEM7UUFnQmEsZ0JBQVcsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUN0QyxPQUFFLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRXZCLGFBQVEsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDMUUscUJBQXFCO1FBQ1osV0FBTSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQTtRQUM5QixZQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ3ZELFNBQUksR0FBRyxLQUFLLENBQW1CLE9BQU8sQ0FBQyxDQUFBO1FBQ3ZDLFlBQU8sR0FBRyxLQUFLLENBQTRCLFNBQVMsQ0FBQyxDQUFBO1FBQ3JELGFBQVEsR0FBRyxLQUFLLENBQWUsS0FBSyxDQUFDLENBQUE7UUFFckMsYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQTtRQUN6RCxXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUMvQyxTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7WUFDM0IsT0FBTyxHQUFHLENBQUMsTUFBTSxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3hFLENBQUMsQ0FBQyxDQUFBO1FBRU8sWUFBTyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUE7UUFFN0QsZUFBVSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUNqRCxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFDbkUsa0JBQWtCLEVBQUUsQ0FDdkIsQ0FBQTtRQUNRLGNBQVMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRXJDLGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7WUFDNUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNQLE9BQU8sQ0FBQyxDQUFBO1lBQ1osQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQTtRQUNsRSxDQUFDLENBQUMsQ0FBQTtLQXdCTDtJQXhEWSxXQUFXLENBQTJCO0lBa0MvQywyQ0FBMkM7SUFDM0MsbUNBQW1DO0lBQ25DLDhDQUE4QztJQUM5Qyx3RUFBd0U7SUFDeEUsMENBQTBDO0lBQzFDLHNDQUFzQztJQUN0Qyw2Q0FBNkM7SUFFN0MsWUFBWTtJQUVaLG9CQUFvQjtJQUNwQixRQUFRO0lBQ1Isa0JBQWtCO0lBQ2xCLEtBQUs7SUFFTCxJQUFJO1FBQ0EsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDekIsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMxQixDQUFDOzhHQXhEUSxxQkFBcUI7a0dBQXJCLHFCQUFxQixraUNBbUIyQixVQUFVLDJFQXJCekQsb0RBQW9EOzsyRkFFckQscUJBQXFCO2tCQWZqQyxTQUFTOytCQUNJLGtCQUFrQixZQUNsQixnQkFBZ0IsY0FDZCxJQUFJLFFBQ1Y7d0JBQ0YsbUJBQW1CLEVBQUUsWUFBWTt3QkFDakMsZ0NBQWdDLEVBQUUsZUFBZTt3QkFDakQsY0FBYyxFQUFFLGlDQUFpQzt3QkFDakQsZUFBZSxFQUFFLFVBQVU7d0JBQzNCLGFBQWEsRUFBRSxRQUFRO3dCQUN2QixhQUFhLEVBQUUsUUFBUTtxQkFDMUIsWUFFUyxvREFBb0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0LCBtb2RlbCwgdmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkLCB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCJcblxuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBjb2VyY2VCb29sQXR0ciB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5pbXBvcnQgeyBEaW1lbnNpb25XYXRjaGVyIH0gZnJvbSBcIkBuZ3V0aWwvc3R5bGVcIlxuXG5pbXBvcnQgeyBMOVJhbmdlIH0gZnJvbSBcIi4uL2w5L3JhbmdlXCJcblxuZXhwb3J0IHR5cGUgRG9ja2luZ1BhbmVsU3RhdGUgPSBcImZ1bGxcIiB8IFwibWluaVwiIHwgXCJoaWRkZW5cIlxuZXhwb3J0IHR5cGUgRG9ja2luZ1BhbmVsTW9kZSA9IFwib3ZlclwiIHwgXCJwdXNoXCIgfCBcInJpZ2lkXCJcbmV4cG9ydCB0eXBlIEJhY2tkcm9wTW9kZSA9IGJvb2xlYW4gfCBcImZ1bGxcIiB8IFwicGFuZWwtc2l6ZVwiXG5cbmNvbnN0IERFRkFVTFRfUE9TSVRJT04gPSBMOVJhbmdlLmNvZXJjZShcImxlZnRcIilcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwibnUtZG9ja2luZy1wYW5lbFwiLFxuICAgIGV4cG9ydEFzOiBcIm51RG9ja2luZ1BhbmVsXCIsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBob3N0OiB7XG4gICAgICAgIFwiW3N0eWxlLmdyaWQtYXJlYV1cIjogXCJncmlkQXJlYSgpXCIsXG4gICAgICAgIFwiW3N0eWxlLi0tbnVkcC1jb250ZW50LXNpemUucHhdXCI6IFwiY29udGVudFNpemUoKVwiLFxuICAgICAgICBcIlthdHRyLnN0YXRlXVwiOiBcIl9vcGVuZWQoKSA/ICdvcGVuZWQnIDogJ2Nsb3NlZCdcIixcbiAgICAgICAgXCJbYXR0ci5vcmllbnRdXCI6IFwib3JpZW50KClcIixcbiAgICAgICAgXCJbYXR0ci5zaWRlXVwiOiBcInNpZGUoKVwiLFxuICAgICAgICBcIlthdHRyLm1vZGVdXCI6IFwibW9kZSgpXCJcbiAgICB9LFxuICAgIHN0eWxlVXJsOiBcIi4vZG9ja2luZy1wYW5lbC5jb21wb25lbnQuc2Nzc1wiLFxuICAgIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cIndyYXBwZXJcIiAjY29udGVudD48bmctY29udGVudCAvPjwvZGl2PmBcbn0pXG5leHBvcnQgY2xhc3MgRG9ja2luZ1BhbmVsQ29tcG9uZW50IHtcbiAgICByZWFkb25seSAjZGltV2F0Y2hlciA9IGluamVjdChEaW1lbnNpb25XYXRjaGVyKVxuICAgIHJlYWRvbmx5IGVsID0gaW5qZWN0KEVsZW1lbnRSZWYpXG5cbiAgICByZWFkb25seSBwb3NpdGlvbiA9IGlucHV0KERFRkFVTFRfUE9TSVRJT04sIHsgdHJhbnNmb3JtOiBMOVJhbmdlLmNvZXJjZSB9KVxuICAgIC8vIFRPRE86IGxpbmtlZFNpZ25hbFxuICAgIHJlYWRvbmx5IG9wZW5lZCA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlKVxuICAgIHJlYWRvbmx5IF9vcGVuZWQgPSBjb21wdXRlZCgoKSA9PiBjb2VyY2VCb29sQXR0cih0aGlzLm9wZW5lZCgpKSlcbiAgICByZWFkb25seSBtb2RlID0gaW5wdXQ8RG9ja2luZ1BhbmVsTW9kZT4oXCJyaWdpZFwiKVxuICAgIHJlYWRvbmx5IG1heFNpemUgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsPih1bmRlZmluZWQpXG4gICAgcmVhZG9ubHkgYmFja2Ryb3AgPSBpbnB1dDxCYWNrZHJvcE1vZGU+KGZhbHNlKVxuXG4gICAgcmVhZG9ubHkgZ3JpZEFyZWEgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBvc2l0aW9uKCkuaW50b0dyaWRBcmVhKCkpXG4gICAgcmVhZG9ubHkgb3JpZW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wb3NpdGlvbigpLm9yaWVudClcbiAgICByZWFkb25seSBzaWRlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBwb3MgPSB0aGlzLnBvc2l0aW9uKClcbiAgICAgICAgcmV0dXJuIHBvcy5vcmllbnQgPT09IFwiaG9yaXpvbnRhbFwiID8gcG9zLmNlbGxzWzBdLnYgOiBwb3MuY2VsbHNbMF0uaFxuICAgIH0pXG5cbiAgICByZWFkb25seSBjb250ZW50ID0gdmlld0NoaWxkLnJlcXVpcmVkKFwiY29udGVudFwiLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcblxuICAgIHJlYWRvbmx5IGRpbWVuc2lvbiQgPSB0b09ic2VydmFibGUodGhpcy5jb250ZW50KS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoY29udGVudCA9PiB0aGlzLiNkaW1XYXRjaGVyLndhdGNoKGNvbnRlbnQsIFwiYm9yZGVyLWJveFwiKSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXG4gICAgKVxuICAgIHJlYWRvbmx5IGRpbWVuc2lvbiA9IHRvU2lnbmFsKHRoaXMuZGltZW5zaW9uJClcblxuICAgIHJlYWRvbmx5IGNvbnRlbnRTaXplID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBkaW0gPSB0aGlzLmRpbWVuc2lvbigpXG4gICAgICAgIGlmICghZGltKSB7XG4gICAgICAgICAgICByZXR1cm4gMFxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm9yaWVudCgpID09PSBcImhvcml6b250YWxcIiA/IGRpbS5oZWlnaHQgOiBkaW0ud2lkdGhcbiAgICB9KVxuXG4gICAgLy8gcmVhZG9ubHkgYmFja2Ryb3BTaXplID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIC8vICAgICBjb25zdCBtb2RlID0gdGhpcy5iYWNrZHJvcCgpXG4gICAgLy8gICAgIGlmIChtb2RlID09PSB0cnVlIHx8IG1vZGUgPT09IFwiZnVsbFwiKSB7XG4gICAgLy8gICAgICAgICByZXR1cm4gTDlSYW5nZS5jb2VyY2UoXCJ0b3A6bGVmdC1ib3R0b206cmlnaHRcIikuaW50b0dyaWRBcmVhKClcbiAgICAvLyAgICAgfSBlbHNlIGlmIChtb2RlID09PSBcInBhbmVsLXNpemVcIikge1xuICAgIC8vICAgICAgICAgY29uc3QgcG9zID0gdGhpcy5wb3NpdGlvbigpXG4gICAgLy8gICAgICAgICBpZiAocG9zLm9yaWVudCA9PT0gXCJob3Jpem9udGFsXCIpIHtcblxuICAgIC8vICAgICAgICAgfVxuXG4gICAgLy8gICAgICAgICByZXR1cm4gXCJcIlxuICAgIC8vICAgICB9XG4gICAgLy8gICAgIHJldHVybiBudWxsXG4gICAgLy8gfSlcblxuICAgIG9wZW4oKSB7XG4gICAgICAgIHRoaXMub3BlbmVkLnNldCh0cnVlKVxuICAgIH1cblxuICAgIGNsb3NlKCkge1xuICAgICAgICB0aGlzLm9wZW5lZC5zZXQoZmFsc2UpXG4gICAgfVxufVxuIl19
@@ -1,20 +0,0 @@
1
- import { NgModule } from "@angular/core";
2
- import { DockingContentComponent } from "./docking-content.component";
3
- import { DockingLayoutComponent } from "./docking-layout.component";
4
- import { DockingPanelComponent } from "./docking-panel.component";
5
- import * as i0 from "@angular/core";
6
- export { DockingLayoutComponent, DockingPanelComponent, DockingContentComponent };
7
- const members = [DockingLayoutComponent, DockingPanelComponent, DockingContentComponent];
8
- export class NuDockingLayout {
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NuDockingLayout, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: NuDockingLayout, imports: [DockingLayoutComponent, DockingPanelComponent, DockingContentComponent], exports: [DockingLayoutComponent, DockingPanelComponent, DockingContentComponent] }); }
11
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NuDockingLayout }); }
12
- }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NuDockingLayout, decorators: [{
14
- type: NgModule,
15
- args: [{
16
- imports: members,
17
- exports: members
18
- }]
19
- }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2RvY2tpbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUNyRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUNuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTs7QUFFakUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLHVCQUF1QixFQUFFLENBQUE7QUFFakYsTUFBTSxPQUFPLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSx1QkFBdUIsQ0FBQyxDQUFBO0FBTXhGLE1BQU0sT0FBTyxlQUFlOzhHQUFmLGVBQWU7K0dBQWYsZUFBZSxZQU5YLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLHVCQUF1QixhQUF0RSxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSx1QkFBdUI7K0dBTTFFLGVBQWU7OzJGQUFmLGVBQWU7a0JBSjNCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLE9BQU87b0JBQ2hCLE9BQU8sRUFBRSxPQUFPO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQgeyBEb2NraW5nQ29udGVudENvbXBvbmVudCB9IGZyb20gXCIuL2RvY2tpbmctY29udGVudC5jb21wb25lbnRcIlxuaW1wb3J0IHsgRG9ja2luZ0xheW91dENvbXBvbmVudCB9IGZyb20gXCIuL2RvY2tpbmctbGF5b3V0LmNvbXBvbmVudFwiXG5pbXBvcnQgeyBEb2NraW5nUGFuZWxDb21wb25lbnQgfSBmcm9tIFwiLi9kb2NraW5nLXBhbmVsLmNvbXBvbmVudFwiXG5cbmV4cG9ydCB7IERvY2tpbmdMYXlvdXRDb21wb25lbnQsIERvY2tpbmdQYW5lbENvbXBvbmVudCwgRG9ja2luZ0NvbnRlbnRDb21wb25lbnQgfVxuXG5jb25zdCBtZW1iZXJzID0gW0RvY2tpbmdMYXlvdXRDb21wb25lbnQsIERvY2tpbmdQYW5lbENvbXBvbmVudCwgRG9ja2luZ0NvbnRlbnRDb21wb25lbnRdXG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogbWVtYmVycyxcbiAgICBleHBvcnRzOiBtZW1iZXJzXG59KVxuZXhwb3J0IGNsYXNzIE51RG9ja2luZ0xheW91dCB7fVxuIl19
package/esm2022/index.mjs DELETED
@@ -1,5 +0,0 @@
1
- export * from "./l9";
2
- export * from "./docking";
3
- export * from "./services/slots.service";
4
- export * from "./sliding";
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsTUFBTSxDQUFBO0FBQ3BCLGNBQWMsV0FBVyxDQUFBO0FBQ3pCLGNBQWMsMEJBQTBCLENBQUE7QUFDeEMsY0FBYyxXQUFXLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9sOVwiXG5leHBvcnQgKiBmcm9tIFwiLi9kb2NraW5nXCJcbmV4cG9ydCAqIGZyb20gXCIuL3NlcnZpY2VzL3Nsb3RzLnNlcnZpY2VcIlxuZXhwb3J0ICogZnJvbSBcIi4vc2xpZGluZ1wiXG4iXX0=
@@ -1,3 +0,0 @@
1
- export * from "./range";
2
- export * from "./state";
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2w5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFBO0FBQ3ZCLGNBQWMsU0FBUyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vcmFuZ2VcIlxuZXhwb3J0ICogZnJvbSBcIi4vc3RhdGVcIlxuIl19
@@ -1,131 +0,0 @@
1
- const vertical = ["top", "middle", "bottom"];
2
- const horizontal = ["left", "center", "right"];
3
- export const L9GridTopLeft = { row: 1, col: 1 };
4
- export class L9Cell {
5
- static coerce(value) {
6
- const [v1, v2] = value.split(":");
7
- const v = vertical.includes(v1) ? v1 : v2;
8
- const h = horizontal.includes(v1) ? v1 : v2;
9
- if (v === h) {
10
- throw new Error(`Invalid cell value: ${value}`);
11
- }
12
- return new L9Cell(v, h);
13
- }
14
- constructor(v, h) {
15
- this.v = v;
16
- this.h = h;
17
- }
18
- intoGridArea(gridTopLeft = L9GridTopLeft) {
19
- return `${gridTopLeft.row + vertical.indexOf(this.v)}/${gridTopLeft.col + horizontal.indexOf(this.h)}`;
20
- }
21
- isEq(other) {
22
- return this.v === other.v && this.h === other.h;
23
- }
24
- }
25
- export class L9Range {
26
- static coerce(value) {
27
- if (value instanceof L9Range) {
28
- return value;
29
- }
30
- else {
31
- return new L9Range(value);
32
- }
33
- }
34
- constructor(range) {
35
- this.cells = parse(range);
36
- this.orient = this.#determineOrient();
37
- }
38
- isEq(other) {
39
- if (other instanceof L9Range) {
40
- const selfFirst = this.cells[0];
41
- const otherFirst = other.cells[0];
42
- if (selfFirst.h !== otherFirst.h || selfFirst.v !== otherFirst.v) {
43
- return false;
44
- }
45
- const selfLast = this.cells[this.cells.length - 1];
46
- const otherLast = other.cells[other.cells.length - 1];
47
- if (selfLast.h === otherLast.h && selfLast.v === otherLast.v) {
48
- return true;
49
- }
50
- }
51
- return false;
52
- }
53
- intoGridArea(gridTopLeft = L9GridTopLeft) {
54
- const start = this.cells[0];
55
- const end = this.cells[this.cells.length - 1];
56
- const endTopLeft = { row: gridTopLeft.row + 1, col: gridTopLeft.col + 1 };
57
- return `${start.intoGridArea(gridTopLeft)}/${end.intoGridArea(endTopLeft)}`;
58
- }
59
- intoRect() {
60
- const start = this.cells[0];
61
- const end = this.cells[this.cells.length - 1];
62
- const x = horizontal.indexOf(start.h);
63
- const y = vertical.indexOf(start.v);
64
- return { x, y, width: horizontal.indexOf(end.h) - x + 1, height: vertical.indexOf(end.v) - y + 1 };
65
- }
66
- #determineOrient() {
67
- const rect = this.intoRect();
68
- if (rect.width === rect.height) {
69
- // corner
70
- if (rect.x === rect.y) {
71
- return "vertical";
72
- }
73
- if (rect.x === 0 || rect.x === 2) {
74
- return "vertical";
75
- }
76
- else if (rect.y === 0 || rect.y === 2) {
77
- return "horizontal";
78
- }
79
- }
80
- else if (rect.width > rect.height) {
81
- return "horizontal";
82
- }
83
- else if (rect.height > rect.width) {
84
- return "vertical";
85
- }
86
- return "vertical";
87
- }
88
- }
89
- function parse(value) {
90
- const cells = [];
91
- if (vertical.includes(value)) {
92
- for (const h of horizontal) {
93
- cells.push(new L9Cell(value, h));
94
- }
95
- }
96
- else if (horizontal.includes(value)) {
97
- for (const v of vertical) {
98
- cells.push(new L9Cell(v, value));
99
- }
100
- }
101
- else if (value.includes("-")) {
102
- const [begin, end] = value.split("-");
103
- const beginCells = parse(begin);
104
- const endCells = parse(end);
105
- if (beginCells.length > 1) {
106
- throw new Error(`Currently not supported begin range value: ${begin}`);
107
- }
108
- if (endCells.length > 1) {
109
- throw new Error(`Currently not supported end range value: ${end}`);
110
- }
111
- const { v: bv, h: bh } = beginCells[0];
112
- const { v: ev, h: eh } = endCells[0];
113
- const vstart = Math.min(vertical.indexOf(bv), vertical.indexOf(ev));
114
- const vend = Math.max(vertical.indexOf(bv), vertical.indexOf(ev));
115
- const hstart = Math.min(horizontal.indexOf(bh), horizontal.indexOf(eh));
116
- const hend = Math.max(horizontal.indexOf(bh), horizontal.indexOf(eh));
117
- for (let vi = vstart; vi <= vend; vi++) {
118
- for (let hi = hstart; hi <= hend; hi++) {
119
- cells.push(new L9Cell(vertical[vi], horizontal[hi]));
120
- }
121
- }
122
- }
123
- else if (value.includes(":")) {
124
- cells.push(L9Cell.coerce(value));
125
- }
126
- if (cells.length === 0) {
127
- throw Error(`Undefined l9cell: "${value}"`);
128
- }
129
- return cells;
130
- }
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2w5L3JhbmdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQVUsQ0FBQTtBQUNyRCxNQUFNLFVBQVUsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFVLENBQUE7QUFRdkQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUE7QUFFL0MsTUFBTSxPQUFPLE1BQU07SUFDZixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWlCO1FBQzNCLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNqQyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUNoRCxNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUVsRCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLEtBQUssRUFBRSxDQUFDLENBQUE7UUFDbkQsQ0FBQztRQUVELE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBUSxFQUFFLENBQVEsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRCxZQUNvQixDQUFhLEVBQ2IsQ0FBZTtRQURmLE1BQUMsR0FBRCxDQUFDLENBQVk7UUFDYixNQUFDLEdBQUQsQ0FBQyxDQUFjO0lBQ2hDLENBQUM7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S0FBSyxDQUFDLDRDQUE0QyxHQUFHLEVBQUUsQ0FBQyxDQUFBO1FBQ3RFLENBQUM7UUFFRCxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3RDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQVMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBUyxDQUFDLENBQUMsQ0FBQTtRQUNqRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBUyxDQUFDLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFTLENBQUMsQ0FBQyxDQUFBO1FBQy9FLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFTLENBQUMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQVMsQ0FBQyxDQUFDLENBQUE7UUFDckYsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQVMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBUyxDQUFDLENBQUMsQ0FBQTtRQUVuRixLQUFLLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDckMsS0FBSyxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO2dCQUNyQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3hELENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztTQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdCLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDckIsTUFBTSxLQUFLLENBQUMsc0JBQXNCLEtBQUssR0FBRyxDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFBO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiB8IFRPUDpMRUZUICAgICB8ICBUT1A6Q0VOVEVSICAgfCBUT1A6UklHSFQgICAgfFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogfCBNSURETEU6TEVGVCAgfCBNSURETEU6Q0VOVEVSIHwgTUlERExFOlJJR0hUIHxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIHwgQk9UVE9NTjpMRUZUIHwgQk9UVE9NOkNFTlRFUiB8IEJPVFRPTTpSSUdIVCB8XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5pbXBvcnQgeyBSZWN0IH0gZnJvbSBcIkBuZ3V0aWwvc3R5bGVcIlxuXG5jb25zdCB2ZXJ0aWNhbCA9IFtcInRvcFwiLCBcIm1pZGRsZVwiLCBcImJvdHRvbVwiXSBhcyBjb25zdFxuY29uc3QgaG9yaXpvbnRhbCA9IFtcImxlZnRcIiwgXCJjZW50ZXJcIiwgXCJyaWdodFwiXSBhcyBjb25zdFxuXG5leHBvcnQgdHlwZSBMOVZlcnRpY2FsID0gKHR5cGVvZiB2ZXJ0aWNhbClbbnVtYmVyXVxuZXhwb3J0IHR5cGUgTDlIb3Jpem9udGFsID0gKHR5cGVvZiBob3Jpem9udGFsKVtudW1iZXJdXG5leHBvcnQgdHlwZSBMOUNlbGxOYW1lID0gYCR7TDlWZXJ0aWNhbH06JHtMOUhvcml6b250YWx9YCB8IGAke0w5SG9yaXpvbnRhbH06JHtMOVZlcnRpY2FsfWBcbmV4cG9ydCB0eXBlIEw5UmFuZ2VOYW1lID0gTDlWZXJ0aWNhbCB8IEw5SG9yaXpvbnRhbCB8IEw5Q2VsbE5hbWUgfCBgJHtMOUNlbGxOYW1lfS0ke0w5Q2VsbE5hbWV9YFxuZXhwb3J0IHR5cGUgTDlPcmllbnQgPSBcImhvcml6b250YWxcIiB8IFwidmVydGljYWxcIlxuXG5leHBvcnQgY29uc3QgTDlHcmlkVG9wTGVmdCA9IHsgcm93OiAxLCBjb2w6IDEgfVxuXG5leHBvcnQgY2xhc3MgTDlDZWxsIHtcbiAgICBzdGF0aWMgY29lcmNlKHZhbHVlOiBMOUNlbGxOYW1lKSB7XG4gICAgICAgIGNvbnN0IFt2MSwgdjJdID0gdmFsdWUuc3BsaXQoXCI6XCIpXG4gICAgICAgIGNvbnN0IHYgPSB2ZXJ0aWNhbC5pbmNsdWRlcyh2MSBhcyBhbnkpID8gdjEgOiB2MlxuICAgICAgICBjb25zdCBoID0gaG9yaXpvbnRhbC5pbmNsdWRlcyh2MSBhcyBhbnkpID8gdjEgOiB2MlxuXG4gICAgICAgIGlmICh2ID09PSBoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY2VsbCB2YWx1ZTogJHt2YWx1ZX1gKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBMOUNlbGwodiBhcyBhbnksIGggYXMgYW55KVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgdjogTDlWZXJ0aWNhbCxcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGg6IEw5SG9yaXpvbnRhbFxuICAgICkge31cblxuICAgIGludG9HcmlkQXJlYShncmlkVG9wTGVmdDogdHlwZW9mIEw5R3JpZFRvcExlZnQgPSBMOUdyaWRUb3BMZWZ0KSB7XG4gICAgICAgIHJldHVybiBgJHtncmlkVG9wTGVmdC5yb3cgKyB2ZXJ0aWNhbC5pbmRleE9mKHRoaXMudil9LyR7Z3JpZFRvcExlZnQuY29sICsgaG9yaXpvbnRhbC5pbmRleE9mKHRoaXMuaCl9YFxuICAgIH1cblxuICAgIGlzRXEob3RoZXI6IEw5Q2VsbCkge1xuICAgICAgICByZXR1cm4gdGhpcy52ID09PSBvdGhlci52ICYmIHRoaXMuaCA9PT0gb3RoZXIuaFxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEw5UmFuZ2Uge1xuICAgIHN0YXRpYyBjb2VyY2UodmFsdWU6IEw5UmFuZ2UgfCBMOVJhbmdlTmFtZSkge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBMOVJhbmdlKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTDlSYW5nZSh2YWx1ZSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlYWRvbmx5IGNlbGxzOiBBcnJheTxMOUNlbGw+XG4gICAgcmVhZG9ubHkgb3JpZW50OiBMOU9yaWVudFxuXG4gICAgY29uc3RydWN0b3IocmFuZ2U6IEw5UmFuZ2VOYW1lKSB7XG4gICAgICAgIHRoaXMuY2VsbHMgPSBwYXJzZShyYW5nZSlcbiAgICAgICAgdGhpcy5vcmllbnQgPSB0aGlzLiNkZXRlcm1pbmVPcmllbnQoKVxuICAgIH1cblxuICAgIGlzRXEob3RoZXI6IEw5UmFuZ2UpIHtcbiAgICAgICAgaWYgKG90aGVyIGluc3RhbmNlb2YgTDlSYW5nZSkge1xuICAgICAgICAgICAgY29uc3Qgc2VsZkZpcnN0ID0gdGhpcy5jZWxsc1swXVxuICAgICAgICAgICAgY29uc3Qgb3RoZXJGaXJzdCA9IG90aGVyLmNlbGxzWzBdXG5cbiAgICAgICAgICAgIGlmIChzZWxmRmlyc3QuaCAhPT0gb3RoZXJGaXJzdC5oIHx8IHNlbGZGaXJzdC52ICE9PSBvdGhlckZpcnN0LnYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc2VsZkxhc3QgPSB0aGlzLmNlbGxzW3RoaXMuY2VsbHMubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgIGNvbnN0IG90aGVyTGFzdCA9IG90aGVyLmNlbGxzW290aGVyLmNlbGxzLmxlbmd0aCAtIDFdXG5cbiAgICAgICAgICAgIGlmIChzZWxmTGFzdC5oID09PSBvdGhlckxhc3QuaCAmJiBzZWxmTGFzdC52ID09PSBvdGhlckxhc3Qudikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgaW50b0dyaWRBcmVhKGdyaWRUb3BMZWZ0OiB0eXBlb2YgTDlHcmlkVG9wTGVmdCA9IEw5R3JpZFRvcExlZnQpIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLmNlbGxzWzBdXG4gICAgICAgIGNvbnN0IGVuZCA9IHRoaXMuY2VsbHNbdGhpcy5jZWxscy5sZW5ndGggLSAxXVxuICAgICAgICBjb25zdCBlbmRUb3BMZWZ0ID0geyByb3c6IGdyaWRUb3BMZWZ0LnJvdyArIDEsIGNvbDogZ3JpZFRvcExlZnQuY29sICsgMSB9XG4gICAgICAgIHJldHVybiBgJHtzdGFydC5pbnRvR3JpZEFyZWEoZ3JpZFRvcExlZnQpfS8ke2VuZC5pbnRvR3JpZEFyZWEoZW5kVG9wTGVmdCl9YFxuICAgIH1cblxuICAgIGludG9SZWN0KCk6IFJlY3Qge1xuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuY2VsbHNbMF1cbiAgICAgICAgY29uc3QgZW5kID0gdGhpcy5jZWxsc1t0aGlzLmNlbGxzLmxlbmd0aCAtIDFdXG4gICAgICAgIGNvbnN0IHggPSBob3Jpem9udGFsLmluZGV4T2Yoc3RhcnQuaClcbiAgICAgICAgY29uc3QgeSA9IHZlcnRpY2FsLmluZGV4T2Yoc3RhcnQudilcblxuICAgICAgICByZXR1cm4geyB4LCB5LCB3aWR0aDogaG9yaXpvbnRhbC5pbmRleE9mKGVuZC5oKSAtIHggKyAxLCBoZWlnaHQ6IHZlcnRpY2FsLmluZGV4T2YoZW5kLnYpIC0geSArIDEgfVxuICAgIH1cblxuICAgICNkZXRlcm1pbmVPcmllbnQoKTogTDlPcmllbnQge1xuICAgICAgICBjb25zdCByZWN0ID0gdGhpcy5pbnRvUmVjdCgpXG4gICAgICAgIGlmIChyZWN0LndpZHRoID09PSByZWN0LmhlaWdodCkge1xuICAgICAgICAgICAgLy8gY29ybmVyXG4gICAgICAgICAgICBpZiAocmVjdC54ID09PSByZWN0LnkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJ2ZXJ0aWNhbFwiXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZWN0LnggPT09IDAgfHwgcmVjdC54ID09PSAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwidmVydGljYWxcIlxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZWN0LnkgPT09IDAgfHwgcmVjdC55ID09PSAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiaG9yaXpvbnRhbFwiXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAocmVjdC53aWR0aCA+IHJlY3QuaGVpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm4gXCJob3Jpem9udGFsXCJcbiAgICAgICAgfSBlbHNlIGlmIChyZWN0LmhlaWdodCA+IHJlY3Qud2lkdGgpIHtcbiAgICAgICAgICAgIHJldHVybiBcInZlcnRpY2FsXCJcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBcInZlcnRpY2FsXCJcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlKHZhbHVlOiBhbnkpOiBBcnJheTxMOUNlbGw+IHtcbiAgICBjb25zdCBjZWxsczogQXJyYXk8TDlDZWxsPiA9IFtdXG5cbiAgICBpZiAodmVydGljYWwuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgIGZvciAoY29uc3QgaCBvZiBob3Jpem9udGFsKSB7XG4gICAgICAgICAgICBjZWxscy5wdXNoKG5ldyBMOUNlbGwodmFsdWUsIGgpKVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChob3Jpem9udGFsLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICBmb3IgKGNvbnN0IHYgb2YgdmVydGljYWwpIHtcbiAgICAgICAgICAgIGNlbGxzLnB1c2gobmV3IEw5Q2VsbCh2LCB2YWx1ZSkpXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHZhbHVlLmluY2x1ZGVzKFwiLVwiKSkge1xuICAgICAgICBjb25zdCBbYmVnaW4sIGVuZF0gPSB2YWx1ZS5zcGxpdChcIi1cIilcbiAgICAgICAgY29uc3QgYmVnaW5DZWxscyA9IHBhcnNlKGJlZ2luKVxuICAgICAgICBjb25zdCBlbmRDZWxscyA9IHBhcnNlKGVuZClcblxuICAgICAgICBpZiAoYmVnaW5DZWxscy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIGJlZ2luIHJhbmdlIHZhbHVlOiAke2JlZ2lufWApXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW5kQ2VsbHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXJyZW50bHkgbm90IHN1cHBvcnRlZCBlbmQgcmFuZ2UgdmFsdWU6ICR7ZW5kfWApXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IHY6IGJ2LCBoOiBiaCB9ID0gYmVnaW5DZWxsc1swXVxuICAgICAgICBjb25zdCB7IHY6IGV2LCBoOiBlaCB9ID0gZW5kQ2VsbHNbMF1cblxuICAgICAgICBjb25zdCB2c3RhcnQgPSBNYXRoLm1pbih2ZXJ0aWNhbC5pbmRleE9mKGJ2IGFzIGFueSksIHZlcnRpY2FsLmluZGV4T2YoZXYgYXMgYW55KSlcbiAgICAgICAgY29uc3QgdmVuZCA9IE1hdGgubWF4KHZlcnRpY2FsLmluZGV4T2YoYnYgYXMgYW55KSwgdmVydGljYWwuaW5kZXhPZihldiBhcyBhbnkpKVxuICAgICAgICBjb25zdCBoc3RhcnQgPSBNYXRoLm1pbihob3Jpem9udGFsLmluZGV4T2YoYmggYXMgYW55KSwgaG9yaXpvbnRhbC5pbmRleE9mKGVoIGFzIGFueSkpXG4gICAgICAgIGNvbnN0IGhlbmQgPSBNYXRoLm1heChob3Jpem9udGFsLmluZGV4T2YoYmggYXMgYW55KSwgaG9yaXpvbnRhbC5pbmRleE9mKGVoIGFzIGFueSkpXG5cbiAgICAgICAgZm9yIChsZXQgdmkgPSB2c3RhcnQ7IHZpIDw9IHZlbmQ7IHZpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGhpID0gaHN0YXJ0OyBoaSA8PSBoZW5kOyBoaSsrKSB7XG4gICAgICAgICAgICAgICAgY2VsbHMucHVzaChuZXcgTDlDZWxsKHZlcnRpY2FsW3ZpXSwgaG9yaXpvbnRhbFtoaV0pKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh2YWx1ZS5pbmNsdWRlcyhcIjpcIikpIHtcbiAgICAgICAgY2VsbHMucHVzaChMOUNlbGwuY29lcmNlKHZhbHVlKSlcbiAgICB9XG5cbiAgICBpZiAoY2VsbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IEVycm9yKGBVbmRlZmluZWQgbDljZWxsOiBcIiR7dmFsdWV9XCJgKVxuICAgIH1cblxuICAgIHJldHVybiBjZWxsc1xufVxuIl19
@@ -1,21 +0,0 @@
1
- import { BehaviorSubject, map, shareReplay } from "rxjs";
2
- export class L9State {
3
- #dims;
4
- constructor(prefix) {
5
- this.prefix = prefix;
6
- this.#dims = new BehaviorSubject({});
7
- this.style = this.#dims.pipe(map(dims => {
8
- const res = {};
9
- for (const [k, v] of Object.entries(dims)) {
10
- if (v == null) {
11
- continue;
12
- }
13
- const [vertical, horizontal] = k.split(":");
14
- res[`--${this.prefix}-${vertical}-${horizontal}-w`] = v.width.toString();
15
- res[`--${this.prefix}-${vertical}-${horizontal}-h`] = v.height.toString();
16
- }
17
- return res;
18
- }), shareReplay(1));
19
- }
20
- }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2w5L3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFjLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQVdwRSxNQUFNLE9BQU8sT0FBTztJQUNQLEtBQUssQ0FBa0M7SUFxQmhELFlBQTRCLE1BQVM7UUFBVCxXQUFNLEdBQU4sTUFBTSxDQUFHO1FBckI1QixVQUFLLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUE7UUFFdkMsVUFBSyxHQUErQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDeEQsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ1AsTUFBTSxHQUFHLEdBQW1CLEVBQUUsQ0FBQTtZQUU5QixLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDWixTQUFRO2dCQUNaLENBQUM7Z0JBRUQsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUMzQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxJQUFJLFFBQVEsSUFBSSxVQUFVLElBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBO2dCQUN6RixHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxJQUFJLFFBQVEsSUFBSSxVQUFVLElBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFBO1lBQzlGLENBQUM7WUFFRCxPQUFPLEdBQUcsQ0FBQTtRQUNkLENBQUMsQ0FBQyxFQUNGLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDakIsQ0FBQTtJQUV1QyxDQUFDO0NBQzVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtYXAsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5IH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyB0eXBlIERpbWVuc2lvbiB9IGZyb20gXCJAbmd1dGlsL3N0eWxlXCJcblxuaW1wb3J0IHsgTDlDZWxsTmFtZSwgTDlIb3Jpem9udGFsLCBMOVZlcnRpY2FsIH0gZnJvbSBcIi4vcmFuZ2VcIlxuXG5leHBvcnQgdHlwZSBMOVN0YXRlVmFyPFQgZXh0ZW5kcyBzdHJpbmc+ID0gYC0tJHtUfS0ke0w5VmVydGljYWx9LSR7TDlIb3Jpem9udGFsfS0ke1wid1wiIHwgXCJoXCJ9YFxuZXhwb3J0IHR5cGUgTDlTdHlsZVZhcnM8VCBleHRlbmRzIHN0cmluZz4gPSB7IFtrZXkgaW4gTDlTdGF0ZVZhcjxUPl0/OiBzdHJpbmcgfVxuXG50eXBlIEw5RGltcyA9IHsgW2tleSBpbiBMOUNlbGxOYW1lXT86IERpbWVuc2lvbiB9XG5cbmV4cG9ydCBjbGFzcyBMOVN0YXRlPFQgZXh0ZW5kcyBzdHJpbmc+IHtcbiAgICByZWFkb25seSAjZGltcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TDlEaW1zPih7fSlcblxuICAgIHJlYWRvbmx5IHN0eWxlOiBPYnNlcnZhYmxlPEw5U3R5bGVWYXJzPFQ+PiA9IHRoaXMuI2RpbXMucGlwZShcbiAgICAgICAgbWFwKGRpbXMgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzOiBMOVN0eWxlVmFyczxUPiA9IHt9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGRpbXMpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHYgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IFt2ZXJ0aWNhbCwgaG9yaXpvbnRhbF0gPSBrLnNwbGl0KFwiOlwiKVxuICAgICAgICAgICAgICAgIHJlc1tgLS0ke3RoaXMucHJlZml4fS0ke3ZlcnRpY2FsfS0ke2hvcml6b250YWx9LXdgIGFzIEw5U3RhdGVWYXI8VD5dID0gdi53aWR0aC50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgcmVzW2AtLSR7dGhpcy5wcmVmaXh9LSR7dmVydGljYWx9LSR7aG9yaXpvbnRhbH0taGAgYXMgTDlTdGF0ZVZhcjxUPl0gPSB2LmhlaWdodC50b1N0cmluZygpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXNcbiAgICAgICAgfSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKVxuXG4gICAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHByZWZpeDogVCkge31cbn1cbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd1dGlsLWxheW91dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2xheW91dC9zcmMvbmd1dGlsLWxheW91dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -1,240 +0,0 @@
1
- import { Directive, inject, Injectable, Injector, TemplateRef, ViewContainerRef } from "@angular/core";
2
- import { BehaviorSubject, distinctUntilChanged, finalize, map, of, scan, shareReplay, Subject, switchMap, tap } from "rxjs";
3
- import { Destructible } from "@ngutil/common";
4
- import * as i0 from "@angular/core";
5
- const SLOT_REGEX = /^([^:\s]+)(?::(\d+))?(?:\s+as\s+(.*?))?$/i;
6
- export class SlotDef {
7
- constructor(slot, tpl) {
8
- this.tpl = tpl;
9
- const match = slot.match(SLOT_REGEX);
10
- if (!match) {
11
- console.warn(`Invalid slot definition: ${slot}`);
12
- }
13
- else {
14
- this.slot = match[1];
15
- this.order = match[2] != null ? Number(match[2]) : Infinity;
16
- this.id = match[3];
17
- }
18
- }
19
- dispose() {
20
- this.viewRef?.destroy();
21
- this.viewRef = undefined;
22
- }
23
- }
24
- /**
25
- * @Directive({selector: "ng-template[xyzSlot]", inputs: [{name: "slot", alias: "xyzSlot"}]})
26
- * class XYZSlotDirective extends SlotDirective<XYZComponentSlots> { }
27
- *
28
- * @Directive({selector: "ng-template[xyzSlotOutlet]", inputs: [{name: "slot", alias: "xyzSlotOutlet"}]})
29
- * class XYZSlotOutletDirective extends SlotOutletDirective<XYZComponentSlots> { }
30
- *
31
- *
32
- * @Component({provides: [SlotsService]})
33
- * class XYZComponent {
34
- * slots: inject(SlotsService<XYZComponentSlots>)
35
- * }
36
- *
37
- *
38
- */
39
- export class SlotsService extends Destructible {
40
- #events = new Subject();
41
- #entries = this.#events.pipe(scan((entries, event) => {
42
- if (event.type === "add") {
43
- const index = entries.findIndex(value => value === event.def);
44
- if (index > -1) {
45
- entries[index] = event.def;
46
- }
47
- else {
48
- entries.push(event.def);
49
- }
50
- }
51
- else if (event.type === "del") {
52
- const index = entries.findIndex(value => value === event.def);
53
- if (index > -1) {
54
- entries.splice(index, 1);
55
- }
56
- }
57
- return entries;
58
- }, []), tap(entries => {
59
- entries.sort((a, b) => {
60
- if (a.slot === b.slot) {
61
- return a.order - b.order;
62
- }
63
- else {
64
- return a.slot.localeCompare(b.slot);
65
- }
66
- });
67
- }), shareReplay(1));
68
- constructor() {
69
- super();
70
- // XXX: need to collect entries from the beginning
71
- this.d.sub(this.#entries).subscribe();
72
- }
73
- addTpl(def) {
74
- this.#events.next({ type: "add", def });
75
- }
76
- delTpl(def) {
77
- this.#events.next({ type: "del", def });
78
- }
79
- #watchers = {};
80
- watch(slot) {
81
- const existing = this.#watchers[slot];
82
- if (existing == null) {
83
- return (this.#watchers[slot] = this.#watch(slot));
84
- }
85
- else {
86
- return existing;
87
- }
88
- }
89
- #watch(slot) {
90
- return this.#entries.pipe(map(entries => entries.filter(entry => entry.slot === slot)), distinctUntilChanged((prev, curr) => {
91
- if (prev.length === curr.length) {
92
- for (let i = 0; i < prev.length; i++) {
93
- if (prev[i] !== curr[i]) {
94
- return false;
95
- }
96
- }
97
- return true;
98
- }
99
- else {
100
- return false;
101
- }
102
- }), finalize(() => {
103
- delete this.#watchers[slot];
104
- }), shareReplay(1));
105
- }
106
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: SlotsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
107
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: SlotsService }); }
108
- }
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: SlotsService, decorators: [{
110
- type: Injectable
111
- }], ctorParameters: () => [] });
112
- export class SlotDirective {
113
- constructor() {
114
- this.tpl = inject((TemplateRef));
115
- }
116
- set slot(slot) {
117
- if (this.#slot !== slot) {
118
- this.#slot = slot;
119
- if (this.#slotDef) {
120
- this.slotSvc.delTpl(this.#slotDef);
121
- }
122
- this.#slotDef = new SlotDef(slot, this.tpl);
123
- this.slotSvc.addTpl(this.#slotDef);
124
- }
125
- }
126
- get slot() {
127
- return this.#slot;
128
- }
129
- #slot;
130
- #slotDef;
131
- ngOnDestroy() {
132
- if (this.#slotDef) {
133
- this.slotSvc.delTpl(this.#slotDef);
134
- }
135
- }
136
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: SlotDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
137
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: SlotDirective, ngImport: i0 }); }
138
- }
139
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: SlotDirective, decorators: [{
140
- type: Directive
141
- }] });
142
- export class SlotOutletDirective extends Destructible {
143
- set slot(slot) {
144
- if (this.#slot.value !== slot) {
145
- this.#slot.next(slot);
146
- }
147
- }
148
- get slot() {
149
- return this.#slot.value;
150
- }
151
- #slot;
152
- #watch;
153
- #views;
154
- constructor() {
155
- super();
156
- this.vcr = inject(ViewContainerRef);
157
- this.injector = inject(Injector);
158
- this.#slot = new BehaviorSubject(null);
159
- this.#watch = this.#slot.pipe(switchMap(slot => {
160
- if (slot) {
161
- return this.slotSvc.watch(slot);
162
- }
163
- else {
164
- return of([]);
165
- }
166
- }));
167
- this.#views = [];
168
- this.#onEntriesChanged = (entries) => {
169
- const { remove, undecided } = this.#determineActions(entries);
170
- for (const r of remove) {
171
- r.dispose();
172
- const idx = this.#views.indexOf(r);
173
- if (idx >= 0) {
174
- this.#views.splice(idx, 1);
175
- }
176
- }
177
- this.#views.length = 0;
178
- for (const [pos, entry] of undecided.entries()) {
179
- if (entry.viewRef && !entry.viewRef.destroyed) {
180
- const currentPos = this.vcr.indexOf(entry.viewRef);
181
- if (currentPos !== pos) {
182
- this.vcr.insert(entry.viewRef, pos);
183
- }
184
- }
185
- else {
186
- ;
187
- entry.viewRef = this.vcr.createEmbeddedView(entry.tpl, null, {
188
- index: pos,
189
- injector: this.injector
190
- });
191
- entry.viewRef.markForCheck();
192
- }
193
- this.#views.push(entry);
194
- }
195
- };
196
- this.d.any(this.#clearViews.bind(this));
197
- }
198
- ngOnInit() {
199
- this.d.sub(this.#watch).subscribe(this.#onEntriesChanged);
200
- }
201
- #onEntriesChanged;
202
- #determineActions(entries) {
203
- const byId = {};
204
- let remove = [];
205
- const undecided = [];
206
- for (const entry of entries) {
207
- if (entry.id != null) {
208
- if (!byId[entry.id]) {
209
- byId[entry.id] = [entry];
210
- }
211
- else {
212
- byId[entry.id].push(entry);
213
- }
214
- }
215
- else {
216
- undecided.push(entry);
217
- }
218
- }
219
- for (const values of Object.values(byId)) {
220
- remove = remove.concat(values.slice(0, -1));
221
- undecided.push(values[values.length - 1]);
222
- }
223
- for (const current of this.#views) {
224
- if (!undecided.includes(current)) {
225
- remove.push(current);
226
- }
227
- }
228
- return { remove, undecided };
229
- }
230
- #clearViews() {
231
- this.vcr.clear();
232
- this.#views = [];
233
- }
234
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: SlotOutletDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
235
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: SlotOutletDirective, usesInheritance: true, ngImport: i0 }); }
236
- }
237
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: SlotOutletDirective, decorators: [{
238
- type: Directive
239
- }], ctorParameters: () => [] });
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvdHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xheW91dC9zcmMvc2VydmljZXMvc2xvdHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULE1BQU0sRUFDTixVQUFVLEVBQ1YsUUFBUSxFQUdSLFdBQVcsRUFDWCxnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUE7QUFFdEIsT0FBTyxFQUNILGVBQWUsRUFDZixvQkFBb0IsRUFDcEIsUUFBUSxFQUNSLEdBQUcsRUFFSCxFQUFFLEVBQ0YsSUFBSSxFQUNKLFdBQVcsRUFDWCxPQUFPLEVBQ1AsU0FBUyxFQUNULEdBQUcsRUFDTixNQUFNLE1BQU0sQ0FBQTtBQUViLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQTs7QUFRMUQsTUFBTSxVQUFVLEdBQUcsMkNBQTJDLENBQUE7QUFFOUQsTUFBTSxPQUFPLE9BQU87SUFNaEIsWUFDSSxJQUFhLEVBQ0csR0FBWTtRQUFaLFFBQUcsR0FBSCxHQUFHLENBQVM7UUFFNUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUNwQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLDRCQUE0QixJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ3BELENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFRLENBQUE7WUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQTtZQUMzRCxJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUss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QVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ3hCLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUE7SUFDcEIsQ0FBQzs4R0FuR2lCLG1CQUFtQjtrR0FBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUR4QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRW1iZWRkZWRWaWV3UmVmLFxuICAgIGluamVjdCxcbiAgICBJbmplY3RhYmxlLFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7XG4gICAgQmVoYXZpb3JTdWJqZWN0LFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICAgIGZpbmFsaXplLFxuICAgIG1hcCxcbiAgICBPYnNlcnZhYmxlLFxuICAgIG9mLFxuICAgIHNjYW4sXG4gICAgc2hhcmVSZXBsYXksXG4gICAgU3ViamVjdCxcbiAgICBzd2l0Y2hNYXAsXG4gICAgdGFwXG59IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgRGVzdHJ1Y3RpYmxlLCBJRGlzcG9zYWJsZSB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbnR5cGUgU2xvdE9yZGVyID0gYDoke251bWJlcn1gXG50eXBlIFNsb3RJZCA9IGAgYXMgJHtzdHJpbmd9YFxuZXhwb3J0IHR5cGUgU2xvdDxUIGV4dGVuZHMgc3RyaW5nPiA9IGAke1R9JHtTbG90T3JkZXIgfCBcIlwifSR7U2xvdElkIHwgXCJcIn1gXG5leHBvcnQgdHlwZSBTbG90VHBsID0gVGVtcGxhdGVSZWY8YW55PlxuZXhwb3J0IHR5cGUgU2xvdFZpZXdSZWYgPSBFbWJlZGRlZFZpZXdSZWY8YW55PlxuXG5jb25zdCBTTE9UX1JFR0VYID0gL14oW146XFxzXSspKD86OihcXGQrKSk/KD86XFxzK2FzXFxzKyguKj8pKT8kL2lcblxuZXhwb3J0IGNsYXNzIFNsb3REZWY8VCBleHRlbmRzIHN0cmluZz4gaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gICAgcmVhZG9ubHkgc2xvdCE6IFRcbiAgICByZWFkb25seSBvcmRlciE6IG51bWJlclxuICAgIHJlYWRvbmx5IGlkPzogc3RyaW5nXG4gICAgcmVhZG9ubHkgdmlld1JlZj86IFNsb3RWaWV3UmVmXG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgc2xvdDogU2xvdDxUPixcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHRwbDogU2xvdFRwbFxuICAgICkge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHNsb3QubWF0Y2goU0xPVF9SRUdFWClcbiAgICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBJbnZhbGlkIHNsb3QgZGVmaW5pdGlvbjogJHtzbG90fWApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNsb3QgPSBtYXRjaFsxXSBhcyBhbnlcbiAgICAgICAgICAgIHRoaXMub3JkZXIgPSBtYXRjaFsyXSAhPSBudWxsID8gTnVtYmVyKG1hdGNoWzJdKSA6IEluZmluaXR5XG4gICAgICAgICAgICB0aGlzLmlkID0gbWF0Y2hbM10gYXMgc3RyaW5nXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNwb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdSZWY/LmRlc3Ryb3koKVxuICAgICAgICA7KHRoaXMgYXMgeyB2aWV3UmVmPzogU2xvdFZpZXdSZWYgfSkudmlld1JlZiA9IHVuZGVmaW5lZFxuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTbG90RXZlbnQ8VCBleHRlbmRzIHN0cmluZz4ge1xuICAgIHR5cGU6IFwiYWRkXCIgfCBcImRlbFwiXG4gICAgZGVmOiBTbG90RGVmPFQ+XG59XG5cbi8qKlxuICogQERpcmVjdGl2ZSh7c2VsZWN0b3I6IFwibmctdGVtcGxhdGVbeHl6U2xvdF1cIiwgaW5wdXRzOiBbe25hbWU6IFwic2xvdFwiLCBhbGlhczogXCJ4eXpTbG90XCJ9XX0pXG4gKiBjbGFzcyBYWVpTbG90RGlyZWN0aXZlIGV4dGVuZHMgU2xvdERpcmVjdGl2ZTxYWVpDb21wb25lbnRTbG90cz4geyB9XG4gKlxuICogQERpcmVjdGl2ZSh7c2VsZWN0b3I6IFwibmctdGVtcGxhdGVbeHl6U2xvdE91dGxldF1cIiwgaW5wdXRzOiBbe25hbWU6IFwic2xvdFwiLCBhbGlhczogXCJ4eXpTbG90T3V0bGV0XCJ9XX0pXG4gKiBjbGFzcyBYWVpTbG90T3V0bGV0RGlyZWN0aXZlIGV4dGVuZHMgU2xvdE91dGxldERpcmVjdGl2ZTxYWVpDb21wb25lbnRTbG90cz4geyB9XG4gKlxuICpcbiAqIEBDb21wb25lbnQoe3Byb3ZpZGVzOiBbU2xvdHNTZXJ2aWNlXX0pXG4gKiBjbGFzcyBYWVpDb21wb25lbnQge1xuICogICAgICBzbG90czogaW5qZWN0KFNsb3RzU2VydmljZTxYWVpDb21wb25lbnRTbG90cz4pXG4gKiB9XG4gKlxuICpcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNsb3RzU2VydmljZTxUIGV4dGVuZHMgc3RyaW5nID0gYW55PiBleHRlbmRzIERlc3RydWN0aWJsZSB7XG4gICAgI2V2ZW50cyA9IG5ldyBTdWJqZWN0PFNsb3RFdmVudDxUPj4oKVxuXG4gICAgI2VudHJpZXMgPSB0aGlzLiNldmVudHMucGlwZShcbiAgICAgICAgc2NhbigoZW50cmllcywgZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSBcImFkZFwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBlbnRyaWVzLmZpbmRJbmRleCh2YWx1ZSA9PiB2YWx1ZSA9PT0gZXZlbnQuZGVmKVxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGVudHJpZXNbaW5kZXhdID0gZXZlbnQuZGVmXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZW50cmllcy5wdXNoKGV2ZW50LmRlZilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09IFwiZGVsXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGVudHJpZXMuZmluZEluZGV4KHZhbHVlID0+IHZhbHVlID09PSBldmVudC5kZWYpXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgZW50cmllcy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGVudHJpZXNcbiAgICAgICAgfSwgW10gYXMgU2xvdERlZjxUPltdKSxcbiAgICAgICAgdGFwKGVudHJpZXMgPT4ge1xuICAgICAgICAgICAgZW50cmllcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGEuc2xvdCA9PT0gYi5zbG90KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLm9yZGVyIC0gYi5vcmRlclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnNsb3QubG9jYWxlQ29tcGFyZShiLnNsb3QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKClcbiAgICAgICAgLy8gWFhYOiBuZWVkIHRvIGNvbGxlY3QgZW50cmllcyBmcm9tIHRoZSBiZWdpbm5pbmdcbiAgICAgICAgdGhpcy5kLnN1Yih0aGlzLiNlbnRyaWVzKS5zdWJzY3JpYmUoKVxuICAgIH1cblxuICAgIGFkZFRwbChkZWY6IFNsb3REZWY8VD4pIHtcbiAgICAgICAgdGhpcy4jZXZlbnRzLm5leHQoeyB0eXBlOiBcImFkZFwiLCBkZWYgfSlcbiAgICB9XG5cbiAgICBkZWxUcGwoZGVmOiBTbG90RGVmPFQ+KSB7XG4gICAgICAgIHRoaXMuI2V2ZW50cy5uZXh0KHsgdHlwZTogXCJkZWxcIiwgZGVmIH0pXG4gICAgfVxuXG4gICAgI3dhdGNoZXJzOiB7IFtrZXkgaW4gVF06IE9ic2VydmFibGU8QXJyYXk8U2xvdERlZjxUPj4+IH0gPSB7fSBhcyBhbnlcblxuICAgIHdhdGNoKHNsb3Q6IFQpIHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLiN3YXRjaGVyc1tzbG90XVxuICAgICAgICBpZiAoZXhpc3RpbmcgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuICh0aGlzLiN3YXRjaGVyc1tzbG90XSA9IHRoaXMuI3dhdGNoKHNsb3QpKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjd2F0Y2goc2xvdDogVCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jZW50cmllcy5waXBlKFxuICAgICAgICAgICAgbWFwKGVudHJpZXMgPT4gZW50cmllcy5maWx0ZXIoZW50cnkgPT4gZW50cnkuc2xvdCA9PT0gc2xvdCkpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocHJldi5sZW5ndGggPT09IGN1cnIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJldi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZbaV0gIT09IGN1cnJbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLiN3YXRjaGVyc1tzbG90XVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICApXG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTbG90RGlyZWN0aXZlPFQgZXh0ZW5kcyBzdHJpbmcsIEMgPSBhbnk+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVhZG9ubHkgc2xvdFN2YzogU2xvdHNTZXJ2aWNlPFQ+XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRwbCA9IGluamVjdChUZW1wbGF0ZVJlZjxDPilcblxuICAgIHNldCBzbG90KHNsb3Q6IFNsb3Q8VD4pIHtcbiAgICAgICAgaWYgKHRoaXMuI3Nsb3QgIT09IHNsb3QpIHtcbiAgICAgICAgICAgIHRoaXMuI3Nsb3QgPSBzbG90XG5cbiAgICAgICAgICAgIGlmICh0aGlzLiNzbG90RGVmKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zbG90U3ZjLmRlbFRwbCh0aGlzLiNzbG90RGVmKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLiNzbG90RGVmID0gbmV3IFNsb3REZWY8VD4oc2xvdCwgdGhpcy50cGwpXG4gICAgICAgICAgICB0aGlzLnNsb3RTdmMuYWRkVHBsKHRoaXMuI3Nsb3REZWYpXG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IHNsb3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNzbG90XG4gICAgfVxuICAgICNzbG90ITogU2xvdDxUPlxuICAgICNzbG90RGVmPzogU2xvdERlZjxUPlxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLiNzbG90RGVmKSB7XG4gICAgICAgICAgICB0aGlzLnNsb3RTdmMuZGVsVHBsKHRoaXMuI3Nsb3REZWYpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNsb3RPdXRsZXREaXJlY3RpdmU8VCBleHRlbmRzIHN0cmluZz4gZXh0ZW5kcyBEZXN0cnVjdGlibGUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBzbG90U3ZjOiBTbG90c1NlcnZpY2U8VD5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmNyOiBWaWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvciA9IGluamVjdChJbmplY3RvcilcblxuICAgIHNldCBzbG90KHNsb3Q6IFQgfCBudWxsKSB7XG4gICAgICAgIGlmICh0aGlzLiNzbG90LnZhbHVlICE9PSBzbG90KSB7XG4gICAgICAgICAgICB0aGlzLiNzbG90Lm5leHQoc2xvdClcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgc2xvdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3Nsb3QudmFsdWVcbiAgICB9XG4gICAgI3Nsb3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFQgfCBudWxsPihudWxsKVxuXG4gICAgI3dhdGNoID0gdGhpcy4jc2xvdC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoc2xvdCA9PiB7XG4gICAgICAgICAgICBpZiAoc2xvdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNsb3RTdmMud2F0Y2goc2xvdClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKFtdKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIClcblxuICAgICN2aWV3czogQXJyYXk8U2xvdERlZjxhbnk+PiA9IFtdXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICB0aGlzLmQuYW55KHRoaXMuI2NsZWFyVmlld3MuYmluZCh0aGlzKSlcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kLnN1Yih0aGlzLiN3YXRjaCkuc3Vic2NyaWJlKHRoaXMuI29uRW50cmllc0NoYW5nZWQpXG4gICAgfVxuXG4gICAgI29uRW50cmllc0NoYW5nZWQgPSAoZW50cmllczogQXJyYXk8U2xvdERlZjxUPj4pID0+IHtcbiAgICAgICAgY29uc3QgeyByZW1vdmUsIHVuZGVjaWRlZCB9ID0gdGhpcy4jZGV0ZXJtaW5lQWN0aW9ucyhlbnRyaWVzKVxuXG4gICAgICAgIGZvciAoY29uc3QgciBvZiByZW1vdmUpIHtcbiAgICAgICAgICAgIHIuZGlzcG9zZSgpXG4gICAgICAgICAgICBjb25zdCBpZHggPSB0aGlzLiN2aWV3cy5pbmRleE9mKHIpXG4gICAgICAgICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLiN2aWV3cy5zcGxpY2UoaWR4LCAxKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy4jdmlld3MubGVuZ3RoID0gMFxuICAgICAgICBmb3IgKGNvbnN0IFtwb3MsIGVudHJ5XSBvZiB1bmRlY2lkZWQuZW50cmllcygpKSB7XG4gICAgICAgICAgICBpZiAoZW50cnkudmlld1JlZiAmJiAhZW50cnkudmlld1JlZi5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50UG9zID0gdGhpcy52Y3IuaW5kZXhPZihlbnRyeS52aWV3UmVmKVxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UG9zICE9PSBwb3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52Y3IuaW5zZXJ0KGVudHJ5LnZpZXdSZWYsIHBvcylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIDsoZW50cnkgYXMgeyB2aWV3UmVmOiBTbG90Vmlld1JlZiB9KS52aWV3UmVmID0gdGhpcy52Y3IuY3JlYXRlRW1iZWRkZWRWaWV3KGVudHJ5LnRwbCwgbnVsbCwge1xuICAgICAgICAgICAgICAgICAgICBpbmRleDogcG9zLFxuICAgICAgICAgICAgICAgICAgICBpbmplY3RvcjogdGhpcy5pbmplY3RvclxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgZW50cnkudmlld1JlZiEubWFya0ZvckNoZWNrKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuI3ZpZXdzLnB1c2goZW50cnkpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjZGV0ZXJtaW5lQWN0aW9ucyhlbnRyaWVzOiBBcnJheTxTbG90RGVmPFQ+Pikge1xuICAgICAgICBjb25zdCBieUlkOiB7IFtrZXk6IHN0cmluZ106IEFycmF5PFNsb3REZWY8VD4+IH0gPSB7fVxuICAgICAgICBsZXQgcmVtb3ZlOiBBcnJheTxTbG90RGVmPFQ+PiA9IFtdXG4gICAgICAgIGNvbnN0IHVuZGVjaWRlZDogQXJyYXk8U2xvdERlZjxUPj4gPSBbXVxuXG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgaWYgKGVudHJ5LmlkICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWJ5SWRbZW50cnkuaWRdKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ5SWRbZW50cnkuaWRdID0gW2VudHJ5XVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJ5SWRbZW50cnkuaWRdLnB1c2goZW50cnkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB1bmRlY2lkZWQucHVzaChlbnRyeSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgdmFsdWVzIG9mIE9iamVjdC52YWx1ZXMoYnlJZCkpIHtcbiAgICAgICAgICAgIHJlbW92ZSA9IHJlbW92ZS5jb25jYXQodmFsdWVzLnNsaWNlKDAsIC0xKSlcbiAgICAgICAgICAgIHVuZGVjaWRlZC5wdXNoKHZhbHVlc1t2YWx1ZXMubGVuZ3RoIC0gMV0pXG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGN1cnJlbnQgb2YgdGhpcy4jdmlld3MpIHtcbiAgICAgICAgICAgIGlmICghdW5kZWNpZGVkLmluY2x1ZGVzKGN1cnJlbnQpKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlLnB1c2goY3VycmVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IHJlbW92ZSwgdW5kZWNpZGVkIH1cbiAgICB9XG5cbiAgICAjY2xlYXJWaWV3cygpIHtcbiAgICAgICAgdGhpcy52Y3IuY2xlYXIoKVxuICAgICAgICB0aGlzLiN2aWV3cyA9IFtdXG4gICAgfVxufVxuIl19
@@ -1,19 +0,0 @@
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: "18.2.6", ngImport: i0, type: NuSlidingLayout, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: NuSlidingLayout, imports: [SlidingItemDirective, SlidingComponent], exports: [SlidingItemDirective, SlidingComponent] }); }
10
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NuSlidingLayout, imports: [SlidingComponent] }); }
11
- }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.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=