@ngutil/floating 0.0.27
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/README.md +23 -0
- package/esm2022/floating/floating-ref.mjs +81 -0
- package/esm2022/floating/floating.service.mjs +123 -0
- package/esm2022/floating/index.mjs +4 -0
- package/esm2022/floating/traits/_base.mjs +3 -0
- package/esm2022/floating/traits/index.mjs +3 -0
- package/esm2022/floating/traits/position-calc.mjs +17 -0
- package/esm2022/floating/traits/position.mjs +71 -0
- package/esm2022/index.mjs +3 -0
- package/esm2022/layer/backdrop-ref.mjs +50 -0
- package/esm2022/layer/child-ref.mjs +44 -0
- package/esm2022/layer/container-ref.mjs +37 -0
- package/esm2022/layer/index.mjs +5 -0
- package/esm2022/layer/layer.service.mjs +131 -0
- package/esm2022/layer/portal-ref.mjs +52 -0
- package/esm2022/ngutil-floating.mjs +5 -0
- package/fesm2022/ngutil-floating.mjs +588 -0
- package/fesm2022/ngutil-floating.mjs.map +1 -0
- package/floating/floating-ref.d.ts +53 -0
- package/floating/floating.service.d.ts +54 -0
- package/floating/index.d.ts +3 -0
- package/floating/traits/_base.d.ts +6 -0
- package/floating/traits/index.d.ts +2 -0
- package/floating/traits/position-calc.d.ts +26 -0
- package/floating/traits/position.d.ts +52 -0
- package/index.d.ts +2 -0
- package/layer/backdrop-ref.d.ts +30 -0
- package/layer/child-ref.d.ts +22 -0
- package/layer/container-ref.d.ts +17 -0
- package/layer/index.d.ts +4 -0
- package/layer/layer.service.d.ts +28 -0
- package/layer/portal-ref.d.ts +32 -0
- package/package.json +33 -0
package/README.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# floating
|
|
2
|
+
|
|
3
|
+
This library was generated with [Nx](https://nx.dev).
|
|
4
|
+
|
|
5
|
+
## Running unit tests
|
|
6
|
+
|
|
7
|
+
Run `nx test floating` to execute the unit tests.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## Plan
|
|
11
|
+
|
|
12
|
+
```typescript
|
|
13
|
+
floating.showComponent(Component, new Modal({
|
|
14
|
+
backdrop: {click: "close | hide", cut: element},
|
|
15
|
+
escape: "close | hide",
|
|
16
|
+
}));
|
|
17
|
+
floating.showComponent(Component, new Toast({}));
|
|
18
|
+
floating.showComponent(Component, new Tip({anchor: {ref: element}})).subscribe(event => {
|
|
19
|
+
if (event === "done") {
|
|
20
|
+
// ...
|
|
21
|
+
}
|
|
22
|
+
})
|
|
23
|
+
```
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Inject, Injectable, InjectionToken } from "@angular/core";
|
|
2
|
+
import { EMPTY, filter, map, merge, ReplaySubject, shareReplay, takeUntil } from "rxjs";
|
|
3
|
+
import { StateChain } from "@ngutil/common";
|
|
4
|
+
import { ContainerRef } from "../layer/container-ref";
|
|
5
|
+
import { LayerService } from "../layer/layer.service";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../layer/layer.service";
|
|
8
|
+
import * as i2 from "../layer/container-ref";
|
|
9
|
+
export const TRAITS = new InjectionToken("TRAITS");
|
|
10
|
+
export class FloatingRef {
|
|
11
|
+
#traits;
|
|
12
|
+
#untilCleanup;
|
|
13
|
+
#untilDisposed;
|
|
14
|
+
constructor(layerSvc, container, traits) {
|
|
15
|
+
this.layerSvc = layerSvc;
|
|
16
|
+
this.container = container;
|
|
17
|
+
this.channel = new ReplaySubject(1);
|
|
18
|
+
this.state = new StateChain({
|
|
19
|
+
init: {},
|
|
20
|
+
showing: {},
|
|
21
|
+
shown: {},
|
|
22
|
+
closing: { cancellable: false, order: "sequential" },
|
|
23
|
+
disposing: { cancellable: false },
|
|
24
|
+
disposed: { cancellable: false, order: "sequential" },
|
|
25
|
+
cleanup: { cancellable: false, order: "sequential" }
|
|
26
|
+
});
|
|
27
|
+
this.#traits = {};
|
|
28
|
+
this.#untilCleanup = this.state.current$.pipe(filter(state => state === "cleanup"), shareReplay(1));
|
|
29
|
+
this.#untilDisposed = this.state.current$.pipe(filter(state => state === "cleanup"), shareReplay(1));
|
|
30
|
+
this.#traits = traits;
|
|
31
|
+
this.traitState$ = this.#traitState().pipe(shareReplay(1));
|
|
32
|
+
const sub = this.state.current$.subscribe(state => {
|
|
33
|
+
this.channel.next({ type: state });
|
|
34
|
+
});
|
|
35
|
+
this.state.on("init", () => {
|
|
36
|
+
this.traitState$.pipe(takeUntil(this.#untilCleanup)).subscribe();
|
|
37
|
+
});
|
|
38
|
+
this.state.on("disposed", () => {
|
|
39
|
+
sub.unsubscribe();
|
|
40
|
+
});
|
|
41
|
+
this.state.control(container.state);
|
|
42
|
+
}
|
|
43
|
+
show() {
|
|
44
|
+
return this.state.run(["init", "showing", "shown"]);
|
|
45
|
+
}
|
|
46
|
+
hide() {
|
|
47
|
+
return this.state.run(["disposing", "disposed", "cleanup"]);
|
|
48
|
+
}
|
|
49
|
+
close() {
|
|
50
|
+
return this.state.run(["closing", "disposing", "disposed", "cleanup"]);
|
|
51
|
+
}
|
|
52
|
+
watchTrait(name) {
|
|
53
|
+
return this.traitState$.pipe(takeUntil(this.#untilDisposed), filter(event => event.name === name), map(event => event.data), shareReplay(1));
|
|
54
|
+
}
|
|
55
|
+
#traitState() {
|
|
56
|
+
const src = [];
|
|
57
|
+
for (const [k, v] of Object.entries(this.#traits)) {
|
|
58
|
+
src.push(v.connect(this).pipe(takeUntil(this.#untilCleanup), map(result => {
|
|
59
|
+
return { name: k, data: result };
|
|
60
|
+
})));
|
|
61
|
+
}
|
|
62
|
+
if (src.length === 0) {
|
|
63
|
+
return EMPTY;
|
|
64
|
+
}
|
|
65
|
+
else if (src.length === 1) {
|
|
66
|
+
return src[0];
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
return merge(...src);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: FloatingRef, deps: [{ token: i1.LayerService }, { token: i2.ContainerRef }, { token: TRAITS }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
73
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: FloatingRef }); }
|
|
74
|
+
}
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: FloatingRef, decorators: [{
|
|
76
|
+
type: Injectable
|
|
77
|
+
}], ctorParameters: () => [{ type: i1.LayerService }, { type: i2.ContainerRef }, { type: undefined, decorators: [{
|
|
78
|
+
type: Inject,
|
|
79
|
+
args: [TRAITS]
|
|
80
|
+
}] }] });
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXRpbmctcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZmxvYXRpbmcvc3JjL2Zsb2F0aW5nL2Zsb2F0aW5nLXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFbEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBYyxhQUFhLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUVuRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTs7OztBQUtyRCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxjQUFjLENBQVMsUUFBUSxDQUFDLENBQUE7QUFhMUQsTUFBTSxPQUFPLFdBQVc7SUFhWCxPQUFPLENBQWE7SUFHcEIsYUFBYSxDQUdyQjtJQUVRLGNBQWMsQ0FHdEI7SUFFRCxZQUNhLFFBQXNCLEVBQ3RCLFNBQXVCLEVBQ2hCLE1BQWM7UUFGckIsYUFBUSxHQUFSLFFBQVEsQ0FBYztRQUN0QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBM0IzQixZQUFPLEdBQUcsSUFBSSxhQUFhLENBQUksQ0FBQyxDQUFDLENBQUE7UUFFakMsVUFBSyxHQUFHLElBQUksVUFBVSxDQUFDO1lBQzVCLElBQUksRUFBRSxFQUFFO1lBQ1IsT0FBTyxFQUFFLEVBQUU7WUFDWCxLQUFLLEVBQUUsRUFBRTtZQUNULE9BQU8sRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTtZQUNwRCxTQUFTLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FB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QyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2hELEdBQUcsQ0FBQyxJQUFJLENBQ0osQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ2hCLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQzdCLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDVCxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUE7WUFDcEMsQ0FBQyxDQUFDLENBQ0wsQ0FDSixDQUFBO1FBQ0wsQ0FBQztRQUVELElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQixPQUFPLEtBQUssQ0FBQTtRQUNoQixDQUFDO2FBQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2pCLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtRQUN4QixDQUFDO0lBQ0wsQ0FBQzs4R0F4RlEsV0FBVywwRUE2QlIsTUFBTTtrSEE3QlQsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsVUFBVTs7MEJBOEJGLE1BQU07MkJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7IEVNUFRZLCBmaWx0ZXIsIG1hcCwgbWVyZ2UsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIHNoYXJlUmVwbGF5LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IFN0YXRlQ2hhaW4gfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyBDb250YWluZXJSZWYgfSBmcm9tIFwiLi4vbGF5ZXIvY29udGFpbmVyLXJlZlwiXG5pbXBvcnQgeyBMYXllclNlcnZpY2UgfSBmcm9tIFwiLi4vbGF5ZXIvbGF5ZXIuc2VydmljZVwiXG5pbXBvcnQgeyBGbG9hdGluZ1RyYWl0IH0gZnJvbSBcIi4vdHJhaXRzL19iYXNlXCJcblxuZXhwb3J0IHR5cGUgVHJhaXRzID0geyBba2V5OiBzdHJpbmddOiBGbG9hdGluZ1RyYWl0IH1cblxuZXhwb3J0IGNvbnN0IFRSQUlUUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUcmFpdHM+KFwiVFJBSVRTXCIpXG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvYXRpbmdDaGFubmVsIHtcbiAgICB0eXBlOiBzdHJpbmdcbiAgICBkYXRhPzogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvYXRpbmdUcmFpdEV2ZW50IHtcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBkYXRhOiBvYmplY3Rcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZsb2F0aW5nUmVmPEMgZXh0ZW5kcyBGbG9hdGluZ0NoYW5uZWwgPSBGbG9hdGluZ0NoYW5uZWwsIFQgZXh0ZW5kcyBIVE1MRWxlbWVudCA9IEhUTUxFbGVtZW50PiB7XG4gICAgcmVhZG9ubHkgY2hhbm5lbCA9IG5ldyBSZXBsYXlTdWJqZWN0PEM+KDEpXG5cbiAgICByZWFkb25seSBzdGF0ZSA9IG5ldyBTdGF0ZUNoYWluKHtcbiAgICAgICAgaW5pdDoge30sXG4gICAgICAgIHNob3dpbmc6IHt9LFxuICAgICAgICBzaG93bjoge30sXG4gICAgICAgIGNsb3Npbmc6IHsgY2FuY2VsbGFibGU6IGZhbHNlLCBvcmRlcjogXCJzZXF1ZW50aWFsXCIgfSxcbiAgICAgICAgZGlzcG9zaW5nOiB7IGNhbmNlbGxhYmxlOiBmYWxzZSB9LFxuICAgICAgICBkaXNwb3NlZDogeyBjYW5jZWxsYWJsZTogZmFsc2UsIG9yZGVyOiBcInNlcXVlbnRpYWxcIiB9LFxuICAgICAgICBjbGVhbnVwOiB7IGNhbmNlbGxhYmxlOiBmYWxzZSwgb3JkZXI6IFwic2VxdWVudGlhbFwiIH1cbiAgICB9KVxuXG4gICAgcmVhZG9ubHkgI3RyYWl0czogVHJhaXRzID0ge31cbiAgICByZWFkb25seSB0cmFpdFN0YXRlJDogT2JzZXJ2YWJsZTxGbG9hdGluZ1RyYWl0RXZlbnQ+XG5cbiAgICByZWFkb25seSAjdW50aWxDbGVhbnVwID0gdGhpcy5zdGF0ZS5jdXJyZW50JC5waXBlKFxuICAgICAgICBmaWx0ZXIoc3RhdGUgPT4gc3RhdGUgPT09IFwiY2xlYW51cFwiKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApXG5cbiAgICByZWFkb25seSAjdW50aWxEaXNwb3NlZCA9IHRoaXMuc3RhdGUuY3VycmVudCQucGlwZShcbiAgICAgICAgZmlsdGVyKHN0YXRlID0+IHN0YXRlID09PSBcImNsZWFudXBcIiksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHJlYWRvbmx5IGxheWVyU3ZjOiBMYXllclNlcnZpY2UsXG4gICAgICAgIHJlYWRvbmx5IGNvbnRhaW5lcjogQ29udGFpbmVyUmVmLFxuICAgICAgICBASW5qZWN0KFRSQUlUUykgdHJhaXRzOiBUcmFpdHNcbiAgICApIHtcbiAgICAgICAgdGhpcy4jdHJhaXRzID0gdHJhaXRzXG4gICAgICAgIHRoaXMudHJhaXRTdGF0ZSQgPSB0aGlzLiN0cmFpdFN0YXRlKCkucGlwZShzaGFyZVJlcGxheSgxKSlcblxuICAgICAgICBjb25zdCBzdWIgPSB0aGlzLnN0YXRlLmN1cnJlbnQkLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoYW5uZWwubmV4dCh7IHR5cGU6IHN0YXRlIH0gYXMgYW55KVxuICAgICAgICB9KVxuICAgICAgICB0aGlzLnN0YXRlLm9uKFwiaW5pdFwiLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRyYWl0U3RhdGUkLnBpcGUodGFrZVVudGlsKHRoaXMuI3VudGlsQ2xlYW51cCkpLnN1YnNjcmliZSgpXG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuc3RhdGUub24oXCJkaXNwb3NlZFwiLCAoKSA9PiB7XG4gICAgICAgICAgICBzdWIudW5zdWJzY3JpYmUoKVxuICAgICAgICB9KVxuICAgICAgICB0aGlzLnN0YXRlLmNvbnRyb2woY29udGFpbmVyLnN0YXRlKVxuICAgIH1cblxuICAgIHNob3coKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnJ1bihbXCJpbml0XCIsIFwic2hvd2luZ1wiLCBcInNob3duXCJdKVxuICAgIH1cblxuICAgIGhpZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnJ1bihbXCJkaXNwb3NpbmdcIiwgXCJkaXNwb3NlZFwiLCBcImNsZWFudXBcIl0pXG4gICAgfVxuXG4gICAgY2xvc2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnJ1bihbXCJjbG9zaW5nXCIsIFwiZGlzcG9zaW5nXCIsIFwiZGlzcG9zZWRcIiwgXCJjbGVhbnVwXCJdKVxuICAgIH1cblxuICAgIHdhdGNoVHJhaXQ8VD4obmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYWl0U3RhdGUkLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy4jdW50aWxEaXNwb3NlZCksXG4gICAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQubmFtZSA9PT0gbmFtZSksXG4gICAgICAgICAgICBtYXAoZXZlbnQgPT4gZXZlbnQuZGF0YSBhcyBUKSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgIClcbiAgICB9XG5cbiAgICAjdHJhaXRTdGF0ZSgpOiBPYnNlcnZhYmxlPEZsb2F0aW5nVHJhaXRFdmVudD4ge1xuICAgICAgICBjb25zdCBzcmMgPSBbXVxuXG4gICAgICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuI3RyYWl0cykpIHtcbiAgICAgICAgICAgIHNyYy5wdXNoKFxuICAgICAgICAgICAgICAgIHYuY29ubmVjdCh0aGlzKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy4jdW50aWxDbGVhbnVwKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBuYW1lOiBrLCBkYXRhOiByZXN1bHQgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzcmMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gRU1QVFlcbiAgICAgICAgfSBlbHNlIGlmIChzcmMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gc3JjWzBdXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbWVyZ2UoLi4uc3JjKVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { inject, Injectable, TemplateRef } from "@angular/core";
|
|
2
|
+
import { Observable } from "rxjs";
|
|
3
|
+
import { LayerService } from "../layer/layer.service";
|
|
4
|
+
import { FloatingRef, TRAITS } from "./floating-ref";
|
|
5
|
+
import { position } from "./traits/position";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
// export type FloatingTrait = (...args: any[]) => (traits: object) => Observable<object>
|
|
8
|
+
export class FloatingFactory {
|
|
9
|
+
constructor(layer) {
|
|
10
|
+
this.layer = layer;
|
|
11
|
+
this.traits = {};
|
|
12
|
+
this.subscribe = (...args) => this.show().subscribe(...args);
|
|
13
|
+
}
|
|
14
|
+
trait(...traits) {
|
|
15
|
+
for (const trait of traits) {
|
|
16
|
+
if (Array.isArray(trait)) {
|
|
17
|
+
this.trait(...trait);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
this.traits[trait.name] = trait;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
25
|
+
show() {
|
|
26
|
+
return new Observable((dest) => {
|
|
27
|
+
let disposed = false;
|
|
28
|
+
const ref = this.create();
|
|
29
|
+
const channelSub = ref.channel.subscribe(event => {
|
|
30
|
+
dest.next(event);
|
|
31
|
+
if (event.type === "disposed") {
|
|
32
|
+
disposed = true;
|
|
33
|
+
dest.complete();
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
const showSub = ref.show().subscribe();
|
|
37
|
+
return () => {
|
|
38
|
+
showSub.unsubscribe();
|
|
39
|
+
channelSub.unsubscribe();
|
|
40
|
+
if (!disposed) {
|
|
41
|
+
const dispose$ = ref.channel.subscribe(event => {
|
|
42
|
+
if (event.type === "disposed") {
|
|
43
|
+
hideSub.unsubscribe();
|
|
44
|
+
dispose$.unsubscribe();
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
const hideSub = ref.hide().subscribe();
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
providers(providers) {
|
|
53
|
+
if (!providers) {
|
|
54
|
+
providers = [];
|
|
55
|
+
}
|
|
56
|
+
providers = [
|
|
57
|
+
...providers,
|
|
58
|
+
{ provide: TRAITS, useValue: this.traits },
|
|
59
|
+
{ provide: LayerService, useValue: this.layer },
|
|
60
|
+
FloatingRef
|
|
61
|
+
];
|
|
62
|
+
return providers;
|
|
63
|
+
}
|
|
64
|
+
position(options) {
|
|
65
|
+
return this.trait(position(options));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export class FloatingTemplateFactory extends FloatingFactory {
|
|
69
|
+
constructor(layer, tpl, options) {
|
|
70
|
+
super(layer);
|
|
71
|
+
this.tpl = tpl;
|
|
72
|
+
this.options = options;
|
|
73
|
+
}
|
|
74
|
+
create() {
|
|
75
|
+
const options = { ...this.options };
|
|
76
|
+
options.providers = this.providers(options.providers);
|
|
77
|
+
const container = this.layer.newTemplatePortal(this.tpl, options);
|
|
78
|
+
return container.injector.get(FloatingRef);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
export class FloatingComponentFactory extends FloatingFactory {
|
|
82
|
+
constructor(layer, component, options) {
|
|
83
|
+
super(layer);
|
|
84
|
+
this.component = component;
|
|
85
|
+
this.options = options;
|
|
86
|
+
}
|
|
87
|
+
create() {
|
|
88
|
+
const options = { ...this.options };
|
|
89
|
+
options.providers = this.providers(options.providers);
|
|
90
|
+
const container = this.layer.newComponentPortal(this.component, options);
|
|
91
|
+
return container.injector.get(FloatingRef);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* class SomeComponent {}
|
|
98
|
+
*
|
|
99
|
+
* class SomeList {
|
|
100
|
+
* readonly floating = inject(FloatingService)
|
|
101
|
+
*
|
|
102
|
+
* showComponent() {
|
|
103
|
+
* this.floating.from(SomeComponent).traits(position(), backdrop()).subscribe()
|
|
104
|
+
* }
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
export class FloatingService {
|
|
108
|
+
#layer = inject(LayerService);
|
|
109
|
+
from(value, opts) {
|
|
110
|
+
if (value instanceof TemplateRef) {
|
|
111
|
+
return new FloatingTemplateFactory(this.#layer, value, opts);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
return new FloatingComponentFactory(this.#layer, value, opts);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: FloatingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
118
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: FloatingService }); }
|
|
119
|
+
}
|
|
120
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: FloatingService, decorators: [{
|
|
121
|
+
type: Injectable
|
|
122
|
+
}] });
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Zsb2F0aW5nL3NyYy9mbG9hdGluZy9mbG9hdGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFZLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV6RSxPQUFPLEVBQUUsVUFBVSxFQUFjLE1BQU0sTUFBTSxDQUFBO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUVyRCxPQUFPLEVBQW1CLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVyRSxPQUFPLEVBQWdDLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFBOztBQUUxRSx5RkFBeUY7QUFFekYsTUFBTSxPQUFnQixlQUFlO0lBR2pDLFlBQStCLEtBQW1CO1FBQW5CLFVBQUssR0FBTCxLQUFLLENBQWM7UUFGL0IsV0FBTSxHQUFxQyxFQUFFLENBQUE7UUErQ2hFLGNBQVMsR0FBRyxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7SUE3Q1QsQ0FBQztJQUV0RCxLQUFLLENBQUMsR0FBRyxNQUE4QztRQUNuRCxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7WUFDeEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQTtZQUNuQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9B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Q0ksS0FBbUIsRUFDSCxTQUFZLEVBQ1osT0FBa0M7UUFFbEQsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBSEksY0FBUyxHQUFULFNBQVMsQ0FBRztRQUNaLFlBQU8sR0FBUCxPQUFPLENBQTJCO0lBR3RELENBQUM7SUFFa0IsTUFBTTtRQUNyQixNQUFNLE9BQU8sR0FBOEIsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUM5RCxPQUFPLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3JELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN4RSxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQzlDLENBQUM7Q0FDSjtBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUVILE1BQU0sT0FBTyxlQUFlO0lBQ2YsTUFBTSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQU90QyxJQUFJLENBQUksS0FBd0MsRUFBRSxJQUFTO1FBQ3ZELElBQUksS0FBSyxZQUFZLFdBQVcsRUFBRSxDQUFDO1lBQy9CLE9BQU8sSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQVksRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN2RSxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQVksRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN4RSxDQUFDO0lBQ0wsQ0FBQzs4R0FkUSxlQUFlO2tIQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIlxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBQcm92aWRlciwgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmliZXIgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IExheWVyU2VydmljZSB9IGZyb20gXCIuLi9sYXllci9sYXllci5zZXJ2aWNlXCJcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbE9wdGlvbnMsIFRlbXBsYXRlUG9ydGFsT3B0aW9ucyB9IGZyb20gXCIuLi9sYXllci9wb3J0YWwtcmVmXCJcbmltcG9ydCB7IEZsb2F0aW5nQ2hhbm5lbCwgRmxvYXRpbmdSZWYsIFRSQUlUUyB9IGZyb20gXCIuL2Zsb2F0aW5nLXJlZlwiXG5pbXBvcnQgeyB0eXBlIEZsb2F0aW5nVHJhaXQgfSBmcm9tIFwiLi90cmFpdHMvX2Jhc2VcIlxuaW1wb3J0IHsgdHlwZSBGbG9hdGluZ1Bvc2l0aW9uT3B0aW9ucywgcG9zaXRpb24gfSBmcm9tIFwiLi90cmFpdHMvcG9zaXRpb25cIlxuXG4vLyBleHBvcnQgdHlwZSBGbG9hdGluZ1RyYWl0ID0gKC4uLmFyZ3M6IGFueVtdKSA9PiAodHJhaXRzOiBvYmplY3QpID0+IE9ic2VydmFibGU8b2JqZWN0PlxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmxvYXRpbmdGYWN0b3J5IHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhaXRzOiB7IFtrZXk6IHN0cmluZ106IEZsb2F0aW5nVHJhaXQgfSA9IHt9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgbGF5ZXI6IExheWVyU2VydmljZSkge31cblxuICAgIHRyYWl0KC4uLnRyYWl0czogQXJyYXk8RmxvYXRpbmdUcmFpdCB8IEZsb2F0aW5nVHJhaXRbXT4pIHtcbiAgICAgICAgZm9yIChjb25zdCB0cmFpdCBvZiB0cmFpdHMpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRyYWl0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhaXQoLi4udHJhaXQpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhaXRzW3RyYWl0Lm5hbWVdID0gdHJhaXRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgc2hvdygpOiBPYnNlcnZhYmxlPEZsb2F0aW5nQ2hhbm5lbD4ge1xuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKGRlc3Q6IFN1YnNjcmliZXI8RmxvYXRpbmdDaGFubmVsPikgPT4ge1xuICAgICAgICAgICAgbGV0IGRpc3Bvc2VkID0gZmFsc2VcblxuICAgICAgICAgICAgY29uc3QgcmVmID0gdGhpcy5jcmVhdGUoKVxuICAgICAgICAgICAgY29uc3QgY2hhbm5lbFN1YiA9IHJlZi5jaGFubmVsLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgZGVzdC5uZXh0KGV2ZW50KVxuICAgICAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSBcImRpc3Bvc2VkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcG9zZWQgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgIGRlc3QuY29tcGxldGUoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGNvbnN0IHNob3dTdWIgPSByZWYuc2hvdygpLnN1YnNjcmliZSgpXG5cbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2hvd1N1Yi51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICAgICAgY2hhbm5lbFN1Yi51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICAgICAgaWYgKCFkaXNwb3NlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNwb3NlJCA9IHJlZi5jaGFubmVsLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gXCJkaXNwb3NlZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZVN1Yi51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcG9zZSQudW5zdWJzY3JpYmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoaWRlU3ViID0gcmVmLmhpZGUoKS5zdWJzY3JpYmUoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBzdWJzY3JpYmUgPSAoLi4uYXJnczogYW55W10pID0+IHRoaXMuc2hvdygpLnN1YnNjcmliZSguLi5hcmdzKVxuXG4gICAgcHJvdGVjdGVkIHByb3ZpZGVycyhwcm92aWRlcnM/OiBQcm92aWRlcltdKTogUHJvdmlkZXJbXSB7XG4gICAgICAgIGlmICghcHJvdmlkZXJzKSB7XG4gICAgICAgICAgICBwcm92aWRlcnMgPSBbXVxuICAgICAgICB9XG5cbiAgICAgICAgcHJvdmlkZXJzID0gW1xuICAgICAgICAgICAgLi4ucHJvdmlkZXJzLFxuICAgICAgICAgICAgeyBwcm92aWRlOiBUUkFJVFMsIHVzZVZhbHVlOiB0aGlzLnRyYWl0cyB9LFxuICAgICAgICAgICAgeyBwcm92aWRlOiBMYXllclNlcnZpY2UsIHVzZVZhbHVlOiB0aGlzLmxheWVyIH0sXG4gICAgICAgICAgICBGbG9hdGluZ1JlZlxuICAgICAgICBdXG5cbiAgICAgICAgcmV0dXJuIHByb3ZpZGVyc1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjcmVhdGUoKTogRmxvYXRpbmdSZWY8RmxvYXRpbmdDaGFubmVsPlxuXG4gICAgcG9zaXRpb24ob3B0aW9uczogRmxvYXRpbmdQb3NpdGlvbk9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhaXQocG9zaXRpb24ob3B0aW9ucykpXG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmxvYXRpbmdUZW1wbGF0ZUZhY3Rvcnk8VCBleHRlbmRzIG9iamVjdD4gZXh0ZW5kcyBGbG9hdGluZ0ZhY3Rvcnkge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBsYXllcjogTGF5ZXJTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgdHBsOiBUZW1wbGF0ZVJlZjxUPixcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IG9wdGlvbnM6IFRlbXBsYXRlUG9ydGFsT3B0aW9uczxUPlxuICAgICkge1xuICAgICAgICBzdXBlcihsYXllcilcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY3JlYXRlKCk6IEZsb2F0aW5nUmVmPEZsb2F0aW5nQ2hhbm5lbD4ge1xuICAgICAgICBjb25zdCBvcHRpb25zOiBUZW1wbGF0ZVBvcnRhbE9wdGlvbnM8VD4gPSB7IC4uLnRoaXMub3B0aW9ucyB9XG4gICAgICAgIG9wdGlvbnMucHJvdmlkZXJzID0gdGhpcy5wcm92aWRlcnMob3B0aW9ucy5wcm92aWRlcnMpXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMubGF5ZXIubmV3VGVtcGxhdGVQb3J0YWwodGhpcy50cGwsIG9wdGlvbnMpXG4gICAgICAgIHJldHVybiBjb250YWluZXIuaW5qZWN0b3IuZ2V0KEZsb2F0aW5nUmVmKVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZsb2F0aW5nQ29tcG9uZW50RmFjdG9yeTxUIGV4dGVuZHMgQ29tcG9uZW50VHlwZTxhbnk+PiBleHRlbmRzIEZsb2F0aW5nRmFjdG9yeSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGxheWVyOiBMYXllclNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBjb21wb25lbnQ6IFQsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBvcHRpb25zOiBDb21wb25lbnRQb3J0YWxPcHRpb25zPFQ+XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGxheWVyKVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBjcmVhdGUoKTogRmxvYXRpbmdSZWY8RmxvYXRpbmdDaGFubmVsPiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IENvbXBvbmVudFBvcnRhbE9wdGlvbnM8VD4gPSB7IC4uLnRoaXMub3B0aW9ucyB9XG4gICAgICAgIG9wdGlvbnMucHJvdmlkZXJzID0gdGhpcy5wcm92aWRlcnMob3B0aW9ucy5wcm92aWRlcnMpXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMubGF5ZXIubmV3Q29tcG9uZW50UG9ydGFsKHRoaXMuY29tcG9uZW50LCBvcHRpb25zKVxuICAgICAgICByZXR1cm4gY29udGFpbmVyLmluamVjdG9yLmdldChGbG9hdGluZ1JlZilcbiAgICB9XG59XG5cbi8qKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIFNvbWVDb21wb25lbnQge31cbiAqXG4gKiBjbGFzcyBTb21lTGlzdCB7XG4gKiAgICAgIHJlYWRvbmx5IGZsb2F0aW5nID0gaW5qZWN0KEZsb2F0aW5nU2VydmljZSlcbiAqXG4gKiAgICAgIHNob3dDb21wb25lbnQoKSB7XG4gKiAgICAgICAgICB0aGlzLmZsb2F0aW5nLmZyb20oU29tZUNvbXBvbmVudCkudHJhaXRzKHBvc2l0aW9uKCksIGJhY2tkcm9wKCkpLnN1YnNjcmliZSgpXG4gKiAgICAgIH1cbiAqIGBgYFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmxvYXRpbmdTZXJ2aWNlIHtcbiAgICByZWFkb25seSAjbGF5ZXIgPSBpbmplY3QoTGF5ZXJTZXJ2aWNlKVxuICAgIC8vIHJlYWRvbmx5IHBhcmVudCA9IGluamVjdChGbG9hdGluZ1JlZiwgeyBza2lwU2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWUgfSlcblxuICAgIGZyb208VCBleHRlbmRzIENvbXBvbmVudFR5cGU8YW55Pj4oY29tcG9uZW50OiBULCBvcHRzPzogQ29tcG9uZW50UG9ydGFsT3B0aW9uczxUPik6IEZsb2F0aW5nQ29tcG9uZW50RmFjdG9yeTxUPlxuXG4gICAgZnJvbTxUIGV4dGVuZHMgb2JqZWN0Pih0cGw6IFRlbXBsYXRlUmVmPFQ+LCBvcHRzPzogVGVtcGxhdGVQb3J0YWxPcHRpb25zPFQ+KTogRmxvYXRpbmdUZW1wbGF0ZUZhY3Rvcnk8VD5cblxuICAgIGZyb208VD4odmFsdWU6IENvbXBvbmVudFR5cGU8VD4gfCBUZW1wbGF0ZVJlZjxUPiwgb3B0czogYW55KTogRmxvYXRpbmdGYWN0b3J5IHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRmxvYXRpbmdUZW1wbGF0ZUZhY3RvcnkodGhpcy4jbGF5ZXIsIHZhbHVlIGFzIGFueSwgb3B0cylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRmxvYXRpbmdDb21wb25lbnRGYWN0b3J5KHRoaXMuI2xheWVyLCB2YWx1ZSBhcyBhbnksIG9wdHMpXG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from "./traits";
|
|
2
|
+
export * from "./floating-ref";
|
|
3
|
+
export * from "./floating.service";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9mbG9hdGluZy9zcmMvZmxvYXRpbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLG9CQUFvQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vdHJhaXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL2Zsb2F0aW5nLXJlZlwiXG5leHBvcnQgKiBmcm9tIFwiLi9mbG9hdGluZy5zZXJ2aWNlXCJcbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export class FloatingTrait {
|
|
2
|
+
}
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2Jhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9mbG9hdGluZy9zcmMvZmxvYXRpbmcvdHJhaXRzL19iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sT0FBZ0IsYUFBYTtDQUlsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB0eXBlIHsgRmxvYXRpbmdSZWYgfSBmcm9tIFwiLi4vZmxvYXRpbmctcmVmXCJcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZsb2F0aW5nVHJhaXQ8VCA9IGFueT4ge1xuICAgIGFic3RyYWN0IHJlYWRvbmx5IG5hbWU6IHN0cmluZ1xuXG4gICAgYWJzdHJhY3QgY29ubmVjdChmbG9hdGluZ1JlZjogRmxvYXRpbmdSZWY8YW55Pik6IE9ic2VydmFibGU8VD5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from "./position";
|
|
2
|
+
export * from "./position-calc";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9mbG9hdGluZy9zcmMvZmxvYXRpbmcvdHJhaXRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFBO0FBQzFCLGNBQWMsaUJBQWlCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9wb3NpdGlvblwiXG5leHBvcnQgKiBmcm9tIFwiLi9wb3NpdGlvbi1jYWxjXCJcbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export function computePosition({ floating, anchor, placement, options }) {
|
|
2
|
+
// TODO: jelenleg csak center van
|
|
3
|
+
const maxWidth = placement.width;
|
|
4
|
+
const maxHeight = placement.height;
|
|
5
|
+
const cf = {
|
|
6
|
+
current: {
|
|
7
|
+
x: (maxWidth - floating.width) / 2,
|
|
8
|
+
y: (maxHeight - floating.height) / 2,
|
|
9
|
+
width: Math.min(maxHeight, floating.width),
|
|
10
|
+
height: Math.min(maxHeight, floating.height)
|
|
11
|
+
},
|
|
12
|
+
max: { width: maxWidth, height: maxHeight },
|
|
13
|
+
min: { width: 0, height: 0 }
|
|
14
|
+
};
|
|
15
|
+
return { floating: cf };
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24tY2FsYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Zsb2F0aW5nL3NyYy9mbG9hdGluZy90cmFpdHMvcG9zaXRpb24tY2FsYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQ0EsTUFBTSxVQUFVLGVBQWUsQ0FBQyxFQUM1QixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxPQUFPLEVBQ1k7SUFDbkIsaUNBQWlDO0lBRWpDLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUE7SUFDaEMsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQTtJQUNsQyxNQUFNLEVBQUUsR0FBcUI7UUFDekIsT0FBTyxFQUFFO1lBQ0wsQ0FBQyxFQUFFLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1lBQ2xDLENBQUMsRUFBRSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztZQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUMxQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQztTQUMvQztRQUNELEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRTtRQUMzQyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7S0FDL0IsQ0FBQTtJQUVELE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUE7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFsaWdubWVudCwgRGltZW5zaW9uLCBQb3NpdGlvbiwgUmVjdCB9IGZyb20gXCJAbmd1dGlsL3N0eWxlXCJcblxuaW1wb3J0IHR5cGUgeyBGbG9hdGluZ1Bvc2l0aW9uT3B0aW9ucyB9IGZyb20gXCIuL3Bvc2l0aW9uXCJcblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlUG9zaXRpb25JbnB1dCB7XG4gICAgZmxvYXRpbmc6IERpbWVuc2lvblxuICAgIGFuY2hvcjogUmVjdFxuICAgIHBsYWNlbWVudDogUmVjdFxuICAgIG9wdGlvbnM6IEZsb2F0aW5nUG9zaXRpb25PcHRpb25zXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRGbG9hdGluZyB7XG4gICAgY3VycmVudDogUmVjdFxuICAgIG1pbjogRGltZW5zaW9uXG4gICAgbWF4OiBEaW1lbnNpb25cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZEFsaWdubWVudCB7XG4gICAgYWxpZ246IEFsaWdubWVudFxuICAgIHBvc3Rpb246IFBvc2l0aW9uXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRBbmNob3Ige1xuICAgIGZsb2F0aW5nOiBDb21wdXRlZEFsaWdubWVudFxuICAgIGFuY2hvcjogQ29tcHV0ZWRBbGlnbm1lbnRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZFBvc2l0b24ge1xuICAgIGZsb2F0aW5nOiBDb21wdXRlZEZsb2F0aW5nXG4gICAgYW5jaG9yPzogQ29tcHV0ZWRBbmNob3Jcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVQb3NpdGlvbih7XG4gICAgZmxvYXRpbmcsXG4gICAgYW5jaG9yLFxuICAgIHBsYWNlbWVudCxcbiAgICBvcHRpb25zXG59OiBDb21wdXRlUG9zaXRpb25JbnB1dCk6IENvbXB1dGVkUG9zaXRvbiB8IHVuZGVmaW5lZCB7XG4gICAgLy8gVE9ETzogamVsZW5sZWcgY3NhayBjZW50ZXIgdmFuXG5cbiAgICBjb25zdCBtYXhXaWR0aCA9IHBsYWNlbWVudC53aWR0aFxuICAgIGNvbnN0IG1heEhlaWdodCA9IHBsYWNlbWVudC5oZWlnaHRcbiAgICBjb25zdCBjZjogQ29tcHV0ZWRGbG9hdGluZyA9IHtcbiAgICAgICAgY3VycmVudDoge1xuICAgICAgICAgICAgeDogKG1heFdpZHRoIC0gZmxvYXRpbmcud2lkdGgpIC8gMixcbiAgICAgICAgICAgIHk6IChtYXhIZWlnaHQgLSBmbG9hdGluZy5oZWlnaHQpIC8gMixcbiAgICAgICAgICAgIHdpZHRoOiBNYXRoLm1pbihtYXhIZWlnaHQsIGZsb2F0aW5nLndpZHRoKSxcbiAgICAgICAgICAgIGhlaWdodDogTWF0aC5taW4obWF4SGVpZ2h0LCBmbG9hdGluZy5oZWlnaHQpXG4gICAgICAgIH0sXG4gICAgICAgIG1heDogeyB3aWR0aDogbWF4V2lkdGgsIGhlaWdodDogbWF4SGVpZ2h0IH0sXG4gICAgICAgIG1pbjogeyB3aWR0aDogMCwgaGVpZ2h0OiAwIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBmbG9hdGluZzogY2YgfVxufVxuIl19
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { ElementRef } from "@angular/core";
|
|
2
|
+
import { combineLatest, Observable } from "rxjs";
|
|
3
|
+
import { DimensionWatcher, RectWatcher } from "@ngutil/style";
|
|
4
|
+
import { FloatingTrait } from "./_base";
|
|
5
|
+
import { computePosition } from "./position-calc";
|
|
6
|
+
export class FloatingAnchorRef extends ElementRef {
|
|
7
|
+
}
|
|
8
|
+
export class FloatingPlacementRef extends ElementRef {
|
|
9
|
+
}
|
|
10
|
+
export class PositionTrait extends FloatingTrait {
|
|
11
|
+
constructor(options) {
|
|
12
|
+
super();
|
|
13
|
+
this.options = options;
|
|
14
|
+
this.name = "position";
|
|
15
|
+
if (!options.anchor) {
|
|
16
|
+
options.anchor = { ref: "viewport", align: "center middle" };
|
|
17
|
+
}
|
|
18
|
+
if (!options.placement) {
|
|
19
|
+
options.placement = { ref: "viewport" };
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
connect(floatingRef) {
|
|
23
|
+
return new Observable((dest) => {
|
|
24
|
+
const injector = floatingRef.container.injector;
|
|
25
|
+
const dimWatcher = injector.get(DimensionWatcher);
|
|
26
|
+
const rectWatcher = injector.get(RectWatcher);
|
|
27
|
+
const watches = {
|
|
28
|
+
floating: dimWatcher.watch(floatingRef.container, "border-box"),
|
|
29
|
+
anchor: refWatcher(rectWatcher, this.options.anchor.ref, floatingRef),
|
|
30
|
+
placement: refWatcher(rectWatcher, this.options.placement.ref, floatingRef)
|
|
31
|
+
};
|
|
32
|
+
return combineLatest(watches).subscribe(({ floating, anchor, placement }) => {
|
|
33
|
+
const res = new FloatingPosition(this.options, floating, anchor, placement);
|
|
34
|
+
res.apply(floatingRef);
|
|
35
|
+
dest.next(res);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function refWatcher(rectWatcher, ref, floatingRef) {
|
|
41
|
+
if (ref === "layer") {
|
|
42
|
+
return rectWatcher.watch(floatingRef.layerSvc.root, "border-box");
|
|
43
|
+
}
|
|
44
|
+
else if (ref === "viewport" || ref instanceof Window) {
|
|
45
|
+
return rectWatcher.watch(window, "border-box");
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
return rectWatcher.watch(ref, "border-box");
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export function position(options) {
|
|
52
|
+
return new PositionTrait(options);
|
|
53
|
+
}
|
|
54
|
+
export class FloatingPosition {
|
|
55
|
+
constructor(options, floating, anchor, placement) {
|
|
56
|
+
this.options = options;
|
|
57
|
+
this.floating = floating;
|
|
58
|
+
this.anchor = anchor;
|
|
59
|
+
this.placement = placement;
|
|
60
|
+
this.computed = computePosition({ floating, anchor, placement, options });
|
|
61
|
+
}
|
|
62
|
+
apply(floatingRef) {
|
|
63
|
+
if (this.computed == null) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const floatingEl = floatingRef.container.nativeElement;
|
|
67
|
+
floatingEl.style.left = `${this.computed.floating.current.x}px`;
|
|
68
|
+
floatingEl.style.top = `${this.computed.floating.current.y}px`;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9mbG9hdGluZy9zcmMvZmxvYXRpbmcvdHJhaXRzL3Bvc2l0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFHNUQsT0FBTyxFQUE2QixnQkFBZ0IsRUFBUSxXQUFXLEVBQWMsTUFBTSxlQUFlLENBQUE7QUFJMUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUN2QyxPQUFPLEVBQW1CLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBZ0JsRSxNQUFNLE9BQU8saUJBQWtDLFNBQVEsVUFBYTtDQUFHO0FBY3ZFLE1BQU0sT0FBTyxvQkFBc0UsU0FBUSxVQUFhO0NBQUc7QUFjM0csTUFBTSxPQUFPLGFBQWMsU0FBUSxhQUErQjtJQUc5RCxZQUFxQixPQUFnQztRQUNqRCxLQUFLLEVBQUUsQ0FBQTtRQURVLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBRnJELFNBQUksR0FBRyxVQUFVLENBQUE7UUFLYixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsQ0FBQTtRQUNoRSxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNyQixPQUFPLENBQUMsU0FBUyxHQUFHLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFBO1FBQzNDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLFdBQTZCO1FBQ2pDLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxJQUFrQyxFQUFFLEVBQUU7WUFD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QVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFDbEUsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcblxuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaWJlciB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgRWxlbWVudElucHV0IH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcbmltcG9ydCB7IEFsaWdubWVudElucHV0LCBEaW1lbnNpb24sIERpbWVuc2lvbldhdGNoZXIsIFJlY3QsIFJlY3RXYXRjaGVyLCBTaWRlc0lucHV0IH0gZnJvbSBcIkBuZ3V0aWwvc3R5bGVcIlxuXG5pbXBvcnQgeyBMYXllclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vbGF5ZXIvbGF5ZXIuc2VydmljZVwiXG5pbXBvcnQgeyBGbG9hdGluZ1JlZiB9IGZyb20gXCIuLi9mbG9hdGluZy1yZWZcIlxuaW1wb3J0IHsgRmxvYXRpbmdUcmFpdCB9IGZyb20gXCIuL19iYXNlXCJcbmltcG9ydCB7IENvbXB1dGVkUG9zaXRvbiwgY29tcHV0ZVBvc2l0aW9uIH0gZnJvbSBcIi4vcG9zaXRpb24tY2FsY1wiXG5cbmV4cG9ydCB0eXBlIEZsb2F0aW5nVGFyZ2V0RWxlbWVudFJlZiA9IEVsZW1lbnRJbnB1dCB8IFdpbmRvdyB8IFwibGF5ZXJcIiB8IFwidmlld3BvcnRcIlxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb2F0aW5nQWxpZ24ge1xuICAgIGFsaWduPzogQWxpZ25tZW50SW5wdXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG9hdGluZ0FuY2hvclBvc2l0aW9uIGV4dGVuZHMgRmxvYXRpbmdBbGlnbiB7XG4gICAgbWFyZ2luPzogU2lkZXNJbnB1dFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb2F0aW5nQW5jaG9yIGV4dGVuZHMgRmxvYXRpbmdBbmNob3JQb3NpdGlvbiB7XG4gICAgcmVmOiBGbG9hdGluZ1RhcmdldEVsZW1lbnRSZWZcbn1cblxuZXhwb3J0IGNsYXNzIEZsb2F0aW5nQW5jaG9yUmVmPFQgZXh0ZW5kcyBOb2RlPiBleHRlbmRzIEVsZW1lbnRSZWY8VD4ge31cblxuZXhwb3J0IGludGVyZmFjZSBGbG9hdGluZ0NvbnRlbnRQb3NpdGlvbiBleHRlbmRzIEZsb2F0aW5nQWxpZ24ge1xuICAgIG1hcmdpbj86IFNpZGVzSW5wdXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG9hdGluZ1BsYWNlbWVudFBvc2l0aW9uIHtcbiAgICBwYWRkaW5nPzogU2lkZXNJbnB1dFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb2F0aW5nUGxhY2VtZW50IGV4dGVuZHMgRmxvYXRpbmdQbGFjZW1lbnRQb3NpdGlvbiB7XG4gICAgcmVmOiBGbG9hdGluZ1RhcmdldEVsZW1lbnRSZWZcbn1cblxuZXhwb3J0IGNsYXNzIEZsb2F0aW5nUGxhY2VtZW50UmVmPFQgZXh0ZW5kcyBMYXllclNlcnZpY2VbXCJyb290XCJdW1wibmF0aXZlRWxlbWVudFwiXT4gZXh0ZW5kcyBFbGVtZW50UmVmPFQ+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvYXRpbmdQb3NpdGlvbk9wdGlvbnMge1xuICAgIGFuY2hvcj86IEZsb2F0aW5nQW5jaG9yXG4gICAgY29udGVudD86IEZsb2F0aW5nQ29udGVudFBvc2l0aW9uXG4gICAgcGxhY2VtZW50PzogRmxvYXRpbmdQbGFjZW1lbnRcbn1cblxudHlwZSBXYXRjaGVzID0ge1xuICAgIGZsb2F0aW5nOiBPYnNlcnZhYmxlPERpbWVuc2lvbj5cbiAgICBhbmNob3I6IE9ic2VydmFibGU8UmVjdD5cbiAgICBwbGFjZW1lbnQ6IE9ic2VydmFibGU8UmVjdD5cbn1cblxuZXhwb3J0IGNsYXNzIFBvc2l0aW9uVHJhaXQgZXh0ZW5kcyBGbG9hdGluZ1RyYWl0PEZsb2F0aW5nUG9zaXRpb24+IHtcbiAgICBuYW1lID0gXCJwb3NpdGlvblwiXG5cbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBvcHRpb25zOiBGbG9hdGluZ1Bvc2l0aW9uT3B0aW9ucykge1xuICAgICAgICBzdXBlcigpXG5cbiAgICAgICAgaWYgKCFvcHRpb25zLmFuY2hvcikge1xuICAgICAgICAgICAgb3B0aW9ucy5hbmNob3IgPSB7IHJlZjogXCJ2aWV3cG9ydFwiLCBhbGlnbjogXCJjZW50ZXIgbWlkZGxlXCIgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLnBsYWNlbWVudCkge1xuICAgICAgICAgICAgb3B0aW9ucy5wbGFjZW1lbnQgPSB7IHJlZjogXCJ2aWV3cG9ydFwiIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbm5lY3QoZmxvYXRpbmdSZWY6IEZsb2F0aW5nUmVmPGFueT4pOiBPYnNlcnZhYmxlPEZsb2F0aW5nUG9zaXRpb24+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChkZXN0OiBTdWJzY3JpYmVyPEZsb2F0aW5nUG9zaXRpb24+KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmplY3RvciA9IGZsb2F0aW5nUmVmLmNvbnRhaW5lci5pbmplY3RvclxuICAgICAgICAgICAgY29uc3QgZGltV2F0Y2hlciA9IGluamVjdG9yLmdldChEaW1lbnNpb25XYXRjaGVyKVxuICAgICAgICAgICAgY29uc3QgcmVjdFdhdGNoZXIgPSBpbmplY3Rvci5nZXQoUmVjdFdhdGNoZXIpXG5cbiAgICAgICAgICAgIGNvbnN0IHdhdGNoZXM6IFdhdGNoZXMgPSB7XG4gICAgICAgICAgICAgICAgZmxvYXRpbmc6IGRpbVdhdGNoZXIud2F0Y2goZmxvYXRpbmdSZWYuY29udGFpbmVyLCBcImJvcmRlci1ib3hcIiksXG4gICAgICAgICAgICAgICAgYW5jaG9yOiByZWZXYXRjaGVyKHJlY3RXYXRjaGVyLCB0aGlzLm9wdGlvbnMuYW5jaG9yIS5yZWYsIGZsb2F0aW5nUmVmKSxcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6IHJlZldhdGNoZXIocmVjdFdhdGNoZXIsIHRoaXMub3B0aW9ucy5wbGFjZW1lbnQhLnJlZiwgZmxvYXRpbmdSZWYpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHdhdGNoZXMpLnN1YnNjcmliZSgoeyBmbG9hdGluZywgYW5jaG9yLCBwbGFjZW1lbnQgfSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IG5ldyBGbG9hdGluZ1Bvc2l0aW9uKHRoaXMub3B0aW9ucywgZmxvYXRpbmcsIGFuY2hvciwgcGxhY2VtZW50KVxuICAgICAgICAgICAgICAgIHJlcy5hcHBseShmbG9hdGluZ1JlZilcbiAgICAgICAgICAgICAgICBkZXN0Lm5leHQocmVzKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlZldhdGNoZXIocmVjdFdhdGNoZXI6IFJlY3RXYXRjaGVyLCByZWY6IEZsb2F0aW5nVGFyZ2V0RWxlbWVudFJlZiwgZmxvYXRpbmdSZWY6IEZsb2F0aW5nUmVmPGFueT4pIHtcbiAgICBpZiAocmVmID09PSBcImxheWVyXCIpIHtcbiAgICAgICAgcmV0dXJuIHJlY3RXYXRjaGVyLndhdGNoKGZsb2F0aW5nUmVmLmxheWVyU3ZjLnJvb3QsIFwiYm9yZGVyLWJveFwiKVxuICAgIH0gZWxzZSBpZiAocmVmID09PSBcInZpZXdwb3J0XCIgfHwgcmVmIGluc3RhbmNlb2YgV2luZG93KSB7XG4gICAgICAgIHJldHVybiByZWN0V2F0Y2hlci53YXRjaCh3aW5kb3csIFwiYm9yZGVyLWJveFwiKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByZWN0V2F0Y2hlci53YXRjaChyZWYsIFwiYm9yZGVyLWJveFwiKVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uKG9wdGlvbnM6IEZsb2F0aW5nUG9zaXRpb25PcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBQb3NpdGlvblRyYWl0KG9wdGlvbnMpXG59XG5cbmV4cG9ydCBjbGFzcyBGbG9hdGluZ1Bvc2l0aW9uIHtcbiAgICByZWFkb25seSBjb21wdXRlZD86IENvbXB1dGVkUG9zaXRvblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICByZWFkb25seSBvcHRpb25zOiBGbG9hdGluZ1Bvc2l0aW9uT3B0aW9ucyxcbiAgICAgICAgcmVhZG9ubHkgZmxvYXRpbmc6IERpbWVuc2lvbixcbiAgICAgICAgcmVhZG9ubHkgYW5jaG9yOiBSZWN0LFxuICAgICAgICByZWFkb25seSBwbGFjZW1lbnQ6IFJlY3RcbiAgICApIHtcbiAgICAgICAgdGhpcy5jb21wdXRlZCA9IGNvbXB1dGVQb3NpdGlvbih7IGZsb2F0aW5nLCBhbmNob3IsIHBsYWNlbWVudCwgb3B0aW9ucyB9KVxuICAgIH1cblxuICAgIGFwcGx5KGZsb2F0aW5nUmVmOiBGbG9hdGluZ1JlZikge1xuICAgICAgICBpZiAodGhpcy5jb21wdXRlZCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZsb2F0aW5nRWwgPSBmbG9hdGluZ1JlZi5jb250YWluZXIubmF0aXZlRWxlbWVudFxuICAgICAgICBmbG9hdGluZ0VsLnN0eWxlLmxlZnQgPSBgJHt0aGlzLmNvbXB1dGVkLmZsb2F0aW5nLmN1cnJlbnQueH1weGBcbiAgICAgICAgZmxvYXRpbmdFbC5zdHlsZS50b3AgPSBgJHt0aGlzLmNvbXB1dGVkLmZsb2F0aW5nLmN1cnJlbnQueX1weGBcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from "./floating";
|
|
2
|
+
export * from "./layer";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9mbG9hdGluZy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxZQUFZLENBQUE7QUFDMUIsY0FBYyxTQUFTLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9mbG9hdGluZ1wiXG5leHBvcnQgKiBmcm9tIFwiLi9sYXllclwiXG4iXX0=
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ChildRef } from "./child-ref";
|
|
2
|
+
export class BackdropRef extends ChildRef {
|
|
3
|
+
static from(cover, injector, options) {
|
|
4
|
+
const ref = new BackdropRef(document.createElement("div"), cover, injector, options);
|
|
5
|
+
// TODO: kérdéses
|
|
6
|
+
// options.under.state.control(ref.state)
|
|
7
|
+
return ref;
|
|
8
|
+
}
|
|
9
|
+
#coverSub;
|
|
10
|
+
set visible(visible) {
|
|
11
|
+
if (this.#visible !== visible) {
|
|
12
|
+
this.#visible = visible;
|
|
13
|
+
this.nativeElement.style.visibility = visible ? "visible" : "hidden";
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
get visible() {
|
|
17
|
+
return this.#visible;
|
|
18
|
+
}
|
|
19
|
+
#visible = true;
|
|
20
|
+
constructor(nativeElement, coverSvc, injector, options) {
|
|
21
|
+
super(nativeElement);
|
|
22
|
+
this.coverSvc = coverSvc;
|
|
23
|
+
this.injector = injector;
|
|
24
|
+
this.options = options;
|
|
25
|
+
nativeElement.style.position = "absolute";
|
|
26
|
+
nativeElement.style.top =
|
|
27
|
+
nativeElement.style.right =
|
|
28
|
+
nativeElement.style.bottom =
|
|
29
|
+
nativeElement.style.left =
|
|
30
|
+
"0px";
|
|
31
|
+
this.under = options.under;
|
|
32
|
+
if (options.type === "solid") {
|
|
33
|
+
this.#coverSub = this.coverSvc.solid({ container: nativeElement, color: options.color }).subscribe();
|
|
34
|
+
this.group = `${options.color === "transparent" ? "transparent" : "solid"}`;
|
|
35
|
+
}
|
|
36
|
+
else if (options.type === "crop") {
|
|
37
|
+
this.#coverSub = this.coverSvc
|
|
38
|
+
.crop({ container: nativeElement, color: options.color, crop: options.crop })
|
|
39
|
+
.subscribe();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
show() {
|
|
43
|
+
return this.state.run(["showing", "shown"]);
|
|
44
|
+
}
|
|
45
|
+
destroy() {
|
|
46
|
+
this.#coverSub?.unsubscribe();
|
|
47
|
+
super.destroy();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2Ryb3AtcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZmxvYXRpbmcvc3JjL2xheWVyL2JhY2tkcm9wLXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBa0J0QyxNQUFNLE9BQU8sV0FBWSxTQUFRLFFBQVE7SUFDckMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFtQixFQUFFLFFBQWtCLEVBQUUsT0FBd0I7UUFDekUsTUFBTSxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ3BGLGlCQUFpQjtRQUNqQix5Q0FBeUM7UUFDekMsT0FBTyxHQUFHLENBQUE7SUFDZCxDQUFDO0lBRVEsU0FBUyxDQUFlO0lBSWpDLElBQUksT0FBTyxDQUFDLE9BQWdCO1FBQ3hCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQTtZQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQTtRQUN4RSxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQTtJQUN4QixDQUFDO0lBQ0QsUUFBUSxHQUFZLElBQUksQ0FBQTtJQUV4QixZQUNJLGFBQTBCLEVBQ2pCLFFBQXNCLEVBQ3RCLFFBQWtCLEVBQ2xCLE9BQXdCO1FBRWpDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUpYLGFBQVEsR0FBUixRQUFRLENBQWM7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUdqQyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUE7UUFDekMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHO1lBQ25CLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSztnQkFDekIsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNO29CQUMxQixhQUFhLENBQUMsS0FBSyxDQUFDLElBQUk7d0JBQ3BCLEtBQUssQ0FBQTtRQUViLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQTtRQUUxQixJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFBO1lBQ3BHLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxLQUFLLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUMvRSxDQUFDO2FBQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVE7aUJBQ3pCLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDNUUsU0FBUyxFQUFFLENBQUE7UUFDcEIsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJO1FBQ0EsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQy9DLENBQUM7SUFFa0IsT0FBTztRQUN0QixJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxDQUFBO1FBQzdCLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNuQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBDb3ZlclNlcnZpY2UgfSBmcm9tIFwiQG5ndXRpbC9ncmFwaGljc1wiXG5pbXBvcnQgeyBDb3Zlck9wdGlvbnMsIENyb3BDb3Zlck9wdGlvbnMgfSBmcm9tIFwiQG5ndXRpbC9ncmFwaGljc1wiXG5cbmltcG9ydCB7IENoaWxkUmVmIH0gZnJvbSBcIi4vY2hpbGQtcmVmXCJcblxuZXhwb3J0IGludGVyZmFjZSBCYXNpY0JhY2tkcm9wT3B0aW9ucyB7XG4gICAgdW5kZXI6IENoaWxkUmVmXG4gICAgY29sb3I6IENvdmVyT3B0aW9uc1tcImNvbG9yXCJdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU29saWRCYWNrZHJvcE9wdGlvbnMgZXh0ZW5kcyBCYXNpY0JhY2tkcm9wT3B0aW9ucyB7XG4gICAgdHlwZTogXCJzb2xpZFwiXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JvcEJhY2tkcm9wT3B0aW9ucyBleHRlbmRzIEJhc2ljQmFja2Ryb3BPcHRpb25zIHtcbiAgICB0eXBlOiBcImNyb3BcIlxuICAgIGNyb3A6IENyb3BDb3Zlck9wdGlvbnNbXCJjcm9wXCJdXG59XG5cbmV4cG9ydCB0eXBlIEJhY2tkcm9wT3B0aW9ucyA9IFNvbGlkQmFja2Ryb3BPcHRpb25zIHwgQ3JvcEJhY2tkcm9wT3B0aW9uc1xuXG5leHBvcnQgY2xhc3MgQmFja2Ryb3BSZWYgZXh0ZW5kcyBDaGlsZFJlZiB7XG4gICAgc3RhdGljIGZyb20oY292ZXI6IENvdmVyU2VydmljZSwgaW5qZWN0b3I6IEluamVjdG9yLCBvcHRpb25zOiBCYWNrZHJvcE9wdGlvbnMpOiBCYWNrZHJvcFJlZiB7XG4gICAgICAgIGNvbnN0IHJlZiA9IG5ldyBCYWNrZHJvcFJlZihkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLCBjb3ZlciwgaW5qZWN0b3IsIG9wdGlvbnMpXG4gICAgICAgIC8vIFRPRE86IGvDqXJkw6lzZXNcbiAgICAgICAgLy8gb3B0aW9ucy51bmRlci5zdGF0ZS5jb250cm9sKHJlZi5zdGF0ZSlcbiAgICAgICAgcmV0dXJuIHJlZlxuICAgIH1cblxuICAgIHJlYWRvbmx5ICNjb3ZlclN1Yj86IFN1YnNjcmlwdGlvblxuICAgIHJlYWRvbmx5IHVuZGVyOiBDaGlsZFJlZlxuICAgIHJlYWRvbmx5IGdyb3VwPzogc3RyaW5nXG5cbiAgICBzZXQgdmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLiN2aXNpYmxlICE9PSB2aXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLiN2aXNpYmxlID0gdmlzaWJsZVxuICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSB2aXNpYmxlID8gXCJ2aXNpYmxlXCIgOiBcImhpZGRlblwiXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3Zpc2libGVcbiAgICB9XG4gICAgI3Zpc2libGU6IGJvb2xlYW4gPSB0cnVlXG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgbmF0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgICAgIHJlYWRvbmx5IGNvdmVyU3ZjOiBDb3ZlclNlcnZpY2UsXG4gICAgICAgIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcmVhZG9ubHkgb3B0aW9uczogQmFja2Ryb3BPcHRpb25zXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKG5hdGl2ZUVsZW1lbnQpXG4gICAgICAgIG5hdGl2ZUVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCJcbiAgICAgICAgbmF0aXZlRWxlbWVudC5zdHlsZS50b3AgPVxuICAgICAgICAgICAgbmF0aXZlRWxlbWVudC5zdHlsZS5yaWdodCA9XG4gICAgICAgICAgICBuYXRpdmVFbGVtZW50LnN0eWxlLmJvdHRvbSA9XG4gICAgICAgICAgICBuYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPVxuICAgICAgICAgICAgICAgIFwiMHB4XCJcblxuICAgICAgICB0aGlzLnVuZGVyID0gb3B0aW9ucy51bmRlclxuXG4gICAgICAgIGlmIChvcHRpb25zLnR5cGUgPT09IFwic29saWRcIikge1xuICAgICAgICAgICAgdGhpcy4jY292ZXJTdWIgPSB0aGlzLmNvdmVyU3ZjLnNvbGlkKHsgY29udGFpbmVyOiBuYXRpdmVFbGVtZW50LCBjb2xvcjogb3B0aW9ucy5jb2xvciB9KS5zdWJzY3JpYmUoKVxuICAgICAgICAgICAgdGhpcy5ncm91cCA9IGAke29wdGlvbnMuY29sb3IgPT09IFwidHJhbnNwYXJlbnRcIiA/IFwidHJhbnNwYXJlbnRcIiA6IFwic29saWRcIn1gXG4gICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy50eXBlID09PSBcImNyb3BcIikge1xuICAgICAgICAgICAgdGhpcy4jY292ZXJTdWIgPSB0aGlzLmNvdmVyU3ZjXG4gICAgICAgICAgICAgICAgLmNyb3AoeyBjb250YWluZXI6IG5hdGl2ZUVsZW1lbnQsIGNvbG9yOiBvcHRpb25zLmNvbG9yLCBjcm9wOiBvcHRpb25zLmNyb3AgfSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3coKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnJ1bihbXCJzaG93aW5nXCIsIFwic2hvd25cIl0pXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuI2NvdmVyU3ViPy51bnN1YnNjcmliZSgpXG4gICAgICAgIHN1cGVyLmRlc3Ryb3koKVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ElementRef } from "@angular/core";
|
|
2
|
+
import { of } from "rxjs";
|
|
3
|
+
import { StateChain } from "@ngutil/common";
|
|
4
|
+
// TODO: disposing, disposed
|
|
5
|
+
export class ChildRef extends ElementRef {
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
set zIndex(val) {
|
|
10
|
+
if (this._zIndex !== val) {
|
|
11
|
+
this._zIndex = val;
|
|
12
|
+
this.nativeElement.style.zIndex = String(val);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
get zIndex() {
|
|
16
|
+
return this._zIndex;
|
|
17
|
+
}
|
|
18
|
+
constructor(nativeElement) {
|
|
19
|
+
super(nativeElement);
|
|
20
|
+
this.state = new StateChain({
|
|
21
|
+
showing: {},
|
|
22
|
+
shown: {},
|
|
23
|
+
disposing: { cancellable: false },
|
|
24
|
+
disposed: { cancellable: false, order: "sequential" }
|
|
25
|
+
});
|
|
26
|
+
this._zIndex = -1;
|
|
27
|
+
this.state.on("disposed", () => this.destroy());
|
|
28
|
+
// this.state.current$.subscribe(state => {
|
|
29
|
+
// console.log(this, state)
|
|
30
|
+
// })
|
|
31
|
+
}
|
|
32
|
+
dispose() {
|
|
33
|
+
if (this.state == null) {
|
|
34
|
+
return of(null);
|
|
35
|
+
}
|
|
36
|
+
return this.state.run(["disposing", "disposed"]);
|
|
37
|
+
}
|
|
38
|
+
destroy() {
|
|
39
|
+
this.nativeElement.parentElement?.removeChild(this.nativeElement);
|
|
40
|
+
this.state.destroy();
|
|
41
|
+
delete this.state;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpbGQtcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZmxvYXRpbmcvc3JjL2xheWVyL2NoaWxkLXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTFDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBSTNDLDRCQUE0QjtBQUU1QixNQUFNLE9BQWdCLFFBQThDLFNBQVEsVUFBYTtJQVFyRjs7T0FFRztJQUNILElBQUksTUFBTSxDQUFDLEdBQVc7UUFDbEIsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFBO1lBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDakQsQ0FBQztJQUNMLENBQUM7SUFDRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDdkIsQ0FBQztJQUdELFlBQVksYUFBZ0I7UUFDeEIsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBdEJmLFVBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQztZQUM1QixPQUFPLEVBQUUsRUFBRTtZQUNYLEtBQUssRUFBRSxFQUFFO1lBQ1QsU0FBUyxFQUFFLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRTtZQUNqQyxRQUFRLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7U0FDeEQsQ0FBQyxDQUFBO1FBY00sWUFBTyxHQUFXLENBQUMsQ0FBQyxDQUFBO1FBSXhCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUUvQywyQ0FBMkM7UUFDM0MsK0JBQStCO1FBQy9CLEtBQUs7SUFDVCxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNyQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFBO0lBQ3BELENBQUM7SUFFUyxPQUFPO1FBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNqRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ3BCLE9BQVEsSUFBWSxDQUFDLEtBQUssQ0FBQTtJQUM5QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgU3RhdGVDaGFpbiB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbmV4cG9ydCB0eXBlIERpc3Bvc2VIYW5kbGVyPFQ+ID0gKHJlZjogVCkgPT4gT2JzZXJ2YWJsZTx2b2lkPlxuXG4vLyBUT0RPOiBkaXNwb3NpbmcsIGRpc3Bvc2VkXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDaGlsZFJlZjxUIGV4dGVuZHMgSFRNTEVsZW1lbnQgPSBIVE1MRWxlbWVudD4gZXh0ZW5kcyBFbGVtZW50UmVmPFQ+IHtcbiAgICByZWFkb25seSBzdGF0ZSA9IG5ldyBTdGF0ZUNoYWluKHtcbiAgICAgICAgc2hvd2luZzoge30sXG4gICAgICAgIHNob3duOiB7fSxcbiAgICAgICAgZGlzcG9zaW5nOiB7IGNhbmNlbGxhYmxlOiBmYWxzZSB9LFxuICAgICAgICBkaXNwb3NlZDogeyBjYW5jZWxsYWJsZTogZmFsc2UsIG9yZGVyOiBcInNlcXVlbnRpYWxcIiB9XG4gICAgfSlcblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHNldCB6SW5kZXgodmFsOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuX3pJbmRleCAhPT0gdmFsKSB7XG4gICAgICAgICAgICB0aGlzLl96SW5kZXggPSB2YWxcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5zdHlsZS56SW5kZXggPSBTdHJpbmcodmFsKVxuICAgICAgICB9XG4gICAgfVxuICAgIGdldCB6SW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3pJbmRleFxuICAgIH1cbiAgICBwcml2YXRlIF96SW5kZXg6IG51bWJlciA9IC0xXG5cbiAgICBjb25zdHJ1Y3RvcihuYXRpdmVFbGVtZW50OiBUKSB7XG4gICAgICAgIHN1cGVyKG5hdGl2ZUVsZW1lbnQpXG4gICAgICAgIHRoaXMuc3RhdGUub24oXCJkaXNwb3NlZFwiLCAoKSA9PiB0aGlzLmRlc3Ryb3koKSlcblxuICAgICAgICAvLyB0aGlzLnN0YXRlLmN1cnJlbnQkLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICAgIC8vICAgICBjb25zb2xlLmxvZyh0aGlzLCBzdGF0ZSlcbiAgICAgICAgLy8gfSlcbiAgICB9XG5cbiAgICBkaXNwb3NlKCkge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YobnVsbClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5ydW4oW1wiZGlzcG9zaW5nXCIsIFwiZGlzcG9zZWRcIl0pXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50Py5yZW1vdmVDaGlsZCh0aGlzLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgIHRoaXMuc3RhdGUuZGVzdHJveSgpXG4gICAgICAgIGRlbGV0ZSAodGhpcyBhcyBhbnkpLnN0YXRlXG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Injector } from "@angular/core";
|
|
2
|
+
import { ChildRef } from "./child-ref";
|
|
3
|
+
export class ContainerRef extends ChildRef {
|
|
4
|
+
constructor(options) {
|
|
5
|
+
super(createElement(options));
|
|
6
|
+
this.options = options;
|
|
7
|
+
this.injectorName = "ContainerRef";
|
|
8
|
+
const providers = options.providers || [];
|
|
9
|
+
this.injector = Injector.create({
|
|
10
|
+
providers: [...this.getProviders(), ...providers],
|
|
11
|
+
parent: options.injector,
|
|
12
|
+
name: this.injectorName
|
|
13
|
+
});
|
|
14
|
+
this.state.on("disposed", () => {
|
|
15
|
+
delete this.options;
|
|
16
|
+
delete this.injector;
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
getProviders() {
|
|
20
|
+
return [
|
|
21
|
+
{ provide: ChildRef, useValue: this },
|
|
22
|
+
{ provide: ContainerRef, useValue: this }
|
|
23
|
+
];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function createElement(options) {
|
|
27
|
+
const div = document.createElement("div");
|
|
28
|
+
div.style.position = "absolute";
|
|
29
|
+
div.style.top = "0";
|
|
30
|
+
div.style.left = "0";
|
|
31
|
+
div.style.width = "max-content";
|
|
32
|
+
if (options.classes) {
|
|
33
|
+
div.classList.add(...options.classes);
|
|
34
|
+
}
|
|
35
|
+
return div;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Zsb2F0aW5nL3NyYy9sYXllci9jb250YWluZXItcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQVksTUFBTSxlQUFlLENBQUE7QUFFbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQVd0QyxNQUFNLE9BQU8sWUFBYSxTQUFRLFFBQVE7SUFLdEMsWUFBNEIsT0FBeUI7UUFDakQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBREwsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFGM0MsaUJBQVksR0FBRyxjQUFjLENBQUE7UUFLbkMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUE7UUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQzVCLFNBQVMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLEdBQUcsU0FBUyxDQUFDO1lBQ2pELE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUTtZQUN4QixJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDMUIsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRTtZQUMzQixPQUFRLElBQVksQ0FBQyxPQUFPLENBQUE7WUFDNUIsT0FBUSxJQUFZLENBQUMsUUFBUSxDQUFBO1FBQ2pDLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVTLFlBQVk7UUFDbEIsT0FBTztZQUNILEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQ3JDLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1NBQzVDLENBQUE7SUFDTCxDQUFDO0NBQ0o7QUFFRCxTQUFTLGFBQWEsQ0FBQyxPQUF5QjtJQUM1QyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3pDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQTtJQUMvQixHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUE7SUFDbkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFBO0lBQ3BCLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQTtJQUUvQixJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsQixHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUE7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIFByb3ZpZGVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQgeyBDaGlsZFJlZiB9IGZyb20gXCIuL2NoaWxkLXJlZlwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyT3B0aW9ucyB7XG4gICAgYWx3YXlzT25Ub3A/OiBib29sZWFuXG4gICAgZWxldmF0aW9uPzogbnVtYmVyXG4gICAgY2xhc3Nlcz86IHN0cmluZ1tdXG4gICAgYXR0cmlidXRlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgICBpbmplY3Rvcj86IEluamVjdG9yXG4gICAgcHJvdmlkZXJzPzogUHJvdmlkZXJbXVxufVxuXG5leHBvcnQgY2xhc3MgQ29udGFpbmVyUmVmIGV4dGVuZHMgQ2hpbGRSZWYge1xuICAgIHB1YmxpYyByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3JcblxuICAgIHByb3RlY3RlZCBpbmplY3Rvck5hbWUgPSBcIkNvbnRhaW5lclJlZlwiXG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgb3B0aW9uczogQ29udGFpbmVyT3B0aW9ucykge1xuICAgICAgICBzdXBlcihjcmVhdGVFbGVtZW50KG9wdGlvbnMpKVxuXG4gICAgICAgIGNvbnN0IHByb3ZpZGVycyA9IG9wdGlvbnMucHJvdmlkZXJzIHx8IFtdXG4gICAgICAgIHRoaXMuaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgcHJvdmlkZXJzOiBbLi4udGhpcy5nZXRQcm92aWRlcnMoKSwgLi4ucHJvdmlkZXJzXSxcbiAgICAgICAgICAgIHBhcmVudDogb3B0aW9ucy5pbmplY3RvcixcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuaW5qZWN0b3JOYW1lXG4gICAgICAgIH0pXG5cbiAgICAgICAgdGhpcy5zdGF0ZS5vbihcImRpc3Bvc2VkXCIsICgpID0+IHtcbiAgICAgICAgICAgIGRlbGV0ZSAodGhpcyBhcyBhbnkpLm9wdGlvbnNcbiAgICAgICAgICAgIGRlbGV0ZSAodGhpcyBhcyBhbnkpLmluamVjdG9yXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFByb3ZpZGVycygpOiBQcm92aWRlcltdIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgcHJvdmlkZTogQ2hpbGRSZWYsIHVzZVZhbHVlOiB0aGlzIH0sXG4gICAgICAgICAgICB7IHByb3ZpZGU6IENvbnRhaW5lclJlZiwgdXNlVmFsdWU6IHRoaXMgfVxuICAgICAgICBdXG4gICAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50KG9wdGlvbnM6IENvbnRhaW5lck9wdGlvbnMpOiBIVE1MRGl2RWxlbWVudCB7XG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKVxuICAgIGRpdi5zdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIlxuICAgIGRpdi5zdHlsZS50b3AgPSBcIjBcIlxuICAgIGRpdi5zdHlsZS5sZWZ0ID0gXCIwXCJcbiAgICBkaXYuc3R5bGUud2lkdGggPSBcIm1heC1jb250ZW50XCJcblxuICAgIGlmIChvcHRpb25zLmNsYXNzZXMpIHtcbiAgICAgICAgZGl2LmNsYXNzTGlzdC5hZGQoLi4ub3B0aW9ucy5jbGFzc2VzKVxuICAgIH1cblxuICAgIHJldHVybiBkaXZcbn1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from "./backdrop-ref";
|
|
2
|
+
export * from "./child-ref";
|
|
3
|
+
export * from "./layer.service";
|
|
4
|
+
export * from "./portal-ref";
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9mbG9hdGluZy9zcmMvbGF5ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLGFBQWEsQ0FBQTtBQUMzQixjQUFjLGlCQUFpQixDQUFBO0FBQy9CLGNBQWMsY0FBYyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vYmFja2Ryb3AtcmVmXCJcbmV4cG9ydCAqIGZyb20gXCIuL2NoaWxkLXJlZlwiXG5leHBvcnQgKiBmcm9tIFwiLi9sYXllci5zZXJ2aWNlXCJcbmV4cG9ydCAqIGZyb20gXCIuL3BvcnRhbC1yZWZcIlxuIl19
|