@ngutil/floating 0.0.27 → 0.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/floating/floating-ref.mjs +2 -1
- package/esm2022/floating/floating.service.mjs +14 -2
- package/esm2022/floating/traits/animation.mjs +55 -0
- package/esm2022/floating/traits/backdrop.mjs +78 -0
- package/esm2022/floating/traits/focus-trap.mjs +27 -0
- package/esm2022/floating/traits/index.mjs +9 -2
- package/esm2022/floating/traits/keystroke.mjs +19 -0
- package/esm2022/floating/traits/modal.mjs +24 -0
- package/esm2022/floating/traits/style.mjs +17 -0
- package/fesm2022/ngutil-floating.mjs +217 -5
- package/fesm2022/ngutil-floating.mjs.map +1 -1
- package/floating/floating.service.d.ts +2 -0
- package/floating/traits/animation.d.ts +18 -0
- package/floating/traits/backdrop.d.ts +20 -0
- package/floating/traits/focus-trap.d.ts +8 -0
- package/floating/traits/index.d.ts +8 -1
- package/floating/traits/keystroke.d.ts +8 -0
- package/floating/traits/modal.d.ts +4 -0
- package/floating/traits/style.d.ts +10 -0
- package/package.json +4 -4
|
@@ -27,6 +27,7 @@ export class FloatingRef {
|
|
|
27
27
|
this.#traits = {};
|
|
28
28
|
this.#untilCleanup = this.state.current$.pipe(filter(state => state === "cleanup"), shareReplay(1));
|
|
29
29
|
this.#untilDisposed = this.state.current$.pipe(filter(state => state === "cleanup"), shareReplay(1));
|
|
30
|
+
container.nativeElement.style.overflow = "hidden";
|
|
30
31
|
this.#traits = traits;
|
|
31
32
|
this.traitState$ = this.#traitState().pipe(shareReplay(1));
|
|
32
33
|
const sub = this.state.current$.subscribe(state => {
|
|
@@ -78,4 +79,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
|
|
|
78
79
|
type: Inject,
|
|
79
80
|
args: [TRAITS]
|
|
80
81
|
}] }] });
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXRpbmctcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZmxvYXRpbmcvc3JjL2Zsb2F0aW5nL2Zsb2F0aW5nLXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFbEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBYyxhQUFhLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUVuRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTs7OztBQUtyRCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxjQUFjLENBQVMsUUFBUSxDQUFDLENBQUE7QUFhMUQsTUFBTSxPQUFPLFdBQVc7SUFhWCxPQUFPLENBQWE7SUFHcEIsYUFBYSxDQUdyQjtJQUVRLGNBQWMsQ0FHdEI7SUFFRCxZQUNhLFFBQXNCLEVBQ3RCLFNBQXVCLEVBQ2hCLE1BQWM7UUFGckIsYUFBUSxHQUFSLFFBQVEsQ0FBYztRQUN0QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBM0IzQixZQUFPLEdBQUcsSUFBSSxhQUFhLENBQUksQ0FBQyxDQUFDLENBQUE7UUFFakMsVUFBSyxHQUFHLElBQUksVUFBVSxDQUFDO1lBQzVCLElBQUksRUFBRSxFQUFFO1lBQ1IsT0FBTyxFQUFFLEVBQUU7WUFDWCxLQUFLLEVBQUUsRUFBRTtZQUNULE9BQU8sRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTtZQUNwRCxTQUFTLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FB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QUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDaEQsR0FBRyxDQUFDLElBQUksQ0FDSixDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDaEIsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDN0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNULE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQTtZQUNwQyxDQUFDLENBQUMsQ0FDTCxDQUNKLENBQUE7UUFDTCxDQUFDO1FBRUQsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25CLE9BQU8sS0FBSyxDQUFBO1FBQ2hCLENBQUM7YUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDakIsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFBO1FBQ3hCLENBQUM7SUFDTCxDQUFDOzhHQTFGUSxXQUFXLDBFQTZCUixNQUFNO2tIQTdCVCxXQUFXOzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVOzswQkE4QkYsTUFBTTsyQkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcblxuaW1wb3J0IHsgRU1QVFksIGZpbHRlciwgbWFwLCBtZXJnZSwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgc2hhcmVSZXBsYXksIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgU3RhdGVDaGFpbiB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbmltcG9ydCB7IENvbnRhaW5lclJlZiB9IGZyb20gXCIuLi9sYXllci9jb250YWluZXItcmVmXCJcbmltcG9ydCB7IExheWVyU2VydmljZSB9IGZyb20gXCIuLi9sYXllci9sYXllci5zZXJ2aWNlXCJcbmltcG9ydCB7IEZsb2F0aW5nVHJhaXQgfSBmcm9tIFwiLi90cmFpdHMvX2Jhc2VcIlxuXG5leHBvcnQgdHlwZSBUcmFpdHMgPSB7IFtrZXk6IHN0cmluZ106IEZsb2F0aW5nVHJhaXQgfVxuXG5leHBvcnQgY29uc3QgVFJBSVRTID0gbmV3IEluamVjdGlvblRva2VuPFRyYWl0cz4oXCJUUkFJVFNcIilcblxuZXhwb3J0IGludGVyZmFjZSBGbG9hdGluZ0NoYW5uZWwge1xuICAgIHR5cGU6IHN0cmluZ1xuICAgIGRhdGE/OiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG9hdGluZ1RyYWl0RXZlbnQge1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIGRhdGE6IG9iamVjdFxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmxvYXRpbmdSZWY8QyBleHRlbmRzIEZsb2F0aW5nQ2hhbm5lbCA9IEZsb2F0aW5nQ2hhbm5lbCwgVCBleHRlbmRzIEhUTUxFbGVtZW50ID0gSFRNTEVsZW1lbnQ+IHtcbiAgICByZWFkb25seSBjaGFubmVsID0gbmV3IFJlcGxheVN1YmplY3Q8Qz4oMSlcblxuICAgIHJlYWRvbmx5IHN0YXRlID0gbmV3IFN0YXRlQ2hhaW4oe1xuICAgICAgICBpbml0OiB7fSxcbiAgICAgICAgc2hvd2luZzoge30sXG4gICAgICAgIHNob3duOiB7fSxcbiAgICAgICAgY2xvc2luZzogeyBjYW5jZWxsYWJsZTogZmFsc2UsIG9yZGVyOiBcInNlcXVlbnRpYWxcIiB9LFxuICAgICAgICBkaXNwb3Npbmc6IHsgY2FuY2VsbGFibGU6IGZhbHNlIH0sXG4gICAgICAgIGRpc3Bvc2VkOiB7IGNhbmNlbGxhYmxlOiBmYWxzZSwgb3JkZXI6IFwic2VxdWVudGlhbFwiIH0sXG4gICAgICAgIGNsZWFudXA6IHsgY2FuY2VsbGFibGU6IGZhbHNlLCBvcmRlcjogXCJzZXF1ZW50aWFsXCIgfVxuICAgIH0pXG5cbiAgICByZWFkb25seSAjdHJhaXRzOiBUcmFpdHMgPSB7fVxuICAgIHJlYWRvbmx5IHRyYWl0U3RhdGUkOiBPYnNlcnZhYmxlPEZsb2F0aW5nVHJhaXRFdmVudD5cblxuICAgIHJlYWRvbmx5ICN1bnRpbENsZWFudXAgPSB0aGlzLnN0YXRlLmN1cnJlbnQkLnBpcGUoXG4gICAgICAgIGZpbHRlcihzdGF0ZSA9PiBzdGF0ZSA9PT0gXCJjbGVhbnVwXCIpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5ICN1bnRpbERpc3Bvc2VkID0gdGhpcy5zdGF0ZS5jdXJyZW50JC5waXBlKFxuICAgICAgICBmaWx0ZXIoc3RhdGUgPT4gc3RhdGUgPT09IFwiY2xlYW51cFwiKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApXG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcmVhZG9ubHkgbGF5ZXJTdmM6IExheWVyU2VydmljZSxcbiAgICAgICAgcmVhZG9ubHkgY29udGFpbmVyOiBDb250YWluZXJSZWYsXG4gICAgICAgIEBJbmplY3QoVFJBSVRTKSB0cmFpdHM6IFRyYWl0c1xuICAgICkge1xuICAgICAgICBjb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCJcblxuICAgICAgICB0aGlzLiN0cmFpdHMgPSB0cmFpdHNcbiAgICAgICAgdGhpcy50cmFpdFN0YXRlJCA9IHRoaXMuI3RyYWl0U3RhdGUoKS5waXBlKHNoYXJlUmVwbGF5KDEpKVxuXG4gICAgICAgIGNvbnN0IHN1YiA9IHRoaXMuc3RhdGUuY3VycmVudCQuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2hhbm5lbC5uZXh0KHsgdHlwZTogc3RhdGUgfSBhcyBhbnkpXG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuc3RhdGUub24oXCJpbml0XCIsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudHJhaXRTdGF0ZSQucGlwZSh0YWtlVW50aWwodGhpcy4jdW50aWxDbGVhbnVwKSkuc3Vic2NyaWJlKClcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5zdGF0ZS5vbihcImRpc3Bvc2VkXCIsICgpID0+IHtcbiAgICAgICAgICAgIHN1Yi51bnN1YnNjcmliZSgpXG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuc3RhdGUuY29udHJvbChjb250YWluZXIuc3RhdGUpXG4gICAgfVxuXG4gICAgc2hvdygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUucnVuKFtcImluaXRcIiwgXCJzaG93aW5nXCIsIFwic2hvd25cIl0pXG4gICAgfVxuXG4gICAgaGlkZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUucnVuKFtcImRpc3Bvc2luZ1wiLCBcImRpc3Bvc2VkXCIsIFwiY2xlYW51cFwiXSlcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUucnVuKFtcImNsb3NpbmdcIiwgXCJkaXNwb3NpbmdcIiwgXCJkaXNwb3NlZFwiLCBcImNsZWFudXBcIl0pXG4gICAgfVxuXG4gICAgd2F0Y2hUcmFpdDxUPihuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhaXRTdGF0ZSQucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLiN1bnRpbERpc3Bvc2VkKSxcbiAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudC5uYW1lID09PSBuYW1lKSxcbiAgICAgICAgICAgIG1hcChldmVudCA9PiBldmVudC5kYXRhIGFzIFQpLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgICN0cmFpdFN0YXRlKCk6IE9ic2VydmFibGU8RmxvYXRpbmdUcmFpdEV2ZW50PiB7XG4gICAgICAgIGNvbnN0IHNyYyA9IFtdXG5cbiAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXModGhpcy4jdHJhaXRzKSkge1xuICAgICAgICAgICAgc3JjLnB1c2goXG4gICAgICAgICAgICAgICAgdi5jb25uZWN0KHRoaXMpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLiN1bnRpbENsZWFudXApLFxuICAgICAgICAgICAgICAgICAgICBtYXAocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG5hbWU6IGssIGRhdGE6IHJlc3VsdCB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNyYy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBFTVBUWVxuICAgICAgICB9IGVsc2UgaWYgKHNyYy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBzcmNbMF1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBtZXJnZSguLi5zcmMpXG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -6,9 +6,11 @@ import { position } from "./traits/position";
|
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
// export type FloatingTrait = (...args: any[]) => (traits: object) => Observable<object>
|
|
8
8
|
export class FloatingFactory {
|
|
9
|
+
#providers;
|
|
9
10
|
constructor(layer) {
|
|
10
11
|
this.layer = layer;
|
|
11
12
|
this.traits = {};
|
|
13
|
+
this.#providers = [];
|
|
12
14
|
this.subscribe = (...args) => this.show().subscribe(...args);
|
|
13
15
|
}
|
|
14
16
|
trait(...traits) {
|
|
@@ -57,13 +59,23 @@ export class FloatingFactory {
|
|
|
57
59
|
...providers,
|
|
58
60
|
{ provide: TRAITS, useValue: this.traits },
|
|
59
61
|
{ provide: LayerService, useValue: this.layer },
|
|
60
|
-
FloatingRef
|
|
62
|
+
FloatingRef,
|
|
63
|
+
...this.#providers
|
|
61
64
|
];
|
|
62
65
|
return providers;
|
|
63
66
|
}
|
|
64
67
|
position(options) {
|
|
65
68
|
return this.trait(position(options));
|
|
66
69
|
}
|
|
70
|
+
provides(providers) {
|
|
71
|
+
if (Array.isArray(providers)) {
|
|
72
|
+
this.#providers = [...this.#providers, ...providers];
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
this.#providers = [...this.#providers, providers];
|
|
76
|
+
}
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
67
79
|
}
|
|
68
80
|
export class FloatingTemplateFactory extends FloatingFactory {
|
|
69
81
|
constructor(layer, tpl, options) {
|
|
@@ -120,4 +132,4 @@ export class FloatingService {
|
|
|
120
132
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: FloatingService, decorators: [{
|
|
121
133
|
type: Injectable
|
|
122
134
|
}] });
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Zsb2F0aW5nL3NyYy9mbG9hdGluZy9mbG9hdGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFZLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV6RSxPQUFPLEVBQUUsVUFBVSxFQUFjLE1BQU0sTUFBTSxDQUFBO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUVyRCxPQUFPLEVBQW1CLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVyRSxPQUFPLEVBQWdDLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFBOztBQUUxRSx5RkFBeUY7QUFFekYsTUFBTSxPQUFnQixlQUFlO0lBR2pDLFlBQStCLEtBQW1CO1FBQW5CLFVBQUssR0FBTCxLQUFLLENBQWM7UUFGL0IsV0FBTSxHQUFxQyxFQUFFLENBQUE7UUErQ2hFLGNBQVMsR0FBRyxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7SUE3Q1QsQ0FBQztJQUV0RCxLQUFLLENBQUMsR0FBRyxNQUE4QztRQUNuRCxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7WUFDeEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQTtZQUNuQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9B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Q0ksS0FBbUIsRUFDSCxTQUFZLEVBQ1osT0FBa0M7UUFFbEQsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBSEksY0FBUyxHQUFULFNBQVMsQ0FBRztRQUNaLFlBQU8sR0FBUCxPQUFPLENBQTJCO0lBR3RELENBQUM7SUFFa0IsTUFBTTtRQUNyQixNQUFNLE9BQU8sR0FBOEIsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUM5RCxPQUFPLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3JELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN4RSxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQzlDLENBQUM7Q0FDSjtBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUVILE1BQU0sT0FBTyxlQUFlO0lBQ2YsTUFBTSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQU90QyxJQUFJLENBQUksS0FBd0MsRUFBRSxJQUFTO1FBQ3ZELElBQUksS0FBSyxZQUFZLFdBQVcsRUFBRSxDQUFDO1lBQy9CLE9BQU8sSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQVksRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN2RSxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQVksRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN4RSxDQUFDO0lBQ0wsQ0FBQzs4R0FkUSxlQUFlO2tIQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIlxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBQcm92aWRlciwgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmliZXIgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IExheWVyU2VydmljZSB9IGZyb20gXCIuLi9sYXllci9sYXllci5zZXJ2aWNlXCJcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbE9wdGlvbnMsIFRlbXBsYXRlUG9ydGFsT3B0aW9ucyB9IGZyb20gXCIuLi9sYXllci9wb3J0YWwtcmVmXCJcbmltcG9ydCB7IEZsb2F0aW5nQ2hhbm5lbCwgRmxvYXRpbmdSZWYsIFRSQUlUUyB9IGZyb20gXCIuL2Zsb2F0aW5nLXJlZlwiXG5pbXBvcnQgeyB0eXBlIEZsb2F0aW5nVHJhaXQgfSBmcm9tIFwiLi90cmFpdHMvX2Jhc2VcIlxuaW1wb3J0IHsgdHlwZSBGbG9hdGluZ1Bvc2l0aW9uT3B0aW9ucywgcG9zaXRpb24gfSBmcm9tIFwiLi90cmFpdHMvcG9zaXRpb25cIlxuXG4vLyBleHBvcnQgdHlwZSBGbG9hdGluZ1RyYWl0ID0gKC4uLmFyZ3M6IGFueVtdKSA9PiAodHJhaXRzOiBvYmplY3QpID0+IE9ic2VydmFibGU8b2JqZWN0PlxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmxvYXRpbmdGYWN0b3J5IHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhaXRzOiB7IFtrZXk6IHN0cmluZ106IEZsb2F0aW5nVHJhaXQgfSA9IHt9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgbGF5ZXI6IExheWVyU2VydmljZSkge31cblxuICAgIHRyYWl0KC4uLnRyYWl0czogQXJyYXk8RmxvYXRpbmdUcmFpdCB8IEZsb2F0aW5nVHJhaXRbXT4pIHtcbiAgICAgICAgZm9yIChjb25zdCB0cmFpdCBvZiB0cmFpdHMpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRyYWl0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhaXQoLi4udHJhaXQpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhaXRzW3RyYWl0Lm5hbWVdID0gdHJhaXRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgc2hvdygpOiBPYnNlcnZhYmxlPEZsb2F0aW5nQ2hhbm5lbD4ge1xuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKGRlc3Q6IFN1YnNjcmliZXI8RmxvYXRpbmdDaGFubmVsPikgPT4ge1xuICAgICAgICAgICAgbGV0IGRpc3Bvc2VkID0gZmFsc2VcblxuICAgICAgICAgICAgY29uc3QgcmVmID0gdGhpcy5jcmVhdGUoKVxuICAgICAgICAgICAgY29uc3QgY2hhbm5lbFN1YiA9IHJlZi5jaGFubmVsLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgZGVzdC5uZXh0KGV2ZW50KVxuICAgICAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSBcImRpc3Bvc2VkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcG9zZWQgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgIGRlc3QuY29tcGxldGUoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGNvbnN0IHNob3dTdWIgPSByZWYuc2hvdygpLnN1YnNjcmliZSgpXG5cbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2hvd1N1Yi51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICAgICAgY2hhbm5lbFN1Yi51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICAgICAgaWYgKCFkaXNwb3NlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNwb3NlJCA9IHJlZi5jaGFubmVsLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gXCJkaXNwb3NlZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZVN1Yi51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcG9zZSQudW5zdWJzY3JpYmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoaWRlU3ViID0gcmVmLmhpZGUoKS5zdWJzY3JpYmUoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBzdWJzY3JpYmUgPSAoLi4uYXJnczogYW55W10pID0+IHRoaXMuc2hvdygpLnN1YnNjcmliZSguLi5hcmdzKVxuXG4gICAgcHJvdGVjdGVkIHByb3ZpZGVycyhwcm92aWRlcnM/OiBQcm92aWRlcltdKTogUHJvdmlkZXJbXSB7XG4gICAgICAgIGlmICghcHJvdmlkZXJzKSB7XG4gICAgICAgICAgICBwcm92aWRlcnMgPSBbXVxuICAgICAgICB9XG5cbiAgICAgICAgcHJvdmlkZXJzID0gW1xuICAgICAgICAgICAgLi4ucHJvdmlkZXJzLFxuICAgICAgICAgICAgeyBwcm92aWRlOiBUUkFJVFMsIHVzZVZhbHVlOiB0aGlzLnRyYWl0cyB9LFxuICAgICAgICAgICAgeyBwcm92aWRlOiBMYXllclNlcnZpY2UsIHVzZVZhbHVlOiB0aGlzLmxheWVyIH0sXG4gICAgICAgICAgICBGbG9hdGluZ1JlZlxuICAgICAgICBdXG5cbiAgICAgICAgcmV0dXJuIHByb3ZpZGVyc1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjcmVhdGUoKTogRmxvYXRpbmdSZWY8RmxvYXRpbmdDaGFubmVsPlxuXG4gICAgcG9zaXRpb24ob3B0aW9uczogRmxvYXRpbmdQb3NpdGlvbk9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhaXQocG9zaXRpb24ob3B0aW9ucykpXG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmxvYXRpbmdUZW1wbGF0ZUZhY3Rvcnk8VCBleHRlbmRzIG9iamVjdD4gZXh0ZW5kcyBGbG9hdGluZ0ZhY3Rvcnkge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBsYXllcjogTGF5ZXJTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgdHBsOiBUZW1wbGF0ZVJlZjxUPixcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IG9wdGlvbnM6IFRlbXBsYXRlUG9ydGFsT3B0aW9uczxUPlxuICAgICkge1xuICAgICAgICBzdXBlcihsYXllcilcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY3JlYXRlKCk6IEZsb2F0aW5nUmVmPEZsb2F0aW5nQ2hhbm5lbD4ge1xuICAgICAgICBjb25zdCBvcHRpb25zOiBUZW1wbGF0ZVBvcnRhbE9wdGlvbnM8VD4gPSB7IC4uLnRoaXMub3B0aW9ucyB9XG4gICAgICAgIG9wdGlvbnMucHJvdmlkZXJzID0gdGhpcy5wcm92aWRlcnMob3B0aW9ucy5wcm92aWRlcnMpXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMubGF5ZXIubmV3VGVtcGxhdGVQb3J0YWwodGhpcy50cGwsIG9wdGlvbnMpXG4gICAgICAgIHJldHVybiBjb250YWluZXIuaW5qZWN0b3IuZ2V0KEZsb2F0aW5nUmVmKVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZsb2F0aW5nQ29tcG9uZW50RmFjdG9yeTxUIGV4dGVuZHMgQ29tcG9uZW50VHlwZTxhbnk+PiBleHRlbmRzIEZsb2F0aW5nRmFjdG9yeSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGxheWVyOiBMYXllclNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBjb21wb25lbnQ6IFQsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBvcHRpb25zOiBDb21wb25lbnRQb3J0YWxPcHRpb25zPFQ+XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGxheWVyKVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBjcmVhdGUoKTogRmxvYXRpbmdSZWY8RmxvYXRpbmdDaGFubmVsPiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IENvbXBvbmVudFBvcnRhbE9wdGlvbnM8VD4gPSB7IC4uLnRoaXMub3B0aW9ucyB9XG4gICAgICAgIG9wdGlvbnMucHJvdmlkZXJzID0gdGhpcy5wcm92aWRlcnMob3B0aW9ucy5wcm92aWRlcnMpXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMubGF5ZXIubmV3Q29tcG9uZW50UG9ydGFsKHRoaXMuY29tcG9uZW50LCBvcHRpb25zKVxuICAgICAgICByZXR1cm4gY29udGFpbmVyLmluamVjdG9yLmdldChGbG9hdGluZ1JlZilcbiAgICB9XG59XG5cbi8qKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIFNvbWVDb21wb25lbnQge31cbiAqXG4gKiBjbGFzcyBTb21lTGlzdCB7XG4gKiAgICAgIHJlYWRvbmx5IGZsb2F0aW5nID0gaW5qZWN0KEZsb2F0aW5nU2VydmljZSlcbiAqXG4gKiAgICAgIHNob3dDb21wb25lbnQoKSB7XG4gKiAgICAgICAgICB0aGlzLmZsb2F0aW5nLmZyb20oU29tZUNvbXBvbmVudCkudHJhaXRzKHBvc2l0aW9uKCksIGJhY2tkcm9wKCkpLnN1YnNjcmliZSgpXG4gKiAgICAgIH1cbiAqIGBgYFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmxvYXRpbmdTZXJ2aWNlIHtcbiAgICByZWFkb25seSAjbGF5ZXIgPSBpbmplY3QoTGF5ZXJTZXJ2aWNlKVxuICAgIC8vIHJlYWRvbmx5IHBhcmVudCA9IGluamVjdChGbG9hdGluZ1JlZiwgeyBza2lwU2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWUgfSlcblxuICAgIGZyb208VCBleHRlbmRzIENvbXBvbmVudFR5cGU8YW55Pj4oY29tcG9uZW50OiBULCBvcHRzPzogQ29tcG9uZW50UG9ydGFsT3B0aW9uczxUPik6IEZsb2F0aW5nQ29tcG9uZW50RmFjdG9yeTxUPlxuXG4gICAgZnJvbTxUIGV4dGVuZHMgb2JqZWN0Pih0cGw6IFRlbXBsYXRlUmVmPFQ+LCBvcHRzPzogVGVtcGxhdGVQb3J0YWxPcHRpb25zPFQ+KTogRmxvYXRpbmdUZW1wbGF0ZUZhY3Rvcnk8VD5cblxuICAgIGZyb208VD4odmFsdWU6IENvbXBvbmVudFR5cGU8VD4gfCBUZW1wbGF0ZVJlZjxUPiwgb3B0czogYW55KTogRmxvYXRpbmdGYWN0b3J5IHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRmxvYXRpbmdUZW1wbGF0ZUZhY3RvcnkodGhpcy4jbGF5ZXIsIHZhbHVlIGFzIGFueSwgb3B0cylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRmxvYXRpbmdDb21wb25lbnRGYWN0b3J5KHRoaXMuI2xheWVyLCB2YWx1ZSBhcyBhbnksIG9wdHMpXG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Zsb2F0aW5nL3NyYy9mbG9hdGluZy9mbG9hdGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFZLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV6RSxPQUFPLEVBQUUsVUFBVSxFQUFjLE1BQU0sTUFBTSxDQUFBO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUVyRCxPQUFPLEVBQW1CLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVyRSxPQUFPLEVBQWdDLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFBOztBQUUxRSx5RkFBeUY7QUFFekYsTUFBTSxPQUFnQixlQUFlO0lBR2pDLFVBQVUsQ0FBaUI7SUFFM0IsWUFBK0IsS0FBbUI7UUFBbkIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUovQixXQUFNLEdBQXFDLEVBQUUsQ0FBQTtRQUVoRSxlQUFVLEdBQWUsRUFBRSxDQUFBO1FBK0MzQixjQUFTLEdBQUcsQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO0lBN0NULENBQUM7SUFFdEQsS0FBSyxDQUFDLEdBQUcsTUFBOEM7UUFDbkQsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUN6QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFBO1lBQ3hCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUE7WUFDbkMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQTtJQUNmLENBQUM7SUFFRCxJQUFJO1FBQ0EsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLElBQWlDLEVBQUUsRUFBRTtZQUN4RCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUE7WUFFcEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFBO1lBQ3pCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUNoQixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQzVCLFFBQVEsR0FBRyxJQUFJLENBQUE7b0JBQ2YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO2dCQUNuQixDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUE7WUFFRixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUE7WUFFdEMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1IsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFBO2dCQUNyQixVQUFVLENBQUMsV0FBVyxFQUFFLENBQUE7Z0JBQ3hCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDWixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTt3QkFDM0MsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDOzRCQUM1QixPQUFPLENBQUMsV0FBVyxFQUFFLENBQUE7NEJBQ3JCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQTt3QkFDMUIsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQTtvQkFDRixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUE7Z0JBQzFDLENBQUM7WUFDTCxDQUFDLENBQUE7UUFDTCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFJUyxTQUFTLENBQUMsU0FBc0I7UUFDdEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2IsU0FBUyxHQUFHLEVBQUUsQ0FBQTtRQUNsQixDQUFDO1FBRUQsU0FBUyxHQUFHO1lBQ1IsR0FBRyxTQUFTO1lBQ1osRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzFDLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUMvQyxXQUFXO1lBQ1gsR0FBRyxJQUFJLENBQUMsVUFBVTtTQUNyQixDQUFBO1FBRUQsT0FBTyxTQUFTLENBQUE7SUFDcEIsQ0FBQztJQUlELFFBQVEsQ0FBQyxPQUFnQztRQUNyQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxTQUFnQztRQUNyQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUE7UUFDeEQsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBQ3JELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQTtJQUNmLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyx1QkFBMEMsU0FBUSxlQUFlO0lBQzFFLFlBQ0ksS0FBbUIsRUFDSCxHQUFtQixFQUNuQixPQUFpQztRQUVqRCxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7UUFISSxRQUFHLEdBQUgsR0FBRyxDQUFnQjtRQUNuQixZQUFPLEdBQVAsT0FBTyxDQUEwQjtJQUdyRCxDQUFDO0lBRWtCLE1BQU07UUFDckIsTUFBTSxPQUFPLEdBQTZCLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDN0QsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNyRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDakUsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sd0JBQXVELFNBQVEsZUFBZTtJQUN2RixZQUNJLEtBQW1CLEVBQ0gsU0FBWSxFQUNaLE9BQWtDO1FBRWxELEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUhJLGNBQVMsR0FBVCxTQUFTLENBQUc7UUFDWixZQUFPLEdBQVAsT0FBTyxDQUEyQjtJQUd0RCxDQUFDO0lBRWtCLE1BQU07UUFDckIsTUFBTSxPQUFPLEdBQThCLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDOUQsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNyRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDeEUsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0NBQ0o7QUFFRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFFSCxNQUFNLE9BQU8sZUFBZTtJQUNmLE1BQU0sR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7SUFPdEMsSUFBSSxDQUFJLEtBQXdDLEVBQUUsSUFBUztRQUN2RCxJQUFJLEtBQUssWUFBWSxXQUFXLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksdUJBQXVCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFZLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDdkUsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLElBQUksd0JBQXdCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFZLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDeEUsQ0FBQztJQUNMLENBQUM7OEdBZFEsZUFBZTtrSEFBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gXCJAYW5ndWxhci9jZGsvcG9ydGFsXCJcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgUHJvdmlkZXIsIFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpYmVyIH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBMYXllclNlcnZpY2UgfSBmcm9tIFwiLi4vbGF5ZXIvbGF5ZXIuc2VydmljZVwiXG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWxPcHRpb25zLCBUZW1wbGF0ZVBvcnRhbE9wdGlvbnMgfSBmcm9tIFwiLi4vbGF5ZXIvcG9ydGFsLXJlZlwiXG5pbXBvcnQgeyBGbG9hdGluZ0NoYW5uZWwsIEZsb2F0aW5nUmVmLCBUUkFJVFMgfSBmcm9tIFwiLi9mbG9hdGluZy1yZWZcIlxuaW1wb3J0IHsgdHlwZSBGbG9hdGluZ1RyYWl0IH0gZnJvbSBcIi4vdHJhaXRzL19iYXNlXCJcbmltcG9ydCB7IHR5cGUgRmxvYXRpbmdQb3NpdGlvbk9wdGlvbnMsIHBvc2l0aW9uIH0gZnJvbSBcIi4vdHJhaXRzL3Bvc2l0aW9uXCJcblxuLy8gZXhwb3J0IHR5cGUgRmxvYXRpbmdUcmFpdCA9ICguLi5hcmdzOiBhbnlbXSkgPT4gKHRyYWl0czogb2JqZWN0KSA9PiBPYnNlcnZhYmxlPG9iamVjdD5cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZsb2F0aW5nRmFjdG9yeSB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRyYWl0czogeyBba2V5OiBzdHJpbmddOiBGbG9hdGluZ1RyYWl0IH0gPSB7fVxuXG4gICAgI3Byb3ZpZGVyczogUHJvdmlkZXJbXSA9IFtdXG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgbGF5ZXI6IExheWVyU2VydmljZSkge31cblxuICAgIHRyYWl0KC4uLnRyYWl0czogQXJyYXk8RmxvYXRpbmdUcmFpdCB8IEZsb2F0aW5nVHJhaXRbXT4pIHtcbiAgICAgICAgZm9yIChjb25zdCB0cmFpdCBvZiB0cmFpdHMpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRyYWl0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhaXQoLi4udHJhaXQpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhaXRzW3RyYWl0Lm5hbWVdID0gdHJhaXRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgc2hvdygpOiBPYnNlcnZhYmxlPEZsb2F0aW5nQ2hhbm5lbD4ge1xuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKGRlc3Q6IFN1YnNjcmliZXI8RmxvYXRpbmdDaGFubmVsPikgPT4ge1xuICAgICAgICAgICAgbGV0IGRpc3Bvc2VkID0gZmFsc2VcblxuICAgICAgICAgICAgY29uc3QgcmVmID0gdGhpcy5jcmVhdGUoKVxuICAgICAgICAgICAgY29uc3QgY2hhbm5lbFN1YiA9IHJlZi5jaGFubmVsLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgZGVzdC5uZXh0KGV2ZW50KVxuICAgICAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSBcImRpc3Bvc2VkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcG9zZWQgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgIGRlc3QuY29tcGxldGUoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGNvbnN0IHNob3dTdWIgPSByZWYuc2hvdygpLnN1YnNjcmliZSgpXG5cbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2hvd1N1Yi51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICAgICAgY2hhbm5lbFN1Yi51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICAgICAgaWYgKCFkaXNwb3NlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNwb3NlJCA9IHJlZi5jaGFubmVsLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gXCJkaXNwb3NlZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZVN1Yi51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcG9zZSQudW5zdWJzY3JpYmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoaWRlU3ViID0gcmVmLmhpZGUoKS5zdWJzY3JpYmUoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBzdWJzY3JpYmUgPSAoLi4uYXJnczogYW55W10pID0+IHRoaXMuc2hvdygpLnN1YnNjcmliZSguLi5hcmdzKVxuXG4gICAgcHJvdGVjdGVkIHByb3ZpZGVycyhwcm92aWRlcnM/OiBQcm92aWRlcltdKTogUHJvdmlkZXJbXSB7XG4gICAgICAgIGlmICghcHJvdmlkZXJzKSB7XG4gICAgICAgICAgICBwcm92aWRlcnMgPSBbXVxuICAgICAgICB9XG5cbiAgICAgICAgcHJvdmlkZXJzID0gW1xuICAgICAgICAgICAgLi4ucHJvdmlkZXJzLFxuICAgICAgICAgICAgeyBwcm92aWRlOiBUUkFJVFMsIHVzZVZhbHVlOiB0aGlzLnRyYWl0cyB9LFxuICAgICAgICAgICAgeyBwcm92aWRlOiBMYXllclNlcnZpY2UsIHVzZVZhbHVlOiB0aGlzLmxheWVyIH0sXG4gICAgICAgICAgICBGbG9hdGluZ1JlZixcbiAgICAgICAgICAgIC4uLnRoaXMuI3Byb3ZpZGVyc1xuICAgICAgICBdXG5cbiAgICAgICAgcmV0dXJuIHByb3ZpZGVyc1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjcmVhdGUoKTogRmxvYXRpbmdSZWY8RmxvYXRpbmdDaGFubmVsPlxuXG4gICAgcG9zaXRpb24ob3B0aW9uczogRmxvYXRpbmdQb3NpdGlvbk9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhaXQocG9zaXRpb24ob3B0aW9ucykpXG4gICAgfVxuXG4gICAgcHJvdmlkZXMocHJvdmlkZXJzOiBQcm92aWRlciB8IFByb3ZpZGVyW10pIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJvdmlkZXJzKSkge1xuICAgICAgICAgICAgdGhpcy4jcHJvdmlkZXJzID0gWy4uLnRoaXMuI3Byb3ZpZGVycywgLi4ucHJvdmlkZXJzXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy4jcHJvdmlkZXJzID0gWy4uLnRoaXMuI3Byb3ZpZGVycywgcHJvdmlkZXJzXVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmxvYXRpbmdUZW1wbGF0ZUZhY3Rvcnk8VCBleHRlbmRzIG9iamVjdD4gZXh0ZW5kcyBGbG9hdGluZ0ZhY3Rvcnkge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBsYXllcjogTGF5ZXJTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgdHBsOiBUZW1wbGF0ZVJlZjxUPixcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IG9wdGlvbnM6IFRlbXBsYXRlUG9ydGFsT3B0aW9uczxUPlxuICAgICkge1xuICAgICAgICBzdXBlcihsYXllcilcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY3JlYXRlKCk6IEZsb2F0aW5nUmVmPEZsb2F0aW5nQ2hhbm5lbD4ge1xuICAgICAgICBjb25zdCBvcHRpb25zOiBUZW1wbGF0ZVBvcnRhbE9wdGlvbnM8VD4gPSB7IC4uLnRoaXMub3B0aW9ucyB9XG4gICAgICAgIG9wdGlvbnMucHJvdmlkZXJzID0gdGhpcy5wcm92aWRlcnMob3B0aW9ucy5wcm92aWRlcnMpXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMubGF5ZXIubmV3VGVtcGxhdGVQb3J0YWwodGhpcy50cGwsIG9wdGlvbnMpXG4gICAgICAgIHJldHVybiBjb250YWluZXIuaW5qZWN0b3IuZ2V0KEZsb2F0aW5nUmVmKVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZsb2F0aW5nQ29tcG9uZW50RmFjdG9yeTxUIGV4dGVuZHMgQ29tcG9uZW50VHlwZTxhbnk+PiBleHRlbmRzIEZsb2F0aW5nRmFjdG9yeSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGxheWVyOiBMYXllclNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBjb21wb25lbnQ6IFQsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBvcHRpb25zOiBDb21wb25lbnRQb3J0YWxPcHRpb25zPFQ+XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGxheWVyKVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBjcmVhdGUoKTogRmxvYXRpbmdSZWY8RmxvYXRpbmdDaGFubmVsPiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IENvbXBvbmVudFBvcnRhbE9wdGlvbnM8VD4gPSB7IC4uLnRoaXMub3B0aW9ucyB9XG4gICAgICAgIG9wdGlvbnMucHJvdmlkZXJzID0gdGhpcy5wcm92aWRlcnMob3B0aW9ucy5wcm92aWRlcnMpXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMubGF5ZXIubmV3Q29tcG9uZW50UG9ydGFsKHRoaXMuY29tcG9uZW50LCBvcHRpb25zKVxuICAgICAgICByZXR1cm4gY29udGFpbmVyLmluamVjdG9yLmdldChGbG9hdGluZ1JlZilcbiAgICB9XG59XG5cbi8qKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIFNvbWVDb21wb25lbnQge31cbiAqXG4gKiBjbGFzcyBTb21lTGlzdCB7XG4gKiAgICAgIHJlYWRvbmx5IGZsb2F0aW5nID0gaW5qZWN0KEZsb2F0aW5nU2VydmljZSlcbiAqXG4gKiAgICAgIHNob3dDb21wb25lbnQoKSB7XG4gKiAgICAgICAgICB0aGlzLmZsb2F0aW5nLmZyb20oU29tZUNvbXBvbmVudCkudHJhaXRzKHBvc2l0aW9uKCksIGJhY2tkcm9wKCkpLnN1YnNjcmliZSgpXG4gKiAgICAgIH1cbiAqIGBgYFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmxvYXRpbmdTZXJ2aWNlIHtcbiAgICByZWFkb25seSAjbGF5ZXIgPSBpbmplY3QoTGF5ZXJTZXJ2aWNlKVxuICAgIC8vIHJlYWRvbmx5IHBhcmVudCA9IGluamVjdChGbG9hdGluZ1JlZiwgeyBza2lwU2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWUgfSlcblxuICAgIGZyb208VCBleHRlbmRzIENvbXBvbmVudFR5cGU8YW55Pj4oY29tcG9uZW50OiBULCBvcHRzPzogQ29tcG9uZW50UG9ydGFsT3B0aW9uczxUPik6IEZsb2F0aW5nQ29tcG9uZW50RmFjdG9yeTxUPlxuXG4gICAgZnJvbTxUIGV4dGVuZHMgb2JqZWN0Pih0cGw6IFRlbXBsYXRlUmVmPFQ+LCBvcHRzPzogVGVtcGxhdGVQb3J0YWxPcHRpb25zPFQ+KTogRmxvYXRpbmdUZW1wbGF0ZUZhY3Rvcnk8VD5cblxuICAgIGZyb208VD4odmFsdWU6IENvbXBvbmVudFR5cGU8VD4gfCBUZW1wbGF0ZVJlZjxUPiwgb3B0czogYW55KTogRmxvYXRpbmdGYWN0b3J5IHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRmxvYXRpbmdUZW1wbGF0ZUZhY3RvcnkodGhpcy4jbGF5ZXIsIHZhbHVlIGFzIGFueSwgb3B0cylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRmxvYXRpbmdDb21wb25lbnRGYWN0b3J5KHRoaXMuI2xheWVyLCB2YWx1ZSBhcyBhbnksIG9wdHMpXG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { animate, AnimationBuilder, style } from "@angular/animations";
|
|
2
|
+
import { Observable } from "rxjs";
|
|
3
|
+
import { animationObservable } from "@ngutil/graphics";
|
|
4
|
+
import { Duration, Ease } from "@ngutil/style";
|
|
5
|
+
import { FloatingTrait } from "./_base";
|
|
6
|
+
// https://tympanus.net/Development/ModalWindowEffects/
|
|
7
|
+
const transitionDuration = Duration.FastMs;
|
|
8
|
+
export class AnimationTrait extends FloatingTrait {
|
|
9
|
+
constructor(animation) {
|
|
10
|
+
super();
|
|
11
|
+
this.animation = animation;
|
|
12
|
+
this.name = "animation";
|
|
13
|
+
}
|
|
14
|
+
connect(floatingRef) {
|
|
15
|
+
return new Observable((dst) => {
|
|
16
|
+
const builder = floatingRef.container.injector.get(AnimationBuilder);
|
|
17
|
+
const element = floatingRef.container.nativeElement;
|
|
18
|
+
floatingRef.state.on("showing", () => animationObservable({ builder, element, animation: this.animation.show }));
|
|
19
|
+
floatingRef.state.on("disposing", () => animationObservable({ builder, element, animation: this.animation.hide }));
|
|
20
|
+
dst.next();
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export const FallAnimation = {
|
|
25
|
+
show: [
|
|
26
|
+
style({
|
|
27
|
+
// "perspective:": "1300px",
|
|
28
|
+
transform: "scale(1.5)",
|
|
29
|
+
visibility: "visible",
|
|
30
|
+
opacity: "0"
|
|
31
|
+
}),
|
|
32
|
+
animate(`${transitionDuration}ms ${Ease.Deceleration}`, style({
|
|
33
|
+
transform: "scale(1)",
|
|
34
|
+
opacity: "1"
|
|
35
|
+
}))
|
|
36
|
+
],
|
|
37
|
+
hide: [
|
|
38
|
+
animate(`${transitionDuration}ms ${Ease.Deceleration}`, style({
|
|
39
|
+
transform: "scale(1.5)",
|
|
40
|
+
visibility: "visible",
|
|
41
|
+
opacity: "0"
|
|
42
|
+
}))
|
|
43
|
+
]
|
|
44
|
+
};
|
|
45
|
+
export function fallAnimation() {
|
|
46
|
+
return new AnimationTrait(FallAnimation);
|
|
47
|
+
}
|
|
48
|
+
export const FadeAnimation = {
|
|
49
|
+
show: [style({ opacity: 0 }), animate(`${transitionDuration}ms ${Ease.Deceleration}`, style({ opacity: 1 }))],
|
|
50
|
+
hide: [animate(`${transitionDuration}ms ${Ease.Deceleration}`, style({ opacity: 0 }))]
|
|
51
|
+
};
|
|
52
|
+
export function fadeAnimation() {
|
|
53
|
+
return new AnimationTrait(FadeAnimation);
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZmxvYXRpbmcvc3JjL2Zsb2F0aW5nL3RyYWl0cy9hbmltYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBcUIsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFekYsT0FBTyxFQUFFLFVBQVUsRUFBYyxNQUFNLE1BQU0sQ0FBQTtBQUU3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUc5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBSXZDLHVEQUF1RDtBQUV2RCxNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUE7QUFFMUMsTUFBTSxPQUFPLGNBQWUsU0FBUSxhQUFzQjtJQUd0RCxZQUFxQixTQUF1QjtRQUN4QyxLQUFLLEVBQUUsQ0FBQTtRQURVLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFGbkMsU0FBSSxHQUFHLFdBQVcsQ0FBQTtJQUkzQixDQUFDO0lBRVEsT0FBTyxDQUFDLFdBQXdCO1FBQ3JDLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxHQUF3QixFQUFFLEVBQUU7WUFDL0MsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUE7WUFDcEUsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUE7WUFDbkQsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUNqQyxtQkFBbUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FDNUUsQ0FBQTtZQUNELFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FDbkMsbUJBQW1CLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQzVFLENBQUE7WUFDRCxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDZCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7Q0FDSjtBQUVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBaUI7SUFDdkMsSUFBSSxFQUFFO1FBQ0YsS0FBSyxDQUFDO1lBQ0YsNEJBQTRCO1lBQzVCLFNBQVMsRUFBRSxZQUFZO1lBQ3ZCLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLE9BQU8sRUFBRSxHQUFHO1NBQ2YsQ0FBQztRQUNGLE9BQU8sQ0FDSCxHQUFHLGtCQUFrQixNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFDOUMsS0FBSyxDQUFDO1lBQ0YsU0FBUyxFQUFFLFVBQVU7WUFDckIsT0FBTyxFQUFFLEdBQUc7U0FDZixDQUFDLENBQ0w7S0FDSjtJQUNELElBQUksRUFBRTtRQUNGLE9BQU8sQ0FDSCxHQUFHLGtCQUFrQixNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFDOUMsS0FBSyxDQUFDO1lBQ0YsU0FBUyxFQUFFLFlBQVk7WUFDdkIsVUFBVSxFQUFFLFNBQVM7WUFDckIsT0FBTyxFQUFFLEdBQUc7U0FDZixDQUFDLENBQ0w7S0FDSjtDQUNKLENBQUE7QUFFRCxNQUFNLFVBQVUsYUFBYTtJQUN6QixPQUFPLElBQUksY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQzVDLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQWlCO0lBQ3ZDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLGtCQUFrQixNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdHLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLGtCQUFrQixNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ3pGLENBQUE7QUFFRCxNQUFNLFVBQVUsYUFBYTtJQUN6QixPQUFPLElBQUksY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBBbmltYXRpb25CdWlsZGVyLCBBbmltYXRpb25NZXRhZGF0YSwgc3R5bGUgfSBmcm9tIFwiQGFuZ3VsYXIvYW5pbWF0aW9uc1wiXG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmliZXIgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IGFuaW1hdGlvbk9ic2VydmFibGUgfSBmcm9tIFwiQG5ndXRpbC9ncmFwaGljc1wiXG5pbXBvcnQgeyBEdXJhdGlvbiwgRWFzZSB9IGZyb20gXCJAbmd1dGlsL3N0eWxlXCJcblxuaW1wb3J0IHsgRmxvYXRpbmdSZWYgfSBmcm9tIFwiLi4vZmxvYXRpbmctcmVmXCJcbmltcG9ydCB7IEZsb2F0aW5nVHJhaXQgfSBmcm9tIFwiLi9fYmFzZVwiXG5cbmV4cG9ydCB0eXBlIEFuaW1hdGlvblNldCA9IHsgc2hvdzogQW5pbWF0aW9uTWV0YWRhdGFbXTsgaGlkZTogQW5pbWF0aW9uTWV0YWRhdGFbXSB9XG5cbi8vIGh0dHBzOi8vdHltcGFudXMubmV0L0RldmVsb3BtZW50L01vZGFsV2luZG93RWZmZWN0cy9cblxuY29uc3QgdHJhbnNpdGlvbkR1cmF0aW9uID0gRHVyYXRpb24uRmFzdE1zXG5cbmV4cG9ydCBjbGFzcyBBbmltYXRpb25UcmFpdCBleHRlbmRzIEZsb2F0aW5nVHJhaXQ8dW5rbm93bj4ge1xuICAgIG92ZXJyaWRlIG5hbWUgPSBcImFuaW1hdGlvblwiXG5cbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBhbmltYXRpb246IEFuaW1hdGlvblNldCkge1xuICAgICAgICBzdXBlcigpXG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgY29ubmVjdChmbG9hdGluZ1JlZjogRmxvYXRpbmdSZWYpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChkc3Q6IFN1YnNjcmliZXI8dW5rbm93bj4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmbG9hdGluZ1JlZi5jb250YWluZXIuaW5qZWN0b3IuZ2V0KEFuaW1hdGlvbkJ1aWxkZXIpXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZmxvYXRpbmdSZWYuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAgIGZsb2F0aW5nUmVmLnN0YXRlLm9uKFwic2hvd2luZ1wiLCAoKSA9PlxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbk9ic2VydmFibGUoeyBidWlsZGVyLCBlbGVtZW50LCBhbmltYXRpb246IHRoaXMuYW5pbWF0aW9uLnNob3cgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGZsb2F0aW5nUmVmLnN0YXRlLm9uKFwiZGlzcG9zaW5nXCIsICgpID0+XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uT2JzZXJ2YWJsZSh7IGJ1aWxkZXIsIGVsZW1lbnQsIGFuaW1hdGlvbjogdGhpcy5hbmltYXRpb24uaGlkZSB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgZHN0Lm5leHQoKVxuICAgICAgICB9KVxuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IEZhbGxBbmltYXRpb246IEFuaW1hdGlvblNldCA9IHtcbiAgICBzaG93OiBbXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgIC8vIFwicGVyc3BlY3RpdmU6XCI6IFwiMTMwMHB4XCIsXG4gICAgICAgICAgICB0cmFuc2Zvcm06IFwic2NhbGUoMS41KVwiLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogXCJ2aXNpYmxlXCIsXG4gICAgICAgICAgICBvcGFjaXR5OiBcIjBcIlxuICAgICAgICB9KSxcbiAgICAgICAgYW5pbWF0ZShcbiAgICAgICAgICAgIGAke3RyYW5zaXRpb25EdXJhdGlvbn1tcyAke0Vhc2UuRGVjZWxlcmF0aW9ufWAsXG4gICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBcInNjYWxlKDEpXCIsXG4gICAgICAgICAgICAgICAgb3BhY2l0eTogXCIxXCJcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICBdLFxuICAgIGhpZGU6IFtcbiAgICAgICAgYW5pbWF0ZShcbiAgICAgICAgICAgIGAke3RyYW5zaXRpb25EdXJhdGlvbn1tcyAke0Vhc2UuRGVjZWxlcmF0aW9ufWAsXG4gICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBcInNjYWxlKDEuNSlcIixcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBcInZpc2libGVcIixcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiBcIjBcIlxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgIF1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZhbGxBbmltYXRpb24oKSB7XG4gICAgcmV0dXJuIG5ldyBBbmltYXRpb25UcmFpdChGYWxsQW5pbWF0aW9uKVxufVxuXG5leHBvcnQgY29uc3QgRmFkZUFuaW1hdGlvbjogQW5pbWF0aW9uU2V0ID0ge1xuICAgIHNob3c6IFtzdHlsZSh7IG9wYWNpdHk6IDAgfSksIGFuaW1hdGUoYCR7dHJhbnNpdGlvbkR1cmF0aW9ufW1zICR7RWFzZS5EZWNlbGVyYXRpb259YCwgc3R5bGUoeyBvcGFjaXR5OiAxIH0pKV0sXG4gICAgaGlkZTogW2FuaW1hdGUoYCR7dHJhbnNpdGlvbkR1cmF0aW9ufW1zICR7RWFzZS5EZWNlbGVyYXRpb259YCwgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKV1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZhZGVBbmltYXRpb24oKSB7XG4gICAgcmV0dXJuIG5ldyBBbmltYXRpb25UcmFpdChGYWRlQW5pbWF0aW9uKVxufVxuIl19
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { AnimationBuilder } from "@angular/animations";
|
|
2
|
+
import { exhaustMap, map, Observable, Subject } from "rxjs";
|
|
3
|
+
import { animationObservable } from "@ngutil/graphics";
|
|
4
|
+
import { FloatingTrait } from "./_base";
|
|
5
|
+
import { FadeAnimation } from "./animation";
|
|
6
|
+
export class BackdropState {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.onClick = new Subject();
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export class BackdropTrait extends FloatingTrait {
|
|
12
|
+
constructor(options) {
|
|
13
|
+
super();
|
|
14
|
+
this.options = options;
|
|
15
|
+
this.name = "backdrop";
|
|
16
|
+
}
|
|
17
|
+
connect(floatingRef) {
|
|
18
|
+
return new Observable((dest) => {
|
|
19
|
+
const animationBuilder = floatingRef.container.injector.get(AnimationBuilder);
|
|
20
|
+
const options = {
|
|
21
|
+
type: this.options.type,
|
|
22
|
+
under: floatingRef.container,
|
|
23
|
+
color: this.options.color
|
|
24
|
+
};
|
|
25
|
+
if (this.options.type === "crop") {
|
|
26
|
+
;
|
|
27
|
+
options.crop = floatingRef
|
|
28
|
+
.watchTrait("position")
|
|
29
|
+
.pipe(map(position => position.anchor));
|
|
30
|
+
}
|
|
31
|
+
const state = new BackdropState();
|
|
32
|
+
const backdrop = floatingRef.layerSvc.newBackdrop(options);
|
|
33
|
+
const removeOnClick = this.options.closeOnClick
|
|
34
|
+
? this.#installClickHandler(floatingRef, backdrop, state)
|
|
35
|
+
: null;
|
|
36
|
+
const onClickSub = this.options.closeOnClick
|
|
37
|
+
? state.onClick.pipe(exhaustMap(() => floatingRef.close())).subscribe()
|
|
38
|
+
: null;
|
|
39
|
+
backdrop.state.on("showing", () => animationObservable({
|
|
40
|
+
builder: animationBuilder,
|
|
41
|
+
element: backdrop.nativeElement,
|
|
42
|
+
animation: FadeAnimation.show
|
|
43
|
+
}));
|
|
44
|
+
backdrop.state.on("disposing", () => animationObservable({
|
|
45
|
+
builder: animationBuilder,
|
|
46
|
+
element: backdrop.nativeElement,
|
|
47
|
+
animation: FadeAnimation.hide
|
|
48
|
+
}));
|
|
49
|
+
floatingRef.state.on("disposing", () => backdrop.dispose());
|
|
50
|
+
const backdropShowSub = backdrop.show().subscribe();
|
|
51
|
+
dest.next(state);
|
|
52
|
+
return () => {
|
|
53
|
+
removeOnClick && removeOnClick();
|
|
54
|
+
onClickSub?.unsubscribe();
|
|
55
|
+
backdropShowSub.unsubscribe();
|
|
56
|
+
};
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
#installClickHandler(floatingRef, backdrop, state) {
|
|
60
|
+
const handler = (event) => {
|
|
61
|
+
if (event.defaultPrevented) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (event.target === backdrop.nativeElement || backdrop.nativeElement.contains(event.target)) {
|
|
65
|
+
;
|
|
66
|
+
state.onClick.next();
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
document.addEventListener("click", handler);
|
|
70
|
+
return () => {
|
|
71
|
+
document.removeEventListener("click", handler);
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export function backdrop(options) {
|
|
76
|
+
return new BackdropTrait(options);
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2Ryb3AuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9mbG9hdGluZy9zcmMvZmxvYXRpbmcvdHJhaXRzL2JhY2tkcm9wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRXRELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFFdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFJdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBVTNDLE1BQU0sT0FBTyxhQUFhO0lBQTFCO1FBQ0ksWUFBTyxHQUFxQixJQUFJLE9BQU8sRUFBUSxDQUFBO0lBQ25ELENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxhQUFjLFNBQVEsYUFBNEI7SUFHM0QsWUFBcUIsT0FBNkI7UUFDOUMsS0FBSyxFQUFFLENBQUE7UUFEVSxZQUFPLEdBQVAsT0FBTyxDQUFzQjtRQUZ6QyxTQUFJLEdBQUcsVUFBVSxDQUFBO0lBSTFCLENBQUM7SUFFUSxPQUFPLENBQUMsV0FBNkI7UUFDMUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLElBQStCLEVBQUUsRUFBRTtZQUN0RCxNQUFNLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1lBQzdFLE1BQU0sT0FBTyxHQUFvQjtnQkFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtnQkFDdkIsS0FBSyxFQUFFLFdBQVcsQ0FBQyxTQUFTO2dCQUM1QixLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2FBQ3JCLENBQUE7WUFFUixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUMvQixDQUFDO2dCQUFDLE9BQStCLENBQUMsSUFBSSxHQUFHLFdBQVc7cUJBQy9DLFVBQVUsQ0FBbUIsVUFBVSxDQUFDO3FCQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7WUFDL0MsQ0FBQztZQUVELE1BQU0sS0FBSyxHQUFHLElBQUksYUFBYSxFQUFFLENBQUE7WUFDakMsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDMUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZO2dCQUMzQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDO2dCQUN6RCxDQUFDLENBQUMsSUFBSSxDQUFBO1lBRVYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZO2dCQUN4QyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFO2dCQUN2RSxDQUFDLENBQUMsSUFBSSxDQUFBO1lBRVYsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUM5QixtQkFBbUIsQ0FBQztnQkFDaEIsT0FBTyxFQUFFLGdCQUFnQjtnQkFDekIsT0FBTyxFQUFFLFFBQVEsQ0FBQyxhQUFhO2dCQUMvQixTQUFTLEVBQUUsYUFBYSxDQUFDLElBQUk7YUFDaEMsQ0FBQyxDQUNMLENBQUE7WUFDRCxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQ2hDLG1CQUFtQixDQUFDO2dCQUNoQixPQUFPLEVBQUUsZ0JBQWdCO2dCQUN6QixPQUFPLEVBQUUsUUFBUSxDQUFDLGFBQWE7Z0JBQy9CLFNBQVMsRUFBRSxhQUFhLENBQUMsSUFBSTthQUNoQyxDQUFDLENBQ0wsQ0FBQTtZQUVELFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtZQUUzRCxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUE7WUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUVoQixPQUFPLEdBQUcsRUFBRTtnQkFDUixhQUFhLElBQUksYUFBYSxFQUFFLENBQUE7Z0JBQ2hDLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQTtnQkFDekIsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFBO1lBQ2pDLENBQUMsQ0FBQTtRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELG9CQUFvQixDQUFDLFdBQTZCLEVBQUUsUUFBcUIsRUFBRSxLQUFvQjtRQUMzRixNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtZQUNsQyxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN6QixPQUFNO1lBQ1YsQ0FBQztZQUVELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsYUFBYSxJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFjLENBQUMsRUFBRSxDQUFDO2dCQUNuRyxDQUFDO2dCQUFDLEtBQUssQ0FBQyxPQUF5QixDQUFDLElBQUksRUFBRSxDQUFBO1lBQzVDLENBQUM7UUFDTCxDQUFDLENBQUE7UUFFRCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBRTNDLE9BQU8sR0FBRyxFQUFFO1lBQ1IsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUNsRCxDQUFDLENBQUE7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLE9BQTZCO0lBQ2xELE9BQU8sSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUE7QUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuaW1hdGlvbkJ1aWxkZXIgfSBmcm9tIFwiQGFuZ3VsYXIvYW5pbWF0aW9uc1wiXG5cbmltcG9ydCB7IGV4aGF1c3RNYXAsIG1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaWJlciB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgYW5pbWF0aW9uT2JzZXJ2YWJsZSB9IGZyb20gXCJAbmd1dGlsL2dyYXBoaWNzXCJcblxuaW1wb3J0IHR5cGUgeyBCYWNrZHJvcE9wdGlvbnMsIEJhY2tkcm9wUmVmLCBDcm9wQmFja2Ryb3BPcHRpb25zIH0gZnJvbSBcIi4uLy4uL2xheWVyL2JhY2tkcm9wLXJlZlwiXG5pbXBvcnQgeyB0eXBlIEZsb2F0aW5nUmVmIH0gZnJvbSBcIi4uL2Zsb2F0aW5nLXJlZlwiXG5pbXBvcnQgeyBGbG9hdGluZ1RyYWl0IH0gZnJvbSBcIi4vX2Jhc2VcIlxuaW1wb3J0IHsgRmFkZUFuaW1hdGlvbiB9IGZyb20gXCIuL2FuaW1hdGlvblwiXG5pbXBvcnQgeyBGbG9hdGluZ1Bvc2l0aW9uIH0gZnJvbSBcIi4vcG9zaXRpb25cIlxuXG5leHBvcnQgaW50ZXJmYWNlIEJhY2tkcm9wVHJhaXRPcHRpb25zIHtcbiAgICB0eXBlOiBCYWNrZHJvcE9wdGlvbnNbXCJ0eXBlXCJdXG4gICAgY29sb3I6IEJhY2tkcm9wT3B0aW9uc1tcImNvbG9yXCJdXG4gICAgY2xvc2VPbkNsaWNrPzogYm9vbGVhblxuICAgIC8vIFRPRE86IG1heWJlIGNyb3BNYXJnaW5cbn1cblxuZXhwb3J0IGNsYXNzIEJhY2tkcm9wU3RhdGUge1xuICAgIG9uQ2xpY2s6IE9ic2VydmFibGU8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpXG59XG5cbmV4cG9ydCBjbGFzcyBCYWNrZHJvcFRyYWl0IGV4dGVuZHMgRmxvYXRpbmdUcmFpdDxCYWNrZHJvcFN0YXRlPiB7XG4gICAgb3ZlcnJpZGUgbmFtZSA9IFwiYmFja2Ryb3BcIlxuXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgb3B0aW9uczogQmFja2Ryb3BUcmFpdE9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoKVxuICAgIH1cblxuICAgIG92ZXJyaWRlIGNvbm5lY3QoZmxvYXRpbmdSZWY6IEZsb2F0aW5nUmVmPGFueT4pOiBPYnNlcnZhYmxlPEJhY2tkcm9wU3RhdGU+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChkZXN0OiBTdWJzY3JpYmVyPEJhY2tkcm9wU3RhdGU+KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhbmltYXRpb25CdWlsZGVyID0gZmxvYXRpbmdSZWYuY29udGFpbmVyLmluamVjdG9yLmdldChBbmltYXRpb25CdWlsZGVyKVxuICAgICAgICAgICAgY29uc3Qgb3B0aW9uczogQmFja2Ryb3BPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6IHRoaXMub3B0aW9ucy50eXBlLFxuICAgICAgICAgICAgICAgIHVuZGVyOiBmbG9hdGluZ1JlZi5jb250YWluZXIsXG4gICAgICAgICAgICAgICAgY29sb3I6IHRoaXMub3B0aW9ucy5jb2xvclxuICAgICAgICAgICAgfSBhcyBhbnlcblxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy50eXBlID09PSBcImNyb3BcIikge1xuICAgICAgICAgICAgICAgIDsob3B0aW9ucyBhcyBDcm9wQmFja2Ryb3BPcHRpb25zKS5jcm9wID0gZmxvYXRpbmdSZWZcbiAgICAgICAgICAgICAgICAgICAgLndhdGNoVHJhaXQ8RmxvYXRpbmdQb3NpdGlvbj4oXCJwb3NpdGlvblwiKVxuICAgICAgICAgICAgICAgICAgICAucGlwZShtYXAocG9zaXRpb24gPT4gcG9zaXRpb24uYW5jaG9yKSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSBuZXcgQmFja2Ryb3BTdGF0ZSgpXG4gICAgICAgICAgICBjb25zdCBiYWNrZHJvcCA9IGZsb2F0aW5nUmVmLmxheWVyU3ZjLm5ld0JhY2tkcm9wKG9wdGlvbnMpXG4gICAgICAgICAgICBjb25zdCByZW1vdmVPbkNsaWNrID0gdGhpcy5vcHRpb25zLmNsb3NlT25DbGlja1xuICAgICAgICAgICAgICAgID8gdGhpcy4jaW5zdGFsbENsaWNrSGFuZGxlcihmbG9hdGluZ1JlZiwgYmFja2Ryb3AsIHN0YXRlKVxuICAgICAgICAgICAgICAgIDogbnVsbFxuXG4gICAgICAgICAgICBjb25zdCBvbkNsaWNrU3ViID0gdGhpcy5vcHRpb25zLmNsb3NlT25DbGlja1xuICAgICAgICAgICAgICAgID8gc3RhdGUub25DbGljay5waXBlKGV4aGF1c3RNYXAoKCkgPT4gZmxvYXRpbmdSZWYuY2xvc2UoKSkpLnN1YnNjcmliZSgpXG4gICAgICAgICAgICAgICAgOiBudWxsXG5cbiAgICAgICAgICAgIGJhY2tkcm9wLnN0YXRlLm9uKFwic2hvd2luZ1wiLCAoKSA9PlxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbk9ic2VydmFibGUoe1xuICAgICAgICAgICAgICAgICAgICBidWlsZGVyOiBhbmltYXRpb25CdWlsZGVyLFxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBiYWNrZHJvcC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IEZhZGVBbmltYXRpb24uc2hvd1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBiYWNrZHJvcC5zdGF0ZS5vbihcImRpc3Bvc2luZ1wiLCAoKSA9PlxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbk9ic2VydmFibGUoe1xuICAgICAgICAgICAgICAgICAgICBidWlsZGVyOiBhbmltYXRpb25CdWlsZGVyLFxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBiYWNrZHJvcC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IEZhZGVBbmltYXRpb24uaGlkZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG5cbiAgICAgICAgICAgIGZsb2F0aW5nUmVmLnN0YXRlLm9uKFwiZGlzcG9zaW5nXCIsICgpID0+IGJhY2tkcm9wLmRpc3Bvc2UoKSlcblxuICAgICAgICAgICAgY29uc3QgYmFja2Ryb3BTaG93U3ViID0gYmFja2Ryb3Auc2hvdygpLnN1YnNjcmliZSgpXG4gICAgICAgICAgICBkZXN0Lm5leHQoc3RhdGUpXG5cbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlT25DbGljayAmJiByZW1vdmVPbkNsaWNrKClcbiAgICAgICAgICAgICAgICBvbkNsaWNrU3ViPy51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICAgICAgYmFja2Ryb3BTaG93U3ViLnVuc3Vic2NyaWJlKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICAjaW5zdGFsbENsaWNrSGFuZGxlcihmbG9hdGluZ1JlZjogRmxvYXRpbmdSZWY8YW55PiwgYmFja2Ryb3A6IEJhY2tkcm9wUmVmLCBzdGF0ZTogQmFja2Ryb3BTdGF0ZSkge1xuICAgICAgICBjb25zdCBoYW5kbGVyID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBiYWNrZHJvcC5uYXRpdmVFbGVtZW50IHx8IGJhY2tkcm9wLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICAgICAgICAgICAgOyhzdGF0ZS5vbkNsaWNrIGFzIFN1YmplY3Q8dm9pZD4pLm5leHQoKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZXIpXG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVyKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja2Ryb3Aob3B0aW9uczogQmFja2Ryb3BUcmFpdE9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEJhY2tkcm9wVHJhaXQob3B0aW9ucylcbn1cbiJdfQ==
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Observable } from "rxjs";
|
|
2
|
+
import { FocusService } from "@ngutil/aria";
|
|
3
|
+
import { FloatingTrait } from "./_base";
|
|
4
|
+
export class FocusTrapTrait extends FloatingTrait {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.name = "focus-trap";
|
|
8
|
+
}
|
|
9
|
+
connect(floatingRef) {
|
|
10
|
+
return new Observable(() => {
|
|
11
|
+
const svc = floatingRef.container.injector.get(FocusService);
|
|
12
|
+
const trap = svc.focusTrap(floatingRef.container.nativeElement);
|
|
13
|
+
const originallyFocused = document.activeElement;
|
|
14
|
+
floatingRef.state.on("shown", () => {
|
|
15
|
+
trap.focusInitialElement();
|
|
16
|
+
});
|
|
17
|
+
return () => {
|
|
18
|
+
trap.destroy();
|
|
19
|
+
originallyFocused && svc.focus(originallyFocused, "program");
|
|
20
|
+
};
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function focusTrap() {
|
|
25
|
+
return new FocusTrapTrait();
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdHJhcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Zsb2F0aW5nL3NyYy9mbG9hdGluZy90cmFpdHMvZm9jdXMtdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRWpDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFHM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUV2QyxNQUFNLE9BQU8sY0FBZSxTQUFRLGFBQXNCO0lBQTFEOztRQUNhLFNBQUksR0FBRyxZQUFZLENBQUE7SUFpQmhDLENBQUM7SUFoQlksT0FBTyxDQUFDLFdBQXdCO1FBQ3JDLE9BQU8sSUFBSSxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ3ZCLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQTtZQUM1RCxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUE7WUFDL0QsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQUMsYUFBNEIsQ0FBQTtZQUUvRCxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO2dCQUMvQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQTtZQUM5QixDQUFDLENBQUMsQ0FBQTtZQUVGLE9BQU8sR0FBRyxFQUFFO2dCQUNSLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtnQkFDZCxpQkFBaUIsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxDQUFBO1lBQ2hFLENBQUMsQ0FBQTtRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztDQUNKO0FBRUQsTUFBTSxVQUFVLFNBQVM7SUFDckIsT0FBTyxJQUFJLGNBQWMsRUFBRSxDQUFBO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBGb2N1c1NlcnZpY2UgfSBmcm9tIFwiQG5ndXRpbC9hcmlhXCJcblxuaW1wb3J0IHsgRmxvYXRpbmdSZWYgfSBmcm9tIFwiLi4vZmxvYXRpbmctcmVmXCJcbmltcG9ydCB7IEZsb2F0aW5nVHJhaXQgfSBmcm9tIFwiLi9fYmFzZVwiXG5cbmV4cG9ydCBjbGFzcyBGb2N1c1RyYXBUcmFpdCBleHRlbmRzIEZsb2F0aW5nVHJhaXQ8dW5rbm93bj4ge1xuICAgIG92ZXJyaWRlIG5hbWUgPSBcImZvY3VzLXRyYXBcIlxuICAgIG92ZXJyaWRlIGNvbm5lY3QoZmxvYXRpbmdSZWY6IEZsb2F0aW5nUmVmKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdmMgPSBmbG9hdGluZ1JlZi5jb250YWluZXIuaW5qZWN0b3IuZ2V0KEZvY3VzU2VydmljZSlcbiAgICAgICAgICAgIGNvbnN0IHRyYXAgPSBzdmMuZm9jdXNUcmFwKGZsb2F0aW5nUmVmLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxseUZvY3VzZWQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50XG5cbiAgICAgICAgICAgIGZsb2F0aW5nUmVmLnN0YXRlLm9uKFwic2hvd25cIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyYXAuZm9jdXNJbml0aWFsRWxlbWVudCgpXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyYXAuZGVzdHJveSgpXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxseUZvY3VzZWQgJiYgc3ZjLmZvY3VzKG9yaWdpbmFsbHlGb2N1c2VkLCBcInByb2dyYW1cIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb2N1c1RyYXAoKSB7XG4gICAgcmV0dXJuIG5ldyBGb2N1c1RyYXBUcmFpdCgpXG59XG4iXX0=
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
-
export * from "./
|
|
1
|
+
export * from "./_base";
|
|
2
|
+
export * from "./animation";
|
|
3
|
+
export * from "./backdrop";
|
|
4
|
+
export * from "./focus-trap";
|
|
5
|
+
export * from "./keystroke";
|
|
6
|
+
export * from "./modal";
|
|
2
7
|
export * from "./position-calc";
|
|
3
|
-
|
|
8
|
+
export * from "./position";
|
|
9
|
+
export * from "./style";
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9mbG9hdGluZy9zcmMvZmxvYXRpbmcvdHJhaXRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFBO0FBQ3ZCLGNBQWMsYUFBYSxDQUFBO0FBQzNCLGNBQWMsWUFBWSxDQUFBO0FBQzFCLGNBQWMsY0FBYyxDQUFBO0FBQzVCLGNBQWMsYUFBYSxDQUFBO0FBQzNCLGNBQWMsU0FBUyxDQUFBO0FBQ3ZCLGNBQWMsaUJBQWlCLENBQUE7QUFDL0IsY0FBYyxZQUFZLENBQUE7QUFDMUIsY0FBYyxTQUFTLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9fYmFzZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9hbmltYXRpb25cIlxuZXhwb3J0ICogZnJvbSBcIi4vYmFja2Ryb3BcIlxuZXhwb3J0ICogZnJvbSBcIi4vZm9jdXMtdHJhcFwiXG5leHBvcnQgKiBmcm9tIFwiLi9rZXlzdHJva2VcIlxuZXhwb3J0ICogZnJvbSBcIi4vbW9kYWxcIlxuZXhwb3J0ICogZnJvbSBcIi4vcG9zaXRpb24tY2FsY1wiXG5leHBvcnQgKiBmcm9tIFwiLi9wb3NpdGlvblwiXG5leHBvcnQgKiBmcm9tIFwiLi9zdHlsZVwiXG4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { exhaustMap } from "rxjs";
|
|
2
|
+
import { KeystrokeService } from "@ngutil/aria";
|
|
3
|
+
import { FloatingTrait } from "./_base";
|
|
4
|
+
export class KeystrokeTrait extends FloatingTrait {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.name = "keystroke";
|
|
8
|
+
}
|
|
9
|
+
connect(floatingRef) {
|
|
10
|
+
const ks = floatingRef.container.injector.get(KeystrokeService);
|
|
11
|
+
return ks
|
|
12
|
+
.watch(floatingRef.container.nativeElement, { key: "Escape", state: "up" })
|
|
13
|
+
.pipe(exhaustMap(() => floatingRef.close()));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export function keystroke() {
|
|
17
|
+
return new KeystrokeTrait();
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5c3Ryb2tlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZmxvYXRpbmcvc3JjL2Zsb2F0aW5nL3RyYWl0cy9rZXlzdHJva2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYyxNQUFNLE1BQU0sQ0FBQTtBQUU3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFHL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUV2QyxNQUFNLE9BQU8sY0FBZSxTQUFRLGFBQXNCO0lBQTFEOztRQUNhLFNBQUksR0FBRyxXQUFXLENBQUE7SUFPL0IsQ0FBQztJQU5ZLE9BQU8sQ0FBQyxXQUF3QjtRQUNyQyxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUMvRCxPQUFPLEVBQUU7YUFDSixLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUMxRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDcEQsQ0FBQztDQUNKO0FBRUQsTUFBTSxVQUFVLFNBQVM7SUFDckIsT0FBTyxJQUFJLGNBQWMsRUFBRSxDQUFBO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGhhdXN0TWFwLCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBLZXlzdHJva2VTZXJ2aWNlIH0gZnJvbSBcIkBuZ3V0aWwvYXJpYVwiXG5cbmltcG9ydCB7IEZsb2F0aW5nUmVmIH0gZnJvbSBcIi4uL2Zsb2F0aW5nLXJlZlwiXG5pbXBvcnQgeyBGbG9hdGluZ1RyYWl0IH0gZnJvbSBcIi4vX2Jhc2VcIlxuXG5leHBvcnQgY2xhc3MgS2V5c3Ryb2tlVHJhaXQgZXh0ZW5kcyBGbG9hdGluZ1RyYWl0PHVua25vd24+IHtcbiAgICBvdmVycmlkZSBuYW1lID0gXCJrZXlzdHJva2VcIlxuICAgIG92ZXJyaWRlIGNvbm5lY3QoZmxvYXRpbmdSZWY6IEZsb2F0aW5nUmVmKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgICAgIGNvbnN0IGtzID0gZmxvYXRpbmdSZWYuY29udGFpbmVyLmluamVjdG9yLmdldChLZXlzdHJva2VTZXJ2aWNlKVxuICAgICAgICByZXR1cm4ga3NcbiAgICAgICAgICAgIC53YXRjaChmbG9hdGluZ1JlZi5jb250YWluZXIubmF0aXZlRWxlbWVudCwgeyBrZXk6IFwiRXNjYXBlXCIsIHN0YXRlOiBcInVwXCIgfSlcbiAgICAgICAgICAgIC5waXBlKGV4aGF1c3RNYXAoKCkgPT4gZmxvYXRpbmdSZWYuY2xvc2UoKSkpXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24ga2V5c3Ryb2tlKCkge1xuICAgIHJldHVybiBuZXcgS2V5c3Ryb2tlVHJhaXQoKVxufVxuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { fallAnimation } from "./animation";
|
|
2
|
+
import { backdrop } from "./backdrop";
|
|
3
|
+
import { focusTrap } from "./focus-trap";
|
|
4
|
+
import { keystroke } from "./keystroke";
|
|
5
|
+
import { position } from "./position";
|
|
6
|
+
export function modal(options = {}) {
|
|
7
|
+
return [
|
|
8
|
+
position({
|
|
9
|
+
anchor: {
|
|
10
|
+
ref: "viewport",
|
|
11
|
+
align: "center middle"
|
|
12
|
+
},
|
|
13
|
+
placement: {
|
|
14
|
+
ref: "viewport",
|
|
15
|
+
padding: "16px"
|
|
16
|
+
}
|
|
17
|
+
}),
|
|
18
|
+
backdrop({ type: "solid", color: "rgba(0, 0, 0, .3)", closeOnClick: options.closeOnBackdropClick }),
|
|
19
|
+
focusTrap(),
|
|
20
|
+
keystroke(),
|
|
21
|
+
fallAnimation()
|
|
22
|
+
];
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9mbG9hdGluZy9zcmMvZmxvYXRpbmcvdHJhaXRzL21vZGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQU1yQyxNQUFNLFVBQVUsS0FBSyxDQUFDLFVBQXdCLEVBQUU7SUFDNUMsT0FBTztRQUNILFFBQVEsQ0FBQztZQUNMLE1BQU0sRUFBRTtnQkFDSixHQUFHLEVBQUUsVUFBVTtnQkFDZixLQUFLLEVBQUUsZUFBZTthQUN6QjtZQUNELFNBQVMsRUFBRTtnQkFDUCxHQUFHLEVBQUUsVUFBVTtnQkFDZixPQUFPLEVBQUUsTUFBTTthQUNsQjtTQUNKLENBQUM7UUFDRixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDbkcsU0FBUyxFQUFFO1FBQ1gsU0FBUyxFQUFFO1FBQ1gsYUFBYSxFQUFFO0tBQ2xCLENBQUE7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmFsbEFuaW1hdGlvbiB9IGZyb20gXCIuL2FuaW1hdGlvblwiXG5pbXBvcnQgeyBiYWNrZHJvcCB9IGZyb20gXCIuL2JhY2tkcm9wXCJcbmltcG9ydCB7IGZvY3VzVHJhcCB9IGZyb20gXCIuL2ZvY3VzLXRyYXBcIlxuaW1wb3J0IHsga2V5c3Ryb2tlIH0gZnJvbSBcIi4va2V5c3Ryb2tlXCJcbmltcG9ydCB7IHBvc2l0aW9uIH0gZnJvbSBcIi4vcG9zaXRpb25cIlxuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGFsT3B0aW9ucyB7XG4gICAgY2xvc2VPbkJhY2tkcm9wQ2xpY2s/OiBib29sZWFuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2RhbChvcHRpb25zOiBNb2RhbE9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiBbXG4gICAgICAgIHBvc2l0aW9uKHtcbiAgICAgICAgICAgIGFuY2hvcjoge1xuICAgICAgICAgICAgICAgIHJlZjogXCJ2aWV3cG9ydFwiLFxuICAgICAgICAgICAgICAgIGFsaWduOiBcImNlbnRlciBtaWRkbGVcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBsYWNlbWVudDoge1xuICAgICAgICAgICAgICAgIHJlZjogXCJ2aWV3cG9ydFwiLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IFwiMTZweFwiXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBiYWNrZHJvcCh7IHR5cGU6IFwic29saWRcIiwgY29sb3I6IFwicmdiYSgwLCAwLCAwLCAuMylcIiwgY2xvc2VPbkNsaWNrOiBvcHRpb25zLmNsb3NlT25CYWNrZHJvcENsaWNrIH0pLFxuICAgICAgICBmb2N1c1RyYXAoKSxcbiAgICAgICAga2V5c3Ryb2tlKCksXG4gICAgICAgIGZhbGxBbmltYXRpb24oKVxuICAgIF1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { of } from "rxjs";
|
|
2
|
+
import { FloatingTrait } from "./_base";
|
|
3
|
+
export class StyleTrait extends FloatingTrait {
|
|
4
|
+
constructor(styles) {
|
|
5
|
+
super();
|
|
6
|
+
this.styles = styles;
|
|
7
|
+
this.name = "style";
|
|
8
|
+
}
|
|
9
|
+
connect(floatingRef) {
|
|
10
|
+
Object.assign(floatingRef.container.nativeElement.style, this.styles);
|
|
11
|
+
return of(this.styles);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function style(styles) {
|
|
15
|
+
return new StyleTrait(styles);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9mbG9hdGluZy9zcmMvZmxvYXRpbmcvdHJhaXRzL3N0eWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFHckMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUV2QyxNQUFNLE9BQU8sVUFBVyxTQUFRLGFBQTJDO0lBR3ZFLFlBQXFCLE1BQW9DO1FBQ3JELEtBQUssRUFBRSxDQUFBO1FBRFUsV0FBTSxHQUFOLE1BQU0sQ0FBOEI7UUFGaEQsU0FBSSxHQUFHLE9BQU8sQ0FBQTtJQUl2QixDQUFDO0lBRVEsT0FBTyxDQUFDLFdBQXdCO1FBQ3JDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNyRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDMUIsQ0FBQztDQUNKO0FBRUQsTUFBTSxVQUFVLEtBQUssQ0FBQyxNQUFvQztJQUN0RCxPQUFPLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgRmxvYXRpbmdSZWYgfSBmcm9tIFwiLi4vZmxvYXRpbmctcmVmXCJcbmltcG9ydCB7IEZsb2F0aW5nVHJhaXQgfSBmcm9tIFwiLi9fYmFzZVwiXG5cbmV4cG9ydCBjbGFzcyBTdHlsZVRyYWl0IGV4dGVuZHMgRmxvYXRpbmdUcmFpdDxQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+PiB7XG4gICAgb3ZlcnJpZGUgbmFtZSA9IFwic3R5bGVcIlxuXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgc3R5bGVzOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+KSB7XG4gICAgICAgIHN1cGVyKClcbiAgICB9XG5cbiAgICBvdmVycmlkZSBjb25uZWN0KGZsb2F0aW5nUmVmOiBGbG9hdGluZ1JlZik6IE9ic2VydmFibGU8UGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPj4ge1xuICAgICAgICBPYmplY3QuYXNzaWduKGZsb2F0aW5nUmVmLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLCB0aGlzLnN0eWxlcylcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMuc3R5bGVzKVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0eWxlKHN0eWxlczogUGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPikge1xuICAgIHJldHVybiBuZXcgU3R5bGVUcmFpdChzdHlsZXMpXG59XG4iXX0=
|
|
@@ -1,14 +1,179 @@
|
|
|
1
|
+
import { AnimationBuilder, style as style$1, animate } from '@angular/animations';
|
|
2
|
+
import { Observable, Subject, map, exhaustMap, combineLatest, of, ReplaySubject, filter, shareReplay, takeUntil, EMPTY, merge } from 'rxjs';
|
|
3
|
+
import { animationObservable, CoverService } from '@ngutil/graphics';
|
|
4
|
+
import { Duration, Ease, DimensionWatcher, RectWatcher } from '@ngutil/style';
|
|
5
|
+
import { FocusService, KeystrokeService } from '@ngutil/aria';
|
|
1
6
|
import * as i0 from '@angular/core';
|
|
2
7
|
import { ElementRef, Injector, ComponentFactoryResolver, ViewContainerRef, InjectionToken, inject, Directive, Inject, Optional, Injectable, TemplateRef } from '@angular/core';
|
|
3
|
-
import { Observable, combineLatest, of, ReplaySubject, filter, shareReplay, takeUntil, map, EMPTY, merge } from 'rxjs';
|
|
4
|
-
import { DimensionWatcher, RectWatcher } from '@ngutil/style';
|
|
5
8
|
import { StateChain, toSorted } from '@ngutil/common';
|
|
6
|
-
import { CoverService } from '@ngutil/graphics';
|
|
7
9
|
import { DomPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
|
|
8
10
|
|
|
9
11
|
class FloatingTrait {
|
|
10
12
|
}
|
|
11
13
|
|
|
14
|
+
// https://tympanus.net/Development/ModalWindowEffects/
|
|
15
|
+
const transitionDuration = Duration.FastMs;
|
|
16
|
+
class AnimationTrait extends FloatingTrait {
|
|
17
|
+
constructor(animation) {
|
|
18
|
+
super();
|
|
19
|
+
this.animation = animation;
|
|
20
|
+
this.name = "animation";
|
|
21
|
+
}
|
|
22
|
+
connect(floatingRef) {
|
|
23
|
+
return new Observable((dst) => {
|
|
24
|
+
const builder = floatingRef.container.injector.get(AnimationBuilder);
|
|
25
|
+
const element = floatingRef.container.nativeElement;
|
|
26
|
+
floatingRef.state.on("showing", () => animationObservable({ builder, element, animation: this.animation.show }));
|
|
27
|
+
floatingRef.state.on("disposing", () => animationObservable({ builder, element, animation: this.animation.hide }));
|
|
28
|
+
dst.next();
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const FallAnimation = {
|
|
33
|
+
show: [
|
|
34
|
+
style$1({
|
|
35
|
+
// "perspective:": "1300px",
|
|
36
|
+
transform: "scale(1.5)",
|
|
37
|
+
visibility: "visible",
|
|
38
|
+
opacity: "0"
|
|
39
|
+
}),
|
|
40
|
+
animate(`${transitionDuration}ms ${Ease.Deceleration}`, style$1({
|
|
41
|
+
transform: "scale(1)",
|
|
42
|
+
opacity: "1"
|
|
43
|
+
}))
|
|
44
|
+
],
|
|
45
|
+
hide: [
|
|
46
|
+
animate(`${transitionDuration}ms ${Ease.Deceleration}`, style$1({
|
|
47
|
+
transform: "scale(1.5)",
|
|
48
|
+
visibility: "visible",
|
|
49
|
+
opacity: "0"
|
|
50
|
+
}))
|
|
51
|
+
]
|
|
52
|
+
};
|
|
53
|
+
function fallAnimation() {
|
|
54
|
+
return new AnimationTrait(FallAnimation);
|
|
55
|
+
}
|
|
56
|
+
const FadeAnimation = {
|
|
57
|
+
show: [style$1({ opacity: 0 }), animate(`${transitionDuration}ms ${Ease.Deceleration}`, style$1({ opacity: 1 }))],
|
|
58
|
+
hide: [animate(`${transitionDuration}ms ${Ease.Deceleration}`, style$1({ opacity: 0 }))]
|
|
59
|
+
};
|
|
60
|
+
function fadeAnimation() {
|
|
61
|
+
return new AnimationTrait(FadeAnimation);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
class BackdropState {
|
|
65
|
+
constructor() {
|
|
66
|
+
this.onClick = new Subject();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
class BackdropTrait extends FloatingTrait {
|
|
70
|
+
constructor(options) {
|
|
71
|
+
super();
|
|
72
|
+
this.options = options;
|
|
73
|
+
this.name = "backdrop";
|
|
74
|
+
}
|
|
75
|
+
connect(floatingRef) {
|
|
76
|
+
return new Observable((dest) => {
|
|
77
|
+
const animationBuilder = floatingRef.container.injector.get(AnimationBuilder);
|
|
78
|
+
const options = {
|
|
79
|
+
type: this.options.type,
|
|
80
|
+
under: floatingRef.container,
|
|
81
|
+
color: this.options.color
|
|
82
|
+
};
|
|
83
|
+
if (this.options.type === "crop") {
|
|
84
|
+
;
|
|
85
|
+
options.crop = floatingRef
|
|
86
|
+
.watchTrait("position")
|
|
87
|
+
.pipe(map(position => position.anchor));
|
|
88
|
+
}
|
|
89
|
+
const state = new BackdropState();
|
|
90
|
+
const backdrop = floatingRef.layerSvc.newBackdrop(options);
|
|
91
|
+
const removeOnClick = this.options.closeOnClick
|
|
92
|
+
? this.#installClickHandler(floatingRef, backdrop, state)
|
|
93
|
+
: null;
|
|
94
|
+
const onClickSub = this.options.closeOnClick
|
|
95
|
+
? state.onClick.pipe(exhaustMap(() => floatingRef.close())).subscribe()
|
|
96
|
+
: null;
|
|
97
|
+
backdrop.state.on("showing", () => animationObservable({
|
|
98
|
+
builder: animationBuilder,
|
|
99
|
+
element: backdrop.nativeElement,
|
|
100
|
+
animation: FadeAnimation.show
|
|
101
|
+
}));
|
|
102
|
+
backdrop.state.on("disposing", () => animationObservable({
|
|
103
|
+
builder: animationBuilder,
|
|
104
|
+
element: backdrop.nativeElement,
|
|
105
|
+
animation: FadeAnimation.hide
|
|
106
|
+
}));
|
|
107
|
+
floatingRef.state.on("disposing", () => backdrop.dispose());
|
|
108
|
+
const backdropShowSub = backdrop.show().subscribe();
|
|
109
|
+
dest.next(state);
|
|
110
|
+
return () => {
|
|
111
|
+
removeOnClick && removeOnClick();
|
|
112
|
+
onClickSub?.unsubscribe();
|
|
113
|
+
backdropShowSub.unsubscribe();
|
|
114
|
+
};
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
#installClickHandler(floatingRef, backdrop, state) {
|
|
118
|
+
const handler = (event) => {
|
|
119
|
+
if (event.defaultPrevented) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (event.target === backdrop.nativeElement || backdrop.nativeElement.contains(event.target)) {
|
|
123
|
+
;
|
|
124
|
+
state.onClick.next();
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
document.addEventListener("click", handler);
|
|
128
|
+
return () => {
|
|
129
|
+
document.removeEventListener("click", handler);
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function backdrop(options) {
|
|
134
|
+
return new BackdropTrait(options);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
class FocusTrapTrait extends FloatingTrait {
|
|
138
|
+
constructor() {
|
|
139
|
+
super(...arguments);
|
|
140
|
+
this.name = "focus-trap";
|
|
141
|
+
}
|
|
142
|
+
connect(floatingRef) {
|
|
143
|
+
return new Observable(() => {
|
|
144
|
+
const svc = floatingRef.container.injector.get(FocusService);
|
|
145
|
+
const trap = svc.focusTrap(floatingRef.container.nativeElement);
|
|
146
|
+
const originallyFocused = document.activeElement;
|
|
147
|
+
floatingRef.state.on("shown", () => {
|
|
148
|
+
trap.focusInitialElement();
|
|
149
|
+
});
|
|
150
|
+
return () => {
|
|
151
|
+
trap.destroy();
|
|
152
|
+
originallyFocused && svc.focus(originallyFocused, "program");
|
|
153
|
+
};
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
function focusTrap() {
|
|
158
|
+
return new FocusTrapTrait();
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
class KeystrokeTrait extends FloatingTrait {
|
|
162
|
+
constructor() {
|
|
163
|
+
super(...arguments);
|
|
164
|
+
this.name = "keystroke";
|
|
165
|
+
}
|
|
166
|
+
connect(floatingRef) {
|
|
167
|
+
const ks = floatingRef.container.injector.get(KeystrokeService);
|
|
168
|
+
return ks
|
|
169
|
+
.watch(floatingRef.container.nativeElement, { key: "Escape", state: "up" })
|
|
170
|
+
.pipe(exhaustMap(() => floatingRef.close()));
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
function keystroke() {
|
|
174
|
+
return new KeystrokeTrait();
|
|
175
|
+
}
|
|
176
|
+
|
|
12
177
|
function computePosition({ floating, anchor, placement, options }) {
|
|
13
178
|
// TODO: jelenleg csak center van
|
|
14
179
|
const maxWidth = placement.width;
|
|
@@ -92,6 +257,40 @@ class FloatingPosition {
|
|
|
92
257
|
}
|
|
93
258
|
}
|
|
94
259
|
|
|
260
|
+
function modal(options = {}) {
|
|
261
|
+
return [
|
|
262
|
+
position({
|
|
263
|
+
anchor: {
|
|
264
|
+
ref: "viewport",
|
|
265
|
+
align: "center middle"
|
|
266
|
+
},
|
|
267
|
+
placement: {
|
|
268
|
+
ref: "viewport",
|
|
269
|
+
padding: "16px"
|
|
270
|
+
}
|
|
271
|
+
}),
|
|
272
|
+
backdrop({ type: "solid", color: "rgba(0, 0, 0, .3)", closeOnClick: options.closeOnBackdropClick }),
|
|
273
|
+
focusTrap(),
|
|
274
|
+
keystroke(),
|
|
275
|
+
fallAnimation()
|
|
276
|
+
];
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
class StyleTrait extends FloatingTrait {
|
|
280
|
+
constructor(styles) {
|
|
281
|
+
super();
|
|
282
|
+
this.styles = styles;
|
|
283
|
+
this.name = "style";
|
|
284
|
+
}
|
|
285
|
+
connect(floatingRef) {
|
|
286
|
+
Object.assign(floatingRef.container.nativeElement.style, this.styles);
|
|
287
|
+
return of(this.styles);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
function style(styles) {
|
|
291
|
+
return new StyleTrait(styles);
|
|
292
|
+
}
|
|
293
|
+
|
|
95
294
|
// TODO: disposing, disposed
|
|
96
295
|
class ChildRef extends ElementRef {
|
|
97
296
|
/**
|
|
@@ -411,6 +610,7 @@ class FloatingRef {
|
|
|
411
610
|
this.#traits = {};
|
|
412
611
|
this.#untilCleanup = this.state.current$.pipe(filter(state => state === "cleanup"), shareReplay(1));
|
|
413
612
|
this.#untilDisposed = this.state.current$.pipe(filter(state => state === "cleanup"), shareReplay(1));
|
|
613
|
+
container.nativeElement.style.overflow = "hidden";
|
|
414
614
|
this.#traits = traits;
|
|
415
615
|
this.traitState$ = this.#traitState().pipe(shareReplay(1));
|
|
416
616
|
const sub = this.state.current$.subscribe(state => {
|
|
@@ -465,9 +665,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
|
|
|
465
665
|
|
|
466
666
|
// export type FloatingTrait = (...args: any[]) => (traits: object) => Observable<object>
|
|
467
667
|
class FloatingFactory {
|
|
668
|
+
#providers;
|
|
468
669
|
constructor(layer) {
|
|
469
670
|
this.layer = layer;
|
|
470
671
|
this.traits = {};
|
|
672
|
+
this.#providers = [];
|
|
471
673
|
this.subscribe = (...args) => this.show().subscribe(...args);
|
|
472
674
|
}
|
|
473
675
|
trait(...traits) {
|
|
@@ -516,13 +718,23 @@ class FloatingFactory {
|
|
|
516
718
|
...providers,
|
|
517
719
|
{ provide: TRAITS, useValue: this.traits },
|
|
518
720
|
{ provide: LayerService, useValue: this.layer },
|
|
519
|
-
FloatingRef
|
|
721
|
+
FloatingRef,
|
|
722
|
+
...this.#providers
|
|
520
723
|
];
|
|
521
724
|
return providers;
|
|
522
725
|
}
|
|
523
726
|
position(options) {
|
|
524
727
|
return this.trait(position(options));
|
|
525
728
|
}
|
|
729
|
+
provides(providers) {
|
|
730
|
+
if (Array.isArray(providers)) {
|
|
731
|
+
this.#providers = [...this.#providers, ...providers];
|
|
732
|
+
}
|
|
733
|
+
else {
|
|
734
|
+
this.#providers = [...this.#providers, providers];
|
|
735
|
+
}
|
|
736
|
+
return this;
|
|
737
|
+
}
|
|
526
738
|
}
|
|
527
739
|
class FloatingTemplateFactory extends FloatingFactory {
|
|
528
740
|
constructor(layer, tpl, options) {
|
|
@@ -584,5 +796,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
|
|
|
584
796
|
* Generated bundle index. Do not edit.
|
|
585
797
|
*/
|
|
586
798
|
|
|
587
|
-
export { BackdropRef, ChildRef, ComponentPortalRef, FloatingAnchorRef, FloatingComponentFactory, FloatingFactory, FloatingPlacementRef, FloatingPosition, FloatingRef, FloatingService, FloatingTemplateFactory, IndividualLayer, LAYER_ZINDEX_START, LayerService, PortalRef, PositionTrait, RootLayer, TRAITS, TemplatePortalRef, computePosition, position };
|
|
799
|
+
export { AnimationTrait, BackdropRef, BackdropState, BackdropTrait, ChildRef, ComponentPortalRef, FadeAnimation, FallAnimation, FloatingAnchorRef, FloatingComponentFactory, FloatingFactory, FloatingPlacementRef, FloatingPosition, FloatingRef, FloatingService, FloatingTemplateFactory, FloatingTrait, FocusTrapTrait, IndividualLayer, KeystrokeTrait, LAYER_ZINDEX_START, LayerService, PortalRef, PositionTrait, RootLayer, StyleTrait, TRAITS, TemplatePortalRef, backdrop, computePosition, fadeAnimation, fallAnimation, focusTrap, keystroke, modal, position, style };
|
|
588
800
|
//# sourceMappingURL=ngutil-floating.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngutil-floating.mjs","sources":["../../../../packages/floating/src/floating/traits/_base.ts","../../../../packages/floating/src/floating/traits/position-calc.ts","../../../../packages/floating/src/floating/traits/position.ts","../../../../packages/floating/src/layer/child-ref.ts","../../../../packages/floating/src/layer/container-ref.ts","../../../../packages/floating/src/layer/backdrop-ref.ts","../../../../packages/floating/src/layer/portal-ref.ts","../../../../packages/floating/src/layer/layer.service.ts","../../../../packages/floating/src/floating/floating-ref.ts","../../../../packages/floating/src/floating/floating.service.ts","../../../../packages/floating/src/ngutil-floating.ts"],"sourcesContent":["import { Observable } from \"rxjs\"\n\nimport type { FloatingRef } from \"../floating-ref\"\n\nexport abstract class FloatingTrait<T = any> {\n abstract readonly name: string\n\n abstract connect(floatingRef: FloatingRef<any>): Observable<T>\n}\n","import { Alignment, Dimension, Position, Rect } from \"@ngutil/style\"\n\nimport type { FloatingPositionOptions } from \"./position\"\n\nexport interface ComputePositionInput {\n floating: Dimension\n anchor: Rect\n placement: Rect\n options: FloatingPositionOptions\n}\n\nexport interface ComputedFloating {\n current: Rect\n min: Dimension\n max: Dimension\n}\n\nexport interface ComputedAlignment {\n align: Alignment\n postion: Position\n}\n\nexport interface ComputedAnchor {\n floating: ComputedAlignment\n anchor: ComputedAlignment\n}\n\nexport interface ComputedPositon {\n floating: ComputedFloating\n anchor?: ComputedAnchor\n}\n\nexport function computePosition({\n floating,\n anchor,\n placement,\n options\n}: ComputePositionInput): ComputedPositon | undefined {\n // TODO: jelenleg csak center van\n\n const maxWidth = placement.width\n const maxHeight = placement.height\n const cf: ComputedFloating = {\n current: {\n x: (maxWidth - floating.width) / 2,\n y: (maxHeight - floating.height) / 2,\n width: Math.min(maxHeight, floating.width),\n height: Math.min(maxHeight, floating.height)\n },\n max: { width: maxWidth, height: maxHeight },\n min: { width: 0, height: 0 }\n }\n\n return { floating: cf }\n}\n","import { ElementRef } from \"@angular/core\"\n\nimport { combineLatest, Observable, Subscriber } from \"rxjs\"\n\nimport { ElementInput } from \"@ngutil/common\"\nimport { AlignmentInput, Dimension, DimensionWatcher, Rect, RectWatcher, SidesInput } from \"@ngutil/style\"\n\nimport { LayerService } from \"../../layer/layer.service\"\nimport { FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\nimport { ComputedPositon, computePosition } from \"./position-calc\"\n\nexport type FloatingTargetElementRef = ElementInput | Window | \"layer\" | \"viewport\"\n\nexport interface FloatingAlign {\n align?: AlignmentInput\n}\n\nexport interface FloatingAnchorPosition extends FloatingAlign {\n margin?: SidesInput\n}\n\nexport interface FloatingAnchor extends FloatingAnchorPosition {\n ref: FloatingTargetElementRef\n}\n\nexport class FloatingAnchorRef<T extends Node> extends ElementRef<T> {}\n\nexport interface FloatingContentPosition extends FloatingAlign {\n margin?: SidesInput\n}\n\nexport interface FloatingPlacementPosition {\n padding?: SidesInput\n}\n\nexport interface FloatingPlacement extends FloatingPlacementPosition {\n ref: FloatingTargetElementRef\n}\n\nexport class FloatingPlacementRef<T extends LayerService[\"root\"][\"nativeElement\"]> extends ElementRef<T> {}\n\nexport interface FloatingPositionOptions {\n anchor?: FloatingAnchor\n content?: FloatingContentPosition\n placement?: FloatingPlacement\n}\n\ntype Watches = {\n floating: Observable<Dimension>\n anchor: Observable<Rect>\n placement: Observable<Rect>\n}\n\nexport class PositionTrait extends FloatingTrait<FloatingPosition> {\n name = \"position\"\n\n constructor(readonly options: FloatingPositionOptions) {\n super()\n\n if (!options.anchor) {\n options.anchor = { ref: \"viewport\", align: \"center middle\" }\n }\n\n if (!options.placement) {\n options.placement = { ref: \"viewport\" }\n }\n }\n\n connect(floatingRef: FloatingRef<any>): Observable<FloatingPosition> {\n return new Observable((dest: Subscriber<FloatingPosition>) => {\n const injector = floatingRef.container.injector\n const dimWatcher = injector.get(DimensionWatcher)\n const rectWatcher = injector.get(RectWatcher)\n\n const watches: Watches = {\n floating: dimWatcher.watch(floatingRef.container, \"border-box\"),\n anchor: refWatcher(rectWatcher, this.options.anchor!.ref, floatingRef),\n placement: refWatcher(rectWatcher, this.options.placement!.ref, floatingRef)\n }\n\n return combineLatest(watches).subscribe(({ floating, anchor, placement }) => {\n const res = new FloatingPosition(this.options, floating, anchor, placement)\n res.apply(floatingRef)\n dest.next(res)\n })\n })\n }\n}\n\nfunction refWatcher(rectWatcher: RectWatcher, ref: FloatingTargetElementRef, floatingRef: FloatingRef<any>) {\n if (ref === \"layer\") {\n return rectWatcher.watch(floatingRef.layerSvc.root, \"border-box\")\n } else if (ref === \"viewport\" || ref instanceof Window) {\n return rectWatcher.watch(window, \"border-box\")\n } else {\n return rectWatcher.watch(ref, \"border-box\")\n }\n}\n\nexport function position(options: FloatingPositionOptions) {\n return new PositionTrait(options)\n}\n\nexport class FloatingPosition {\n readonly computed?: ComputedPositon\n constructor(\n readonly options: FloatingPositionOptions,\n readonly floating: Dimension,\n readonly anchor: Rect,\n readonly placement: Rect\n ) {\n this.computed = computePosition({ floating, anchor, placement, options })\n }\n\n apply(floatingRef: FloatingRef) {\n if (this.computed == null) {\n return\n }\n\n const floatingEl = floatingRef.container.nativeElement\n floatingEl.style.left = `${this.computed.floating.current.x}px`\n floatingEl.style.top = `${this.computed.floating.current.y}px`\n }\n}\n","import { ElementRef } from \"@angular/core\"\n\nimport { Observable, of } from \"rxjs\"\n\nimport { StateChain } from \"@ngutil/common\"\n\nexport type DisposeHandler<T> = (ref: T) => Observable<void>\n\n// TODO: disposing, disposed\n\nexport abstract class ChildRef<T extends HTMLElement = HTMLElement> extends ElementRef<T> {\n readonly state = new StateChain({\n showing: {},\n shown: {},\n disposing: { cancellable: false },\n disposed: { cancellable: false, order: \"sequential\" }\n })\n\n /**\n * @internal\n */\n set zIndex(val: number) {\n if (this._zIndex !== val) {\n this._zIndex = val\n this.nativeElement.style.zIndex = String(val)\n }\n }\n get zIndex(): number {\n return this._zIndex\n }\n private _zIndex: number = -1\n\n constructor(nativeElement: T) {\n super(nativeElement)\n this.state.on(\"disposed\", () => this.destroy())\n\n // this.state.current$.subscribe(state => {\n // console.log(this, state)\n // })\n }\n\n dispose() {\n if (this.state == null) {\n return of(null)\n }\n return this.state.run([\"disposing\", \"disposed\"])\n }\n\n protected destroy() {\n this.nativeElement.parentElement?.removeChild(this.nativeElement)\n this.state.destroy()\n delete (this as any).state\n }\n}\n","import { Injector, Provider } from \"@angular/core\"\n\nimport { ChildRef } from \"./child-ref\"\n\nexport interface ContainerOptions {\n alwaysOnTop?: boolean\n elevation?: number\n classes?: string[]\n attributes?: Record<string, string>\n injector?: Injector\n providers?: Provider[]\n}\n\nexport class ContainerRef extends ChildRef {\n public readonly injector: Injector\n\n protected injectorName = \"ContainerRef\"\n\n constructor(public readonly options: ContainerOptions) {\n super(createElement(options))\n\n const providers = options.providers || []\n this.injector = Injector.create({\n providers: [...this.getProviders(), ...providers],\n parent: options.injector,\n name: this.injectorName\n })\n\n this.state.on(\"disposed\", () => {\n delete (this as any).options\n delete (this as any).injector\n })\n }\n\n protected getProviders(): Provider[] {\n return [\n { provide: ChildRef, useValue: this },\n { provide: ContainerRef, useValue: this }\n ]\n }\n}\n\nfunction createElement(options: ContainerOptions): HTMLDivElement {\n const div = document.createElement(\"div\")\n div.style.position = \"absolute\"\n div.style.top = \"0\"\n div.style.left = \"0\"\n div.style.width = \"max-content\"\n\n if (options.classes) {\n div.classList.add(...options.classes)\n }\n\n return div\n}\n","import { Injector } from \"@angular/core\"\n\nimport { Subscription } from \"rxjs\"\n\nimport { CoverService } from \"@ngutil/graphics\"\nimport { CoverOptions, CropCoverOptions } from \"@ngutil/graphics\"\n\nimport { ChildRef } from \"./child-ref\"\n\nexport interface BasicBackdropOptions {\n under: ChildRef\n color: CoverOptions[\"color\"]\n}\n\nexport interface SolidBackdropOptions extends BasicBackdropOptions {\n type: \"solid\"\n}\n\nexport interface CropBackdropOptions extends BasicBackdropOptions {\n type: \"crop\"\n crop: CropCoverOptions[\"crop\"]\n}\n\nexport type BackdropOptions = SolidBackdropOptions | CropBackdropOptions\n\nexport class BackdropRef extends ChildRef {\n static from(cover: CoverService, injector: Injector, options: BackdropOptions): BackdropRef {\n const ref = new BackdropRef(document.createElement(\"div\"), cover, injector, options)\n // TODO: kérdéses\n // options.under.state.control(ref.state)\n return ref\n }\n\n readonly #coverSub?: Subscription\n readonly under: ChildRef\n readonly group?: string\n\n set visible(visible: boolean) {\n if (this.#visible !== visible) {\n this.#visible = visible\n this.nativeElement.style.visibility = visible ? \"visible\" : \"hidden\"\n }\n }\n\n get visible(): boolean {\n return this.#visible\n }\n #visible: boolean = true\n\n constructor(\n nativeElement: HTMLElement,\n readonly coverSvc: CoverService,\n readonly injector: Injector,\n readonly options: BackdropOptions\n ) {\n super(nativeElement)\n nativeElement.style.position = \"absolute\"\n nativeElement.style.top =\n nativeElement.style.right =\n nativeElement.style.bottom =\n nativeElement.style.left =\n \"0px\"\n\n this.under = options.under\n\n if (options.type === \"solid\") {\n this.#coverSub = this.coverSvc.solid({ container: nativeElement, color: options.color }).subscribe()\n this.group = `${options.color === \"transparent\" ? \"transparent\" : \"solid\"}`\n } else if (options.type === \"crop\") {\n this.#coverSub = this.coverSvc\n .crop({ container: nativeElement, color: options.color, crop: options.crop })\n .subscribe()\n }\n }\n\n show() {\n return this.state.run([\"showing\", \"shown\"])\n }\n\n protected override destroy(): void {\n this.#coverSub?.unsubscribe()\n super.destroy()\n }\n}\n","import { ComponentPortal, ComponentType, DomPortalOutlet, PortalOutlet, TemplatePortal } from \"@angular/cdk/portal\"\nimport { ComponentFactoryResolver, Provider, TemplateRef, ViewContainerRef } from \"@angular/core\"\n\nimport { ContainerOptions, ContainerRef } from \"./container-ref\"\n\nexport interface PortalOptions extends ContainerOptions {}\n\nexport abstract class PortalRef extends ContainerRef {\n protected override injectorName = \"PortalRef\"\n protected outlet: PortalOutlet\n\n constructor(options: PortalOptions) {\n super(options)\n\n this.outlet = new DomPortalOutlet(this.nativeElement, undefined, undefined, this.injector)\n this.state.on(\"disposed\", () => {\n this.outlet.dispose()\n delete (this as any).outlet\n })\n }\n\n protected override getProviders(): Provider[] {\n return [...super.getProviders(), { provide: PortalRef, useValue: this }]\n }\n}\n\nexport interface ComponentPortalOptions<T = any> extends PortalOptions {\n viewContainerRef?: ViewContainerRef\n}\n\nexport class ComponentPortalRef<T = any> extends PortalRef {\n protected override injectorName = \"ComponentPortalRef\"\n protected readonly portal: ComponentPortal<T>\n\n constructor(\n public readonly component: ComponentType<T>,\n options: ComponentPortalOptions<T>\n ) {\n super(options)\n\n const resolver = this.injector.get(ComponentFactoryResolver)\n const vcr = this.injector.get(ViewContainerRef)\n\n this.portal = new ComponentPortal(component, options.viewContainerRef || vcr, this.injector, resolver)\n this.outlet.attach(this.portal)\n\n this.state.on(\"disposed\", () => {\n this.portal.isAttached && this.portal.detach()\n delete (this as any).portal\n })\n }\n\n protected override getProviders(): Provider[] {\n return [...super.getProviders(), { provide: ComponentPortalRef, useValue: this }]\n }\n}\n\nexport interface TemplatePortalOptions<T = any> extends PortalOptions {\n viewContainerRef: ViewContainerRef\n context?: T\n}\n\nexport class TemplatePortalRef<T = any> extends PortalRef {\n protected override injectorName = \"TemplatePortalRef\"\n protected readonly portal: TemplatePortal<T>\n\n constructor(\n public readonly template: TemplateRef<T>,\n options: TemplatePortalOptions<T>\n ) {\n super(options)\n this.portal = new TemplatePortal(template, options.viewContainerRef, options.context)\n this.outlet.attach(this.portal)\n\n this.state.on(\"disposed\", () => {\n this.portal.isAttached && this.portal.detach()\n delete (this as any).portal\n })\n }\n\n protected override getProviders(): Provider[] {\n return [...super.getProviders(), { provide: TemplatePortalRef, useValue: this }]\n }\n}\n","import { ComponentType } from \"@angular/cdk/portal\"\nimport { Directive, ElementRef, inject, Inject, InjectionToken, Injector, Optional, TemplateRef } from \"@angular/core\"\n\nimport { toSorted } from \"@ngutil/common\"\nimport { CoverService } from \"@ngutil/graphics\"\n\nimport { BackdropOptions, BackdropRef } from \"./backdrop-ref\"\nimport { ChildRef } from \"./child-ref\"\nimport { ContainerOptions, ContainerRef } from \"./container-ref\"\nimport { ComponentPortalOptions, ComponentPortalRef, TemplatePortalOptions, TemplatePortalRef } from \"./portal-ref\"\n\nexport const LAYER_ZINDEX_START = new InjectionToken<number>(\"LAYER_ZINDEX_START\")\n\n// TODO: ELEVATION_STEP config with injection\n// TODO: ELEVATION_START config with injection\n\n@Directive()\nexport abstract class LayerService {\n readonly #cover = inject(CoverService)\n readonly #injector = inject(Injector)\n\n readonly root = inject<ElementRef<HTMLElement>>(ElementRef)\n // readonly #el = this.root.nativeElement\n\n readonly #children: Array<ChildRef> = []\n readonly #zIndexStart: number\n // readonly #backdrop: Map<>\n\n constructor(@Inject(LAYER_ZINDEX_START) @Optional() zIndexStart?: number) {\n if (zIndexStart != null) {\n this.#zIndexStart = zIndexStart\n } else {\n this.#zIndexStart = 10000\n }\n }\n\n newComponentPortal<T>(component: ComponentType<T>, options: ComponentPortalOptions<T>): ComponentPortalRef<T> {\n if (!options.injector) {\n options = { ...options, injector: this.#injector }\n }\n return this.append(new ComponentPortalRef(component, options))\n }\n\n newTemplatePortal<T>(tpl: TemplateRef<T>, options: TemplatePortalOptions<T>): TemplatePortalRef<T> {\n if (!options.injector) {\n options = { ...options, injector: this.#injector }\n }\n return this.append(new TemplatePortalRef(tpl, options))\n }\n\n newContainer(options: ContainerOptions): ContainerRef {\n if (!options.injector) {\n options = { ...options, injector: this.#injector }\n }\n return this.append(new ContainerRef(options))\n }\n\n newBackdrop(options: BackdropOptions): BackdropRef {\n return this.append(BackdropRef.from(this.#cover, this.#injector, options))\n }\n\n append<T extends ChildRef>(ref: T): T {\n if (!this.#children.includes(ref)) {\n this.#children.push(ref)\n this.#update()\n this.root.nativeElement.appendChild(ref.nativeElement)\n ref.state.on(\"disposed\", () => this.#remove(ref))\n }\n return ref\n }\n\n #remove(ref: ChildRef) {\n const idx = this.#children.indexOf(ref)\n if (idx > -1) {\n this.#children.splice(idx, 1)\n this.#update()\n }\n }\n\n #update() {\n const children = toSorted(this.#children, sortByBackdrop)\n\n let zIndex = this.#zIndexStart\n for (const child of children) {\n child.zIndex = zIndex\n zIndex += 1\n }\n\n children.sort(sortByZIndexDesc)\n\n let hasBackdrop = false\n for (const child of children) {\n if (child instanceof BackdropRef && child.options.type === \"solid\") {\n child.visible = !hasBackdrop\n hasBackdrop = true\n }\n }\n }\n}\n\n@Directive({\n selector: \"body\",\n exportAs: \"nuRootLayer\",\n standalone: true,\n providers: [{ provide: LayerService, useExisting: RootLayer }]\n})\nexport class RootLayer extends LayerService {}\n\n@Directive({\n standalone: true,\n providers: [{ provide: LayerService, useExisting: IndividualLayer }]\n})\nexport class IndividualLayer extends LayerService {}\n\nfunction sortByBackdrop(a: ChildRef, b: ChildRef) {\n if (a instanceof BackdropRef && a.under === b) {\n return -1\n } else if (b instanceof BackdropRef && b.under === a) {\n return 1\n }\n return 0\n}\n\nfunction sortByZIndexDesc(a: ChildRef, b: ChildRef) {\n return b.zIndex - a.zIndex\n}\n","import { Inject, Injectable, InjectionToken } from \"@angular/core\"\n\nimport { EMPTY, filter, map, merge, Observable, ReplaySubject, shareReplay, takeUntil } from \"rxjs\"\n\nimport { StateChain } from \"@ngutil/common\"\n\nimport { ContainerRef } from \"../layer/container-ref\"\nimport { LayerService } from \"../layer/layer.service\"\nimport { FloatingTrait } from \"./traits/_base\"\n\nexport type Traits = { [key: string]: FloatingTrait }\n\nexport const TRAITS = new InjectionToken<Traits>(\"TRAITS\")\n\nexport interface FloatingChannel {\n type: string\n data?: any\n}\n\nexport interface FloatingTraitEvent {\n name: string\n data: object\n}\n\n@Injectable()\nexport class FloatingRef<C extends FloatingChannel = FloatingChannel, T extends HTMLElement = HTMLElement> {\n readonly channel = new ReplaySubject<C>(1)\n\n readonly state = new StateChain({\n init: {},\n showing: {},\n shown: {},\n closing: { cancellable: false, order: \"sequential\" },\n disposing: { cancellable: false },\n disposed: { cancellable: false, order: \"sequential\" },\n cleanup: { cancellable: false, order: \"sequential\" }\n })\n\n readonly #traits: Traits = {}\n readonly traitState$: Observable<FloatingTraitEvent>\n\n readonly #untilCleanup = this.state.current$.pipe(\n filter(state => state === \"cleanup\"),\n shareReplay(1)\n )\n\n readonly #untilDisposed = this.state.current$.pipe(\n filter(state => state === \"cleanup\"),\n shareReplay(1)\n )\n\n constructor(\n readonly layerSvc: LayerService,\n readonly container: ContainerRef,\n @Inject(TRAITS) traits: Traits\n ) {\n this.#traits = traits\n this.traitState$ = this.#traitState().pipe(shareReplay(1))\n\n const sub = this.state.current$.subscribe(state => {\n this.channel.next({ type: state } as any)\n })\n this.state.on(\"init\", () => {\n this.traitState$.pipe(takeUntil(this.#untilCleanup)).subscribe()\n })\n this.state.on(\"disposed\", () => {\n sub.unsubscribe()\n })\n this.state.control(container.state)\n }\n\n show() {\n return this.state.run([\"init\", \"showing\", \"shown\"])\n }\n\n hide() {\n return this.state.run([\"disposing\", \"disposed\", \"cleanup\"])\n }\n\n close() {\n return this.state.run([\"closing\", \"disposing\", \"disposed\", \"cleanup\"])\n }\n\n watchTrait<T>(name: string): Observable<T> {\n return this.traitState$.pipe(\n takeUntil(this.#untilDisposed),\n filter(event => event.name === name),\n map(event => event.data as T),\n shareReplay(1)\n )\n }\n\n #traitState(): Observable<FloatingTraitEvent> {\n const src = []\n\n for (const [k, v] of Object.entries(this.#traits)) {\n src.push(\n v.connect(this).pipe(\n takeUntil(this.#untilCleanup),\n map(result => {\n return { name: k, data: result }\n })\n )\n )\n }\n\n if (src.length === 0) {\n return EMPTY\n } else if (src.length === 1) {\n return src[0]\n } else {\n return merge(...src)\n }\n }\n}\n","import { ComponentType } from \"@angular/cdk/portal\"\nimport { inject, Injectable, Provider, TemplateRef } from \"@angular/core\"\n\nimport { Observable, Subscriber } from \"rxjs\"\n\nimport { LayerService } from \"../layer/layer.service\"\nimport { ComponentPortalOptions, TemplatePortalOptions } from \"../layer/portal-ref\"\nimport { FloatingChannel, FloatingRef, TRAITS } from \"./floating-ref\"\nimport { type FloatingTrait } from \"./traits/_base\"\nimport { type FloatingPositionOptions, position } from \"./traits/position\"\n\n// export type FloatingTrait = (...args: any[]) => (traits: object) => Observable<object>\n\nexport abstract class FloatingFactory {\n protected readonly traits: { [key: string]: FloatingTrait } = {}\n\n constructor(protected readonly layer: LayerService) {}\n\n trait(...traits: Array<FloatingTrait | FloatingTrait[]>) {\n for (const trait of traits) {\n if (Array.isArray(trait)) {\n this.trait(...trait)\n } else {\n this.traits[trait.name] = trait\n }\n }\n\n return this\n }\n\n show(): Observable<FloatingChannel> {\n return new Observable((dest: Subscriber<FloatingChannel>) => {\n let disposed = false\n\n const ref = this.create()\n const channelSub = ref.channel.subscribe(event => {\n dest.next(event)\n if (event.type === \"disposed\") {\n disposed = true\n dest.complete()\n }\n })\n\n const showSub = ref.show().subscribe()\n\n return () => {\n showSub.unsubscribe()\n channelSub.unsubscribe()\n if (!disposed) {\n const dispose$ = ref.channel.subscribe(event => {\n if (event.type === \"disposed\") {\n hideSub.unsubscribe()\n dispose$.unsubscribe()\n }\n })\n const hideSub = ref.hide().subscribe()\n }\n }\n })\n }\n\n subscribe = (...args: any[]) => this.show().subscribe(...args)\n\n protected providers(providers?: Provider[]): Provider[] {\n if (!providers) {\n providers = []\n }\n\n providers = [\n ...providers,\n { provide: TRAITS, useValue: this.traits },\n { provide: LayerService, useValue: this.layer },\n FloatingRef\n ]\n\n return providers\n }\n\n protected abstract create(): FloatingRef<FloatingChannel>\n\n position(options: FloatingPositionOptions) {\n return this.trait(position(options))\n }\n}\n\nexport class FloatingTemplateFactory<T extends object> extends FloatingFactory {\n constructor(\n layer: LayerService,\n public readonly tpl: TemplateRef<T>,\n public readonly options: TemplatePortalOptions<T>\n ) {\n super(layer)\n }\n\n protected override create(): FloatingRef<FloatingChannel> {\n const options: TemplatePortalOptions<T> = { ...this.options }\n options.providers = this.providers(options.providers)\n const container = this.layer.newTemplatePortal(this.tpl, options)\n return container.injector.get(FloatingRef)\n }\n}\n\nexport class FloatingComponentFactory<T extends ComponentType<any>> extends FloatingFactory {\n constructor(\n layer: LayerService,\n public readonly component: T,\n public readonly options: ComponentPortalOptions<T>\n ) {\n super(layer)\n }\n\n protected override create(): FloatingRef<FloatingChannel> {\n const options: ComponentPortalOptions<T> = { ...this.options }\n options.providers = this.providers(options.providers)\n const container = this.layer.newComponentPortal(this.component, options)\n return container.injector.get(FloatingRef)\n }\n}\n\n/**\n * @example\n * ```typescript\n * class SomeComponent {}\n *\n * class SomeList {\n * readonly floating = inject(FloatingService)\n *\n * showComponent() {\n * this.floating.from(SomeComponent).traits(position(), backdrop()).subscribe()\n * }\n * ```\n */\n@Injectable()\nexport class FloatingService {\n readonly #layer = inject(LayerService)\n // readonly parent = inject(FloatingRef, { skipSelf: true, optional: true })\n\n from<T extends ComponentType<any>>(component: T, opts?: ComponentPortalOptions<T>): FloatingComponentFactory<T>\n\n from<T extends object>(tpl: TemplateRef<T>, opts?: TemplatePortalOptions<T>): FloatingTemplateFactory<T>\n\n from<T>(value: ComponentType<T> | TemplateRef<T>, opts: any): FloatingFactory {\n if (value instanceof TemplateRef) {\n return new FloatingTemplateFactory(this.#layer, value as any, opts)\n } else {\n return new FloatingComponentFactory(this.#layer, value as any, opts)\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngutil-floating.mjs","sources":["../../../../packages/floating/src/floating/traits/_base.ts","../../../../packages/floating/src/floating/traits/animation.ts","../../../../packages/floating/src/floating/traits/backdrop.ts","../../../../packages/floating/src/floating/traits/focus-trap.ts","../../../../packages/floating/src/floating/traits/keystroke.ts","../../../../packages/floating/src/floating/traits/position-calc.ts","../../../../packages/floating/src/floating/traits/position.ts","../../../../packages/floating/src/floating/traits/modal.ts","../../../../packages/floating/src/floating/traits/style.ts","../../../../packages/floating/src/layer/child-ref.ts","../../../../packages/floating/src/layer/container-ref.ts","../../../../packages/floating/src/layer/backdrop-ref.ts","../../../../packages/floating/src/layer/portal-ref.ts","../../../../packages/floating/src/layer/layer.service.ts","../../../../packages/floating/src/floating/floating-ref.ts","../../../../packages/floating/src/floating/floating.service.ts","../../../../packages/floating/src/ngutil-floating.ts"],"sourcesContent":["import { Observable } from \"rxjs\"\n\nimport type { FloatingRef } from \"../floating-ref\"\n\nexport abstract class FloatingTrait<T = any> {\n abstract readonly name: string\n\n abstract connect(floatingRef: FloatingRef<any>): Observable<T>\n}\n","import { animate, AnimationBuilder, AnimationMetadata, style } from \"@angular/animations\"\n\nimport { Observable, Subscriber } from \"rxjs\"\n\nimport { animationObservable } from \"@ngutil/graphics\"\nimport { Duration, Ease } from \"@ngutil/style\"\n\nimport { FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\n\nexport type AnimationSet = { show: AnimationMetadata[]; hide: AnimationMetadata[] }\n\n// https://tympanus.net/Development/ModalWindowEffects/\n\nconst transitionDuration = Duration.FastMs\n\nexport class AnimationTrait extends FloatingTrait<unknown> {\n override name = \"animation\"\n\n constructor(readonly animation: AnimationSet) {\n super()\n }\n\n override connect(floatingRef: FloatingRef): Observable<unknown> {\n return new Observable((dst: Subscriber<unknown>) => {\n const builder = floatingRef.container.injector.get(AnimationBuilder)\n const element = floatingRef.container.nativeElement\n floatingRef.state.on(\"showing\", () =>\n animationObservable({ builder, element, animation: this.animation.show })\n )\n floatingRef.state.on(\"disposing\", () =>\n animationObservable({ builder, element, animation: this.animation.hide })\n )\n dst.next()\n })\n }\n}\n\nexport const FallAnimation: AnimationSet = {\n show: [\n style({\n // \"perspective:\": \"1300px\",\n transform: \"scale(1.5)\",\n visibility: \"visible\",\n opacity: \"0\"\n }),\n animate(\n `${transitionDuration}ms ${Ease.Deceleration}`,\n style({\n transform: \"scale(1)\",\n opacity: \"1\"\n })\n )\n ],\n hide: [\n animate(\n `${transitionDuration}ms ${Ease.Deceleration}`,\n style({\n transform: \"scale(1.5)\",\n visibility: \"visible\",\n opacity: \"0\"\n })\n )\n ]\n}\n\nexport function fallAnimation() {\n return new AnimationTrait(FallAnimation)\n}\n\nexport const FadeAnimation: AnimationSet = {\n show: [style({ opacity: 0 }), animate(`${transitionDuration}ms ${Ease.Deceleration}`, style({ opacity: 1 }))],\n hide: [animate(`${transitionDuration}ms ${Ease.Deceleration}`, style({ opacity: 0 }))]\n}\n\nexport function fadeAnimation() {\n return new AnimationTrait(FadeAnimation)\n}\n","import { AnimationBuilder } from \"@angular/animations\"\n\nimport { exhaustMap, map, Observable, Subject, Subscriber } from \"rxjs\"\n\nimport { animationObservable } from \"@ngutil/graphics\"\n\nimport type { BackdropOptions, BackdropRef, CropBackdropOptions } from \"../../layer/backdrop-ref\"\nimport { type FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\nimport { FadeAnimation } from \"./animation\"\nimport { FloatingPosition } from \"./position\"\n\nexport interface BackdropTraitOptions {\n type: BackdropOptions[\"type\"]\n color: BackdropOptions[\"color\"]\n closeOnClick?: boolean\n // TODO: maybe cropMargin\n}\n\nexport class BackdropState {\n onClick: Observable<void> = new Subject<void>()\n}\n\nexport class BackdropTrait extends FloatingTrait<BackdropState> {\n override name = \"backdrop\"\n\n constructor(readonly options: BackdropTraitOptions) {\n super()\n }\n\n override connect(floatingRef: FloatingRef<any>): Observable<BackdropState> {\n return new Observable((dest: Subscriber<BackdropState>) => {\n const animationBuilder = floatingRef.container.injector.get(AnimationBuilder)\n const options: BackdropOptions = {\n type: this.options.type,\n under: floatingRef.container,\n color: this.options.color\n } as any\n\n if (this.options.type === \"crop\") {\n ;(options as CropBackdropOptions).crop = floatingRef\n .watchTrait<FloatingPosition>(\"position\")\n .pipe(map(position => position.anchor))\n }\n\n const state = new BackdropState()\n const backdrop = floatingRef.layerSvc.newBackdrop(options)\n const removeOnClick = this.options.closeOnClick\n ? this.#installClickHandler(floatingRef, backdrop, state)\n : null\n\n const onClickSub = this.options.closeOnClick\n ? state.onClick.pipe(exhaustMap(() => floatingRef.close())).subscribe()\n : null\n\n backdrop.state.on(\"showing\", () =>\n animationObservable({\n builder: animationBuilder,\n element: backdrop.nativeElement,\n animation: FadeAnimation.show\n })\n )\n backdrop.state.on(\"disposing\", () =>\n animationObservable({\n builder: animationBuilder,\n element: backdrop.nativeElement,\n animation: FadeAnimation.hide\n })\n )\n\n floatingRef.state.on(\"disposing\", () => backdrop.dispose())\n\n const backdropShowSub = backdrop.show().subscribe()\n dest.next(state)\n\n return () => {\n removeOnClick && removeOnClick()\n onClickSub?.unsubscribe()\n backdropShowSub.unsubscribe()\n }\n })\n }\n\n #installClickHandler(floatingRef: FloatingRef<any>, backdrop: BackdropRef, state: BackdropState) {\n const handler = (event: MouseEvent) => {\n if (event.defaultPrevented) {\n return\n }\n\n if (event.target === backdrop.nativeElement || backdrop.nativeElement.contains(event.target as Node)) {\n ;(state.onClick as Subject<void>).next()\n }\n }\n\n document.addEventListener(\"click\", handler)\n\n return () => {\n document.removeEventListener(\"click\", handler)\n }\n }\n}\n\nexport function backdrop(options: BackdropTraitOptions) {\n return new BackdropTrait(options)\n}\n","import { Observable } from \"rxjs\"\n\nimport { FocusService } from \"@ngutil/aria\"\n\nimport { FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\n\nexport class FocusTrapTrait extends FloatingTrait<unknown> {\n override name = \"focus-trap\"\n override connect(floatingRef: FloatingRef): Observable<unknown> {\n return new Observable(() => {\n const svc = floatingRef.container.injector.get(FocusService)\n const trap = svc.focusTrap(floatingRef.container.nativeElement)\n const originallyFocused = document.activeElement as HTMLElement\n\n floatingRef.state.on(\"shown\", () => {\n trap.focusInitialElement()\n })\n\n return () => {\n trap.destroy()\n originallyFocused && svc.focus(originallyFocused, \"program\")\n }\n })\n }\n}\n\nexport function focusTrap() {\n return new FocusTrapTrait()\n}\n","import { exhaustMap, Observable } from \"rxjs\"\n\nimport { KeystrokeService } from \"@ngutil/aria\"\n\nimport { FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\n\nexport class KeystrokeTrait extends FloatingTrait<unknown> {\n override name = \"keystroke\"\n override connect(floatingRef: FloatingRef): Observable<unknown> {\n const ks = floatingRef.container.injector.get(KeystrokeService)\n return ks\n .watch(floatingRef.container.nativeElement, { key: \"Escape\", state: \"up\" })\n .pipe(exhaustMap(() => floatingRef.close()))\n }\n}\n\nexport function keystroke() {\n return new KeystrokeTrait()\n}\n","import { Alignment, Dimension, Position, Rect } from \"@ngutil/style\"\n\nimport type { FloatingPositionOptions } from \"./position\"\n\nexport interface ComputePositionInput {\n floating: Dimension\n anchor: Rect\n placement: Rect\n options: FloatingPositionOptions\n}\n\nexport interface ComputedFloating {\n current: Rect\n min: Dimension\n max: Dimension\n}\n\nexport interface ComputedAlignment {\n align: Alignment\n postion: Position\n}\n\nexport interface ComputedAnchor {\n floating: ComputedAlignment\n anchor: ComputedAlignment\n}\n\nexport interface ComputedPositon {\n floating: ComputedFloating\n anchor?: ComputedAnchor\n}\n\nexport function computePosition({\n floating,\n anchor,\n placement,\n options\n}: ComputePositionInput): ComputedPositon | undefined {\n // TODO: jelenleg csak center van\n\n const maxWidth = placement.width\n const maxHeight = placement.height\n const cf: ComputedFloating = {\n current: {\n x: (maxWidth - floating.width) / 2,\n y: (maxHeight - floating.height) / 2,\n width: Math.min(maxHeight, floating.width),\n height: Math.min(maxHeight, floating.height)\n },\n max: { width: maxWidth, height: maxHeight },\n min: { width: 0, height: 0 }\n }\n\n return { floating: cf }\n}\n","import { ElementRef } from \"@angular/core\"\n\nimport { combineLatest, Observable, Subscriber } from \"rxjs\"\n\nimport { ElementInput } from \"@ngutil/common\"\nimport { AlignmentInput, Dimension, DimensionWatcher, Rect, RectWatcher, SidesInput } from \"@ngutil/style\"\n\nimport { LayerService } from \"../../layer/layer.service\"\nimport { FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\nimport { ComputedPositon, computePosition } from \"./position-calc\"\n\nexport type FloatingTargetElementRef = ElementInput | Window | \"layer\" | \"viewport\"\n\nexport interface FloatingAlign {\n align?: AlignmentInput\n}\n\nexport interface FloatingAnchorPosition extends FloatingAlign {\n margin?: SidesInput\n}\n\nexport interface FloatingAnchor extends FloatingAnchorPosition {\n ref: FloatingTargetElementRef\n}\n\nexport class FloatingAnchorRef<T extends Node> extends ElementRef<T> {}\n\nexport interface FloatingContentPosition extends FloatingAlign {\n margin?: SidesInput\n}\n\nexport interface FloatingPlacementPosition {\n padding?: SidesInput\n}\n\nexport interface FloatingPlacement extends FloatingPlacementPosition {\n ref: FloatingTargetElementRef\n}\n\nexport class FloatingPlacementRef<T extends LayerService[\"root\"][\"nativeElement\"]> extends ElementRef<T> {}\n\nexport interface FloatingPositionOptions {\n anchor?: FloatingAnchor\n content?: FloatingContentPosition\n placement?: FloatingPlacement\n}\n\ntype Watches = {\n floating: Observable<Dimension>\n anchor: Observable<Rect>\n placement: Observable<Rect>\n}\n\nexport class PositionTrait extends FloatingTrait<FloatingPosition> {\n name = \"position\"\n\n constructor(readonly options: FloatingPositionOptions) {\n super()\n\n if (!options.anchor) {\n options.anchor = { ref: \"viewport\", align: \"center middle\" }\n }\n\n if (!options.placement) {\n options.placement = { ref: \"viewport\" }\n }\n }\n\n connect(floatingRef: FloatingRef<any>): Observable<FloatingPosition> {\n return new Observable((dest: Subscriber<FloatingPosition>) => {\n const injector = floatingRef.container.injector\n const dimWatcher = injector.get(DimensionWatcher)\n const rectWatcher = injector.get(RectWatcher)\n\n const watches: Watches = {\n floating: dimWatcher.watch(floatingRef.container, \"border-box\"),\n anchor: refWatcher(rectWatcher, this.options.anchor!.ref, floatingRef),\n placement: refWatcher(rectWatcher, this.options.placement!.ref, floatingRef)\n }\n\n return combineLatest(watches).subscribe(({ floating, anchor, placement }) => {\n const res = new FloatingPosition(this.options, floating, anchor, placement)\n res.apply(floatingRef)\n dest.next(res)\n })\n })\n }\n}\n\nfunction refWatcher(rectWatcher: RectWatcher, ref: FloatingTargetElementRef, floatingRef: FloatingRef<any>) {\n if (ref === \"layer\") {\n return rectWatcher.watch(floatingRef.layerSvc.root, \"border-box\")\n } else if (ref === \"viewport\" || ref instanceof Window) {\n return rectWatcher.watch(window, \"border-box\")\n } else {\n return rectWatcher.watch(ref, \"border-box\")\n }\n}\n\nexport function position(options: FloatingPositionOptions) {\n return new PositionTrait(options)\n}\n\nexport class FloatingPosition {\n readonly computed?: ComputedPositon\n constructor(\n readonly options: FloatingPositionOptions,\n readonly floating: Dimension,\n readonly anchor: Rect,\n readonly placement: Rect\n ) {\n this.computed = computePosition({ floating, anchor, placement, options })\n }\n\n apply(floatingRef: FloatingRef) {\n if (this.computed == null) {\n return\n }\n\n const floatingEl = floatingRef.container.nativeElement\n floatingEl.style.left = `${this.computed.floating.current.x}px`\n floatingEl.style.top = `${this.computed.floating.current.y}px`\n }\n}\n","import { fallAnimation } from \"./animation\"\nimport { backdrop } from \"./backdrop\"\nimport { focusTrap } from \"./focus-trap\"\nimport { keystroke } from \"./keystroke\"\nimport { position } from \"./position\"\n\nexport interface ModalOptions {\n closeOnBackdropClick?: boolean\n}\n\nexport function modal(options: ModalOptions = {}) {\n return [\n position({\n anchor: {\n ref: \"viewport\",\n align: \"center middle\"\n },\n placement: {\n ref: \"viewport\",\n padding: \"16px\"\n }\n }),\n backdrop({ type: \"solid\", color: \"rgba(0, 0, 0, .3)\", closeOnClick: options.closeOnBackdropClick }),\n focusTrap(),\n keystroke(),\n fallAnimation()\n ]\n}\n","import { Observable, of } from \"rxjs\"\n\nimport { FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\n\nexport class StyleTrait extends FloatingTrait<Partial<CSSStyleDeclaration>> {\n override name = \"style\"\n\n constructor(readonly styles: Partial<CSSStyleDeclaration>) {\n super()\n }\n\n override connect(floatingRef: FloatingRef): Observable<Partial<CSSStyleDeclaration>> {\n Object.assign(floatingRef.container.nativeElement.style, this.styles)\n return of(this.styles)\n }\n}\n\nexport function style(styles: Partial<CSSStyleDeclaration>) {\n return new StyleTrait(styles)\n}\n","import { ElementRef } from \"@angular/core\"\n\nimport { Observable, of } from \"rxjs\"\n\nimport { StateChain } from \"@ngutil/common\"\n\nexport type DisposeHandler<T> = (ref: T) => Observable<void>\n\n// TODO: disposing, disposed\n\nexport abstract class ChildRef<T extends HTMLElement = HTMLElement> extends ElementRef<T> {\n readonly state = new StateChain({\n showing: {},\n shown: {},\n disposing: { cancellable: false },\n disposed: { cancellable: false, order: \"sequential\" }\n })\n\n /**\n * @internal\n */\n set zIndex(val: number) {\n if (this._zIndex !== val) {\n this._zIndex = val\n this.nativeElement.style.zIndex = String(val)\n }\n }\n get zIndex(): number {\n return this._zIndex\n }\n private _zIndex: number = -1\n\n constructor(nativeElement: T) {\n super(nativeElement)\n this.state.on(\"disposed\", () => this.destroy())\n\n // this.state.current$.subscribe(state => {\n // console.log(this, state)\n // })\n }\n\n dispose() {\n if (this.state == null) {\n return of(null)\n }\n return this.state.run([\"disposing\", \"disposed\"])\n }\n\n protected destroy() {\n this.nativeElement.parentElement?.removeChild(this.nativeElement)\n this.state.destroy()\n delete (this as any).state\n }\n}\n","import { Injector, Provider } from \"@angular/core\"\n\nimport { ChildRef } from \"./child-ref\"\n\nexport interface ContainerOptions {\n alwaysOnTop?: boolean\n elevation?: number\n classes?: string[]\n attributes?: Record<string, string>\n injector?: Injector\n providers?: Provider[]\n}\n\nexport class ContainerRef extends ChildRef {\n public readonly injector: Injector\n\n protected injectorName = \"ContainerRef\"\n\n constructor(public readonly options: ContainerOptions) {\n super(createElement(options))\n\n const providers = options.providers || []\n this.injector = Injector.create({\n providers: [...this.getProviders(), ...providers],\n parent: options.injector,\n name: this.injectorName\n })\n\n this.state.on(\"disposed\", () => {\n delete (this as any).options\n delete (this as any).injector\n })\n }\n\n protected getProviders(): Provider[] {\n return [\n { provide: ChildRef, useValue: this },\n { provide: ContainerRef, useValue: this }\n ]\n }\n}\n\nfunction createElement(options: ContainerOptions): HTMLDivElement {\n const div = document.createElement(\"div\")\n div.style.position = \"absolute\"\n div.style.top = \"0\"\n div.style.left = \"0\"\n div.style.width = \"max-content\"\n\n if (options.classes) {\n div.classList.add(...options.classes)\n }\n\n return div\n}\n","import { Injector } from \"@angular/core\"\n\nimport { Subscription } from \"rxjs\"\n\nimport { CoverService } from \"@ngutil/graphics\"\nimport { CoverOptions, CropCoverOptions } from \"@ngutil/graphics\"\n\nimport { ChildRef } from \"./child-ref\"\n\nexport interface BasicBackdropOptions {\n under: ChildRef\n color: CoverOptions[\"color\"]\n}\n\nexport interface SolidBackdropOptions extends BasicBackdropOptions {\n type: \"solid\"\n}\n\nexport interface CropBackdropOptions extends BasicBackdropOptions {\n type: \"crop\"\n crop: CropCoverOptions[\"crop\"]\n}\n\nexport type BackdropOptions = SolidBackdropOptions | CropBackdropOptions\n\nexport class BackdropRef extends ChildRef {\n static from(cover: CoverService, injector: Injector, options: BackdropOptions): BackdropRef {\n const ref = new BackdropRef(document.createElement(\"div\"), cover, injector, options)\n // TODO: kérdéses\n // options.under.state.control(ref.state)\n return ref\n }\n\n readonly #coverSub?: Subscription\n readonly under: ChildRef\n readonly group?: string\n\n set visible(visible: boolean) {\n if (this.#visible !== visible) {\n this.#visible = visible\n this.nativeElement.style.visibility = visible ? \"visible\" : \"hidden\"\n }\n }\n\n get visible(): boolean {\n return this.#visible\n }\n #visible: boolean = true\n\n constructor(\n nativeElement: HTMLElement,\n readonly coverSvc: CoverService,\n readonly injector: Injector,\n readonly options: BackdropOptions\n ) {\n super(nativeElement)\n nativeElement.style.position = \"absolute\"\n nativeElement.style.top =\n nativeElement.style.right =\n nativeElement.style.bottom =\n nativeElement.style.left =\n \"0px\"\n\n this.under = options.under\n\n if (options.type === \"solid\") {\n this.#coverSub = this.coverSvc.solid({ container: nativeElement, color: options.color }).subscribe()\n this.group = `${options.color === \"transparent\" ? \"transparent\" : \"solid\"}`\n } else if (options.type === \"crop\") {\n this.#coverSub = this.coverSvc\n .crop({ container: nativeElement, color: options.color, crop: options.crop })\n .subscribe()\n }\n }\n\n show() {\n return this.state.run([\"showing\", \"shown\"])\n }\n\n protected override destroy(): void {\n this.#coverSub?.unsubscribe()\n super.destroy()\n }\n}\n","import { ComponentPortal, ComponentType, DomPortalOutlet, PortalOutlet, TemplatePortal } from \"@angular/cdk/portal\"\nimport { ComponentFactoryResolver, Provider, TemplateRef, ViewContainerRef } from \"@angular/core\"\n\nimport { ContainerOptions, ContainerRef } from \"./container-ref\"\n\nexport interface PortalOptions extends ContainerOptions {}\n\nexport abstract class PortalRef extends ContainerRef {\n protected override injectorName = \"PortalRef\"\n protected outlet: PortalOutlet\n\n constructor(options: PortalOptions) {\n super(options)\n\n this.outlet = new DomPortalOutlet(this.nativeElement, undefined, undefined, this.injector)\n this.state.on(\"disposed\", () => {\n this.outlet.dispose()\n delete (this as any).outlet\n })\n }\n\n protected override getProviders(): Provider[] {\n return [...super.getProviders(), { provide: PortalRef, useValue: this }]\n }\n}\n\nexport interface ComponentPortalOptions<T = any> extends PortalOptions {\n viewContainerRef?: ViewContainerRef\n}\n\nexport class ComponentPortalRef<T = any> extends PortalRef {\n protected override injectorName = \"ComponentPortalRef\"\n protected readonly portal: ComponentPortal<T>\n\n constructor(\n public readonly component: ComponentType<T>,\n options: ComponentPortalOptions<T>\n ) {\n super(options)\n\n const resolver = this.injector.get(ComponentFactoryResolver)\n const vcr = this.injector.get(ViewContainerRef)\n\n this.portal = new ComponentPortal(component, options.viewContainerRef || vcr, this.injector, resolver)\n this.outlet.attach(this.portal)\n\n this.state.on(\"disposed\", () => {\n this.portal.isAttached && this.portal.detach()\n delete (this as any).portal\n })\n }\n\n protected override getProviders(): Provider[] {\n return [...super.getProviders(), { provide: ComponentPortalRef, useValue: this }]\n }\n}\n\nexport interface TemplatePortalOptions<T = any> extends PortalOptions {\n viewContainerRef: ViewContainerRef\n context?: T\n}\n\nexport class TemplatePortalRef<T = any> extends PortalRef {\n protected override injectorName = \"TemplatePortalRef\"\n protected readonly portal: TemplatePortal<T>\n\n constructor(\n public readonly template: TemplateRef<T>,\n options: TemplatePortalOptions<T>\n ) {\n super(options)\n this.portal = new TemplatePortal(template, options.viewContainerRef, options.context)\n this.outlet.attach(this.portal)\n\n this.state.on(\"disposed\", () => {\n this.portal.isAttached && this.portal.detach()\n delete (this as any).portal\n })\n }\n\n protected override getProviders(): Provider[] {\n return [...super.getProviders(), { provide: TemplatePortalRef, useValue: this }]\n }\n}\n","import { ComponentType } from \"@angular/cdk/portal\"\nimport { Directive, ElementRef, inject, Inject, InjectionToken, Injector, Optional, TemplateRef } from \"@angular/core\"\n\nimport { toSorted } from \"@ngutil/common\"\nimport { CoverService } from \"@ngutil/graphics\"\n\nimport { BackdropOptions, BackdropRef } from \"./backdrop-ref\"\nimport { ChildRef } from \"./child-ref\"\nimport { ContainerOptions, ContainerRef } from \"./container-ref\"\nimport { ComponentPortalOptions, ComponentPortalRef, TemplatePortalOptions, TemplatePortalRef } from \"./portal-ref\"\n\nexport const LAYER_ZINDEX_START = new InjectionToken<number>(\"LAYER_ZINDEX_START\")\n\n// TODO: ELEVATION_STEP config with injection\n// TODO: ELEVATION_START config with injection\n\n@Directive()\nexport abstract class LayerService {\n readonly #cover = inject(CoverService)\n readonly #injector = inject(Injector)\n\n readonly root = inject<ElementRef<HTMLElement>>(ElementRef)\n // readonly #el = this.root.nativeElement\n\n readonly #children: Array<ChildRef> = []\n readonly #zIndexStart: number\n // readonly #backdrop: Map<>\n\n constructor(@Inject(LAYER_ZINDEX_START) @Optional() zIndexStart?: number) {\n if (zIndexStart != null) {\n this.#zIndexStart = zIndexStart\n } else {\n this.#zIndexStart = 10000\n }\n }\n\n newComponentPortal<T>(component: ComponentType<T>, options: ComponentPortalOptions<T>): ComponentPortalRef<T> {\n if (!options.injector) {\n options = { ...options, injector: this.#injector }\n }\n return this.append(new ComponentPortalRef(component, options))\n }\n\n newTemplatePortal<T>(tpl: TemplateRef<T>, options: TemplatePortalOptions<T>): TemplatePortalRef<T> {\n if (!options.injector) {\n options = { ...options, injector: this.#injector }\n }\n return this.append(new TemplatePortalRef(tpl, options))\n }\n\n newContainer(options: ContainerOptions): ContainerRef {\n if (!options.injector) {\n options = { ...options, injector: this.#injector }\n }\n return this.append(new ContainerRef(options))\n }\n\n newBackdrop(options: BackdropOptions): BackdropRef {\n return this.append(BackdropRef.from(this.#cover, this.#injector, options))\n }\n\n append<T extends ChildRef>(ref: T): T {\n if (!this.#children.includes(ref)) {\n this.#children.push(ref)\n this.#update()\n this.root.nativeElement.appendChild(ref.nativeElement)\n ref.state.on(\"disposed\", () => this.#remove(ref))\n }\n return ref\n }\n\n #remove(ref: ChildRef) {\n const idx = this.#children.indexOf(ref)\n if (idx > -1) {\n this.#children.splice(idx, 1)\n this.#update()\n }\n }\n\n #update() {\n const children = toSorted(this.#children, sortByBackdrop)\n\n let zIndex = this.#zIndexStart\n for (const child of children) {\n child.zIndex = zIndex\n zIndex += 1\n }\n\n children.sort(sortByZIndexDesc)\n\n let hasBackdrop = false\n for (const child of children) {\n if (child instanceof BackdropRef && child.options.type === \"solid\") {\n child.visible = !hasBackdrop\n hasBackdrop = true\n }\n }\n }\n}\n\n@Directive({\n selector: \"body\",\n exportAs: \"nuRootLayer\",\n standalone: true,\n providers: [{ provide: LayerService, useExisting: RootLayer }]\n})\nexport class RootLayer extends LayerService {}\n\n@Directive({\n standalone: true,\n providers: [{ provide: LayerService, useExisting: IndividualLayer }]\n})\nexport class IndividualLayer extends LayerService {}\n\nfunction sortByBackdrop(a: ChildRef, b: ChildRef) {\n if (a instanceof BackdropRef && a.under === b) {\n return -1\n } else if (b instanceof BackdropRef && b.under === a) {\n return 1\n }\n return 0\n}\n\nfunction sortByZIndexDesc(a: ChildRef, b: ChildRef) {\n return b.zIndex - a.zIndex\n}\n","import { Inject, Injectable, InjectionToken } from \"@angular/core\"\n\nimport { EMPTY, filter, map, merge, Observable, ReplaySubject, shareReplay, takeUntil } from \"rxjs\"\n\nimport { StateChain } from \"@ngutil/common\"\n\nimport { ContainerRef } from \"../layer/container-ref\"\nimport { LayerService } from \"../layer/layer.service\"\nimport { FloatingTrait } from \"./traits/_base\"\n\nexport type Traits = { [key: string]: FloatingTrait }\n\nexport const TRAITS = new InjectionToken<Traits>(\"TRAITS\")\n\nexport interface FloatingChannel {\n type: string\n data?: any\n}\n\nexport interface FloatingTraitEvent {\n name: string\n data: object\n}\n\n@Injectable()\nexport class FloatingRef<C extends FloatingChannel = FloatingChannel, T extends HTMLElement = HTMLElement> {\n readonly channel = new ReplaySubject<C>(1)\n\n readonly state = new StateChain({\n init: {},\n showing: {},\n shown: {},\n closing: { cancellable: false, order: \"sequential\" },\n disposing: { cancellable: false },\n disposed: { cancellable: false, order: \"sequential\" },\n cleanup: { cancellable: false, order: \"sequential\" }\n })\n\n readonly #traits: Traits = {}\n readonly traitState$: Observable<FloatingTraitEvent>\n\n readonly #untilCleanup = this.state.current$.pipe(\n filter(state => state === \"cleanup\"),\n shareReplay(1)\n )\n\n readonly #untilDisposed = this.state.current$.pipe(\n filter(state => state === \"cleanup\"),\n shareReplay(1)\n )\n\n constructor(\n readonly layerSvc: LayerService,\n readonly container: ContainerRef,\n @Inject(TRAITS) traits: Traits\n ) {\n container.nativeElement.style.overflow = \"hidden\"\n\n this.#traits = traits\n this.traitState$ = this.#traitState().pipe(shareReplay(1))\n\n const sub = this.state.current$.subscribe(state => {\n this.channel.next({ type: state } as any)\n })\n this.state.on(\"init\", () => {\n this.traitState$.pipe(takeUntil(this.#untilCleanup)).subscribe()\n })\n this.state.on(\"disposed\", () => {\n sub.unsubscribe()\n })\n this.state.control(container.state)\n }\n\n show() {\n return this.state.run([\"init\", \"showing\", \"shown\"])\n }\n\n hide() {\n return this.state.run([\"disposing\", \"disposed\", \"cleanup\"])\n }\n\n close() {\n return this.state.run([\"closing\", \"disposing\", \"disposed\", \"cleanup\"])\n }\n\n watchTrait<T>(name: string): Observable<T> {\n return this.traitState$.pipe(\n takeUntil(this.#untilDisposed),\n filter(event => event.name === name),\n map(event => event.data as T),\n shareReplay(1)\n )\n }\n\n #traitState(): Observable<FloatingTraitEvent> {\n const src = []\n\n for (const [k, v] of Object.entries(this.#traits)) {\n src.push(\n v.connect(this).pipe(\n takeUntil(this.#untilCleanup),\n map(result => {\n return { name: k, data: result }\n })\n )\n )\n }\n\n if (src.length === 0) {\n return EMPTY\n } else if (src.length === 1) {\n return src[0]\n } else {\n return merge(...src)\n }\n }\n}\n","import { ComponentType } from \"@angular/cdk/portal\"\nimport { inject, Injectable, Provider, TemplateRef } from \"@angular/core\"\n\nimport { Observable, Subscriber } from \"rxjs\"\n\nimport { LayerService } from \"../layer/layer.service\"\nimport { ComponentPortalOptions, TemplatePortalOptions } from \"../layer/portal-ref\"\nimport { FloatingChannel, FloatingRef, TRAITS } from \"./floating-ref\"\nimport { type FloatingTrait } from \"./traits/_base\"\nimport { type FloatingPositionOptions, position } from \"./traits/position\"\n\n// export type FloatingTrait = (...args: any[]) => (traits: object) => Observable<object>\n\nexport abstract class FloatingFactory {\n protected readonly traits: { [key: string]: FloatingTrait } = {}\n\n #providers: Provider[] = []\n\n constructor(protected readonly layer: LayerService) {}\n\n trait(...traits: Array<FloatingTrait | FloatingTrait[]>) {\n for (const trait of traits) {\n if (Array.isArray(trait)) {\n this.trait(...trait)\n } else {\n this.traits[trait.name] = trait\n }\n }\n\n return this\n }\n\n show(): Observable<FloatingChannel> {\n return new Observable((dest: Subscriber<FloatingChannel>) => {\n let disposed = false\n\n const ref = this.create()\n const channelSub = ref.channel.subscribe(event => {\n dest.next(event)\n if (event.type === \"disposed\") {\n disposed = true\n dest.complete()\n }\n })\n\n const showSub = ref.show().subscribe()\n\n return () => {\n showSub.unsubscribe()\n channelSub.unsubscribe()\n if (!disposed) {\n const dispose$ = ref.channel.subscribe(event => {\n if (event.type === \"disposed\") {\n hideSub.unsubscribe()\n dispose$.unsubscribe()\n }\n })\n const hideSub = ref.hide().subscribe()\n }\n }\n })\n }\n\n subscribe = (...args: any[]) => this.show().subscribe(...args)\n\n protected providers(providers?: Provider[]): Provider[] {\n if (!providers) {\n providers = []\n }\n\n providers = [\n ...providers,\n { provide: TRAITS, useValue: this.traits },\n { provide: LayerService, useValue: this.layer },\n FloatingRef,\n ...this.#providers\n ]\n\n return providers\n }\n\n protected abstract create(): FloatingRef<FloatingChannel>\n\n position(options: FloatingPositionOptions) {\n return this.trait(position(options))\n }\n\n provides(providers: Provider | Provider[]) {\n if (Array.isArray(providers)) {\n this.#providers = [...this.#providers, ...providers]\n } else {\n this.#providers = [...this.#providers, providers]\n }\n return this\n }\n}\n\nexport class FloatingTemplateFactory<T extends object> extends FloatingFactory {\n constructor(\n layer: LayerService,\n public readonly tpl: TemplateRef<T>,\n public readonly options: TemplatePortalOptions<T>\n ) {\n super(layer)\n }\n\n protected override create(): FloatingRef<FloatingChannel> {\n const options: TemplatePortalOptions<T> = { ...this.options }\n options.providers = this.providers(options.providers)\n const container = this.layer.newTemplatePortal(this.tpl, options)\n return container.injector.get(FloatingRef)\n }\n}\n\nexport class FloatingComponentFactory<T extends ComponentType<any>> extends FloatingFactory {\n constructor(\n layer: LayerService,\n public readonly component: T,\n public readonly options: ComponentPortalOptions<T>\n ) {\n super(layer)\n }\n\n protected override create(): FloatingRef<FloatingChannel> {\n const options: ComponentPortalOptions<T> = { ...this.options }\n options.providers = this.providers(options.providers)\n const container = this.layer.newComponentPortal(this.component, options)\n return container.injector.get(FloatingRef)\n }\n}\n\n/**\n * @example\n * ```typescript\n * class SomeComponent {}\n *\n * class SomeList {\n * readonly floating = inject(FloatingService)\n *\n * showComponent() {\n * this.floating.from(SomeComponent).traits(position(), backdrop()).subscribe()\n * }\n * ```\n */\n@Injectable()\nexport class FloatingService {\n readonly #layer = inject(LayerService)\n // readonly parent = inject(FloatingRef, { skipSelf: true, optional: true })\n\n from<T extends ComponentType<any>>(component: T, opts?: ComponentPortalOptions<T>): FloatingComponentFactory<T>\n\n from<T extends object>(tpl: TemplateRef<T>, opts?: TemplatePortalOptions<T>): FloatingTemplateFactory<T>\n\n from<T>(value: ComponentType<T> | TemplateRef<T>, opts: any): FloatingFactory {\n if (value instanceof TemplateRef) {\n return new FloatingTemplateFactory(this.#layer, value as any, opts)\n } else {\n return new FloatingComponentFactory(this.#layer, value as any, opts)\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["style"],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ import { type FloatingTrait } from "./traits/_base";
|
|
|
8
8
|
import { type FloatingPositionOptions } from "./traits/position";
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export declare abstract class FloatingFactory {
|
|
11
|
+
#private;
|
|
11
12
|
protected readonly layer: LayerService;
|
|
12
13
|
protected readonly traits: {
|
|
13
14
|
[key: string]: FloatingTrait;
|
|
@@ -19,6 +20,7 @@ export declare abstract class FloatingFactory {
|
|
|
19
20
|
protected providers(providers?: Provider[]): Provider[];
|
|
20
21
|
protected abstract create(): FloatingRef<FloatingChannel>;
|
|
21
22
|
position(options: FloatingPositionOptions): this;
|
|
23
|
+
provides(providers: Provider | Provider[]): this;
|
|
22
24
|
}
|
|
23
25
|
export declare class FloatingTemplateFactory<T extends object> extends FloatingFactory {
|
|
24
26
|
readonly tpl: TemplateRef<T>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AnimationMetadata } from "@angular/animations";
|
|
2
|
+
import { Observable } from "rxjs";
|
|
3
|
+
import { FloatingRef } from "../floating-ref";
|
|
4
|
+
import { FloatingTrait } from "./_base";
|
|
5
|
+
export type AnimationSet = {
|
|
6
|
+
show: AnimationMetadata[];
|
|
7
|
+
hide: AnimationMetadata[];
|
|
8
|
+
};
|
|
9
|
+
export declare class AnimationTrait extends FloatingTrait<unknown> {
|
|
10
|
+
readonly animation: AnimationSet;
|
|
11
|
+
name: string;
|
|
12
|
+
constructor(animation: AnimationSet);
|
|
13
|
+
connect(floatingRef: FloatingRef): Observable<unknown>;
|
|
14
|
+
}
|
|
15
|
+
export declare const FallAnimation: AnimationSet;
|
|
16
|
+
export declare function fallAnimation(): AnimationTrait;
|
|
17
|
+
export declare const FadeAnimation: AnimationSet;
|
|
18
|
+
export declare function fadeAnimation(): AnimationTrait;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Observable } from "rxjs";
|
|
2
|
+
import type { BackdropOptions } from "../../layer/backdrop-ref";
|
|
3
|
+
import { type FloatingRef } from "../floating-ref";
|
|
4
|
+
import { FloatingTrait } from "./_base";
|
|
5
|
+
export interface BackdropTraitOptions {
|
|
6
|
+
type: BackdropOptions["type"];
|
|
7
|
+
color: BackdropOptions["color"];
|
|
8
|
+
closeOnClick?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare class BackdropState {
|
|
11
|
+
onClick: Observable<void>;
|
|
12
|
+
}
|
|
13
|
+
export declare class BackdropTrait extends FloatingTrait<BackdropState> {
|
|
14
|
+
#private;
|
|
15
|
+
readonly options: BackdropTraitOptions;
|
|
16
|
+
name: string;
|
|
17
|
+
constructor(options: BackdropTraitOptions);
|
|
18
|
+
connect(floatingRef: FloatingRef<any>): Observable<BackdropState>;
|
|
19
|
+
}
|
|
20
|
+
export declare function backdrop(options: BackdropTraitOptions): BackdropTrait;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Observable } from "rxjs";
|
|
2
|
+
import { FloatingRef } from "../floating-ref";
|
|
3
|
+
import { FloatingTrait } from "./_base";
|
|
4
|
+
export declare class FocusTrapTrait extends FloatingTrait<unknown> {
|
|
5
|
+
name: string;
|
|
6
|
+
connect(floatingRef: FloatingRef): Observable<unknown>;
|
|
7
|
+
}
|
|
8
|
+
export declare function focusTrap(): FocusTrapTrait;
|
|
@@ -1,2 +1,9 @@
|
|
|
1
|
-
export * from "./
|
|
1
|
+
export * from "./_base";
|
|
2
|
+
export * from "./animation";
|
|
3
|
+
export * from "./backdrop";
|
|
4
|
+
export * from "./focus-trap";
|
|
5
|
+
export * from "./keystroke";
|
|
6
|
+
export * from "./modal";
|
|
2
7
|
export * from "./position-calc";
|
|
8
|
+
export * from "./position";
|
|
9
|
+
export * from "./style";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Observable } from "rxjs";
|
|
2
|
+
import { FloatingRef } from "../floating-ref";
|
|
3
|
+
import { FloatingTrait } from "./_base";
|
|
4
|
+
export declare class KeystrokeTrait extends FloatingTrait<unknown> {
|
|
5
|
+
name: string;
|
|
6
|
+
connect(floatingRef: FloatingRef): Observable<unknown>;
|
|
7
|
+
}
|
|
8
|
+
export declare function keystroke(): KeystrokeTrait;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export interface ModalOptions {
|
|
2
|
+
closeOnBackdropClick?: boolean;
|
|
3
|
+
}
|
|
4
|
+
export declare function modal(options?: ModalOptions): (import("./animation").AnimationTrait | import("./position").PositionTrait | import("./backdrop").BackdropTrait | import("./focus-trap").FocusTrapTrait | import("./keystroke").KeystrokeTrait)[];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Observable } from "rxjs";
|
|
2
|
+
import { FloatingRef } from "../floating-ref";
|
|
3
|
+
import { FloatingTrait } from "./_base";
|
|
4
|
+
export declare class StyleTrait extends FloatingTrait<Partial<CSSStyleDeclaration>> {
|
|
5
|
+
readonly styles: Partial<CSSStyleDeclaration>;
|
|
6
|
+
name: string;
|
|
7
|
+
constructor(styles: Partial<CSSStyleDeclaration>);
|
|
8
|
+
connect(floatingRef: FloatingRef): Observable<Partial<CSSStyleDeclaration>>;
|
|
9
|
+
}
|
|
10
|
+
export declare function style(styles: Partial<CSSStyleDeclaration>): StyleTrait;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngutil/floating",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.28",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"tslib": "^2.6.2"
|
|
6
6
|
},
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
"@angular/cdk": "^17.3.6",
|
|
9
9
|
"@angular/common": "^17.3.6",
|
|
10
10
|
"@angular/core": "^17.3.6",
|
|
11
|
-
"@ngutil/
|
|
12
|
-
"@ngutil/
|
|
13
|
-
"@ngutil/style": "0.0.
|
|
11
|
+
"@ngutil/common": "0.0.28",
|
|
12
|
+
"@ngutil/aria": "0.0.28",
|
|
13
|
+
"@ngutil/style": "0.0.28"
|
|
14
14
|
},
|
|
15
15
|
"publishConfig": {
|
|
16
16
|
"access": "public",
|