@ngutil/floating 0.0.34 → 0.0.35
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 +4 -1
- package/esm2022/floating/traits/_base.mjs +2 -3
- package/esm2022/floating/traits/animation.mjs +2 -4
- package/esm2022/floating/traits/attribute.mjs +2 -4
- package/esm2022/floating/traits/backdrop.mjs +2 -4
- package/esm2022/floating/traits/dim-contraint.mjs +2 -4
- package/esm2022/floating/traits/focus.mjs +48 -0
- package/esm2022/floating/traits/index.mjs +2 -2
- package/esm2022/floating/traits/keystroke.mjs +2 -4
- package/esm2022/floating/traits/modal.mjs +3 -3
- package/esm2022/floating/traits/position.mjs +2 -4
- package/esm2022/floating/traits/style.mjs +2 -4
- package/fesm2022/ngutil-floating.mjs +43 -28
- package/fesm2022/ngutil-floating.mjs.map +1 -1
- package/floating/traits/_base.d.ts +3 -3
- package/floating/traits/animation.d.ts +2 -2
- package/floating/traits/attribute.d.ts +2 -2
- package/floating/traits/backdrop.d.ts +2 -2
- package/floating/traits/dim-contraint.d.ts +1 -1
- package/floating/traits/focus.d.ts +19 -0
- package/floating/traits/index.d.ts +1 -1
- package/floating/traits/keystroke.d.ts +1 -1
- package/floating/traits/modal.d.ts +1 -1
- package/floating/traits/position.d.ts +2 -2
- package/floating/traits/style.d.ts +2 -2
- package/package.json +4 -4
- package/esm2022/floating/traits/focus-trap.mjs +0 -27
- package/floating/traits/focus-trap.d.ts +0 -8
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AnimationBuilder, style as style$1, animate } from '@angular/animations';
|
|
2
|
-
import { Observable, Subject, map, exhaustMap, combineLatest, distinctUntilChanged, tap, of, ReplaySubject, filter, shareReplay, takeUntil, debounceTime, EMPTY, merge } from 'rxjs';
|
|
2
|
+
import { Observable, Subject, map, exhaustMap, combineLatest, distinctUntilChanged, tap, Subscription, of, ReplaySubject, filter, shareReplay, takeUntil, debounceTime, EMPTY, merge } from 'rxjs';
|
|
3
3
|
import { animationObservable, CoverService } from '@ngutil/graphics';
|
|
4
4
|
import { Duration, Ease, DimensionWatcher, rectExpand, rectOrigin, rectMoveOrigin, rectContract, RectWatcher } from '@ngutil/style';
|
|
5
5
|
import { clamp } from 'lodash';
|
|
@@ -9,14 +9,10 @@ import * as i0 from '@angular/core';
|
|
|
9
9
|
import { ElementRef, Injector, ComponentFactoryResolver, ViewContainerRef, InjectionToken, inject, Directive, Inject, Optional, Injectable, TemplateRef, NgModule } from '@angular/core';
|
|
10
10
|
import { DomPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
|
|
11
11
|
|
|
12
|
-
class FloatingTrait {
|
|
13
|
-
}
|
|
14
|
-
|
|
15
12
|
// https://tympanus.net/Development/ModalWindowEffects/
|
|
16
13
|
const transitionDuration = Duration.FastMs;
|
|
17
|
-
class AnimationTrait
|
|
14
|
+
class AnimationTrait {
|
|
18
15
|
constructor(animation) {
|
|
19
|
-
super();
|
|
20
16
|
this.animation = animation;
|
|
21
17
|
this.name = "animation";
|
|
22
18
|
}
|
|
@@ -67,9 +63,8 @@ class BackdropState {
|
|
|
67
63
|
this.onClick = new Subject();
|
|
68
64
|
}
|
|
69
65
|
}
|
|
70
|
-
class BackdropTrait
|
|
66
|
+
class BackdropTrait {
|
|
71
67
|
constructor(options) {
|
|
72
|
-
super();
|
|
73
68
|
this.options = options;
|
|
74
69
|
this.name = "backdrop";
|
|
75
70
|
}
|
|
@@ -141,10 +136,9 @@ const DIM_MAP = {
|
|
|
141
136
|
minWidth: { computedRef: "min", dimension: "width" },
|
|
142
137
|
minHeight: { computedRef: "min", dimension: "height" }
|
|
143
138
|
};
|
|
144
|
-
class DimensionConstraintTrait
|
|
139
|
+
class DimensionConstraintTrait {
|
|
145
140
|
#map;
|
|
146
141
|
constructor(name, value) {
|
|
147
|
-
super();
|
|
148
142
|
this.value = value;
|
|
149
143
|
this.name = name;
|
|
150
144
|
this.#map = DIM_MAP[name];
|
|
@@ -187,33 +181,54 @@ function minHeight(value) {
|
|
|
187
181
|
return new DimensionConstraintTrait("minHeight", value);
|
|
188
182
|
}
|
|
189
183
|
|
|
190
|
-
class
|
|
191
|
-
constructor() {
|
|
192
|
-
|
|
193
|
-
this.name = "focus
|
|
184
|
+
class FocusTrait {
|
|
185
|
+
constructor(options) {
|
|
186
|
+
this.options = options;
|
|
187
|
+
this.name = "focus";
|
|
194
188
|
}
|
|
195
189
|
connect(floatingRef) {
|
|
196
190
|
return new Observable(() => {
|
|
191
|
+
const subs = new Subscription();
|
|
192
|
+
const originallyFocused = document.activeElement;
|
|
197
193
|
const svc = floatingRef.container.injector.get(FocusService);
|
|
194
|
+
if (this.options.connect) {
|
|
195
|
+
const tabindex = this.options.tabindex == null ? 0 : this.options.tabindex;
|
|
196
|
+
floatingRef.container.nativeElement.setAttribute("tabindex", tabindex.toString());
|
|
197
|
+
subs.add(this.options.connect.connect(floatingRef.container).subscribe());
|
|
198
|
+
}
|
|
199
|
+
if (this.options.trap) {
|
|
200
|
+
subs.add(this.#trap(floatingRef, svc).subscribe());
|
|
201
|
+
}
|
|
202
|
+
floatingRef.state.on("disposing", () => {
|
|
203
|
+
const active = document.activeElement;
|
|
204
|
+
const floating = floatingRef.container.nativeElement;
|
|
205
|
+
if (active === floating || floating.contains(active)) {
|
|
206
|
+
originallyFocused && document.contains(originallyFocused) && svc.focus(originallyFocused, "program");
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
return () => {
|
|
210
|
+
subs.unsubscribe();
|
|
211
|
+
};
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
#trap(floatingRef, svc) {
|
|
215
|
+
return new Observable(() => {
|
|
198
216
|
const trap = svc.focusTrap(floatingRef.container.nativeElement);
|
|
199
|
-
const originallyFocused = document.activeElement;
|
|
200
217
|
floatingRef.state.on("shown", () => {
|
|
201
218
|
trap.focusInitialElement();
|
|
202
219
|
});
|
|
203
220
|
return () => {
|
|
204
221
|
trap.destroy();
|
|
205
|
-
originallyFocused && svc.focus(originallyFocused, "program");
|
|
206
222
|
};
|
|
207
223
|
});
|
|
208
224
|
}
|
|
209
225
|
}
|
|
210
|
-
function
|
|
211
|
-
return new
|
|
226
|
+
function focus(options) {
|
|
227
|
+
return new FocusTrait(options);
|
|
212
228
|
}
|
|
213
229
|
|
|
214
|
-
class KeystrokeTrait
|
|
230
|
+
class KeystrokeTrait {
|
|
215
231
|
constructor() {
|
|
216
|
-
super(...arguments);
|
|
217
232
|
this.name = "keystroke";
|
|
218
233
|
}
|
|
219
234
|
connect(floatingRef) {
|
|
@@ -251,9 +266,8 @@ class FloatingAnchorRef extends ElementRef {
|
|
|
251
266
|
}
|
|
252
267
|
class FloatingPlacementRef extends ElementRef {
|
|
253
268
|
}
|
|
254
|
-
class PositionTrait
|
|
269
|
+
class PositionTrait {
|
|
255
270
|
constructor(options) {
|
|
256
|
-
super();
|
|
257
271
|
this.name = "position";
|
|
258
272
|
const cloned = { ...options };
|
|
259
273
|
if (!cloned.placement) {
|
|
@@ -331,15 +345,14 @@ function modal(options = {}) {
|
|
|
331
345
|
}
|
|
332
346
|
}),
|
|
333
347
|
backdrop({ type: "solid", color: "rgba(0, 0, 0, .3)", closeOnClick: options.closeOnBackdropClick }),
|
|
334
|
-
|
|
348
|
+
focus({ trap: true }),
|
|
335
349
|
keystroke(),
|
|
336
350
|
fallAnimation()
|
|
337
351
|
];
|
|
338
352
|
}
|
|
339
353
|
|
|
340
|
-
class StyleTrait
|
|
354
|
+
class StyleTrait {
|
|
341
355
|
constructor(styles) {
|
|
342
|
-
super();
|
|
343
356
|
this.styles = styles;
|
|
344
357
|
this.name = "style";
|
|
345
358
|
}
|
|
@@ -352,9 +365,8 @@ function style(styles) {
|
|
|
352
365
|
return new StyleTrait(styles);
|
|
353
366
|
}
|
|
354
367
|
|
|
355
|
-
class AttributeTrait
|
|
368
|
+
class AttributeTrait {
|
|
356
369
|
constructor(attrs) {
|
|
357
|
-
super();
|
|
358
370
|
this.attrs = attrs;
|
|
359
371
|
this.name = "attribute";
|
|
360
372
|
}
|
|
@@ -712,6 +724,9 @@ class FloatingRef {
|
|
|
712
724
|
this.state.on("showing", () => {
|
|
713
725
|
container.nativeElement.style.visibility = "visible";
|
|
714
726
|
});
|
|
727
|
+
this.state.on("disposing", () => {
|
|
728
|
+
container.nativeElement.style.pointerEvents = "none";
|
|
729
|
+
});
|
|
715
730
|
this.state.on("disposed", () => {
|
|
716
731
|
sub.unsubscribe();
|
|
717
732
|
});
|
|
@@ -906,5 +921,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
|
|
|
906
921
|
* Generated bundle index. Do not edit.
|
|
907
922
|
*/
|
|
908
923
|
|
|
909
|
-
export { AnimationTrait, AttributeTrait, BackdropRef, BackdropState, BackdropTrait, ChildRef, ComponentPortalRef, DimensionConstraintTrait, FadeAnimation, FallAnimation, FloatingAnchorRef, FloatingComponentFactory, FloatingFactory, FloatingPlacementRef, FloatingPosition, FloatingRef, FloatingService, FloatingTemplateFactory,
|
|
924
|
+
export { AnimationTrait, AttributeTrait, BackdropRef, BackdropState, BackdropTrait, ChildRef, ComponentPortalRef, DimensionConstraintTrait, FadeAnimation, FallAnimation, FloatingAnchorRef, FloatingComponentFactory, FloatingFactory, FloatingPlacementRef, FloatingPosition, FloatingRef, FloatingService, FloatingTemplateFactory, FocusTrait, IndividualLayer, KeystrokeTrait, LAYER_ZINDEX_START, LayerService, NuFloating, PortalRef, PositionTrait, RootLayer, StyleTrait, TRAITS, TemplatePortalRef, attribute, backdrop, computePosition, fadeAnimation, fallAnimation, focus, keystroke, maxHeight, maxWidth, minHeight, minWidth, modal, position, style };
|
|
910
925
|
//# 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/animation.ts","../../../../packages/floating/src/floating/traits/backdrop.ts","../../../../packages/floating/src/floating/traits/dim-contraint.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/floating/traits/attribute.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/floating.module.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 { combineLatest, distinctUntilChanged, map, Observable, Subscriber, tap } from \"rxjs\"\n\nimport { clamp } from \"lodash\"\n\nimport { ElementInput, isElementInput } from \"@ngutil/common\"\nimport { Dimension, DimensionWatcher } from \"@ngutil/style\"\n\nimport { FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\nimport { type FloatingPosition } from \"./position\"\n\nexport type DimensionConstraintInput = ElementInput | number\n\ninterface DimMapEntry {\n computedRef: \"min\" | \"max\"\n dimension: keyof Dimension\n}\n\nconst DIM_MAP: { [key: string]: DimMapEntry } = {\n maxWidth: { computedRef: \"max\", dimension: \"width\" },\n maxHeight: { computedRef: \"max\", dimension: \"height\" },\n minWidth: { computedRef: \"min\", dimension: \"width\" },\n minHeight: { computedRef: \"min\", dimension: \"height\" }\n}\n\nexport class DimensionConstraintTrait extends FloatingTrait<number> {\n readonly name: string\n readonly #map: DimMapEntry\n constructor(\n name: keyof typeof DIM_MAP,\n readonly value: DimensionConstraintInput\n ) {\n super()\n this.name = name as string\n this.#map = DIM_MAP[name]\n }\n\n override connect(floatingRef: FloatingRef<any>): Observable<number> {\n return new Observable((dst: Subscriber<number>) => {\n if (isElementInput(this.value)) {\n const watcher = floatingRef.container.injector.get(DimensionWatcher)\n const refDim = watcher.watch(this.value, \"border-box\").pipe(map(value => value[this.#map.dimension]))\n return combineLatest({\n refDim: refDim,\n position: floatingRef.watchTrait<FloatingPosition>(\"position\")\n }).subscribe(({ refDim, position }) => {\n const floating = position.computed?.floating\n dst.next(\n clamp(\n refDim,\n floating?.min[this.#map.dimension] || 0,\n floating?.max[this.#map.dimension] || Infinity\n )\n )\n })\n } else {\n return floatingRef.watchTrait<FloatingPosition>(\"position\").subscribe(position => {\n const floating = position.computed?.floating\n dst.next(\n clamp(\n this.value as number,\n floating?.min[this.#map.dimension] || 0,\n floating?.max[this.#map.dimension] || Infinity\n )\n )\n })\n }\n }).pipe(\n distinctUntilChanged(),\n tap(value => {\n const floatingEl = floatingRef.container.nativeElement\n floatingEl.style[this.name as any] = `${value}px`\n })\n )\n }\n}\n\nexport function maxWidth(value: DimensionConstraintInput) {\n return new DimensionConstraintTrait(\"maxWidth\", value)\n}\n\nexport function maxHeight(value: DimensionConstraintInput) {\n return new DimensionConstraintTrait(\"maxHeight\", value)\n}\n\nexport function minWidth(value: DimensionConstraintInput) {\n return new DimensionConstraintTrait(\"minWidth\", value)\n}\n\nexport function minHeight(value: DimensionConstraintInput) {\n return new DimensionConstraintTrait(\"minHeight\", value)\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 {\n Alignment,\n Dimension,\n Position,\n Rect,\n rectContract,\n rectExpand,\n rectMoveOrigin,\n rectOrigin\n} from \"@ngutil/style\"\n\nimport type { FloatingPositionOptionsNormalized } from \"./position\"\n\nexport interface ComputePositionInput {\n floating: Dimension\n anchor: Rect\n placement: Rect\n options: FloatingPositionOptionsNormalized\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 if (options.anchor.margin) {\n anchor = rectExpand(anchor, options.anchor.margin)\n }\n const anchorPoint = rectOrigin(anchor, options.anchor.align)\n\n let content = rectMoveOrigin(floating, options.content.align, anchorPoint)\n if (options.content.margin) {\n content = rectContract(content, options.content.margin)\n }\n\n if (options.placement.padding) {\n placement = rectContract(placement, options.placement.padding)\n }\n\n const cf: ComputedFloating = {\n current: content,\n max: { width: placement.width - content.x, height: placement.height - content.y },\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 FloatingContent extends FloatingContentPosition {}\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?: FloatingContent\n placement?: FloatingPlacement\n}\n\nexport type FloatingPositionOptionsNormalized = FloatingPositionOptions & {\n anchor: FloatingAnchor\n content: FloatingContent\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 readonly options: FloatingPositionOptionsNormalized\n\n constructor(options: FloatingPositionOptions) {\n super()\n const cloned = { ...options }\n\n if (!cloned.placement) {\n cloned.placement = { ref: \"viewport\" }\n }\n\n if (!cloned.anchor) {\n cloned.anchor = { ref: cloned.placement.ref, align: \"center middle\" }\n }\n\n if (!cloned.content) {\n cloned.content = { align: \"center middle\" }\n }\n\n this.options = cloned as any\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: FloatingPositionOptionsNormalized,\n readonly floating: Dimension,\n readonly anchor: Rect,\n readonly placement: Rect\n ) {\n // const frect: Rect = { x: 0, y: 0, ...floating }\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 { Observable, of } from \"rxjs\"\n\nimport { Primitive } from \"utility-types\"\n\nimport { FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\n\nexport type Attributes = { [key: string]: Primitive } | { dataset: { [key: string]: Primitive } }\n\nexport class AttributeTrait extends FloatingTrait<Attributes> {\n override name = \"attribute\"\n\n constructor(readonly attrs: Attributes) {\n super()\n }\n\n override connect(floatingRef: FloatingRef): Observable<Attributes> {\n const el = floatingRef.container.nativeElement\n\n for (const [k, v] of Object.entries(this.attrs)) {\n if (k === \"dataset\") {\n v && Object.assign(el.dataset, v)\n } else if (v == null) {\n el.removeAttribute(k)\n } else {\n el.setAttribute(k, v.toString())\n }\n }\n\n return of(this.attrs)\n }\n}\n\nexport function attribute(attrs: Attributes) {\n return new AttributeTrait(attrs)\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 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 { debounceTime, 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 floatingRef: FloatingRef\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<FloatingChannel>(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 container.nativeElement.style.visibility = \"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.emit({ type: state } as C)\n })\n this.state.on(\n \"init\",\n () =>\n new Observable(dst => {\n // TODO: angular render is stabilized\n this.traitState$.pipe(takeUntil(this.#untilCleanup), debounceTime(5)).subscribe(() => {\n dst.complete()\n })\n })\n )\n this.state.on(\"showing\", () => {\n container.nativeElement.style.visibility = \"visible\"\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 emit(event: Omit<C, \"floatingRef\">) {\n this.channel.next({ ...event, floatingRef: this } as any)\n }\n\n setResult(data: any) {\n this.emit({ type: \"result\", data } as C)\n this.hide().subscribe()\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 disposing = false\n\n const ref = this.create()\n const channelSub = ref.channel.subscribe(event => {\n dest.next(event)\n if (event.type === \"disposing\") {\n disposing = true\n }\n if (event.type === \"cleanup\") {\n dest.complete()\n }\n })\n\n const showSub = ref.show().subscribe()\n\n return () => {\n showSub.unsubscribe()\n channelSub.unsubscribe()\n if (!disposing) {\n ref.hide().subscribe()\n }\n }\n })\n }\n\n subscribe: Observable<FloatingChannel>[\"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","import { NgModule } from \"@angular/core\"\n\nimport { FloatingService } from \"./floating/floating.service\"\nimport { RootLayer } from \"./layer/layer.service\"\n\n@NgModule({\n providers: [FloatingService],\n imports: [RootLayer],\n exports: [RootLayer]\n})\nexport class NuFloating {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["style"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngutil-floating.mjs","sources":["../../../../packages/floating/src/floating/traits/animation.ts","../../../../packages/floating/src/floating/traits/backdrop.ts","../../../../packages/floating/src/floating/traits/dim-contraint.ts","../../../../packages/floating/src/floating/traits/focus.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/floating/traits/attribute.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/floating.module.ts","../../../../packages/floating/src/ngutil-floating.ts"],"sourcesContent":["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 implements FloatingTrait<unknown> {\n readonly name = \"animation\"\n\n constructor(readonly animation: AnimationSet) {}\n\n 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 implements FloatingTrait<BackdropState> {\n readonly name = \"backdrop\"\n\n constructor(readonly options: BackdropTraitOptions) {}\n\n 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 { combineLatest, distinctUntilChanged, map, Observable, Subscriber, tap } from \"rxjs\"\n\nimport { clamp } from \"lodash\"\n\nimport { ElementInput, isElementInput } from \"@ngutil/common\"\nimport { Dimension, DimensionWatcher } from \"@ngutil/style\"\n\nimport { FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\nimport { type FloatingPosition } from \"./position\"\n\nexport type DimensionConstraintInput = ElementInput | number\n\ninterface DimMapEntry {\n computedRef: \"min\" | \"max\"\n dimension: keyof Dimension\n}\n\nconst DIM_MAP: { [key: string]: DimMapEntry } = {\n maxWidth: { computedRef: \"max\", dimension: \"width\" },\n maxHeight: { computedRef: \"max\", dimension: \"height\" },\n minWidth: { computedRef: \"min\", dimension: \"width\" },\n minHeight: { computedRef: \"min\", dimension: \"height\" }\n}\n\nexport class DimensionConstraintTrait implements FloatingTrait<number> {\n readonly name: string\n readonly #map: DimMapEntry\n constructor(\n name: keyof typeof DIM_MAP,\n readonly value: DimensionConstraintInput\n ) {\n this.name = name as string\n this.#map = DIM_MAP[name]\n }\n\n connect(floatingRef: FloatingRef<any>): Observable<number> {\n return new Observable((dst: Subscriber<number>) => {\n if (isElementInput(this.value)) {\n const watcher = floatingRef.container.injector.get(DimensionWatcher)\n const refDim = watcher.watch(this.value, \"border-box\").pipe(map(value => value[this.#map.dimension]))\n return combineLatest({\n refDim: refDim,\n position: floatingRef.watchTrait<FloatingPosition>(\"position\")\n }).subscribe(({ refDim, position }) => {\n const floating = position.computed?.floating\n dst.next(\n clamp(\n refDim,\n floating?.min[this.#map.dimension] || 0,\n floating?.max[this.#map.dimension] || Infinity\n )\n )\n })\n } else {\n return floatingRef.watchTrait<FloatingPosition>(\"position\").subscribe(position => {\n const floating = position.computed?.floating\n dst.next(\n clamp(\n this.value as number,\n floating?.min[this.#map.dimension] || 0,\n floating?.max[this.#map.dimension] || Infinity\n )\n )\n })\n }\n }).pipe(\n distinctUntilChanged(),\n tap(value => {\n const floatingEl = floatingRef.container.nativeElement\n floatingEl.style[this.name as any] = `${value}px`\n })\n )\n }\n}\n\nexport function maxWidth(value: DimensionConstraintInput) {\n return new DimensionConstraintTrait(\"maxWidth\", value)\n}\n\nexport function maxHeight(value: DimensionConstraintInput) {\n return new DimensionConstraintTrait(\"maxHeight\", value)\n}\n\nexport function minWidth(value: DimensionConstraintInput) {\n return new DimensionConstraintTrait(\"minWidth\", value)\n}\n\nexport function minHeight(value: DimensionConstraintInput) {\n return new DimensionConstraintTrait(\"minHeight\", value)\n}\n","import { Observable, Subscription } from \"rxjs\"\n\nimport { Focusable, FocusService, FocusState } from \"@ngutil/aria\"\nimport { ElementInput } from \"@ngutil/common\"\n\nimport { FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\n\nexport interface FocusOptions {\n trap?: boolean\n connect?: Focusable | FocusState\n tabindex?: number\n focusOnClose?: ElementInput\n}\n\nexport class FocusTrait implements FloatingTrait<unknown> {\n readonly name = \"focus\"\n\n constructor(readonly options: FocusOptions) {}\n\n connect(floatingRef: FloatingRef): Observable<unknown> {\n return new Observable(() => {\n const subs = new Subscription()\n const originallyFocused = document.activeElement as HTMLElement\n const svc = floatingRef.container.injector.get(FocusService)\n\n if (this.options.connect) {\n const tabindex = this.options.tabindex == null ? 0 : this.options.tabindex\n floatingRef.container.nativeElement.setAttribute(\"tabindex\", tabindex.toString())\n subs.add(this.options.connect.connect(floatingRef.container).subscribe())\n }\n\n if (this.options.trap) {\n subs.add(this.#trap(floatingRef, svc).subscribe())\n }\n\n floatingRef.state.on(\"disposing\", () => {\n const active = document.activeElement\n const floating = floatingRef.container.nativeElement\n if (active === floating || floating.contains(active)) {\n originallyFocused && document.contains(originallyFocused) && svc.focus(originallyFocused, \"program\")\n }\n })\n\n return () => {\n subs.unsubscribe()\n }\n })\n }\n\n #trap(floatingRef: FloatingRef, svc: FocusService) {\n return new Observable(() => {\n const trap = svc.focusTrap(floatingRef.container.nativeElement)\n\n floatingRef.state.on(\"shown\", () => {\n trap.focusInitialElement()\n })\n\n return () => {\n trap.destroy()\n }\n })\n }\n}\n\nexport function focus(options: FocusOptions) {\n return new FocusTrait(options)\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 implements FloatingTrait<unknown> {\n name = \"keystroke\"\n\n 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 {\n Alignment,\n Dimension,\n Position,\n Rect,\n rectContract,\n rectExpand,\n rectMoveOrigin,\n rectOrigin\n} from \"@ngutil/style\"\n\nimport type { FloatingPositionOptionsNormalized } from \"./position\"\n\nexport interface ComputePositionInput {\n floating: Dimension\n anchor: Rect\n placement: Rect\n options: FloatingPositionOptionsNormalized\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 if (options.anchor.margin) {\n anchor = rectExpand(anchor, options.anchor.margin)\n }\n const anchorPoint = rectOrigin(anchor, options.anchor.align)\n\n let content = rectMoveOrigin(floating, options.content.align, anchorPoint)\n if (options.content.margin) {\n content = rectContract(content, options.content.margin)\n }\n\n if (options.placement.padding) {\n placement = rectContract(placement, options.placement.padding)\n }\n\n const cf: ComputedFloating = {\n current: content,\n max: { width: placement.width - content.x, height: placement.height - content.y },\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 FloatingContent extends FloatingContentPosition {}\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?: FloatingContent\n placement?: FloatingPlacement\n}\n\nexport type FloatingPositionOptionsNormalized = FloatingPositionOptions & {\n anchor: FloatingAnchor\n content: FloatingContent\n placement: FloatingPlacement\n}\n\ntype Watches = {\n floating: Observable<Dimension>\n anchor: Observable<Rect>\n placement: Observable<Rect>\n}\n\nexport class PositionTrait implements FloatingTrait<FloatingPosition> {\n readonly name = \"position\"\n\n readonly options: FloatingPositionOptionsNormalized\n\n constructor(options: FloatingPositionOptions) {\n const cloned = { ...options }\n\n if (!cloned.placement) {\n cloned.placement = { ref: \"viewport\" }\n }\n\n if (!cloned.anchor) {\n cloned.anchor = { ref: cloned.placement.ref, align: \"center middle\" }\n }\n\n if (!cloned.content) {\n cloned.content = { align: \"center middle\" }\n }\n\n this.options = cloned as any\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: FloatingPositionOptionsNormalized,\n readonly floating: Dimension,\n readonly anchor: Rect,\n readonly placement: Rect\n ) {\n // const frect: Rect = { x: 0, y: 0, ...floating }\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 { focus } from \"./focus\"\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 focus({ trap: true }),\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 implements FloatingTrait<Partial<CSSStyleDeclaration>> {\n readonly name = \"style\"\n\n constructor(readonly styles: Partial<CSSStyleDeclaration>) {}\n\n 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 { Observable, of } from \"rxjs\"\n\nimport { Primitive } from \"utility-types\"\n\nimport { FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\n\nexport type Attributes = { [key: string]: Primitive } | { dataset: { [key: string]: Primitive } }\n\nexport class AttributeTrait implements FloatingTrait<Attributes> {\n readonly name = \"attribute\"\n\n constructor(readonly attrs: Attributes) {}\n\n connect(floatingRef: FloatingRef): Observable<Attributes> {\n const el = floatingRef.container.nativeElement\n\n for (const [k, v] of Object.entries(this.attrs)) {\n if (k === \"dataset\") {\n v && Object.assign(el.dataset, v)\n } else if (v == null) {\n el.removeAttribute(k)\n } else {\n el.setAttribute(k, v.toString())\n }\n }\n\n return of(this.attrs)\n }\n}\n\nexport function attribute(attrs: Attributes) {\n return new AttributeTrait(attrs)\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 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 { debounceTime, 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 floatingRef: FloatingRef\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<FloatingChannel>(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 container.nativeElement.style.visibility = \"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.emit({ type: state } as C)\n })\n this.state.on(\n \"init\",\n () =>\n new Observable(dst => {\n // TODO: angular render is stabilized\n this.traitState$.pipe(takeUntil(this.#untilCleanup), debounceTime(5)).subscribe(() => {\n dst.complete()\n })\n })\n )\n this.state.on(\"showing\", () => {\n container.nativeElement.style.visibility = \"visible\"\n })\n this.state.on(\"disposing\", () => {\n container.nativeElement.style.pointerEvents = \"none\"\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 emit(event: Omit<C, \"floatingRef\">) {\n this.channel.next({ ...event, floatingRef: this } as any)\n }\n\n setResult(data: any) {\n this.emit({ type: \"result\", data } as C)\n this.hide().subscribe()\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 disposing = false\n\n const ref = this.create()\n const channelSub = ref.channel.subscribe(event => {\n dest.next(event)\n if (event.type === \"disposing\") {\n disposing = true\n }\n if (event.type === \"cleanup\") {\n dest.complete()\n }\n })\n\n const showSub = ref.show().subscribe()\n\n return () => {\n showSub.unsubscribe()\n channelSub.unsubscribe()\n if (!disposing) {\n ref.hide().subscribe()\n }\n }\n })\n }\n\n subscribe: Observable<FloatingChannel>[\"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","import { NgModule } from \"@angular/core\"\n\nimport { FloatingService } from \"./floating/floating.service\"\nimport { RootLayer } from \"./layer/layer.service\"\n\n@NgModule({\n providers: [FloatingService],\n imports: [RootLayer],\n exports: [RootLayer]\n})\nexport class NuFloating {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["style"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Observable } from "rxjs";
|
|
2
2
|
import type { FloatingRef } from "../floating-ref";
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
export interface FloatingTrait<T = any> {
|
|
4
|
+
readonly name: string;
|
|
5
|
+
connect(floatingRef: FloatingRef<any>): Observable<T>;
|
|
6
6
|
}
|
|
@@ -6,9 +6,9 @@ export type AnimationSet = {
|
|
|
6
6
|
show: AnimationMetadata[];
|
|
7
7
|
hide: AnimationMetadata[];
|
|
8
8
|
};
|
|
9
|
-
export declare class AnimationTrait
|
|
9
|
+
export declare class AnimationTrait implements FloatingTrait<unknown> {
|
|
10
10
|
readonly animation: AnimationSet;
|
|
11
|
-
name
|
|
11
|
+
readonly name = "animation";
|
|
12
12
|
constructor(animation: AnimationSet);
|
|
13
13
|
connect(floatingRef: FloatingRef): Observable<unknown>;
|
|
14
14
|
}
|
|
@@ -9,9 +9,9 @@ export type Attributes = {
|
|
|
9
9
|
[key: string]: Primitive;
|
|
10
10
|
};
|
|
11
11
|
};
|
|
12
|
-
export declare class AttributeTrait
|
|
12
|
+
export declare class AttributeTrait implements FloatingTrait<Attributes> {
|
|
13
13
|
readonly attrs: Attributes;
|
|
14
|
-
name
|
|
14
|
+
readonly name = "attribute";
|
|
15
15
|
constructor(attrs: Attributes);
|
|
16
16
|
connect(floatingRef: FloatingRef): Observable<Attributes>;
|
|
17
17
|
}
|
|
@@ -10,10 +10,10 @@ export interface BackdropTraitOptions {
|
|
|
10
10
|
export declare class BackdropState {
|
|
11
11
|
onClick: Observable<void>;
|
|
12
12
|
}
|
|
13
|
-
export declare class BackdropTrait
|
|
13
|
+
export declare class BackdropTrait implements FloatingTrait<BackdropState> {
|
|
14
14
|
#private;
|
|
15
15
|
readonly options: BackdropTraitOptions;
|
|
16
|
-
name
|
|
16
|
+
readonly name = "backdrop";
|
|
17
17
|
constructor(options: BackdropTraitOptions);
|
|
18
18
|
connect(floatingRef: FloatingRef<any>): Observable<BackdropState>;
|
|
19
19
|
}
|
|
@@ -11,7 +11,7 @@ interface DimMapEntry {
|
|
|
11
11
|
declare const DIM_MAP: {
|
|
12
12
|
[key: string]: DimMapEntry;
|
|
13
13
|
};
|
|
14
|
-
export declare class DimensionConstraintTrait
|
|
14
|
+
export declare class DimensionConstraintTrait implements FloatingTrait<number> {
|
|
15
15
|
#private;
|
|
16
16
|
readonly value: DimensionConstraintInput;
|
|
17
17
|
readonly name: string;
|