@ngutil/floating 0.0.102 → 0.0.104
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/fesm2022/ngutil-floating.mjs +21 -23
- package/fesm2022/ngutil-floating.mjs.map +1 -1
- package/index.d.ts +415 -5
- package/package.json +7 -7
- package/floating/floating-ref.d.ts +0 -64
- package/floating/floating.service.d.ts +0 -57
- package/floating/index.d.ts +0 -3
- package/floating/traits/_base.d.ts +0 -6
- package/floating/traits/animation.d.ts +0 -30
- package/floating/traits/attribute.d.ts +0 -18
- package/floating/traits/backdrop.d.ts +0 -16
- package/floating/traits/close-trigger.d.ts +0 -35
- package/floating/traits/focus.d.ts +0 -19
- package/floating/traits/index.d.ts +0 -9
- package/floating/traits/modal.d.ts +0 -5
- package/floating/traits/position.d.ts +0 -43
- package/floating/traits/style.d.ts +0 -10
- package/layer/backdrop-ref.d.ts +0 -15
- package/layer/child-ref.d.ts +0 -45
- package/layer/container-ref.d.ts +0 -17
- package/layer/external-ref.d.ts +0 -3
- package/layer/index.d.ts +0 -6
- package/layer/layer-container.d.ts +0 -22
- package/layer/layer.service.d.ts +0 -20
- package/layer/portal-ref.d.ts +0 -32
|
@@ -6,8 +6,7 @@ import { KeystrokeService, FocusService } from '@ngutil/aria';
|
|
|
6
6
|
import { coerceElement, isElementInput, Lifecycle, toSorted } from '@ngutil/common';
|
|
7
7
|
import { isEqual } from 'es-toolkit';
|
|
8
8
|
import * as i0 from '@angular/core';
|
|
9
|
-
import { ElementRef, Injector, InjectionToken, inject, Directive,
|
|
10
|
-
import { DOCUMENT } from '@angular/common';
|
|
9
|
+
import { ElementRef, Injector, InjectionToken, inject, Directive, DOCUMENT, Injectable, ViewContainerRef, ApplicationRef, Inject, TemplateRef } from '@angular/core';
|
|
11
10
|
import { DomPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
|
|
12
11
|
|
|
13
12
|
// https://tympanus.net/Development/ModalWindowEffects/
|
|
@@ -648,10 +647,10 @@ class LayerContainer {
|
|
|
648
647
|
}
|
|
649
648
|
}
|
|
650
649
|
}
|
|
651
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
652
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
650
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: LayerContainer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
651
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.13", type: LayerContainer, isStandalone: true, ngImport: i0 }); }
|
|
653
652
|
}
|
|
654
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
653
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: LayerContainer, decorators: [{
|
|
655
654
|
type: Directive
|
|
656
655
|
}] });
|
|
657
656
|
class RootLayer extends LayerContainer {
|
|
@@ -659,10 +658,10 @@ class RootLayer extends LayerContainer {
|
|
|
659
658
|
super(...arguments);
|
|
660
659
|
this.root = inject(DOCUMENT).body;
|
|
661
660
|
}
|
|
662
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
663
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
661
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: RootLayer, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
662
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: RootLayer }); }
|
|
664
663
|
}
|
|
665
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
664
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: RootLayer, decorators: [{
|
|
666
665
|
type: Injectable
|
|
667
666
|
}] });
|
|
668
667
|
class IndividualLayer extends LayerContainer {
|
|
@@ -670,10 +669,10 @@ class IndividualLayer extends LayerContainer {
|
|
|
670
669
|
super(...arguments);
|
|
671
670
|
this.root = inject(ElementRef).nativeElement;
|
|
672
671
|
}
|
|
673
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
674
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
672
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: IndividualLayer, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
673
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.13", type: IndividualLayer, isStandalone: true, providers: [{ provide: LayerContainer, useExisting: IndividualLayer }], usesInheritance: true, ngImport: i0 }); }
|
|
675
674
|
}
|
|
676
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
675
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: IndividualLayer, decorators: [{
|
|
677
676
|
type: Directive,
|
|
678
677
|
args: [{
|
|
679
678
|
providers: [{ provide: LayerContainer, useExisting: IndividualLayer }]
|
|
@@ -716,7 +715,7 @@ class PortalRef extends ContainerRef {
|
|
|
716
715
|
constructor(options) {
|
|
717
716
|
super(options);
|
|
718
717
|
this.injectorName = "PortalRef";
|
|
719
|
-
this.outlet = new DomPortalOutlet(this.nativeElement, undefined,
|
|
718
|
+
this.outlet = new DomPortalOutlet(this.nativeElement, undefined, this.injector);
|
|
720
719
|
this.state.on("disposed", () => {
|
|
721
720
|
this.outlet.dispose();
|
|
722
721
|
delete this.outlet;
|
|
@@ -731,9 +730,8 @@ class ComponentPortalRef extends PortalRef {
|
|
|
731
730
|
super(options);
|
|
732
731
|
this.component = component;
|
|
733
732
|
this.injectorName = "ComponentPortalRef";
|
|
734
|
-
const resolver = this.injector.get(ComponentFactoryResolver);
|
|
735
733
|
const vcr = this.injector.get(ViewContainerRef);
|
|
736
|
-
this.portal = new ComponentPortal(component, options.viewContainerRef || vcr, this.injector
|
|
734
|
+
this.portal = new ComponentPortal(component, options.viewContainerRef || vcr, this.injector);
|
|
737
735
|
this.outlet.attach(this.portal);
|
|
738
736
|
this.state.on("disposed", () => {
|
|
739
737
|
this.portal.isAttached && this.portal.detach();
|
|
@@ -809,10 +807,10 @@ class LayerService {
|
|
|
809
807
|
}
|
|
810
808
|
return root.injector;
|
|
811
809
|
}
|
|
812
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
813
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
810
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: LayerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
811
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: LayerService }); }
|
|
814
812
|
}
|
|
815
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
813
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: LayerService, decorators: [{
|
|
816
814
|
type: Injectable
|
|
817
815
|
}] });
|
|
818
816
|
|
|
@@ -901,10 +899,10 @@ class FloatingRef {
|
|
|
901
899
|
return combineLatest(src).pipe(shareReplay(1));
|
|
902
900
|
}
|
|
903
901
|
}
|
|
904
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
905
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
902
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: FloatingRef, deps: [{ token: LayerService }, { token: ContainerRef }, { token: TRAITS }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
903
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: FloatingRef }); }
|
|
906
904
|
}
|
|
907
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
905
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: FloatingRef, decorators: [{
|
|
908
906
|
type: Injectable
|
|
909
907
|
}], ctorParameters: () => [{ type: LayerService }, { type: ContainerRef }, { type: undefined, decorators: [{
|
|
910
908
|
type: Inject,
|
|
@@ -1031,10 +1029,10 @@ class FloatingService {
|
|
|
1031
1029
|
return new FloatingComponentFactory(this, value, opts);
|
|
1032
1030
|
}
|
|
1033
1031
|
}
|
|
1034
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1035
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1032
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: FloatingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1033
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: FloatingService }); }
|
|
1036
1034
|
}
|
|
1037
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1035
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: FloatingService, decorators: [{
|
|
1038
1036
|
type: Injectable
|
|
1039
1037
|
}] });
|
|
1040
1038
|
|
|
@@ -1 +1 @@
|
|
|
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/close-trigger.ts","../../../../packages/floating/src/floating/traits/focus.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/external-ref.ts","../../../../packages/floating/src/layer/layer-container.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/index.ts","../../../../packages/floating/src/ngutil-floating.ts"],"sourcesContent":["import { animate, AnimationBuilder, AnimationMetadata, style } from \"@angular/animations\"\n\nimport { map, Observable, of, Subscriber, switchMap, take, tap } from \"rxjs\"\n\nimport { animationObservable, maxPossibleRadius } from \"@ngutil/graphics\"\nimport {\n Duration,\n Ease,\n FloatingPosition,\n FloatingPositionDirection,\n Position,\n rectContainsPoint,\n rectOrigin\n} 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 timing = `${Duration.FastMs}ms ${Ease.Deceleration}`\n\nexport type AnimationTraitParams = (position: FloatingPosition) => object\n\nexport class AnimationTrait implements FloatingTrait<unknown> {\n readonly name = \"animation\"\n\n constructor(\n readonly animation: AnimationSet,\n readonly params?: AnimationTraitParams\n ) {}\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\n floatingRef.state.on(\"showing\", () =>\n animationParams(floatingRef, this.params).pipe(\n switchMap(params =>\n animationObservable({\n builder,\n element,\n animation: this.animation.show,\n options: { params }\n })\n )\n )\n )\n floatingRef.state.on(\"disposing\", () =>\n animationParams(floatingRef, this.params).pipe(\n switchMap(params =>\n animationObservable({\n builder,\n element,\n animation: this.animation.hide,\n options: { params }\n })\n ),\n tap(() => (element.style.display = \"none\"))\n )\n )\n floatingRef.state.on(\"disposing\", () => dst.complete())\n dst.next()\n })\n }\n}\n\nfunction animationParams(floatingRef: FloatingRef, params?: AnimationTraitParams): Observable<object> {\n if (params == null) {\n return of({})\n }\n\n return floatingRef.watchTrait<FloatingPosition>(\"position\").pipe(take(1), map(params))\n}\n\nexport const FallAnimation: AnimationSet = {\n show: [\n style({\n transform: \"scale({{ scale }})\",\n visibility: \"visible\",\n opacity: \"0\"\n }),\n animate(\n timing,\n style({\n transform: \"scale(1)\",\n opacity: \"1\"\n })\n )\n ],\n hide: [\n animate(\n timing,\n style({\n transform: \"scale({{ scale }})\",\n visibility: \"visible\",\n opacity: \"0\"\n })\n )\n ]\n}\n\nexport function fallAnimation(scale: number = 1.5) {\n return new AnimationTrait(FallAnimation, () => {\n return { scale }\n })\n}\n\nexport const FadeAnimation: AnimationSet = {\n show: [style({ opacity: 0 }), animate(timing, style({ opacity: 1 }))],\n hide: [animate(timing, style({ opacity: 0 }))]\n}\n\nexport function fadeAnimation() {\n return new AnimationTrait(FadeAnimation)\n}\n\nconst SlideAnimation: AnimationSet = {\n show: [\n style({\n transform: \"translate({{ tx }}, {{ ty }})\",\n opacity: \"0\",\n // transformOrigin: \"{{ origin }}\",\n visibility: \"visible\"\n }),\n animate(\n timing,\n style({\n opacity: \"1\",\n transform: \"translate(0px, 0px)\"\n })\n )\n ],\n hide: [animate(timing, style({ opacity: 0, transform: \"translate(calc({{ tx }} * -1), calc({{ ty }} * -1))\" }))]\n}\n\nconst SlideAnimationParams: { [K in FloatingPositionDirection]: { tx: number; ty: number } } = {\n center: { tx: 0, ty: 0 },\n up: { tx: 0, ty: 1 },\n down: { tx: 0, ty: -1 },\n left: { tx: 1, ty: 0 },\n right: { tx: -1, ty: 0 }\n}\n\nfunction slideAnimation(size: number) {\n return new AnimationTrait(SlideAnimation, position => {\n const { tx, ty } = SlideAnimationParams[position.direction]\n return { tx: `${tx * size}px`, ty: `${ty * size}px` }\n })\n}\n\nexport function slideNearAnimation(size: number = 40) {\n return slideAnimation(size * -1)\n}\n\nexport function slideAwayAnimation(size: number = 40) {\n return slideAnimation(size)\n}\n\nconst RippleRevealAnimation: AnimationSet = {\n show: [\n style({ clipPath: \"circle({{ radiusStart }} at {{ origin }})\" }),\n animate(`{{ duration }}ms ${Ease.Acceleration}`, style({ clipPath: \"circle({{ radiusEnd }} at {{ origin }})\" }))\n ],\n hide: [animate(timing, style({ opacity: 0 }))]\n}\n\ntype RippleRevealAnimationOptions = {\n origin: Position\n initialRadius?: number\n duration?: number\n}\n\nexport function rippleRevealAnimation(options: RippleRevealAnimationOptions) {\n const { origin, initialRadius = 0, duration = Duration.SlowMs } = options\n return new AnimationTrait(RippleRevealAnimation, position => {\n const animOrigin = rectContainsPoint(position.content.rect, origin)\n ? origin\n : rectOrigin(position.content.rect, \"center middle\")\n const { x, y, width, height } = position.content.rect\n const radius = maxPossibleRadius(animOrigin.x, animOrigin.y, width, height)\n return {\n radiusStart: `${initialRadius}px`,\n radiusEnd: `${radius}px`,\n origin: `${animOrigin.x - x}px ${animOrigin.y - y}px`,\n duration: duration\n }\n })\n}\n","import { AnimationBuilder } from \"@angular/animations\"\n\nimport { Observable, Subscriber } from \"rxjs\"\n\nimport { animationObservable, CoverOptions } from \"@ngutil/graphics\"\n\nimport { BackdropRef } from \"../../layer\"\nimport { type FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\nimport { FadeAnimation } from \"./animation\"\n\ninterface CommonOptions {}\n\nexport type BackdropTraitOptions = CoverOptions & CommonOptions\n\n// TODO: prevent scroll https://stackoverflow.com/questions/4770025/how-to-disable-scrolling-temporarily\nexport class BackdropTrait implements FloatingTrait<BackdropRef> {\n readonly name = \"backdrop\"\n\n constructor(readonly options: BackdropTraitOptions) {}\n\n connect(floatingRef: FloatingRef<any>): Observable<BackdropRef> {\n return new Observable((dest: Subscriber<BackdropRef>) => {\n const animationBuilder = floatingRef.container.injector.get(AnimationBuilder)\n const options = { ...this.options }\n const backdrop = floatingRef.layerSvc.newBackdrop(floatingRef.container, options)\n\n floatingRef.container.nativeElement.setAttribute(\"data-floating-has-backdrop\", \"true\")\n backdrop.nativeElement.setAttribute(\"data-floating-backdrop\", floatingRef.uid)\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 backdrop.state.on(\"disposed\", () => dest.complete())\n\n floatingRef.state.on(\"disposing\", () => backdrop.dispose())\n\n dest.add(backdrop.show().subscribe())\n dest.next(backdrop)\n })\n }\n}\n\nexport function backdrop(options: BackdropTraitOptions) {\n return new BackdropTrait(options)\n}\n","import {\n distinctUntilChanged,\n exhaustMap,\n filter,\n from,\n fromEvent,\n map,\n Observable,\n ObservableInput,\n of,\n race\n} from \"rxjs\"\n\nimport { KeystrokeService } from \"@ngutil/aria\"\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\n\nimport { FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\n\nexport interface ClickOutsideOptions {\n /**\n * If clicks happened on this element, that not trigger the close event\n */\n allowedElements?: ElementInput[]\n}\n\nexport interface CloseTriggerOptions {\n /**\n * Close floating when click outside of floating element\n */\n clickOutside?: boolean | ClickOutsideOptions\n\n /**\n * Only works when the floating element is focused\n */\n keystroke?: boolean\n\n /**\n * Close when emitting any value\n */\n trigger?: ObservableInput<any>\n}\n\nexport interface CloseTriggerEvent {\n source: \"click\" | \"keystroke\" | \"backbutton\" | \"trigger\"\n}\n\nclass CloseTriggerTrait implements FloatingTrait {\n readonly name = \"close-trigger\"\n\n constructor(readonly options: CloseTriggerOptions = {}) {}\n\n connect(floatingRef: FloatingRef): Observable<CloseTriggerEvent | void> {\n const { keystroke, clickOutside, trigger } = this.options\n\n const container = floatingRef.container.nativeElement\n const triggers: Array<Observable<any>> = []\n const selfUid = Number(floatingRef.uid)\n\n if (keystroke) {\n const ks = floatingRef.container.injector.get(KeystrokeService)\n\n triggers.push(\n ks.watch(container, { key: \"Escape\", state: \"up\" }).pipe(\n map(() => {\n return { source: \"keystroke\" as const }\n })\n )\n )\n\n // TODO: angular auxiliary route\n }\n\n if (clickOutside) {\n const allowedElements =\n typeof clickOutside === \"boolean\" ? [] : clickOutside.allowedElements?.map(coerceElement) || []\n\n triggers.push(\n fromEvent(document, \"click\", { capture: true, passive: true }).pipe(\n filter(event => {\n if (!(event.target instanceof HTMLElement)) {\n return false\n }\n const target = event.target\n\n for (const allowed of allowedElements) {\n if (target === allowed || allowed.contains(target)) {\n return false\n }\n }\n\n const floatingUid = getFloatingUid(target, \"data-floating\", \"floating\")\n const backdropUid = getFloatingUid(target, \"data-floating-backdrop\", \"floatingBackdrop\")\n const otherBackdropUid =\n floatingUid != null && floatingUid !== selfUid\n ? getFloatingUid(\n document.querySelector(`[data-floating-backdrop=\"${floatingUid}\"]`),\n \"data-floating-backdrop\",\n \"floatingBackdrop\"\n )\n : undefined\n\n // console.log({ floatingUid, backdropUid, otherBackdropUid, self: selfUid })\n\n if (floatingUid == null && backdropUid == null) {\n return true\n } else {\n return (\n // click on self or erlier backdrop\n (backdropUid != null && backdropUid <= selfUid) ||\n // click on other floating element, whitout backdrop\n (floatingUid != null && otherBackdropUid == null && floatingUid < selfUid) ||\n // click on other floating element that opened erlier\n (floatingUid != null && floatingUid < selfUid)\n )\n }\n }),\n map(() => {\n return { source: \"click\" as const }\n })\n )\n )\n }\n\n if (trigger) {\n triggers.push(\n from(trigger).pipe(\n map(() => {\n return { source: \"trigger\" as const }\n })\n )\n )\n }\n\n if (triggers.length === 0) {\n return of()\n } else {\n return new Observable(dst =>\n floatingRef.state.on(\"shown\", () => {\n race(...triggers)\n .pipe(\n exhaustMap(event =>\n floatingRef.close().pipe(\n map(() => event),\n distinctUntilChanged()\n )\n )\n )\n .subscribe(dst)\n })\n )\n }\n }\n}\n\nexport function closeTrigger(options: CloseTriggerOptions = { clickOutside: true, keystroke: true }) {\n return new CloseTriggerTrait(options)\n}\n\nfunction getFloatingUid(el: HTMLElement | null, attr: string, dataset: string): number | undefined {\n if (el == null) {\n return undefined\n }\n\n if (el.matches(`[${attr}]`)) {\n return Number(el.dataset[dataset]) || undefined\n } else {\n const parent = el.closest(`[${attr}]`) as HTMLElement\n if (parent) {\n return Number(parent.dataset[dataset]) || undefined\n }\n }\n return undefined\n}\n","import { Observable } 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(dest => {\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 dest.add(this.options.connect.connect(floatingRef.container).subscribe())\n }\n\n if (this.options.trap) {\n dest.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 dest.complete()\n })\n dest.next()\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 {\n combineLatest,\n distinctUntilChanged,\n isObservable,\n map,\n NEVER,\n Observable,\n of,\n Subscriber,\n switchMap,\n take,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { isEqual } from \"es-toolkit\"\n\nimport { ElementInput, isElementInput } from \"@ngutil/common\"\nimport {\n Dimension,\n DimensionWatcher,\n floatingPosition,\n FloatingPosition,\n FloatingPositionAltInput,\n FloatingPositionAnchorOptions,\n FloatingPositionContentOptions,\n FloatingPositionDims,\n FloatingPositionDirection,\n FloatingPositionPlacementOptions,\n floatingPositionToStyle,\n NodeRemovedWatcher,\n Rect,\n RectWatcher\n} from \"@ngutil/style\"\n\nimport { FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\n\nexport type PositionTraitElementRef = ElementInput | Window | \"layer\" | \"viewport\"\n\nexport type PositionTraitOptions = {\n content?: Omit<FloatingPositionContentOptions, \"constraints\"> & { constraints?: SizeConstraintsInput }\n anchor?: FloatingPositionAnchorOptions & { ref: PositionTraitElementRef }\n placement?: FloatingPositionPlacementOptions & { ref: PositionTraitElementRef }\n horizontalAlt?: FloatingPositionAltInput\n verticalAlt?: FloatingPositionAltInput\n}\n\n/**\n * Width ot height input values\n *\n * - `number`: excact value\n * - `ElementInput`: element reference, and take the dimension from it\n * - `link`: take the dimension from the anchor element and only apply on connection dimension.\n * eg.: `anchor.link = \"left bottom\"` and `content.link = \"left top\"`, in this case only width will be applied.\n */\ntype SizeInputConst = number | ElementInput | \"link\" | \"viewport\"\ntype SizeInput = SizeInputConst | Observable<SizeInputConst>\n\ninterface SizeConstraintsInput {\n minWidth?: SizeInput\n maxWidth?: SizeInput\n minHeight?: SizeInput\n maxHeight?: SizeInput\n}\n\ntype SizeConstraints = NonNullable<FloatingPositionDims[\"constraints\"]>\n\ntype Watches = {\n content: Observable<Dimension>\n anchor: Observable<Rect>\n placement: Observable<Rect>\n constraints: Observable<ConstraintsResult>\n}\n\ntype ConstraintWatches = { [K in keyof SizeConstraints]-?: Observable<NonNullable<SizeConstraints[K]>> }\ntype ConstraintsResult = Required<SizeConstraints>\n\nexport class PositionTrait implements FloatingTrait<FloatingPosition> {\n readonly name = \"position\"\n\n readonly options: Required<PositionTraitOptions>\n\n constructor(options: PositionTraitOptions) {\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, link: \"center middle\" }\n }\n\n if (!cloned.content) {\n cloned.content = { link: \"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 const removeWatcher = injector.get(NodeRemovedWatcher)\n\n const constraints = this.options.content.constraints || {}\n const constraintsWatches: ConstraintWatches = {\n minWidth: sizeWatcher(dimWatcher, \"width\", constraints.minWidth),\n maxWidth: sizeWatcher(dimWatcher, \"width\", constraints.maxWidth),\n minHeight: sizeWatcher(dimWatcher, \"height\", constraints.minHeight),\n maxHeight: sizeWatcher(dimWatcher, \"height\", constraints.maxHeight)\n }\n\n const watches: Watches = {\n content: 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 constraints: combineLatest(constraintsWatches)\n }\n\n const anchorRemoved =\n this.options.anchor.ref === \"viewport\" || this.options.anchor.ref instanceof Window\n ? NEVER\n : removeWatcher.watch(refToNode(this.options.anchor.ref, floatingRef) as unknown as ElementInput)\n\n const onRemove = anchorRemoved.pipe(\n tap(() => floatingRef.close().subscribe()),\n take(1)\n )\n\n return combineLatest(watches)\n .pipe(takeUntil(onRemove), distinctUntilChanged(isEqual))\n .subscribe(dims => {\n const pos = floatingPosition({ dims, options: this.options })\n const floatingEl = floatingRef.container.nativeElement\n Object.assign(floatingEl.style, floatingPositionToStyle(pos))\n Object.assign(floatingEl.style, constraintsToStyle(pos, dims.constraints, constraints))\n dest.next(pos)\n })\n }).pipe(takeUntil(floatingRef.state.onExecute(\"disposing\")))\n }\n}\n\nfunction refWatcher(rectWatcher: RectWatcher, ref: PositionTraitElementRef, floatingRef: FloatingRef<any>) {\n const node = refToNode(ref, floatingRef)\n return rectWatcher.watch(node, \"border-box\")\n}\n\nfunction refToNode(ref: PositionTraitElementRef, floatingRef: FloatingRef<any>) {\n if (ref === \"layer\") {\n return floatingRef.layerSvc.root\n } else if (ref === \"viewport\" || ref instanceof Window) {\n return window\n } else {\n return ref\n }\n}\n\nfunction sizeWatcher(dimWatcher: DimensionWatcher, prop: \"width\" | \"height\", size?: SizeInput): Observable<number> {\n if (size === \"viewport\") {\n return dimWatcher.watch(window, \"border-box\").pipe(map(dim => dim[prop]))\n } else if (typeof size === \"number\") {\n return of(size)\n } else if (isElementInput(size)) {\n return dimWatcher.watch(size, \"border-box\").pipe(map(value => value[prop]))\n } else if (isObservable(size)) {\n return (size as Observable<number | ElementInput>).pipe(\n switchMap(value => sizeWatcher(dimWatcher, prop, value))\n )\n }\n return of(NaN)\n}\n\ntype MinMaxNames = keyof SizeConstraints\nconst MINMAX_NAMES: Array<MinMaxNames> = [\"minWidth\", \"minHeight\", \"maxWidth\", \"maxHeight\"]\n\nfunction constraintsToStyle(pos: FloatingPosition, sizes: ConstraintsResult, options: SizeConstraintsInput) {\n const result: Partial<CSSStyleDeclaration> = {}\n for (const name of MINMAX_NAMES) {\n result[name] = constraintValue(pos, options, name, sizes[name])\n }\n return result\n}\n\nconst DIM_DIRECTIONS: Record<\"width\" | \"height\", Array<FloatingPositionDirection>> = {\n width: [FloatingPositionDirection.Up, FloatingPositionDirection.Down, FloatingPositionDirection.Center],\n height: [FloatingPositionDirection.Left, FloatingPositionDirection.Right, FloatingPositionDirection.Center]\n}\n\nfunction constraintValue(pos: FloatingPosition, options: SizeConstraintsInput, name: MinMaxNames, value: number) {\n const wh = name.substring(3).toLowerCase() as \"width\" | \"height\"\n const maxValue = pos.placement.area[wh]\n\n // determine default or link value\n if (value == null || isNaN(value)) {\n const src = options[name]\n\n // if the given min/max value is link then test witch sides connected, and only use connected side value\n if (src === \"link\" && DIM_DIRECTIONS[wh].includes(pos.direction)) {\n return `${Math.min(maxValue, pos.anchor.rect[wh])}px`\n }\n\n // only return maxWidth / maxHeight, becuse minWidth / minHeight is auto if not presen\n const minmax = name.substring(0, 3) as \"min\" | \"max\"\n if (minmax === \"max\") {\n return `${maxValue}px`\n }\n\n return \"auto\"\n }\n\n return `${Math.min(maxValue, value)}px`\n}\n\nexport function position(options: PositionTraitOptions) {\n return new PositionTrait(options)\n}\n","import { fallAnimation } from \"./animation\"\nimport { backdrop } from \"./backdrop\"\nimport { closeTrigger } from \"./close-trigger\"\nimport { focus } from \"./focus\"\nimport { position } from \"./position\"\n\nexport function modal() {\n return [\n position({\n anchor: {\n ref: \"viewport\",\n link: \"center middle\"\n },\n placement: {\n ref: \"viewport\",\n padding: \"16px\"\n }\n }),\n backdrop({ type: \"solid\", color: \"rgba(0, 0, 0, .3)\" }),\n focus({ trap: true }),\n closeTrigger(),\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 { filter, Observable, of, share, take } from \"rxjs\"\n\nimport { Lifecycle } from \"@ngutil/common\"\n\nexport type DisposeHandler<T> = (ref: T) => Observable<void>\n\nexport enum AlwaysOnTop {\n /**\n * Display as open order\n */\n None = 0,\n\n /**\n * Modals\n */\n Modal = 2,\n\n /**\n * User access control\n */\n UAC = 3,\n\n /**\n * Toast...\n */\n Toast = 4,\n\n /**\n * Like select drop down, tooltip, stb...\n */\n Control = 5\n}\n\n// TODO: disposing, disposed\n\nexport abstract class ChildRef<T extends HTMLElement = HTMLElement> extends ElementRef<T> {\n readonly state = new Lifecycle({\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 protected readonly disposed$ = this.state.current$.pipe(\n filter(state => state === \"disposed\"),\n take(1),\n share()\n )\n\n constructor(\n nativeElement: T,\n public readonly alwaysOnTop: AlwaysOnTop = AlwaysOnTop.None\n ) {\n super(nativeElement)\n this.state.on(\"disposed\", () => {\n this.nativeElement.parentElement?.removeChild(this.nativeElement)\n this.state.destroy()\n delete (this as any).state\n })\n }\n\n dispose() {\n if (this.state == null) {\n return of()\n }\n return this.state.run([\"disposing\", \"disposed\"])\n }\n}\n","import { Injector, Provider } from \"@angular/core\"\n\nimport { AlwaysOnTop, ChildRef } from \"./child-ref\"\n\nexport interface ContainerOptions {\n alwaysOnTop?: AlwaysOnTop\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), options.alwaysOnTop || AlwaysOnTop.None)\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 div.style.display = \"inline-flex\"\n div.style.flexDirection = \"column\"\n div.style.alignItems = \"stretch\"\n div.style.justifyContent = \"stretch\"\n div.style.boxSizing = \"border-box\"\n\n if (options.classes) {\n div.classList.add(...options.classes)\n }\n\n return div\n}\n","import { takeUntil } from \"rxjs\"\n\nimport { CoverRef } from \"@ngutil/graphics\"\nimport { CoverOptions } from \"@ngutil/graphics\"\n\nimport { ChildRef } from \"./child-ref\"\n\nexport type BackdropOptions = CoverOptions\n\nexport class BackdropRef extends 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 = false\n\n constructor(\n readonly coverRef: CoverRef<any>,\n readonly under: ChildRef,\n readonly options: CoverOptions\n ) {\n super(coverRef.nativeElement)\n\n this.group = `${options.color === \"transparent\" ? \"transparent\" : \"solid\"}`\n\n this.state.on(\"showing\", () => {\n this.coverRef\n .show()\n .pipe(takeUntil(this.state.onDone(\"disposed\")))\n .subscribe(() => {\n this.visible = true\n })\n })\n }\n\n show() {\n return this.state.run(\"showing\", \"shown\")\n }\n}\n","import { ChildRef } from \"./child-ref\"\n\nexport class ExternalRef extends ChildRef {}\n","import { DOCUMENT } from \"@angular/common\"\nimport { Directive, ElementRef, inject, Injectable, InjectionToken } from \"@angular/core\"\n\nimport { toSorted } from \"@ngutil/common\"\n\nimport { BackdropRef } from \"./backdrop-ref\"\nimport { AlwaysOnTop, ChildRef } from \"./child-ref\"\n\nexport const LAYER_CONTAINER_ZINDEX_START = new InjectionToken<number>(\"LAYER_CONTAINER_ZINDEX_START\")\n\n@Directive()\nexport abstract class LayerContainer {\n abstract readonly root: HTMLElement\n\n readonly #children: Array<ChildRef> = []\n readonly zIndexStart: number = inject(LAYER_CONTAINER_ZINDEX_START)\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.appendChild(ref.nativeElement)\n ref.state.on(\"disposing\", () => 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, sortChildren2)\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.color !== \"transparent\") {\n child.visible = !hasBackdrop\n hasBackdrop = true\n }\n }\n }\n}\n\n@Injectable()\nexport class RootLayer extends LayerContainer {\n readonly root = inject(DOCUMENT).body\n}\n\n@Directive({\n providers: [{ provide: LayerContainer, useExisting: IndividualLayer }]\n})\nexport class IndividualLayer extends LayerContainer {\n readonly root = inject(ElementRef).nativeElement\n}\n\nfunction sortChildren2(a: ChildRef, b: ChildRef) {\n const alwaysOnTop = sortByAlwaysOnTop(a, b)\n if (alwaysOnTop === 0) {\n return sortByBackdrop(a, b)\n } else {\n return alwaysOnTop\n }\n}\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\nfunction sortByAlwaysOnTop(a: ChildRef, b: ChildRef) {\n return getAlwaysOnTop(a) - getAlwaysOnTop(b)\n}\n\nfunction getAlwaysOnTop(child: ChildRef): number {\n if (child instanceof BackdropRef) {\n return child.under.alwaysOnTop || AlwaysOnTop.None\n } else {\n return child.alwaysOnTop || AlwaysOnTop.None\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 { ApplicationRef, inject, Injectable, Injector, TemplateRef, ViewContainerRef } from \"@angular/core\"\n\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\nimport { CoverService } from \"@ngutil/graphics\"\n\nimport { BackdropOptions, BackdropRef } from \"./backdrop-ref\"\nimport { AlwaysOnTop, ChildRef } from \"./child-ref\"\nimport { ContainerOptions, ContainerRef } from \"./container-ref\"\nimport { ExternalRef } from \"./external-ref\"\nimport { LayerContainer } from \"./layer-container\"\nimport { ComponentPortalOptions, ComponentPortalRef, TemplatePortalOptions, TemplatePortalRef } from \"./portal-ref\"\n\n// TODO: ELEVATION_STEP config with injection\n// TODO: ELEVATION_START config with injection\n\n@Injectable()\nexport class LayerService {\n readonly #container = inject(LayerContainer)\n readonly #cover = inject(CoverService)\n readonly #injector = inject(Injector)\n readonly #appRef = inject(ApplicationRef)\n\n get root() {\n return this.#container.root\n }\n\n newComponentPortal<T>(component: ComponentType<T>, options: ComponentPortalOptions<T>): ComponentPortalRef<T> {\n if (!options.injector) {\n options = { ...options, injector: this.#getInjector() }\n }\n return this.#container.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.#getInjector() }\n }\n return this.#container.append(new TemplatePortalRef(tpl, options))\n }\n\n newContainer(options: ContainerOptions): ContainerRef {\n if (!options.injector) {\n options = { ...options, injector: this.#getInjector() }\n }\n return this.#container.append(new ContainerRef(options))\n }\n\n newBackdrop(under: ChildRef, options: BackdropOptions): BackdropRef {\n const coverRef = this.#cover.create(this.root, options)\n return this.#container.append(new BackdropRef(coverRef, under, options))\n }\n\n addExternal(element: ElementInput, alwaysOnTop: AlwaysOnTop = AlwaysOnTop.None) {\n return this.#container.append(new ExternalRef(coerceElement(element), alwaysOnTop))\n }\n\n #getInjector() {\n try {\n this.#injector.get(ViewContainerRef)\n return this.#injector\n // eslint-disable-next-line no-empty\n } catch (err) {}\n\n const root = this.#appRef.components[0]\n if (root == null) {\n throw new Error(\"Root component not found\")\n }\n\n return root.injector\n }\n}\n","import { Inject, Injectable, InjectionToken } from \"@angular/core\"\n\nimport {\n combineLatest,\n debounceTime,\n EMPTY,\n filter,\n map,\n Observable,\n ReplaySubject,\n shareReplay,\n startWith,\n take,\n takeUntil,\n takeWhile\n} from \"rxjs\"\n\nimport { Lifecycle } 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\ntype TraitState = { [key: string]: FloatingTraitEvent | null }\n\nlet UID_COUNTER = 0\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 Lifecycle({\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<TraitState>\n\n readonly #untilCleanup = this.state.onExecute(\"cleanup\")\n readonly #untilDisposed = this.state.onExecute(\"disposed\")\n\n readonly uid = `${++UID_COUNTER}`\n\n constructor(\n readonly layerSvc: LayerService,\n readonly container: ContainerRef,\n @Inject(TRAITS) traits: Traits\n ) {\n Object.assign(container.nativeElement.style, {\n overflow: \"hidden\",\n visibility: \"hidden\",\n pointerEvents: \"none\"\n })\n container.nativeElement.setAttribute(\"data-floating\", this.uid)\n\n this.#traits = traits\n this.traitState$ = this.#traitState().pipe(shareReplay(1))\n\n this.state.current$.pipe(takeWhile(state => state !== \"cleanup\", true)).subscribe(state => {\n this.emit({ type: state } as C)\n })\n this.state.on(\"init\", () => this.traitState$.pipe(takeUntil(this.#untilCleanup), debounceTime(5), take(1)))\n this.state.on(\"showing\", () => {\n container.nativeElement.style.visibility = \"visible\"\n })\n this.state.on(\"shown\", () => {\n container.nativeElement.style.pointerEvents = null as any\n })\n this.state.on(\"disposing\", () => {\n container.nativeElement.style.pointerEvents = \"none\"\n })\n\n this.state.control(container.state)\n }\n\n show() {\n return this.state.run(\"init\", \"showing\", \"shown\")\n }\n\n /**\n * @deprecated\n */\n hide() {\n return this.close(true)\n }\n\n close(force = false) {\n if (force) {\n return this.state.run(\"disposing\", \"disposed\", \"cleanup\")\n } else {\n return this.state.run(\"closing\", \"disposing\", \"disposed\", \"cleanup\")\n }\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.close(true).subscribe()\n }\n\n watchTrait<T>(name: string): Observable<T> {\n return this.traitState$.pipe(\n takeUntil(this.#untilDisposed),\n map(state => state[name]),\n filter(value => value != null)\n ) as Observable<T>\n }\n\n #traitState(): Observable<TraitState> {\n const src: { [key: string]: Observable<FloatingTraitEvent | null> } = {}\n\n for (const [k, v] of Object.entries(this.#traits)) {\n src[k] = v.connect(this).pipe(takeUntil(this.#untilDisposed), startWith(null))\n }\n\n if (Object.keys(src).length === 0) {\n return EMPTY\n } else {\n return combineLatest(src).pipe(shareReplay(1))\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 { position, type PositionTraitOptions } from \"./traits/position\"\n\nexport type FloatingTraitInput = FloatingTrait | Array<FloatingTraitInput>\n\nexport abstract class FloatingFactory {\n protected readonly traits: { [key: string]: FloatingTrait } = {}\n\n #providers: Provider[] = []\n\n constructor(protected readonly floatingSvc: FloatingService) {}\n\n trait(...traits: Array<FloatingTraitInput>) {\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 === \"disposed\") {\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.close().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.floatingSvc.layer },\n { provide: FloatingService, useValue: this.floatingSvc },\n FloatingRef,\n ...this.#providers\n ]\n\n return providers\n }\n\n protected abstract create(): FloatingRef<FloatingChannel>\n\n position(options: PositionTraitOptions) {\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 floatingSvc: FloatingService,\n public readonly tpl: TemplateRef<T>,\n public readonly options: TemplatePortalOptions<T>\n ) {\n super(floatingSvc)\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.floatingSvc.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 floatingSvc: FloatingService,\n public readonly component: T,\n public readonly options: ComponentPortalOptions<T>\n ) {\n super(floatingSvc)\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.floatingSvc.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, value as any, opts)\n } else {\n return new FloatingComponentFactory(this, value as any, opts)\n }\n }\n}\n","import { Provider } from \"@angular/core\"\n\nimport { FloatingService } from \"./floating\"\nimport { LAYER_CONTAINER_ZINDEX_START, LayerContainer, LayerService, RootLayer } from \"./layer\"\n\nexport * from \"./floating\"\nexport * from \"./layer\"\n\nexport interface ProvideFloatingOptions {\n zIndexStart?: number\n}\n\nconst DEFAULTS: ProvideFloatingOptions = {\n zIndexStart: 10000\n}\n\nexport function provideFloating(options: ProvideFloatingOptions = {}): Provider[] {\n const opts = { ...DEFAULTS, ...options }\n return [\n { provide: LAYER_CONTAINER_ZINDEX_START, useValue: opts.zIndexStart },\n { provide: LayerContainer, useClass: RootLayer },\n LayerService,\n FloatingService\n ]\n}\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/close-trigger.ts","../../../../packages/floating/src/floating/traits/focus.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/external-ref.ts","../../../../packages/floating/src/layer/layer-container.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/index.ts","../../../../packages/floating/src/ngutil-floating.ts"],"sourcesContent":["import { animate, AnimationBuilder, AnimationMetadata, style } from \"@angular/animations\"\n\nimport { map, Observable, of, Subscriber, switchMap, take, tap } from \"rxjs\"\n\nimport { animationObservable, maxPossibleRadius } from \"@ngutil/graphics\"\nimport {\n Duration,\n Ease,\n FloatingPosition,\n FloatingPositionDirection,\n Position,\n rectContainsPoint,\n rectOrigin\n} 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 timing = `${Duration.FastMs}ms ${Ease.Deceleration}`\n\nexport type AnimationTraitParams = (position: FloatingPosition) => object\n\nexport class AnimationTrait implements FloatingTrait<void> {\n readonly name = \"animation\"\n\n constructor(\n readonly animation: AnimationSet,\n readonly params?: AnimationTraitParams\n ) {}\n\n connect(floatingRef: FloatingRef): Observable<void> {\n return new Observable((dst: Subscriber<void>) => {\n const builder = floatingRef.container.injector.get(AnimationBuilder)\n const element = floatingRef.container.nativeElement\n\n floatingRef.state.on(\"showing\", () =>\n animationParams(floatingRef, this.params).pipe(\n switchMap(params =>\n animationObservable({\n builder,\n element,\n animation: this.animation.show,\n options: { params }\n })\n )\n )\n )\n floatingRef.state.on(\"disposing\", () =>\n animationParams(floatingRef, this.params).pipe(\n switchMap(params =>\n animationObservable({\n builder,\n element,\n animation: this.animation.hide,\n options: { params }\n })\n ),\n tap(() => (element.style.display = \"none\"))\n )\n )\n floatingRef.state.on(\"disposing\", () => dst.complete())\n dst.next()\n })\n }\n}\n\nfunction animationParams(floatingRef: FloatingRef, params?: AnimationTraitParams): Observable<object> {\n if (params == null) {\n return of({})\n }\n\n return floatingRef.watchTrait<FloatingPosition>(\"position\").pipe(take(1), map(params))\n}\n\nexport const FallAnimation: AnimationSet = {\n show: [\n style({\n transform: \"scale({{ scale }})\",\n visibility: \"visible\",\n opacity: \"0\"\n }),\n animate(\n timing,\n style({\n transform: \"scale(1)\",\n opacity: \"1\"\n })\n )\n ],\n hide: [\n animate(\n timing,\n style({\n transform: \"scale({{ scale }})\",\n visibility: \"visible\",\n opacity: \"0\"\n })\n )\n ]\n}\n\nexport function fallAnimation(scale: number = 1.5) {\n return new AnimationTrait(FallAnimation, () => {\n return { scale }\n })\n}\n\nexport const FadeAnimation: AnimationSet = {\n show: [style({ opacity: 0 }), animate(timing, style({ opacity: 1 }))],\n hide: [animate(timing, style({ opacity: 0 }))]\n}\n\nexport function fadeAnimation() {\n return new AnimationTrait(FadeAnimation)\n}\n\nconst SlideAnimation: AnimationSet = {\n show: [\n style({\n transform: \"translate({{ tx }}, {{ ty }})\",\n opacity: \"0\",\n // transformOrigin: \"{{ origin }}\",\n visibility: \"visible\"\n }),\n animate(\n timing,\n style({\n opacity: \"1\",\n transform: \"translate(0px, 0px)\"\n })\n )\n ],\n hide: [animate(timing, style({ opacity: 0, transform: \"translate(calc({{ tx }} * -1), calc({{ ty }} * -1))\" }))]\n}\n\nconst SlideAnimationParams: { [K in FloatingPositionDirection]: { tx: number; ty: number } } = {\n center: { tx: 0, ty: 0 },\n up: { tx: 0, ty: 1 },\n down: { tx: 0, ty: -1 },\n left: { tx: 1, ty: 0 },\n right: { tx: -1, ty: 0 }\n}\n\nfunction slideAnimation(size: number) {\n return new AnimationTrait(SlideAnimation, position => {\n const { tx, ty } = SlideAnimationParams[position.direction]\n return { tx: `${tx * size}px`, ty: `${ty * size}px` }\n })\n}\n\nexport function slideNearAnimation(size: number = 40) {\n return slideAnimation(size * -1)\n}\n\nexport function slideAwayAnimation(size: number = 40) {\n return slideAnimation(size)\n}\n\nconst RippleRevealAnimation: AnimationSet = {\n show: [\n style({ clipPath: \"circle({{ radiusStart }} at {{ origin }})\" }),\n animate(`{{ duration }}ms ${Ease.Acceleration}`, style({ clipPath: \"circle({{ radiusEnd }} at {{ origin }})\" }))\n ],\n hide: [animate(timing, style({ opacity: 0 }))]\n}\n\ntype RippleRevealAnimationOptions = {\n origin: Position\n initialRadius?: number\n duration?: number\n}\n\nexport function rippleRevealAnimation(options: RippleRevealAnimationOptions) {\n const { origin, initialRadius = 0, duration = Duration.SlowMs } = options\n return new AnimationTrait(RippleRevealAnimation, position => {\n const animOrigin = rectContainsPoint(position.content.rect, origin)\n ? origin\n : rectOrigin(position.content.rect, \"center middle\")\n const { x, y, width, height } = position.content.rect\n const radius = maxPossibleRadius(animOrigin.x, animOrigin.y, width, height)\n return {\n radiusStart: `${initialRadius}px`,\n radiusEnd: `${radius}px`,\n origin: `${animOrigin.x - x}px ${animOrigin.y - y}px`,\n duration: duration\n }\n })\n}\n","import { AnimationBuilder } from \"@angular/animations\"\n\nimport { Observable, Subscriber } from \"rxjs\"\n\nimport { animationObservable, CoverOptions } from \"@ngutil/graphics\"\n\nimport { BackdropRef } from \"../../layer\"\nimport { type FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\nimport { FadeAnimation } from \"./animation\"\n\ninterface CommonOptions {}\n\nexport type BackdropTraitOptions = CoverOptions & CommonOptions\n\n// TODO: prevent scroll https://stackoverflow.com/questions/4770025/how-to-disable-scrolling-temporarily\nexport class BackdropTrait implements FloatingTrait<BackdropRef> {\n readonly name = \"backdrop\"\n\n constructor(readonly options: BackdropTraitOptions) {}\n\n connect(floatingRef: FloatingRef<any>): Observable<BackdropRef> {\n return new Observable((dest: Subscriber<BackdropRef>) => {\n const animationBuilder = floatingRef.container.injector.get(AnimationBuilder)\n const options = { ...this.options }\n const backdrop = floatingRef.layerSvc.newBackdrop(floatingRef.container, options)\n\n floatingRef.container.nativeElement.setAttribute(\"data-floating-has-backdrop\", \"true\")\n backdrop.nativeElement.setAttribute(\"data-floating-backdrop\", floatingRef.uid)\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 backdrop.state.on(\"disposed\", () => dest.complete())\n\n floatingRef.state.on(\"disposing\", () => backdrop.dispose())\n\n dest.add(backdrop.show().subscribe())\n dest.next(backdrop)\n })\n }\n}\n\nexport function backdrop(options: BackdropTraitOptions) {\n return new BackdropTrait(options)\n}\n","import {\n distinctUntilChanged,\n exhaustMap,\n filter,\n from,\n fromEvent,\n map,\n Observable,\n ObservableInput,\n of,\n race\n} from \"rxjs\"\n\nimport { KeystrokeService } from \"@ngutil/aria\"\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\n\nimport { FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\n\nexport interface ClickOutsideOptions {\n /**\n * If clicks happened on this element, that not trigger the close event\n */\n allowedElements?: ElementInput[]\n}\n\nexport interface CloseTriggerOptions {\n /**\n * Close floating when click outside of floating element\n */\n clickOutside?: boolean | ClickOutsideOptions\n\n /**\n * Only works when the floating element is focused\n */\n keystroke?: boolean\n\n /**\n * Close when emitting any value\n */\n trigger?: ObservableInput<any>\n}\n\nexport interface CloseTriggerEvent {\n source: \"click\" | \"keystroke\" | \"backbutton\" | \"trigger\"\n}\n\nclass CloseTriggerTrait implements FloatingTrait {\n readonly name = \"close-trigger\"\n\n constructor(readonly options: CloseTriggerOptions = {}) {}\n\n connect(floatingRef: FloatingRef): Observable<CloseTriggerEvent | void> {\n const { keystroke, clickOutside, trigger } = this.options\n\n const container = floatingRef.container.nativeElement\n const triggers: Array<Observable<any>> = []\n const selfUid = Number(floatingRef.uid)\n\n if (keystroke) {\n const ks = floatingRef.container.injector.get(KeystrokeService)\n\n triggers.push(\n ks.watch(container, { key: \"Escape\", state: \"up\" }).pipe(\n map(() => {\n return { source: \"keystroke\" as const }\n })\n )\n )\n\n // TODO: angular auxiliary route\n }\n\n if (clickOutside) {\n const allowedElements =\n typeof clickOutside === \"boolean\" ? [] : clickOutside.allowedElements?.map(coerceElement) || []\n\n triggers.push(\n fromEvent(document, \"click\", { capture: true, passive: true }).pipe(\n filter(event => {\n if (!(event.target instanceof HTMLElement)) {\n return false\n }\n const target = event.target\n\n for (const allowed of allowedElements) {\n if (target === allowed || allowed.contains(target)) {\n return false\n }\n }\n\n const floatingUid = getFloatingUid(target, \"data-floating\", \"floating\")\n const backdropUid = getFloatingUid(target, \"data-floating-backdrop\", \"floatingBackdrop\")\n const otherBackdropUid =\n floatingUid != null && floatingUid !== selfUid\n ? getFloatingUid(\n document.querySelector(`[data-floating-backdrop=\"${floatingUid}\"]`),\n \"data-floating-backdrop\",\n \"floatingBackdrop\"\n )\n : undefined\n\n // console.log({ floatingUid, backdropUid, otherBackdropUid, self: selfUid })\n\n if (floatingUid == null && backdropUid == null) {\n return true\n } else {\n return (\n // click on self or erlier backdrop\n (backdropUid != null && backdropUid <= selfUid) ||\n // click on other floating element, whitout backdrop\n (floatingUid != null && otherBackdropUid == null && floatingUid < selfUid) ||\n // click on other floating element that opened erlier\n (floatingUid != null && floatingUid < selfUid)\n )\n }\n }),\n map(() => {\n return { source: \"click\" as const }\n })\n )\n )\n }\n\n if (trigger) {\n triggers.push(\n from(trigger).pipe(\n map(() => {\n return { source: \"trigger\" as const }\n })\n )\n )\n }\n\n if (triggers.length === 0) {\n return of()\n } else {\n return new Observable(dst =>\n floatingRef.state.on(\"shown\", () => {\n race(...triggers)\n .pipe(\n exhaustMap(event =>\n floatingRef.close().pipe(\n map(() => event),\n distinctUntilChanged()\n )\n )\n )\n .subscribe(dst)\n })\n )\n }\n }\n}\n\nexport function closeTrigger(options: CloseTriggerOptions = { clickOutside: true, keystroke: true }) {\n return new CloseTriggerTrait(options)\n}\n\nfunction getFloatingUid(el: HTMLElement | null, attr: string, dataset: string): number | undefined {\n if (el == null) {\n return undefined\n }\n\n if (el.matches(`[${attr}]`)) {\n return Number(el.dataset[dataset]) || undefined\n } else {\n const parent = el.closest(`[${attr}]`) as HTMLElement\n if (parent) {\n return Number(parent.dataset[dataset]) || undefined\n }\n }\n return undefined\n}\n","import { Observable } 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<void> {\n readonly name = \"focus\"\n\n constructor(readonly options: FocusOptions) {}\n\n connect(floatingRef: FloatingRef): Observable<void> {\n return new Observable(dest => {\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 dest.add(this.options.connect.connect(floatingRef.container).subscribe())\n }\n\n if (this.options.trap) {\n dest.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 dest.complete()\n })\n dest.next()\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 {\n combineLatest,\n distinctUntilChanged,\n isObservable,\n map,\n NEVER,\n Observable,\n of,\n Subscriber,\n switchMap,\n take,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { isEqual } from \"es-toolkit\"\n\nimport { ElementInput, isElementInput } from \"@ngutil/common\"\nimport {\n Dimension,\n DimensionWatcher,\n floatingPosition,\n FloatingPosition,\n FloatingPositionAltInput,\n FloatingPositionAnchorOptions,\n FloatingPositionContentOptions,\n FloatingPositionDims,\n FloatingPositionDirection,\n FloatingPositionPlacementOptions,\n floatingPositionToStyle,\n NodeRemovedWatcher,\n Rect,\n RectWatcher\n} from \"@ngutil/style\"\n\nimport { FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\n\nexport type PositionTraitElementRef = ElementInput | Window | \"layer\" | \"viewport\"\n\nexport type PositionTraitOptions = {\n content?: Omit<FloatingPositionContentOptions, \"constraints\"> & { constraints?: SizeConstraintsInput }\n anchor?: FloatingPositionAnchorOptions & { ref: PositionTraitElementRef }\n placement?: FloatingPositionPlacementOptions & { ref: PositionTraitElementRef }\n horizontalAlt?: FloatingPositionAltInput\n verticalAlt?: FloatingPositionAltInput\n}\n\n/**\n * Width ot height input values\n *\n * - `number`: excact value\n * - `ElementInput`: element reference, and take the dimension from it\n * - `link`: take the dimension from the anchor element and only apply on connection dimension.\n * eg.: `anchor.link = \"left bottom\"` and `content.link = \"left top\"`, in this case only width will be applied.\n */\ntype SizeInputConst = number | ElementInput | \"link\" | \"viewport\"\ntype SizeInput = SizeInputConst | Observable<SizeInputConst>\n\ninterface SizeConstraintsInput {\n minWidth?: SizeInput\n maxWidth?: SizeInput\n minHeight?: SizeInput\n maxHeight?: SizeInput\n}\n\ntype SizeConstraints = NonNullable<FloatingPositionDims[\"constraints\"]>\n\ntype Watches = {\n content: Observable<Dimension>\n anchor: Observable<Rect>\n placement: Observable<Rect>\n constraints: Observable<ConstraintsResult>\n}\n\ntype ConstraintWatches = { [K in keyof SizeConstraints]-?: Observable<NonNullable<SizeConstraints[K]>> }\ntype ConstraintsResult = Required<SizeConstraints>\n\nexport class PositionTrait implements FloatingTrait<FloatingPosition> {\n readonly name = \"position\"\n\n readonly options: Required<PositionTraitOptions>\n\n constructor(options: PositionTraitOptions) {\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, link: \"center middle\" }\n }\n\n if (!cloned.content) {\n cloned.content = { link: \"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 const removeWatcher = injector.get(NodeRemovedWatcher)\n\n const constraints = this.options.content.constraints || {}\n const constraintsWatches: ConstraintWatches = {\n minWidth: sizeWatcher(dimWatcher, \"width\", constraints.minWidth),\n maxWidth: sizeWatcher(dimWatcher, \"width\", constraints.maxWidth),\n minHeight: sizeWatcher(dimWatcher, \"height\", constraints.minHeight),\n maxHeight: sizeWatcher(dimWatcher, \"height\", constraints.maxHeight)\n }\n\n const watches: Watches = {\n content: 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 constraints: combineLatest(constraintsWatches)\n }\n\n const anchorRemoved =\n this.options.anchor.ref === \"viewport\" || this.options.anchor.ref instanceof Window\n ? NEVER\n : removeWatcher.watch(refToNode(this.options.anchor.ref, floatingRef) as unknown as ElementInput)\n\n const onRemove = anchorRemoved.pipe(\n tap(() => floatingRef.close().subscribe()),\n take(1)\n )\n\n return combineLatest(watches)\n .pipe(takeUntil(onRemove), distinctUntilChanged(isEqual))\n .subscribe(dims => {\n const pos = floatingPosition({ dims, options: this.options })\n const floatingEl = floatingRef.container.nativeElement\n Object.assign(floatingEl.style, floatingPositionToStyle(pos))\n Object.assign(floatingEl.style, constraintsToStyle(pos, dims.constraints, constraints))\n dest.next(pos)\n })\n }).pipe(takeUntil(floatingRef.state.onExecute(\"disposing\")))\n }\n}\n\nfunction refWatcher(rectWatcher: RectWatcher, ref: PositionTraitElementRef, floatingRef: FloatingRef<any>) {\n const node = refToNode(ref, floatingRef)\n return rectWatcher.watch(node, \"border-box\")\n}\n\nfunction refToNode(ref: PositionTraitElementRef, floatingRef: FloatingRef<any>) {\n if (ref === \"layer\") {\n return floatingRef.layerSvc.root\n } else if (ref === \"viewport\" || ref instanceof Window) {\n return window\n } else {\n return ref\n }\n}\n\nfunction sizeWatcher(dimWatcher: DimensionWatcher, prop: \"width\" | \"height\", size?: SizeInput): Observable<number> {\n if (size === \"viewport\") {\n return dimWatcher.watch(window, \"border-box\").pipe(map(dim => dim[prop]))\n } else if (typeof size === \"number\") {\n return of(size)\n } else if (isElementInput(size)) {\n return dimWatcher.watch(size, \"border-box\").pipe(map(value => value[prop]))\n } else if (isObservable(size)) {\n return (size as Observable<number | ElementInput>).pipe(\n switchMap(value => sizeWatcher(dimWatcher, prop, value))\n )\n }\n return of(NaN)\n}\n\ntype MinMaxNames = keyof SizeConstraints\nconst MINMAX_NAMES: Array<MinMaxNames> = [\"minWidth\", \"minHeight\", \"maxWidth\", \"maxHeight\"]\n\nfunction constraintsToStyle(pos: FloatingPosition, sizes: ConstraintsResult, options: SizeConstraintsInput) {\n const result: Partial<CSSStyleDeclaration> = {}\n for (const name of MINMAX_NAMES) {\n result[name] = constraintValue(pos, options, name, sizes[name])\n }\n return result\n}\n\nconst DIM_DIRECTIONS: Record<\"width\" | \"height\", Array<FloatingPositionDirection>> = {\n width: [FloatingPositionDirection.Up, FloatingPositionDirection.Down, FloatingPositionDirection.Center],\n height: [FloatingPositionDirection.Left, FloatingPositionDirection.Right, FloatingPositionDirection.Center]\n}\n\nfunction constraintValue(pos: FloatingPosition, options: SizeConstraintsInput, name: MinMaxNames, value: number) {\n const wh = name.substring(3).toLowerCase() as \"width\" | \"height\"\n const maxValue = pos.placement.area[wh]\n\n // determine default or link value\n if (value == null || isNaN(value)) {\n const src = options[name]\n\n // if the given min/max value is link then test witch sides connected, and only use connected side value\n if (src === \"link\" && DIM_DIRECTIONS[wh].includes(pos.direction)) {\n return `${Math.min(maxValue, pos.anchor.rect[wh])}px`\n }\n\n // only return maxWidth / maxHeight, becuse minWidth / minHeight is auto if not presen\n const minmax = name.substring(0, 3) as \"min\" | \"max\"\n if (minmax === \"max\") {\n return `${maxValue}px`\n }\n\n return \"auto\"\n }\n\n return `${Math.min(maxValue, value)}px`\n}\n\nexport function position(options: PositionTraitOptions) {\n return new PositionTrait(options)\n}\n","import { fallAnimation } from \"./animation\"\nimport { backdrop } from \"./backdrop\"\nimport { closeTrigger } from \"./close-trigger\"\nimport { focus } from \"./focus\"\nimport { position } from \"./position\"\n\nexport function modal() {\n return [\n position({\n anchor: {\n ref: \"viewport\",\n link: \"center middle\"\n },\n placement: {\n ref: \"viewport\",\n padding: \"16px\"\n }\n }),\n backdrop({ type: \"solid\", color: \"rgba(0, 0, 0, .3)\" }),\n focus({ trap: true }),\n closeTrigger(),\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 { filter, Observable, of, share, take } from \"rxjs\"\n\nimport { Lifecycle } from \"@ngutil/common\"\n\nexport type DisposeHandler<T> = (ref: T) => Observable<void>\n\nexport enum AlwaysOnTop {\n /**\n * Display as open order\n */\n None = 0,\n\n /**\n * Modals\n */\n Modal = 2,\n\n /**\n * User access control\n */\n UAC = 3,\n\n /**\n * Toast...\n */\n Toast = 4,\n\n /**\n * Like select drop down, tooltip, stb...\n */\n Control = 5\n}\n\n// TODO: disposing, disposed\n\nexport abstract class ChildRef<T extends HTMLElement = HTMLElement> extends ElementRef<T> {\n readonly state = new Lifecycle({\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 protected readonly disposed$ = this.state.current$.pipe(\n filter(state => state === \"disposed\"),\n take(1),\n share()\n )\n\n constructor(\n nativeElement: T,\n public readonly alwaysOnTop: AlwaysOnTop = AlwaysOnTop.None\n ) {\n super(nativeElement)\n this.state.on(\"disposed\", () => {\n this.nativeElement.parentElement?.removeChild(this.nativeElement)\n this.state.destroy()\n delete (this as any).state\n })\n }\n\n dispose() {\n if (this.state == null) {\n return of()\n }\n return this.state.run([\"disposing\", \"disposed\"])\n }\n}\n","import { Injector, Provider } from \"@angular/core\"\n\nimport { AlwaysOnTop, ChildRef } from \"./child-ref\"\n\nexport interface ContainerOptions {\n alwaysOnTop?: AlwaysOnTop\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), options.alwaysOnTop || AlwaysOnTop.None)\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 div.style.display = \"inline-flex\"\n div.style.flexDirection = \"column\"\n div.style.alignItems = \"stretch\"\n div.style.justifyContent = \"stretch\"\n div.style.boxSizing = \"border-box\"\n\n if (options.classes) {\n div.classList.add(...options.classes)\n }\n\n return div\n}\n","import { takeUntil } from \"rxjs\"\n\nimport { CoverRef } from \"@ngutil/graphics\"\nimport { CoverOptions } from \"@ngutil/graphics\"\n\nimport { ChildRef } from \"./child-ref\"\n\nexport type BackdropOptions = CoverOptions\n\nexport class BackdropRef extends 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 = false\n\n constructor(\n readonly coverRef: CoverRef<any>,\n readonly under: ChildRef,\n readonly options: CoverOptions\n ) {\n super(coverRef.nativeElement)\n\n this.group = `${options.color === \"transparent\" ? \"transparent\" : \"solid\"}`\n\n this.state.on(\"showing\", () => {\n this.coverRef\n .show()\n .pipe(takeUntil(this.state.onDone(\"disposed\")))\n .subscribe(() => {\n this.visible = true\n })\n })\n }\n\n show() {\n return this.state.run(\"showing\", \"shown\")\n }\n}\n","import { ChildRef } from \"./child-ref\"\n\nexport class ExternalRef extends ChildRef {}\n","\nimport { Directive, ElementRef, inject, Injectable, InjectionToken, DOCUMENT } from \"@angular/core\"\n\nimport { toSorted } from \"@ngutil/common\"\n\nimport { BackdropRef } from \"./backdrop-ref\"\nimport { AlwaysOnTop, ChildRef } from \"./child-ref\"\n\nexport const LAYER_CONTAINER_ZINDEX_START = new InjectionToken<number>(\"LAYER_CONTAINER_ZINDEX_START\")\n\n@Directive()\nexport abstract class LayerContainer {\n abstract readonly root: HTMLElement\n\n readonly #children: Array<ChildRef> = []\n readonly zIndexStart: number = inject(LAYER_CONTAINER_ZINDEX_START)\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.appendChild(ref.nativeElement)\n ref.state.on(\"disposing\", () => 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, sortChildren2)\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.color !== \"transparent\") {\n child.visible = !hasBackdrop\n hasBackdrop = true\n }\n }\n }\n}\n\n@Injectable()\nexport class RootLayer extends LayerContainer {\n readonly root = inject(DOCUMENT).body\n}\n\n@Directive({\n providers: [{ provide: LayerContainer, useExisting: IndividualLayer }]\n})\nexport class IndividualLayer extends LayerContainer {\n readonly root = inject(ElementRef).nativeElement\n}\n\nfunction sortChildren2(a: ChildRef, b: ChildRef) {\n const alwaysOnTop = sortByAlwaysOnTop(a, b)\n if (alwaysOnTop === 0) {\n return sortByBackdrop(a, b)\n } else {\n return alwaysOnTop\n }\n}\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\nfunction sortByAlwaysOnTop(a: ChildRef, b: ChildRef) {\n return getAlwaysOnTop(a) - getAlwaysOnTop(b)\n}\n\nfunction getAlwaysOnTop(child: ChildRef): number {\n if (child instanceof BackdropRef) {\n return child.under.alwaysOnTop || AlwaysOnTop.None\n } else {\n return child.alwaysOnTop || AlwaysOnTop.None\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, 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 vcr = this.injector.get(ViewContainerRef)\n\n this.portal = new ComponentPortal(component, options.viewContainerRef || vcr, this.injector)\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 { ApplicationRef, inject, Injectable, Injector, TemplateRef, ViewContainerRef } from \"@angular/core\"\n\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\nimport { CoverService } from \"@ngutil/graphics\"\n\nimport { BackdropOptions, BackdropRef } from \"./backdrop-ref\"\nimport { AlwaysOnTop, ChildRef } from \"./child-ref\"\nimport { ContainerOptions, ContainerRef } from \"./container-ref\"\nimport { ExternalRef } from \"./external-ref\"\nimport { LayerContainer } from \"./layer-container\"\nimport { ComponentPortalOptions, ComponentPortalRef, TemplatePortalOptions, TemplatePortalRef } from \"./portal-ref\"\n\n// TODO: ELEVATION_STEP config with injection\n// TODO: ELEVATION_START config with injection\n\n@Injectable()\nexport class LayerService {\n readonly #container = inject(LayerContainer)\n readonly #cover = inject(CoverService)\n readonly #injector = inject(Injector)\n readonly #appRef = inject(ApplicationRef)\n\n get root() {\n return this.#container.root\n }\n\n newComponentPortal<T>(component: ComponentType<T>, options: ComponentPortalOptions<T>): ComponentPortalRef<T> {\n if (!options.injector) {\n options = { ...options, injector: this.#getInjector() }\n }\n return this.#container.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.#getInjector() }\n }\n return this.#container.append(new TemplatePortalRef(tpl, options))\n }\n\n newContainer(options: ContainerOptions): ContainerRef {\n if (!options.injector) {\n options = { ...options, injector: this.#getInjector() }\n }\n return this.#container.append(new ContainerRef(options))\n }\n\n newBackdrop(under: ChildRef, options: BackdropOptions): BackdropRef {\n const coverRef = this.#cover.create(this.root, options)\n return this.#container.append(new BackdropRef(coverRef, under, options))\n }\n\n addExternal(element: ElementInput, alwaysOnTop: AlwaysOnTop = AlwaysOnTop.None) {\n return this.#container.append(new ExternalRef(coerceElement(element), alwaysOnTop))\n }\n\n #getInjector() {\n try {\n this.#injector.get(ViewContainerRef)\n return this.#injector\n // eslint-disable-next-line no-empty\n } catch (err) {}\n\n const root = this.#appRef.components[0]\n if (root == null) {\n throw new Error(\"Root component not found\")\n }\n\n return root.injector\n }\n}\n","import { Inject, Injectable, InjectionToken } from \"@angular/core\"\n\nimport {\n combineLatest,\n debounceTime,\n EMPTY,\n filter,\n map,\n Observable,\n ReplaySubject,\n shareReplay,\n startWith,\n take,\n takeUntil,\n takeWhile\n} from \"rxjs\"\n\nimport { Lifecycle } 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\ntype TraitState = { [key: string]: FloatingTraitEvent | null }\n\nlet UID_COUNTER = 0\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 Lifecycle({\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<TraitState>\n\n readonly #untilCleanup = this.state.onExecute(\"cleanup\")\n readonly #untilDisposed = this.state.onExecute(\"disposed\")\n\n readonly uid = `${++UID_COUNTER}`\n\n constructor(\n readonly layerSvc: LayerService,\n readonly container: ContainerRef,\n @Inject(TRAITS) traits: Traits\n ) {\n Object.assign(container.nativeElement.style, {\n overflow: \"hidden\",\n visibility: \"hidden\",\n pointerEvents: \"none\"\n })\n container.nativeElement.setAttribute(\"data-floating\", this.uid)\n\n this.#traits = traits\n this.traitState$ = this.#traitState().pipe(shareReplay(1))\n\n this.state.current$.pipe(takeWhile(state => state !== \"cleanup\", true)).subscribe(state => {\n this.emit({ type: state } as C)\n })\n this.state.on(\"init\", () => this.traitState$.pipe(takeUntil(this.#untilCleanup), debounceTime(5), take(1)))\n this.state.on(\"showing\", () => {\n container.nativeElement.style.visibility = \"visible\"\n })\n this.state.on(\"shown\", () => {\n container.nativeElement.style.pointerEvents = null as any\n })\n this.state.on(\"disposing\", () => {\n container.nativeElement.style.pointerEvents = \"none\"\n })\n\n this.state.control(container.state)\n }\n\n show() {\n return this.state.run(\"init\", \"showing\", \"shown\")\n }\n\n /**\n * @deprecated\n */\n hide() {\n return this.close(true)\n }\n\n close(force = false) {\n if (force) {\n return this.state.run(\"disposing\", \"disposed\", \"cleanup\")\n } else {\n return this.state.run(\"closing\", \"disposing\", \"disposed\", \"cleanup\")\n }\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.close(true).subscribe()\n }\n\n watchTrait<T>(name: string): Observable<T> {\n return this.traitState$.pipe(\n takeUntil(this.#untilDisposed),\n map(state => state[name]),\n filter(value => value != null)\n ) as Observable<T>\n }\n\n #traitState(): Observable<TraitState> {\n const src: { [key: string]: Observable<FloatingTraitEvent | null> } = {}\n\n for (const [k, v] of Object.entries(this.#traits)) {\n src[k] = v.connect(this).pipe(takeUntil(this.#untilDisposed), startWith(null))\n }\n\n if (Object.keys(src).length === 0) {\n return EMPTY\n } else {\n return combineLatest(src).pipe(shareReplay(1))\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 { position, type PositionTraitOptions } from \"./traits/position\"\n\nexport type FloatingTraitInput = FloatingTrait | Array<FloatingTraitInput>\n\nexport abstract class FloatingFactory {\n protected readonly traits: { [key: string]: FloatingTrait } = {}\n\n #providers: Provider[] = []\n\n constructor(protected readonly floatingSvc: FloatingService) {}\n\n trait(...traits: Array<FloatingTraitInput>) {\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 === \"disposed\") {\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.close().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.floatingSvc.layer },\n { provide: FloatingService, useValue: this.floatingSvc },\n FloatingRef,\n ...this.#providers\n ]\n\n return providers\n }\n\n protected abstract create(): FloatingRef<FloatingChannel>\n\n position(options: PositionTraitOptions) {\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 floatingSvc: FloatingService,\n public readonly tpl: TemplateRef<T>,\n public readonly options: TemplatePortalOptions<T>\n ) {\n super(floatingSvc)\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.floatingSvc.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 floatingSvc: FloatingService,\n public readonly component: T,\n public readonly options: ComponentPortalOptions<T>\n ) {\n super(floatingSvc)\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.floatingSvc.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, value as any, opts)\n } else {\n return new FloatingComponentFactory(this, value as any, opts)\n }\n }\n}\n","import { Provider } from \"@angular/core\"\n\nimport { FloatingService } from \"./floating\"\nimport { LAYER_CONTAINER_ZINDEX_START, LayerContainer, LayerService, RootLayer } from \"./layer\"\n\nexport * from \"./floating\"\nexport * from \"./layer\"\n\nexport interface ProvideFloatingOptions {\n zIndexStart?: number\n}\n\nconst DEFAULTS: ProvideFloatingOptions = {\n zIndexStart: 10000\n}\n\nexport function provideFloating(options: ProvideFloatingOptions = {}): Provider[] {\n const opts = { ...DEFAULTS, ...options }\n return [\n { provide: LAYER_CONTAINER_ZINDEX_START, useValue: opts.zIndexStart },\n { provide: LayerContainer, useClass: RootLayer },\n LayerService,\n FloatingService\n ]\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["style"],"mappings":"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"}
|