@ngutil/floating 0.0.64 → 0.0.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/floating/floating.service.mjs +1 -1
- package/esm2022/floating/traits/animation.mjs +2 -2
- package/esm2022/floating/traits/index.mjs +1 -3
- package/esm2022/floating/traits/modal.mjs +2 -2
- package/esm2022/floating/traits/position.mjs +50 -50
- package/esm2022/layer/container-ref.mjs +2 -1
- package/fesm2022/ngutil-floating.mjs +53 -151
- package/fesm2022/ngutil-floating.mjs.map +1 -1
- package/floating/floating.service.d.ts +2 -2
- package/floating/traits/index.d.ts +0 -2
- package/floating/traits/modal.d.ts +2 -2
- package/floating/traits/position.d.ts +23 -50
- package/package.json +4 -4
- package/esm2022/floating/traits/dim-contraint.mjs +0 -66
- package/esm2022/floating/traits/position-calc.mjs +0 -39
- package/floating/traits/dim-contraint.d.ts +0 -25
- package/floating/traits/position-calc.d.ts +0 -28
|
@@ -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/dim-contraint.ts","../../../../packages/floating/src/floating/traits/focus.ts","../../../../packages/floating/src/floating/traits/position-calc.ts","../../../../packages/floating/src/floating/traits/position.ts","../../../../packages/floating/src/floating/traits/modal.ts","../../../../packages/floating/src/floating/traits/style.ts","../../../../packages/floating/src/floating/traits/attribute.ts","../../../../packages/floating/src/layer/child-ref.ts","../../../../packages/floating/src/layer/container-ref.ts","../../../../packages/floating/src/layer/backdrop-ref.ts","../../../../packages/floating/src/layer/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, AnimationOptions, style } from \"@angular/animations\"\n\nimport { map, Observable, Subscriber, switchMap, take, tap, timer } from \"rxjs\"\n\nimport { animationObservable } from \"@ngutil/graphics\"\nimport { alignmentToTransformOrigin, Duration, Ease } from \"@ngutil/style\"\n\nimport { FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\nimport { FloatingPosition } from \"./position\"\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 class AnimationTrait implements FloatingTrait<unknown> {\n readonly name = \"animation\"\n\n constructor(\n readonly animation: AnimationSet,\n readonly options?: AnimationOptions\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 const options = this.options || {}\n\n floatingRef.state.on(\"showing\", () =>\n animationParams(floatingRef, 0, options.params).pipe(\n switchMap(params =>\n animationObservable({\n builder,\n element,\n animation: this.animation.show,\n options: { ...options, params }\n })\n )\n )\n )\n floatingRef.state.on(\"disposing\", () =>\n animationParams(floatingRef, 0, options.params).pipe(\n switchMap(params =>\n animationObservable({\n builder,\n element,\n animation: this.animation.hide,\n options: { ...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(\n floatingRef: FloatingRef,\n delay: number,\n overrides: AnimationOptions[\"params\"]\n): Observable<AnimationOptions[\"params\"]> {\n const src =\n delay > 0\n ? timer(delay).pipe(switchMap(() => floatingRef.watchTrait<FloatingPosition>(\"position\")))\n : floatingRef.watchTrait<FloatingPosition>(\"position\")\n\n return src.pipe(\n take(1),\n map(position => {\n const origin = position.computed ? alignmentToTransformOrigin(position.computed!.content.align) : \"center\"\n return {\n origin,\n ...overrides\n }\n })\n )\n}\n\nexport const FallAnimation: AnimationSet = {\n show: [\n style({\n transform: \"scale(1.5)\",\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(1.5)\",\n visibility: \"visible\",\n opacity: \"0\"\n })\n )\n ]\n}\n\nexport function fallAnimation(options?: AnimationOptions) {\n return new AnimationTrait(FallAnimation, options)\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(options?: AnimationOptions) {\n return new AnimationTrait(FadeAnimation, options)\n}\n\nexport const DropAnimation: AnimationSet = {\n show: [\n style({\n transform: \"translate({{ translateX }}, {{ translateY }})\",\n opacity: \"0\",\n transformOrigin: \"{{ origin }}\",\n visibility: \"visible\"\n }),\n animate(\n timing,\n style({\n opacity: \"1\",\n transform: \"scale(1, 1) translate(0px, 0px)\"\n })\n )\n ],\n hide: [\n animate(\n timing,\n style({ opacity: 0, transform: \"translate(calc({{ translateX }} * -1), calc({{ translateY }} * -1))\" })\n )\n ]\n}\n\nexport function dropAnimation(options?: AnimationOptions) {\n if (!options) {\n options = {}\n }\n\n if (!options.params) {\n options.params = {}\n } else {\n options.params = { ...options.params }\n }\n\n options.params[\"translateX\"] = \"0px\"\n options.params[\"translateY\"] = \"-40px\"\n\n return new AnimationTrait(DropAnimation, options)\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\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 { combineLatest, distinctUntilChanged, map, Observable, Subscriber, takeUntil, tap } from \"rxjs\"\n\nimport { clamp } from \"lodash\"\n\nimport { ElementInput, isElementInput } from \"@ngutil/common\"\nimport { Dimension, DimensionWatcher } from \"@ngutil/style\"\n\nimport { FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\nimport type { FloatingPosition } from \"./position\"\n\nexport type DimensionConstraintInput = ElementInput | number\n\ninterface DimMapEntry {\n computedRef: \"min\" | \"max\"\n dimension: keyof Dimension\n}\n\nconst DIM_MAP: { [key: string]: DimMapEntry } = {\n maxWidth: { computedRef: \"max\", dimension: \"width\" },\n maxHeight: { computedRef: \"max\", dimension: \"height\" },\n minWidth: { computedRef: \"min\", dimension: \"width\" },\n minHeight: { computedRef: \"min\", dimension: \"height\" }\n}\n\nexport class DimensionConstraintTrait implements FloatingTrait<number> {\n readonly name: string\n readonly #map: DimMapEntry\n constructor(\n name: keyof typeof DIM_MAP,\n readonly value: DimensionConstraintInput\n ) {\n this.name = name as string\n this.#map = DIM_MAP[name]\n }\n\n connect(floatingRef: FloatingRef<any>): Observable<number> {\n return new Observable((dst: Subscriber<number>) => {\n if (isElementInput(this.value)) {\n const watcher = floatingRef.container.injector.get(DimensionWatcher)\n const refDim = watcher.watch(this.value, \"border-box\").pipe(map(value => value[this.#map.dimension]))\n return combineLatest({\n refDim: refDim,\n position: floatingRef.watchTrait<FloatingPosition>(\"position\")\n }).subscribe(({ refDim, position }) => {\n const floating = position.computed?.content\n if (!floating) {\n return\n }\n dst.next(\n clamp(\n refDim,\n floating.min[this.#map.dimension] || 0,\n floating.max[this.#map.dimension] || Infinity\n )\n )\n })\n } else {\n return floatingRef.watchTrait<FloatingPosition>(\"position\").subscribe(position => {\n const floating = position.computed?.content\n if (!floating) {\n return\n }\n if (isNaN(this.value as number)) {\n dst.next(floating[this.#map.computedRef][this.#map.dimension])\n } else {\n dst.next(\n clamp(\n this.value as number,\n floating!.min[this.#map.dimension] || 0,\n floating!.max[this.#map.dimension] || Infinity\n )\n )\n }\n })\n }\n }).pipe(\n takeUntil(floatingRef.state.onExecute(\"disposing\")),\n distinctUntilChanged(),\n tap(value => {\n const floatingEl = floatingRef.container.nativeElement\n floatingEl.style[this.name as any] = `${value}px`\n })\n )\n }\n}\n\nexport function maxWidth(value: DimensionConstraintInput) {\n return new DimensionConstraintTrait(\"maxWidth\", value)\n}\n\nexport function maxHeight(value: DimensionConstraintInput) {\n return new DimensionConstraintTrait(\"maxHeight\", value)\n}\n\nexport function minWidth(value: DimensionConstraintInput) {\n return new DimensionConstraintTrait(\"minWidth\", value)\n}\n\nexport function minHeight(value: DimensionConstraintInput) {\n return new DimensionConstraintTrait(\"minHeight\", value)\n}\n","import { Observable } from \"rxjs\"\n\nimport { 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 Alignment,\n alignmentNormalize,\n Dimension,\n Position,\n Rect,\n rectContract,\n rectExpand,\n rectMoveOrigin,\n rectOrigin\n} from \"@ngutil/style\"\n\nimport type { FloatingPositionOptionsNormalized } from \"./position\"\n\nexport interface ComputePositionInput {\n floating: Dimension\n anchor: Rect\n placement: Rect\n options: FloatingPositionOptionsNormalized\n}\n\nexport interface ComputedRect extends Rect {\n top: number\n left: number\n right: number\n bottom: number\n}\n\nexport interface ComputedAlignment extends ComputedRect {\n align: Alignment\n connect: Position\n}\n\nexport interface ComputedContent extends ComputedAlignment {\n min: Dimension\n max: Dimension\n}\n\n// export interface ComputedAlignment {\n// align: Alignment\n// postion: Position\n// }\n\n// export interface ComputedOrigin {\n// content: ComputedAlignment\n// anchor: ComputedAlignment\n// }\n\nexport interface ComputedPositon {\n content: ComputedContent\n anchor: ComputedAlignment\n placement: ComputedRect\n}\n\nexport function computePosition({\n floating,\n anchor,\n placement,\n options\n}: ComputePositionInput): ComputedPositon | undefined {\n if (options.anchor.margin) {\n anchor = rectExpand(anchor, options.anchor.margin)\n }\n const anchorPoint = rectOrigin(anchor, options.anchor.align)\n\n let contentRect = rectMoveOrigin(floating, options.content.align, anchorPoint)\n if (options.content.margin) {\n contentRect = rectContract(contentRect, options.content.margin)\n }\n\n if (options.placement.padding) {\n placement = rectContract(placement, options.placement.padding)\n }\n\n return {\n content: {\n ...addTLRB(contentRect, placement),\n align: alignmentNormalize(options.content.align),\n connect: anchorPoint,\n max: { width: placement.width - contentRect.x, height: placement.height - contentRect.y },\n min: { width: 0, height: 0 }\n },\n anchor: {\n ...addTLRB(anchor, placement),\n align: alignmentNormalize(options.anchor.align),\n connect: anchorPoint\n },\n placement: addTLRB(placement, placement)\n }\n}\n\nfunction addTLRB(rect: Rect, container: Rect): ComputedRect {\n return {\n ...rect,\n top: rect.y,\n left: rect.x,\n right: container.width - (rect.x + rect.width),\n bottom: container.height - (rect.y + rect.height)\n }\n}\n","import { ElementRef } from \"@angular/core\"\n\nimport { combineLatest, Observable, Subscriber, takeUntil } from \"rxjs\"\n\nimport { ElementInput } from \"@ngutil/common\"\nimport { AlignmentInput, Dimension, DimensionWatcher, Rect, RectWatcher, SidesInput } from \"@ngutil/style\"\n\nimport { LayerService } from \"../../layer/layer.service\"\nimport { FloatingRef } from \"../floating-ref\"\nimport { FloatingTrait } from \"./_base\"\nimport { maxHeight, maxWidth } from \"./dim-contraint\"\nimport { ComputedPositon, computePosition } from \"./position-calc\"\n\nexport type FloatingTargetElementRef = ElementInput | Window | \"layer\" | \"viewport\"\n\nexport interface FloatingAlign {\n align: AlignmentInput\n}\n\nexport interface FloatingAnchorPosition extends FloatingAlign {\n margin?: SidesInput\n}\n\nexport interface FloatingAnchor extends FloatingAnchorPosition {\n ref: FloatingTargetElementRef\n}\n\nexport class FloatingAnchorRef<T extends Node> extends ElementRef<T> {}\n\nexport interface FloatingContentPosition extends FloatingAlign {\n margin?: SidesInput\n}\n\nexport interface FloatingContent extends FloatingContentPosition {}\n\nexport interface FloatingPlacementPosition {\n padding?: SidesInput\n}\n\nexport interface FloatingPlacement extends FloatingPlacementPosition {\n ref: FloatingTargetElementRef\n}\n\nexport class FloatingPlacementRef<T extends LayerService[\"root\"]> extends ElementRef<T> {}\n\nexport interface FloatingPositionOptions {\n anchor?: FloatingAnchor\n content?: FloatingContent\n placement?: FloatingPlacement\n}\n\nexport type FloatingPositionOptionsNormalized = FloatingPositionOptions & {\n anchor: FloatingAnchor\n content: FloatingContent\n placement: FloatingPlacement\n}\n\ntype Watches = {\n floating: Observable<Dimension>\n anchor: Observable<Rect>\n placement: Observable<Rect>\n}\n\nexport class PositionTrait implements FloatingTrait<FloatingPosition> {\n readonly name = \"position\"\n\n readonly options: FloatingPositionOptionsNormalized\n\n constructor(options: FloatingPositionOptions) {\n const cloned = { ...options }\n\n if (!cloned.placement) {\n cloned.placement = { ref: \"viewport\" }\n }\n\n if (!cloned.anchor) {\n cloned.anchor = { ref: cloned.placement.ref, align: \"center middle\" }\n }\n\n if (!cloned.content) {\n cloned.content = { align: \"center middle\" }\n }\n\n this.options = cloned as any\n }\n\n connect(floatingRef: FloatingRef<any>): Observable<FloatingPosition> {\n return new Observable((dest: Subscriber<FloatingPosition>) => {\n const injector = floatingRef.container.injector\n const dimWatcher = injector.get(DimensionWatcher)\n const rectWatcher = injector.get(RectWatcher)\n\n const watches: Watches = {\n floating: dimWatcher.watch(floatingRef.container, \"border-box\"),\n anchor: refWatcher(rectWatcher, this.options.anchor.ref, floatingRef),\n placement: refWatcher(rectWatcher, this.options.placement.ref, floatingRef)\n }\n\n return combineLatest(watches).subscribe(({ floating, anchor, placement }) => {\n const res = new FloatingPosition(this.options, floating, anchor, placement)\n res.apply(floatingRef)\n dest.next(res)\n })\n }).pipe(takeUntil(floatingRef.state.onExecute(\"disposing\")))\n }\n}\n\nfunction refWatcher(rectWatcher: RectWatcher, ref: FloatingTargetElementRef, floatingRef: FloatingRef<any>) {\n if (ref === \"layer\") {\n return rectWatcher.watch(floatingRef.layerSvc.root, \"border-box\")\n } else if (ref === \"viewport\" || ref instanceof Window) {\n return rectWatcher.watch(window, \"border-box\")\n } else {\n return rectWatcher.watch(ref, \"border-box\")\n }\n}\n\nexport function position(options: FloatingPositionOptions) {\n return [new PositionTrait(options), maxWidth(NaN), maxHeight(NaN)]\n}\n\nexport class FloatingPosition {\n readonly computed?: ComputedPositon\n constructor(\n readonly options: FloatingPositionOptionsNormalized,\n readonly floating: Dimension,\n readonly anchor: Rect,\n readonly placement: Rect\n ) {\n // const frect: Rect = { x: 0, y: 0, ...floating }\n this.computed = computePosition({ floating, anchor, placement, options })\n }\n\n apply(floatingRef: FloatingRef) {\n if (this.computed == null) {\n return\n }\n\n const floatingEl = floatingRef.container.nativeElement\n const computedContent = this.computed.content\n const style: Record<string, string | null> = { top: null, right: null, bottom: null, left: null }\n\n if (computedContent.align.horizontal === \"right\") {\n style[\"right\"] = `${computedContent.right}px`\n } else {\n style[\"left\"] = `${computedContent.left}px`\n }\n\n if (computedContent.align.vertical === \"bottom\") {\n style[\"bottom\"] = `${computedContent.bottom}px`\n } else {\n style[\"top\"] = `${computedContent.top}px`\n }\n\n Object.assign(floatingEl.style, style)\n }\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 align: \"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\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 standalone: true,\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 { type FloatingPositionOptions, position } from \"./traits/position\"\n\n// export type FloatingTrait = (...args: any[]) => (traits: object) => Observable<object>\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 === \"cleanup\") {\n dest.complete()\n }\n })\n\n const showSub = ref.show().subscribe()\n\n return () => {\n showSub.unsubscribe()\n channelSub.unsubscribe()\n if (!disposing) {\n ref.hide().subscribe()\n }\n }\n })\n }\n\n subscribe: Observable<FloatingChannel>[\"subscribe\"] = (...args: any[]) => this.show().subscribe(...args)\n\n protected providers(providers?: Provider[]): Provider[] {\n if (!providers) {\n providers = []\n }\n\n providers = [\n ...providers,\n { provide: TRAITS, useValue: this.traits },\n { provide: LayerService, useValue: this.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: FloatingPositionOptions) {\n return this.trait(position(options))\n }\n\n provides(providers: Provider | Provider[]) {\n if (Array.isArray(providers)) {\n this.#providers = [...this.#providers, ...providers]\n } else {\n this.#providers = [...this.#providers, providers]\n }\n return this\n }\n}\n\nexport class FloatingTemplateFactory<T extends object> extends FloatingFactory {\n constructor(\n 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, AnimationOptions, style } from \"@angular/animations\"\n\nimport { map, Observable, Subscriber, switchMap, take, tap, timer } from \"rxjs\"\n\nimport { animationObservable } from \"@ngutil/graphics\"\nimport { alignmentToTransformOrigin, Duration, Ease, FloatingPosition } 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 class AnimationTrait implements FloatingTrait<unknown> {\n readonly name = \"animation\"\n\n constructor(\n readonly animation: AnimationSet,\n readonly options?: AnimationOptions\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 const options = this.options || {}\n\n floatingRef.state.on(\"showing\", () =>\n animationParams(floatingRef, 0, options.params).pipe(\n switchMap(params =>\n animationObservable({\n builder,\n element,\n animation: this.animation.show,\n options: { ...options, params }\n })\n )\n )\n )\n floatingRef.state.on(\"disposing\", () =>\n animationParams(floatingRef, 0, options.params).pipe(\n switchMap(params =>\n animationObservable({\n builder,\n element,\n animation: this.animation.hide,\n options: { ...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(\n floatingRef: FloatingRef,\n delay: number,\n overrides: AnimationOptions[\"params\"]\n): Observable<AnimationOptions[\"params\"]> {\n const src =\n delay > 0\n ? timer(delay).pipe(switchMap(() => floatingRef.watchTrait<FloatingPosition>(\"position\")))\n : floatingRef.watchTrait<FloatingPosition>(\"position\")\n\n return src.pipe(\n take(1),\n map(position => {\n const origin = alignmentToTransformOrigin(position.content.link)\n return {\n origin,\n ...overrides\n }\n })\n )\n}\n\nexport const FallAnimation: AnimationSet = {\n show: [\n style({\n transform: \"scale(1.5)\",\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(1.5)\",\n visibility: \"visible\",\n opacity: \"0\"\n })\n )\n ]\n}\n\nexport function fallAnimation(options?: AnimationOptions) {\n return new AnimationTrait(FallAnimation, options)\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(options?: AnimationOptions) {\n return new AnimationTrait(FadeAnimation, options)\n}\n\nexport const DropAnimation: AnimationSet = {\n show: [\n style({\n transform: \"translate({{ translateX }}, {{ translateY }})\",\n opacity: \"0\",\n transformOrigin: \"{{ origin }}\",\n visibility: \"visible\"\n }),\n animate(\n timing,\n style({\n opacity: \"1\",\n transform: \"scale(1, 1) translate(0px, 0px)\"\n })\n )\n ],\n hide: [\n animate(\n timing,\n style({ opacity: 0, transform: \"translate(calc({{ translateX }} * -1), calc({{ translateY }} * -1))\" })\n )\n ]\n}\n\nexport function dropAnimation(options?: AnimationOptions) {\n if (!options) {\n options = {}\n }\n\n if (!options.params) {\n options.params = {}\n } else {\n options.params = { ...options.params }\n }\n\n options.params[\"translateX\"] = \"0px\"\n options.params[\"translateY\"] = \"-40px\"\n\n return new AnimationTrait(DropAnimation, options)\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\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 { combineLatest, isObservable, map, Observable, of, Subscriber, switchMap, takeUntil } from \"rxjs\"\n\nimport { ElementInput, isElementInput } from \"@ngutil/common\"\nimport {\n Dimension,\n DimensionWatcher,\n floatingPosition,\n FloatingPosition,\n FloatingPositionAltInput,\n FloatingPositionAnchorOptions,\n FloatingPositionContentOptions,\n FloatingPositionPlacementOptions,\n floatingPositionToStyle,\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?: FloatingPositionContentOptions & MinMaxSizes\n anchor?: FloatingPositionAnchorOptions & { ref: PositionTraitElementRef }\n placement?: FloatingPositionPlacementOptions & { ref: PositionTraitElementRef }\n horizontalAlt?: FloatingPositionAltInput\n verticalAlt?: FloatingPositionAltInput\n}\n\ntype SizeInput = number | ElementInput | Observable<number> | Observable<ElementInput>\ninterface MinMaxSizes {\n minWidth?: SizeInput\n maxWidth?: SizeInput\n minHeight?: SizeInput\n maxHeight?: SizeInput\n}\n\ntype Watches = {\n content: Observable<Dimension>\n anchor: Observable<Rect>\n placement: Observable<Rect>\n}\n\ntype SizeWatches = {\n minWidth: Observable<number>\n maxWidth: Observable<number>\n minHeight: Observable<number>\n maxHeight: Observable<number>\n}\n\ninterface MinMaxSizesResult {\n minWidth: number\n maxWidth: number\n minHeight: number\n maxHeight: number\n}\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\n const dimWatches: 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 }\n\n const sizeWatches: SizeWatches = {\n minWidth: sizeWatcher(dimWatcher, \"width\", this.options.content.minWidth),\n maxWidth: sizeWatcher(dimWatcher, \"width\", this.options.content.maxWidth),\n minHeight: sizeWatcher(dimWatcher, \"height\", this.options.content.minHeight),\n maxHeight: sizeWatcher(dimWatcher, \"height\", this.options.content.maxHeight)\n }\n\n const watches = {\n dims: combineLatest(dimWatches),\n size: combineLatest(sizeWatches)\n }\n\n return (\n combineLatest(watches)\n // .pipe(distinctUntilChanged(isEqual))\n .subscribe(({ dims, size }) => {\n console.log(size)\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, sizesToStyle(pos, size))\n dest.next(pos)\n })\n )\n }).pipe(takeUntil(floatingRef.state.onExecute(\"disposing\")))\n }\n}\n\nfunction refWatcher(rectWatcher: RectWatcher, ref: PositionTraitElementRef, floatingRef: FloatingRef<any>) {\n if (ref === \"layer\") {\n return rectWatcher.watch(floatingRef.layerSvc.root, \"border-box\")\n } else if (ref === \"viewport\" || ref instanceof Window) {\n return rectWatcher.watch(window, \"border-box\")\n } else {\n return rectWatcher.watch(ref, \"border-box\")\n }\n}\n\nfunction sizeWatcher(dimWatcher: DimensionWatcher, prop: \"width\" | \"height\", size?: SizeInput): Observable<number> {\n 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\nfunction sizesToStyle(pos: FloatingPosition, sizes: MinMaxSizesResult): Partial<CSSStyleDeclaration> {\n const { minWidth, maxWidth, minHeight, maxHeight } = sizes\n const { width, height } = pos.placement.area\n return {\n minWidth: isNaN(minWidth) ? \"auto\" : `${Math.min(width, minWidth)}px`,\n minHeight: isNaN(minHeight) ? \"auto\" : `${Math.min(height, minHeight)}px`,\n maxWidth: isNaN(maxWidth) ? `${width}px` : `${Math.min(width, maxWidth)}px`,\n maxHeight: isNaN(maxHeight) ? `${height}px` : `${Math.min(height, maxHeight)}px`\n }\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 standalone: true,\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 === \"cleanup\") {\n dest.complete()\n }\n })\n\n const showSub = ref.show().subscribe()\n\n return () => {\n showSub.unsubscribe()\n channelSub.unsubscribe()\n if (!disposing) {\n ref.hide().subscribe()\n }\n }\n })\n }\n\n subscribe: Observable<FloatingChannel>[\"subscribe\"] = (...args: any[]) => this.show().subscribe(...args)\n\n protected providers(providers?: Provider[]): Provider[] {\n if (!providers) {\n providers = []\n }\n\n providers = [\n ...providers,\n { provide: TRAITS, useValue: this.traits },\n { provide: LayerService, useValue: this.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":";;;;;;;;;;;AAYA;AAEA,MAAM,MAAM,GAAG,CAAA,EAAG,QAAQ,CAAC,MAAM,CAAA,GAAA,EAAM,IAAI,CAAC,YAAY,CAAA,CAAE,CAAA;MAE7C,cAAc,CAAA;IAGvB,WACa,CAAA,SAAuB,EACvB,OAA0B,EAAA;QAD1B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;QACvB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAmB;QAJ9B,IAAI,CAAA,IAAA,GAAG,WAAW,CAAA;KAKvB;AAEJ,IAAA,OAAO,CAAC,WAAwB,EAAA;AAC5B,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,GAAwB,KAAI;AAC/C,YAAA,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;AACpE,YAAA,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,aAAa,CAAA;AACnD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAA;AAElC,YAAA,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,MAC5B,eAAe,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAChD,SAAS,CAAC,MAAM,IACZ,mBAAmB,CAAC;gBAChB,OAAO;gBACP,OAAO;AACP,gBAAA,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;AAC9B,gBAAA,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE;aAClC,CAAC,CACL,CACJ,CACJ,CAAA;AACD,YAAA,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,MAC9B,eAAe,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAChD,SAAS,CAAC,MAAM,IACZ,mBAAmB,CAAC;gBAChB,OAAO;gBACP,OAAO;AACP,gBAAA,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;AAC9B,gBAAA,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE;AAClC,aAAA,CAAC,CACL,EACD,GAAG,CAAC,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAC9C,CACJ,CAAA;AACD,YAAA,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;YACvD,GAAG,CAAC,IAAI,EAAE,CAAA;AACd,SAAC,CAAC,CAAA;KACL;AACJ,CAAA;AAED,SAAS,eAAe,CACpB,WAAwB,EACxB,KAAa,EACb,SAAqC,EAAA;AAErC,IAAA,MAAM,GAAG,GACL,KAAK,GAAG,CAAC;UACH,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,WAAW,CAAC,UAAU,CAAmB,UAAU,CAAC,CAAC,CAAC;AAC1F,UAAE,WAAW,CAAC,UAAU,CAAmB,UAAU,CAAC,CAAA;AAE9D,IAAA,OAAO,GAAG,CAAC,IAAI,CACX,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,QAAQ,IAAG;QACX,MAAM,MAAM,GAAG,0BAA0B,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAChE,OAAO;YACH,MAAM;AACN,YAAA,GAAG,SAAS;SACf,CAAA;KACJ,CAAC,CACL,CAAA;AACL,CAAC;AAEY,MAAA,aAAa,GAAiB;AACvC,IAAA,IAAI,EAAE;AACF,QAAAA,OAAK,CAAC;AACF,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,OAAO,EAAE,GAAG;SACf,CAAC;AACF,QAAA,OAAO,CACH,MAAM,EACNA,OAAK,CAAC;AACF,YAAA,SAAS,EAAE,UAAU;AACrB,YAAA,OAAO,EAAE,GAAG;AACf,SAAA,CAAC,CACL;AACJ,KAAA;AACD,IAAA,IAAI,EAAE;AACF,QAAA,OAAO,CACH,MAAM,EACNA,OAAK,CAAC;AACF,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,OAAO,EAAE,GAAG;AACf,SAAA,CAAC,CACL;AACJ,KAAA;EACJ;AAEK,SAAU,aAAa,CAAC,OAA0B,EAAA;AACpD,IAAA,OAAO,IAAI,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;AACrD,CAAC;AAEY,MAAA,aAAa,GAAiB;IACvC,IAAI,EAAE,CAACA,OAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,EAAEA,OAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACrE,IAAA,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAEA,OAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACjD;AAEK,SAAU,aAAa,CAAC,OAA0B,EAAA;AACpD,IAAA,OAAO,IAAI,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;AACrD,CAAC;AAEY,MAAA,aAAa,GAAiB;AACvC,IAAA,IAAI,EAAE;AACF,QAAAA,OAAK,CAAC;AACF,YAAA,SAAS,EAAE,+CAA+C;AAC1D,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,eAAe,EAAE,cAAc;AAC/B,YAAA,UAAU,EAAE,SAAS;SACxB,CAAC;AACF,QAAA,OAAO,CACH,MAAM,EACNA,OAAK,CAAC;AACF,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,SAAS,EAAE,iCAAiC;AAC/C,SAAA,CAAC,CACL;AACJ,KAAA;AACD,IAAA,IAAI,EAAE;AACF,QAAA,OAAO,CACH,MAAM,EACNA,OAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,qEAAqE,EAAE,CAAC,CAC1G;AACJ,KAAA;EACJ;AAEK,SAAU,aAAa,CAAC,OAA0B,EAAA;IACpD,IAAI,CAAC,OAAO,EAAE;QACV,OAAO,GAAG,EAAE,CAAA;KACf;AAED,IAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACjB,QAAA,OAAO,CAAC,MAAM,GAAG,EAAE,CAAA;KACtB;SAAM;QACH,OAAO,CAAC,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;KACzC;AAED,IAAA,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAA;AACpC,IAAA,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,OAAO,CAAA;AAEtC,IAAA,OAAO,IAAI,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;AACrD;;MCnJa,aAAa,CAAA;AAGtB,IAAA,WAAA,CAAqB,OAA6B,EAAA;QAA7B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAsB;QAFzC,IAAI,CAAA,IAAA,GAAG,UAAU,CAAA;KAE4B;AAEtD,IAAA,OAAO,CAAC,WAA6B,EAAA;AACjC,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,IAA6B,KAAI;AACpD,YAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;YAC7E,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;AACnC,YAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YAEjF,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAA;YACtF,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,wBAAwB,EAAE,WAAW,CAAC,GAAG,CAAC,CAAA;YAE9E,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,MACzB,mBAAmB,CAAC;AAChB,gBAAA,OAAO,EAAE,gBAAgB;gBACzB,OAAO,EAAE,QAAQ,CAAC,aAAa;gBAC/B,SAAS,EAAE,aAAa,CAAC,IAAI;AAChC,aAAA,CAAC,CACL,CAAA;YACD,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,MAC3B,mBAAmB,CAAC;AAChB,gBAAA,OAAO,EAAE,gBAAgB;gBACzB,OAAO,EAAE,QAAQ,CAAC,aAAa;gBAC/B,SAAS,EAAE,aAAa,CAAC,IAAI;AAChC,aAAA,CAAC,CACL,CAAA;AAED,YAAA,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;AAEpD,YAAA,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;YAE3D,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,CAAA;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AACvB,SAAC,CAAC,CAAA;KACL;AACJ,CAAA;AAEK,SAAU,QAAQ,CAAC,OAA6B,EAAA;AAClD,IAAA,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,CAAA;AACrC;;ACTA,MAAM,iBAAiB,CAAA;AAGnB,IAAA,WAAA,CAAqB,UAA+B,EAAE,EAAA;QAAjC,IAAO,CAAA,OAAA,GAAP,OAAO,CAA0B;QAF7C,IAAI,CAAA,IAAA,GAAG,eAAe,CAAA;KAE2B;AAE1D,IAAA,OAAO,CAAC,WAAwB,EAAA;QAC5B,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;AAEzD,QAAA,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,aAAa,CAAA;QACrD,MAAM,QAAQ,GAA2B,EAAE,CAAA;QAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QAEvC,IAAI,SAAS,EAAE;AACX,YAAA,MAAM,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;YAE/D,QAAQ,CAAC,IAAI,CACT,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CACpD,GAAG,CAAC,MAAK;AACL,gBAAA,OAAO,EAAE,MAAM,EAAE,WAAoB,EAAE,CAAA;aAC1C,CAAC,CACL,CACJ,CAAA;;SAGJ;QAED,IAAI,YAAY,EAAE;YACd,MAAM,eAAe,GACjB,OAAO,YAAY,KAAK,SAAS,GAAG,EAAE,GAAG,YAAY,CAAC,eAAe,EAAE,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;YAEnG,QAAQ,CAAC,IAAI,CACT,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAC/D,MAAM,CAAC,KAAK,IAAG;gBACX,IAAI,EAAE,KAAK,CAAC,MAAM,YAAY,WAAW,CAAC,EAAE;AACxC,oBAAA,OAAO,KAAK,CAAA;iBACf;AACD,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;AAE3B,gBAAA,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE;oBACnC,IAAI,MAAM,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAChD,wBAAA,OAAO,KAAK,CAAA;qBACf;iBACJ;gBAED,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,UAAU,CAAC,CAAA;gBACvE,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,EAAE,wBAAwB,EAAE,kBAAkB,CAAC,CAAA;gBACxF,MAAM,gBAAgB,GAClB,WAAW,IAAI,IAAI,IAAI,WAAW,KAAK,OAAO;AAC1C,sBAAE,cAAc,CACV,QAAQ,CAAC,aAAa,CAAC,CAA4B,yBAAA,EAAA,WAAW,IAAI,CAAC,EACnE,wBAAwB,EACxB,kBAAkB,CACrB;sBACD,SAAS,CAAA;;gBAInB,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,EAAE;AAC5C,oBAAA,OAAO,IAAI,CAAA;iBACd;qBAAM;oBACH;;AAEI,oBAAA,CAAC,WAAW,IAAI,IAAI,IAAI,WAAW,IAAI,OAAO;;yBAE7C,WAAW,IAAI,IAAI,IAAI,gBAAgB,IAAI,IAAI,IAAI,WAAW,GAAG,OAAO,CAAC;;yBAEzE,WAAW,IAAI,IAAI,IAAI,WAAW,GAAG,OAAO,CAAC,EACjD;iBACJ;AACL,aAAC,CAAC,EACF,GAAG,CAAC,MAAK;AACL,gBAAA,OAAO,EAAE,MAAM,EAAE,OAAgB,EAAE,CAAA;aACtC,CAAC,CACL,CACJ,CAAA;SACJ;QAED,IAAI,OAAO,EAAE;AACT,YAAA,QAAQ,CAAC,IAAI,CACT,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CACd,GAAG,CAAC,MAAK;AACL,gBAAA,OAAO,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAA;aACxC,CAAC,CACL,CACJ,CAAA;SACJ;AAED,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,OAAO,EAAE,EAAE,CAAA;SACd;aAAM;AACH,YAAA,OAAO,IAAI,UAAU,CAAC,GAAG,IACrB,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAK;gBAC/B,IAAI,CAAC,GAAG,QAAQ,CAAC;qBACZ,IAAI,CACD,UAAU,CAAC,KAAK,IACZ,WAAW,CAAC,KAAK,EAAE,CAAC,IAAI,CACpB,GAAG,CAAC,MAAM,KAAK,CAAC,EAChB,oBAAoB,EAAE,CACzB,CACJ,CACJ;qBACA,SAAS,CAAC,GAAG,CAAC,CAAA;aACtB,CAAC,CACL,CAAA;SACJ;KACJ;AACJ,CAAA;AAEe,SAAA,YAAY,CAAC,OAAA,GAA+B,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAA;AAC/F,IAAA,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAA;AACzC,CAAC;AAED,SAAS,cAAc,CAAC,EAAsB,EAAE,IAAY,EAAE,OAAe,EAAA;AACzE,IAAA,IAAI,EAAE,IAAI,IAAI,EAAE;AACZ,QAAA,OAAO,SAAS,CAAA;KACnB;IAED,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAA,CAAA,CAAG,CAAC,EAAE;QACzB,OAAO,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,SAAS,CAAA;KAClD;SAAM;QACH,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,CAAI,CAAA,EAAA,IAAI,CAAG,CAAA,CAAA,CAAgB,CAAA;QACrD,IAAI,MAAM,EAAE;YACR,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,SAAS,CAAA;SACtD;KACJ;AACD,IAAA,OAAO,SAAS,CAAA;AACpB;;MC9Ja,UAAU,CAAA;AAGnB,IAAA,WAAA,CAAqB,OAAqB,EAAA;QAArB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAc;QAFjC,IAAI,CAAA,IAAA,GAAG,OAAO,CAAA;KAEuB;AAE9C,IAAA,OAAO,CAAC,WAAwB,EAAA;AAC5B,QAAA,OAAO,IAAI,UAAU,CAAC,IAAI,IAAG;AACzB,YAAA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,aAA4B,CAAA;AAC/D,YAAA,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;AAE5D,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;gBACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAA;AAC1E,gBAAA,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;AACjF,gBAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC,CAAA;aAC5E;AAED,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACnB,gBAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAA;aACrD;YAED,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,MAAK;AACnC,gBAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAA;AACrC,gBAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,aAAa,CAAA;gBACpD,IAAI,MAAM,KAAK,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAClD,oBAAA,iBAAiB,IAAI,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAA;iBACvG;gBACD,IAAI,CAAC,QAAQ,EAAE,CAAA;AACnB,aAAC,CAAC,CAAA;YACF,IAAI,CAAC,IAAI,EAAE,CAAA;AACf,SAAC,CAAC,CAAA;KACL;IAED,KAAK,CAAC,WAAwB,EAAE,GAAiB,EAAA;AAC7C,QAAA,OAAO,IAAI,UAAU,CAAC,MAAK;AACvB,YAAA,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;YAE/D,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAK;gBAC/B,IAAI,CAAC,mBAAmB,EAAE,CAAA;AAC9B,aAAC,CAAC,CAAA;AAEF,YAAA,OAAO,MAAK;gBACR,IAAI,CAAC,OAAO,EAAE,CAAA;AAClB,aAAC,CAAA;AACL,SAAC,CAAC,CAAA;KACL;AACJ,CAAA;AAEK,SAAU,KAAK,CAAC,OAAqB,EAAA;AACvC,IAAA,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;AAClC;;MCNa,aAAa,CAAA;AAKtB,IAAA,WAAA,CAAY,OAA6B,EAAA;QAJhC,IAAI,CAAA,IAAA,GAAG,UAAU,CAAA;AAKtB,QAAA,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,EAAE,CAAA;AAE7B,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACnB,MAAM,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,CAAA;SACzC;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAChB,YAAA,MAAM,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,CAAA;SACvE;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACjB,MAAM,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,CAAA;SAC7C;AAED,QAAA,IAAI,CAAC,OAAO,GAAG,MAAa,CAAA;KAC/B;AAED,IAAA,OAAO,CAAC,WAA6B,EAAA;AACjC,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,IAAkC,KAAI;AACzD,YAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAA;YAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;YACjD,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;AAE7C,YAAA,MAAM,UAAU,GAAY;gBACxB,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC;AAC9D,gBAAA,MAAM,EAAE,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC;AACrE,gBAAA,SAAS,EAAE,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC;aAC9E,CAAA;AAED,YAAA,MAAM,WAAW,GAAgB;AAC7B,gBAAA,QAAQ,EAAE,WAAW,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;AACzE,gBAAA,QAAQ,EAAE,WAAW,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;AACzE,gBAAA,SAAS,EAAE,WAAW,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;AAC5E,gBAAA,SAAS,EAAE,WAAW,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;aAC/E,CAAA;AAED,YAAA,MAAM,OAAO,GAAG;AACZ,gBAAA,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC;AAC/B,gBAAA,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC;aACnC,CAAA;AAED,YAAA,QACI,aAAa,CAAC,OAAO,CAAC;;iBAEjB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAI;AAC1B,gBAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACjB,gBAAA,MAAM,GAAG,GAAG,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;AAC7D,gBAAA,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,aAAa,CAAA;AACtD,gBAAA,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAA;AAC7D,gBAAA,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;AACxD,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;aACjB,CAAC,EACT;AACL,SAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;KAC/D;AACJ,CAAA;AAED,SAAS,UAAU,CAAC,WAAwB,EAAE,GAA4B,EAAE,WAA6B,EAAA;AACrG,IAAA,IAAI,GAAG,KAAK,OAAO,EAAE;AACjB,QAAA,OAAO,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;KACpE;SAAM,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,YAAY,MAAM,EAAE;QACpD,OAAO,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;KACjD;SAAM;QACH,OAAO,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;KAC9C;AACL,CAAC;AAED,SAAS,WAAW,CAAC,UAA4B,EAAE,IAAwB,EAAE,IAAgB,EAAA;AACzF,IAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC1B,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAA;KAClB;AAAM,SAAA,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;QAC7B,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KAC9E;AAAM,SAAA,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE;QAC3B,OAAQ,IAA0C,CAAC,IAAI,CACnD,SAAS,CAAC,KAAK,IAAI,WAAW,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAC3D,CAAA;KACJ;AACD,IAAA,OAAO,EAAE,CAAC,GAAG,CAAC,CAAA;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,GAAqB,EAAE,KAAwB,EAAA;IACjE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IAC1D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAA;IAC5C,OAAO;QACH,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAI,EAAA,CAAA;QACrE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAI,EAAA,CAAA;QACzE,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,GAAG,CAAG,EAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAI,EAAA,CAAA;QAC3E,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAA,EAAG,MAAM,CAAA,EAAA,CAAI,GAAG,CAAG,EAAA,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAI,EAAA,CAAA;KACnF,CAAA;AACL,CAAC;AAEK,SAAU,QAAQ,CAAC,OAA6B,EAAA;AAClD,IAAA,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,CAAA;AACrC;;SCvJgB,KAAK,GAAA;IACjB,OAAO;AACH,QAAA,QAAQ,CAAC;AACL,YAAA,MAAM,EAAE;AACJ,gBAAA,GAAG,EAAE,UAAU;AACf,gBAAA,IAAI,EAAE,eAAe;AACxB,aAAA;AACD,YAAA,SAAS,EAAE;AACP,gBAAA,GAAG,EAAE,UAAU;AACf,gBAAA,OAAO,EAAE,MAAM;AAClB,aAAA;SACJ,CAAC;QACF,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;AACvD,QAAA,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACrB,QAAA,YAAY,EAAE;AACd,QAAA,aAAa,EAAE;KAClB,CAAA;AACL;;MClBa,UAAU,CAAA;AAGnB,IAAA,WAAA,CAAqB,MAAoC,EAAA;QAApC,IAAM,CAAA,MAAA,GAAN,MAAM,CAA8B;QAFhD,IAAI,CAAA,IAAA,GAAG,OAAO,CAAA;KAEsC;AAE7D,IAAA,OAAO,CAAC,WAAwB,EAAA;AAC5B,QAAA,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;AACrE,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;KACzB;AACJ,CAAA;AAEK,SAAU,KAAK,CAAC,MAAoC,EAAA;AACtD,IAAA,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;AACjC;;MCTa,cAAc,CAAA;AAGvB,IAAA,WAAA,CAAqB,KAAiB,EAAA;QAAjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAF7B,IAAI,CAAA,IAAA,GAAG,WAAW,CAAA;KAEe;AAE1C,IAAA,OAAO,CAAC,WAAwB,EAAA;AAC5B,QAAA,MAAM,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,aAAa,CAAA;AAE9C,QAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC7C,YAAA,IAAI,CAAC,KAAK,SAAS,EAAE;gBACjB,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;aACpC;AAAM,iBAAA,IAAI,CAAC,IAAI,IAAI,EAAE;AAClB,gBAAA,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;aACxB;iBAAM;gBACH,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;aACnC;SACJ;AAED,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KACxB;AACJ,CAAA;AAEK,SAAU,SAAS,CAAC,KAAiB,EAAA;AACvC,IAAA,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,CAAA;AACpC;;ICzBY,YAyBX;AAzBD,CAAA,UAAY,WAAW,EAAA;AACnB;;AAEG;AACH,IAAA,WAAA,CAAA,WAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AAER;;AAEG;AACH,IAAA,WAAA,CAAA,WAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AAET;;AAEG;AACH,IAAA,WAAA,CAAA,WAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO,CAAA;AAEP;;AAEG;AACH,IAAA,WAAA,CAAA,WAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AAET;;AAEG;AACH,IAAA,WAAA,CAAA,WAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACf,CAAC,EAzBW,WAAW,KAAX,WAAW,GAyBtB,EAAA,CAAA,CAAA,CAAA;AAED;AAEM,MAAgB,QAA8C,SAAQ,UAAa,CAAA;AAQrF;;AAEG;IACH,IAAI,MAAM,CAAC,GAAW,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAA;YAClB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;SAChD;KACJ;AACD,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAA;KACtB;AASD,IAAA,WAAA,CACI,aAAgB,EACA,WAA2B,GAAA,WAAW,CAAC,IAAI,EAAA;QAE3D,KAAK,CAAC,aAAa,CAAC,CAAA;QAFJ,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgC;QA7BtD,IAAK,CAAA,KAAA,GAAG,IAAI,SAAS,CAAC;AAC3B,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,SAAS,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;YACjC,QAAQ,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE;AACxD,SAAA,CAAC,CAAA;QAcM,IAAO,CAAA,OAAA,GAAW,CAAC,CAAC,CAAA;AAET,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CACnD,MAAM,CAAC,KAAK,IAAI,KAAK,KAAK,UAAU,CAAC,EACrC,IAAI,CAAC,CAAC,CAAC,EACP,KAAK,EAAE,CACV,CAAA;QAOG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,MAAK;YAC3B,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;AACjE,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;YACpB,OAAQ,IAAY,CAAC,KAAK,CAAA;AAC9B,SAAC,CAAC,CAAA;KACL;IAED,OAAO,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACpB,OAAO,EAAE,EAAE,CAAA;SACd;AACD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAA;KACnD;AACJ;;ACtEK,MAAO,YAAa,SAAQ,QAAQ,CAAA;AAKtC,IAAA,WAAA,CAA4B,OAAyB,EAAA;AACjD,QAAA,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;QAD9C,IAAO,CAAA,OAAA,GAAP,OAAO,CAAkB;QAF3C,IAAY,CAAA,YAAA,GAAG,cAAc,CAAA;AAKnC,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC5B,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,GAAG,SAAS,CAAC;YACjD,MAAM,EAAE,OAAO,CAAC,QAAQ;YACxB,IAAI,EAAE,IAAI,CAAC,YAAY;AAC1B,SAAA,CAAC,CAAA;QAEF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,MAAK;YAC3B,OAAQ,IAAY,CAAC,OAAO,CAAA;YAC5B,OAAQ,IAAY,CAAC,QAAQ,CAAA;AACjC,SAAC,CAAC,CAAA;KACL;IAES,YAAY,GAAA;QAClB,OAAO;AACH,YAAA,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;AACrC,YAAA,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE;SAC5C,CAAA;KACJ;AACJ,CAAA;AAED,SAAS,aAAa,CAAC,OAAyB,EAAA;IAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AACzC,IAAA,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAA;AAC/B,IAAA,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAA;AACnB,IAAA,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAA;AACpB,IAAA,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,aAAa,CAAA;AAC/B,IAAA,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,aAAa,CAAA;AACjC,IAAA,GAAG,CAAC,KAAK,CAAC,aAAa,GAAG,QAAQ,CAAA;AAClC,IAAA,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAA;AAChC,IAAA,GAAG,CAAC,KAAK,CAAC,cAAc,GAAG,SAAS,CAAA;AACpC,IAAA,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAA;AAElC,IAAA,IAAI,OAAO,CAAC,OAAO,EAAE;QACjB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;KACxC;AAED,IAAA,OAAO,GAAG,CAAA;AACd;;AClDM,MAAO,WAAY,SAAQ,QAAQ,CAAA;IAGrC,IAAI,OAAO,CAAC,OAAgB,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;AACvB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAA;SACvE;KACJ;AAED,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ,CAAA;KACvB;IACD,QAAQ,GAAY,KAAK,CAAA;AAEzB,IAAA,WAAA,CACa,QAAuB,EACvB,KAAe,EACf,OAAqB,EAAA;AAE9B,QAAA,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;QAJpB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAe;QACvB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAU;QACf,IAAO,CAAA,OAAA,GAAP,OAAO,CAAc;AAI9B,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG,OAAO,CAAC,KAAK,KAAK,aAAa,GAAG,aAAa,GAAG,OAAO,EAAE,CAAA;QAE3E,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,MAAK;AAC1B,YAAA,IAAI,CAAC,QAAQ;AACR,iBAAA,IAAI,EAAE;AACN,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;iBAC9C,SAAS,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;AACvB,aAAC,CAAC,CAAA;AACV,SAAC,CAAC,CAAA;KACL;IAED,IAAI,GAAA;QACA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;KAC5C;AACJ;;AC5CK,MAAO,WAAY,SAAQ,QAAQ,CAAA;AAAG;;MCM/B,4BAA4B,GAAG,IAAI,cAAc,CAAS,8BAA8B,EAAC;MAGhF,cAAc,CAAA;AADpC,IAAA,WAAA,GAAA;QAIa,IAAS,CAAA,SAAA,GAAoB,EAAE,CAAA;AAC/B,QAAA,IAAA,CAAA,WAAW,GAAW,MAAM,CAAC,4BAA4B,CAAC,CAAA;AAuCtE,KAAA;AAxCY,IAAA,SAAS,CAAsB;AAGxC,IAAA,MAAM,CAAqB,GAAM,EAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACxB,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;AACxC,YAAA,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;SACrD;AACD,QAAA,OAAO,GAAG,CAAA;KACb;AAED,IAAA,OAAO,CAAC,GAAa,EAAA;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AACvC,QAAA,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YAC7B,IAAI,CAAC,OAAO,EAAE,CAAA;SACjB;KACJ;IAED,OAAO,GAAA;QACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;AAExD,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAA;AAC7B,QAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC1B,YAAA,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;YACrB,MAAM,IAAI,CAAC,CAAA;SACd;AAED,QAAA,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAE/B,IAAI,WAAW,GAAG,KAAK,CAAA;AACvB,QAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC1B,YAAA,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,aAAa,EAAE;AACvE,gBAAA,KAAK,CAAC,OAAO,GAAG,CAAC,WAAW,CAAA;gBAC5B,WAAW,GAAG,IAAI,CAAA;aACrB;SACJ;KACJ;8GA1CiB,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAd,cAAc,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBADnC,SAAS;;AA+CJ,MAAO,SAAU,SAAQ,cAAc,CAAA;AAD7C,IAAA,WAAA,GAAA;;AAEa,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAA;AACxC,KAAA;8GAFY,SAAS,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAT,SAAS,EAAA,CAAA,CAAA,EAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB,UAAU;;AASL,MAAO,eAAgB,SAAQ,cAAc,CAAA;AAJnD,IAAA,WAAA,GAAA;;AAKa,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa,CAAA;AACnD,KAAA;8GAFY,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,SAAA,EAFb,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAE7D,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAiB,eAAA,EAAE,CAAC;AACzE,iBAAA,CAAA;;AAKD,SAAS,aAAa,CAAC,CAAW,EAAE,CAAW,EAAA;IAC3C,MAAM,WAAW,GAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAC3C,IAAA,IAAI,WAAW,KAAK,CAAC,EAAE;AACnB,QAAA,OAAO,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;KAC9B;SAAM;AACH,QAAA,OAAO,WAAW,CAAA;KACrB;AACL,CAAC;AAED,SAAS,cAAc,CAAC,CAAW,EAAE,CAAW,EAAA;IAC5C,IAAI,CAAC,YAAY,WAAW,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE;QAC3C,OAAO,CAAC,CAAC,CAAA;KACZ;SAAM,IAAI,CAAC,YAAY,WAAW,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE;AAClD,QAAA,OAAO,CAAC,CAAA;KACX;AACD,IAAA,OAAO,CAAC,CAAA;AACZ,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAW,EAAE,CAAW,EAAA;AAC9C,IAAA,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAA;AAC9B,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAW,EAAE,CAAW,EAAA;IAC/C,OAAO,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;AAChD,CAAC;AAED,SAAS,cAAc,CAAC,KAAe,EAAA;AACnC,IAAA,IAAI,KAAK,YAAY,WAAW,EAAE;QAC9B,OAAO,KAAK,CAAC,KAAK,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,CAAA;KACrD;SAAM;AACH,QAAA,OAAO,KAAK,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,CAAA;KAC/C;AACL;;AC9FM,MAAgB,SAAU,SAAQ,YAAY,CAAA;AAIhD,IAAA,WAAA,CAAY,OAAsB,EAAA;QAC9B,KAAK,CAAC,OAAO,CAAC,CAAA;QAJC,IAAY,CAAA,YAAA,GAAG,WAAW,CAAA;AAMzC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC1F,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,MAAK;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;YACrB,OAAQ,IAAY,CAAC,MAAM,CAAA;AAC/B,SAAC,CAAC,CAAA;KACL;IAEkB,YAAY,GAAA;AAC3B,QAAA,OAAO,CAAC,GAAG,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;KAC3E;AACJ,CAAA;AAMK,MAAO,kBAA4B,SAAQ,SAAS,CAAA;IAItD,WACoB,CAAA,SAA2B,EAC3C,OAAkC,EAAA;QAElC,KAAK,CAAC,OAAO,CAAC,CAAA;QAHE,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAJ5B,IAAY,CAAA,YAAA,GAAG,oBAAoB,CAAA;QASlD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;QAE/C,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,IAAI,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QACtG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE/B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,MAAK;YAC3B,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;YAC9C,OAAQ,IAAY,CAAC,MAAM,CAAA;AAC/B,SAAC,CAAC,CAAA;KACL;IAEkB,YAAY,GAAA;AAC3B,QAAA,OAAO,CAAC,GAAG,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;KACpF;AACJ,CAAA;AAOK,MAAO,iBAA2B,SAAQ,SAAS,CAAA;IAIrD,WACoB,CAAA,QAAwB,EACxC,OAAiC,EAAA;QAEjC,KAAK,CAAC,OAAO,CAAC,CAAA;QAHE,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAgB;QAJzB,IAAY,CAAA,YAAA,GAAG,mBAAmB,CAAA;AAQjD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;QACrF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE/B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,MAAK;YAC3B,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;YAC9C,OAAQ,IAAY,CAAC,MAAM,CAAA;AAC/B,SAAC,CAAC,CAAA;KACL;IAEkB,YAAY,GAAA;AAC3B,QAAA,OAAO,CAAC,GAAG,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;KACnF;AACJ;;ACtED;AACA;MAGa,YAAY,CAAA;AACZ,IAAA,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA;AACnC,IAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;AAC7B,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;AAC5B,IAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA;AAEzC,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAA;KAC9B;IAED,kBAAkB,CAAI,SAA2B,EAAE,OAAkC,EAAA;AACjF,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACnB,YAAA,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAA;SAC1D;AACD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;KAC5E;IAED,iBAAiB,CAAI,GAAmB,EAAE,OAAiC,EAAA;AACvE,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACnB,YAAA,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAA;SAC1D;AACD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;KACrE;AAED,IAAA,YAAY,CAAC,OAAyB,EAAA;AAClC,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACnB,YAAA,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAA;SAC1D;AACD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,CAAA;KAC3D;IAED,WAAW,CAAC,KAAe,EAAE,OAAwB,EAAA;AACjD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACvD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;KAC3E;AAED,IAAA,WAAW,CAAC,OAAqB,EAAE,WAA2B,GAAA,WAAW,CAAC,IAAI,EAAA;AAC1E,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAA;KACtF;IAED,YAAY,GAAA;AACR,QAAA,IAAI;AACA,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;YACpC,OAAO,IAAI,CAAC,SAAS,CAAA;;SAExB;AAAC,QAAA,OAAO,GAAG,EAAE,GAAE;QAEhB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AACvC,QAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;SAC9C;QAED,OAAO,IAAI,CAAC,QAAQ,CAAA;KACvB;8GArDQ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAZ,YAAY,EAAA,CAAA,CAAA,EAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;;;MCSE,MAAM,GAAG,IAAI,cAAc,CAAS,QAAQ,EAAC;AAe1D,IAAI,WAAW,GAAG,CAAC,CAAA;MAGN,WAAW,CAAA;AAaX,IAAA,OAAO,CAAa;AAGpB,IAAA,aAAa,CAAkC;AAC/C,IAAA,cAAc,CAAmC;AAI1D,IAAA,WAAA,CACa,QAAsB,EACtB,SAAuB,EAChB,MAAc,EAAA;QAFrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAc;QACtB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;AAtB3B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,aAAa,CAAkB,CAAC,CAAC,CAAA;QAE/C,IAAK,CAAA,KAAA,GAAG,IAAI,SAAS,CAAC;AAC3B,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE;AACpD,YAAA,SAAS,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;YACjC,QAAQ,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE;YACrD,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE;AACvD,SAAA,CAAC,CAAA;QAEO,IAAO,CAAA,OAAA,GAAW,EAAE,CAAA;QAGpB,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QAC/C,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;AAEjD,QAAA,IAAA,CAAA,GAAG,GAAG,CAAA,EAAG,EAAE,WAAW,EAAE,CAAA;QAO7B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE;AACzC,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,aAAa,EAAE,MAAM;AACxB,SAAA,CAAC,CAAA;QACF,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;AAE/D,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;QAE1D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,KAAK,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;YACtF,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAO,CAAC,CAAA;AACnC,SAAC,CAAC,CAAA;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3G,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,MAAK;YAC1B,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAA;AACxD,SAAC,CAAC,CAAA;QACF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAK;YACxB,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,GAAG,IAAW,CAAA;AAC7D,SAAC,CAAC,CAAA;QACF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,MAAK;YAC5B,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAA;AACxD,SAAC,CAAC,CAAA;QAEF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;KACtC;IAED,IAAI,GAAA;AACA,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;KACpD;AAED;;AAEG;IACH,IAAI,GAAA;AACA,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;KAC1B;IAED,KAAK,CAAC,KAAK,GAAG,KAAK,EAAA;QACf,IAAI,KAAK,EAAE;AACP,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;SAC5D;aAAM;AACH,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;SACvE;KACJ;AAED,IAAA,IAAI,CAAC,KAA6B,EAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,IAAI,EAAS,CAAC,CAAA;KAC5D;AAED,IAAA,SAAS,CAAC,IAAS,EAAA;QACf,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAO,CAAC,CAAA;QACxC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAA;KAC/B;AAED,IAAA,UAAU,CAAI,IAAY,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CACxB,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EAC9B,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EACzB,MAAM,CAAC,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,CAChB,CAAA;KACrB;IAED,WAAW,GAAA;QACP,MAAM,GAAG,GAA6D,EAAE,CAAA;AAExE,QAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAC/C,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;SACjF;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,YAAA,OAAO,KAAK,CAAA;SACf;aAAM;AACH,YAAA,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;SACjD;KACJ;AArGQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,oEAwBR,MAAM,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAxBT,WAAW,EAAA,CAAA,CAAA,EAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;;0BAyBF,MAAM;2BAAC,MAAM,CAAA;;;MCtDA,eAAe,CAAA;AAGjC,IAAA,UAAU,CAAiB;AAE3B,IAAA,WAAA,CAA+B,WAA4B,EAAA;QAA5B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAiB;QAJxC,IAAM,CAAA,MAAA,GAAqC,EAAE,CAAA;QAEhE,IAAU,CAAA,UAAA,GAAe,EAAE,CAAA;AA2C3B,QAAA,IAAA,CAAA,SAAS,GAA6C,CAAC,GAAG,IAAW,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAA;KAzCzC;IAE/D,KAAK,CAAC,GAAG,MAAiC,EAAA;AACtC,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACxB,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACtB,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAA;aACvB;iBAAM;gBACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;aAClC;SACJ;AAED,QAAA,OAAO,IAAI,CAAA;KACd;IAED,IAAI,GAAA;AACA,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,IAAiC,KAAI;YACxD,IAAI,SAAS,GAAG,KAAK,CAAA;AAErB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;YACzB,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,IAAG;AAC7C,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAChB,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;oBAC5B,SAAS,GAAG,IAAI,CAAA;iBACnB;AACD,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;oBAC1B,IAAI,CAAC,QAAQ,EAAE,CAAA;iBAClB;AACL,aAAC,CAAC,CAAA;YAEF,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,CAAA;AAEtC,YAAA,OAAO,MAAK;gBACR,OAAO,CAAC,WAAW,EAAE,CAAA;gBACrB,UAAU,CAAC,WAAW,EAAE,CAAA;gBACxB,IAAI,CAAC,SAAS,EAAE;AACZ,oBAAA,GAAG,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,CAAA;iBACzB;AACL,aAAC,CAAA;AACL,SAAC,CAAC,CAAA;KACL;AAIS,IAAA,SAAS,CAAC,SAAsB,EAAA;QACtC,IAAI,CAAC,SAAS,EAAE;YACZ,SAAS,GAAG,EAAE,CAAA;SACjB;AAED,QAAA,SAAS,GAAG;AACR,YAAA,GAAG,SAAS;YACZ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE;YAC1C,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;YAC3D,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;YACxD,WAAW;YACX,GAAG,IAAI,CAAC,UAAU;SACrB,CAAA;AAED,QAAA,OAAO,SAAS,CAAA;KACnB;AAID,IAAA,QAAQ,CAAC,OAA6B,EAAA;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;KACvC;AAED,IAAA,QAAQ,CAAC,SAAgC,EAAA;AACrC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS,CAAC,CAAA;SACvD;aAAM;YACH,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;SACpD;AACD,QAAA,OAAO,IAAI,CAAA;KACd;AACJ,CAAA;AAEK,MAAO,uBAA0C,SAAQ,eAAe,CAAA;AAC1E,IAAA,WAAA,CACI,WAA4B,EACZ,GAAmB,EACnB,OAAiC,EAAA;QAEjD,KAAK,CAAC,WAAW,CAAC,CAAA;QAHF,IAAG,CAAA,GAAA,GAAH,GAAG,CAAgB;QACnB,IAAO,CAAA,OAAA,GAAP,OAAO,CAA0B;KAGpD;IAEkB,MAAM,GAAA;QACrB,MAAM,OAAO,GAA6B,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QAC7D,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;AACrD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC7E,OAAO,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;KAC7C;AACJ,CAAA;AAEK,MAAO,wBAAuD,SAAQ,eAAe,CAAA;AACvF,IAAA,WAAA,CACI,WAA4B,EACZ,SAAY,EACZ,OAAkC,EAAA;QAElD,KAAK,CAAC,WAAW,CAAC,CAAA;QAHF,IAAS,CAAA,SAAA,GAAT,SAAS,CAAG;QACZ,IAAO,CAAA,OAAA,GAAP,OAAO,CAA2B;KAGrD;IAEkB,MAAM,GAAA;QACrB,MAAM,OAAO,GAA8B,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QAC9D,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;AACrD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QACpF,OAAO,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;KAC7C;AACJ,CAAA;AAED;;;;;;;;;;;;AAYG;MAEU,eAAe,CAAA;AAD5B,IAAA,WAAA,GAAA;AAEa,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;AAcxC,KAAA;IAPG,IAAI,CAAI,KAAwC,EAAE,IAAS,EAAA;AACvD,QAAA,IAAI,KAAK,YAAY,WAAW,EAAE;YAC9B,OAAO,IAAI,uBAAuB,CAAC,IAAI,EAAE,KAAY,EAAE,IAAI,CAAC,CAAA;SAC/D;aAAM;YACH,OAAO,IAAI,wBAAwB,CAAC,IAAI,EAAE,KAAY,EAAE,IAAI,CAAC,CAAA;SAChE;KACJ;8GAdQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAf,eAAe,EAAA,CAAA,CAAA,EAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;ACjIX,MAAM,QAAQ,GAA2B;AACrC,IAAA,WAAW,EAAE,KAAK;CACrB,CAAA;AAEe,SAAA,eAAe,CAAC,OAAA,GAAkC,EAAE,EAAA;IAChE,MAAM,IAAI,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAA;IACxC,OAAO;QACH,EAAE,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;AACrE,QAAA,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE;QAChD,YAAY;QACZ,eAAe;KAClB,CAAA;AACL;;ACxBA;;AAEG;;;;"}
|
|
@@ -5,7 +5,7 @@ import { LayerService } from "../layer/layer.service";
|
|
|
5
5
|
import { ComponentPortalOptions, TemplatePortalOptions } from "../layer/portal-ref";
|
|
6
6
|
import { FloatingChannel, FloatingRef } from "./floating-ref";
|
|
7
7
|
import { type FloatingTrait } from "./traits/_base";
|
|
8
|
-
import { type
|
|
8
|
+
import { type PositionTraitOptions } from "./traits/position";
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export type FloatingTraitInput = FloatingTrait | Array<FloatingTraitInput>;
|
|
11
11
|
export declare abstract class FloatingFactory {
|
|
@@ -20,7 +20,7 @@ export declare abstract class FloatingFactory {
|
|
|
20
20
|
subscribe: Observable<FloatingChannel>["subscribe"];
|
|
21
21
|
protected providers(providers?: Provider[]): Provider[];
|
|
22
22
|
protected abstract create(): FloatingRef<FloatingChannel>;
|
|
23
|
-
position(options:
|
|
23
|
+
position(options: PositionTraitOptions): this;
|
|
24
24
|
provides(providers: Provider | Provider[]): this;
|
|
25
25
|
}
|
|
26
26
|
export declare class FloatingTemplateFactory<T extends object> extends FloatingFactory {
|
|
@@ -2,10 +2,8 @@ export * from "./_base";
|
|
|
2
2
|
export * from "./animation";
|
|
3
3
|
export * from "./backdrop";
|
|
4
4
|
export * from "./close-trigger";
|
|
5
|
-
export * from "./dim-contraint";
|
|
6
5
|
export * from "./focus";
|
|
7
6
|
export * from "./modal";
|
|
8
|
-
export * from "./position-calc";
|
|
9
7
|
export * from "./position";
|
|
10
8
|
export * from "./style";
|
|
11
9
|
export * from "./attribute";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export declare function modal(): (
|
|
1
|
+
export declare function modal(): (import("./animation").AnimationTrait | import("./backdrop").BackdropTrait | {
|
|
2
2
|
readonly name: "close-trigger";
|
|
3
3
|
readonly options: import("./close-trigger").CloseTriggerOptions;
|
|
4
4
|
connect(floatingRef: import("@ngutil/floating").FloatingRef): import("rxjs").Observable<import("./close-trigger").CloseTriggerEvent | void>;
|
|
5
|
-
} | import("./focus").FocusTrait)[];
|
|
5
|
+
} | import("./focus").FocusTrait | import("./position").PositionTrait)[];
|
|
@@ -1,59 +1,32 @@
|
|
|
1
|
-
import { ElementRef } from "@angular/core";
|
|
2
1
|
import { Observable } from "rxjs";
|
|
3
2
|
import { ElementInput } from "@ngutil/common";
|
|
4
|
-
import {
|
|
5
|
-
import { LayerService } from "../../layer/layer.service";
|
|
3
|
+
import { FloatingPosition, FloatingPositionAltInput, FloatingPositionAnchorOptions, FloatingPositionContentOptions, FloatingPositionPlacementOptions } from "@ngutil/style";
|
|
6
4
|
import { FloatingRef } from "../floating-ref";
|
|
7
5
|
import { FloatingTrait } from "./_base";
|
|
8
|
-
|
|
9
|
-
export type
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
export declare class FloatingAnchorRef<T extends Node> extends ElementRef<T> {
|
|
20
|
-
}
|
|
21
|
-
export interface FloatingContentPosition extends FloatingAlign {
|
|
22
|
-
margin?: SidesInput;
|
|
23
|
-
}
|
|
24
|
-
export interface FloatingContent extends FloatingContentPosition {
|
|
25
|
-
}
|
|
26
|
-
export interface FloatingPlacementPosition {
|
|
27
|
-
padding?: SidesInput;
|
|
28
|
-
}
|
|
29
|
-
export interface FloatingPlacement extends FloatingPlacementPosition {
|
|
30
|
-
ref: FloatingTargetElementRef;
|
|
31
|
-
}
|
|
32
|
-
export declare class FloatingPlacementRef<T extends LayerService["root"]> extends ElementRef<T> {
|
|
33
|
-
}
|
|
34
|
-
export interface FloatingPositionOptions {
|
|
35
|
-
anchor?: FloatingAnchor;
|
|
36
|
-
content?: FloatingContent;
|
|
37
|
-
placement?: FloatingPlacement;
|
|
38
|
-
}
|
|
39
|
-
export type FloatingPositionOptionsNormalized = FloatingPositionOptions & {
|
|
40
|
-
anchor: FloatingAnchor;
|
|
41
|
-
content: FloatingContent;
|
|
42
|
-
placement: FloatingPlacement;
|
|
6
|
+
export type PositionTraitElementRef = ElementInput | Window | "layer" | "viewport";
|
|
7
|
+
export type PositionTraitOptions = {
|
|
8
|
+
content?: FloatingPositionContentOptions & MinMaxSizes;
|
|
9
|
+
anchor?: FloatingPositionAnchorOptions & {
|
|
10
|
+
ref: PositionTraitElementRef;
|
|
11
|
+
};
|
|
12
|
+
placement?: FloatingPositionPlacementOptions & {
|
|
13
|
+
ref: PositionTraitElementRef;
|
|
14
|
+
};
|
|
15
|
+
horizontalAlt?: FloatingPositionAltInput;
|
|
16
|
+
verticalAlt?: FloatingPositionAltInput;
|
|
43
17
|
};
|
|
18
|
+
type SizeInput = number | ElementInput | Observable<number> | Observable<ElementInput>;
|
|
19
|
+
interface MinMaxSizes {
|
|
20
|
+
minWidth?: SizeInput;
|
|
21
|
+
maxWidth?: SizeInput;
|
|
22
|
+
minHeight?: SizeInput;
|
|
23
|
+
maxHeight?: SizeInput;
|
|
24
|
+
}
|
|
44
25
|
export declare class PositionTrait implements FloatingTrait<FloatingPosition> {
|
|
45
26
|
readonly name = "position";
|
|
46
|
-
readonly options:
|
|
47
|
-
constructor(options:
|
|
27
|
+
readonly options: Required<PositionTraitOptions>;
|
|
28
|
+
constructor(options: PositionTraitOptions);
|
|
48
29
|
connect(floatingRef: FloatingRef<any>): Observable<FloatingPosition>;
|
|
49
30
|
}
|
|
50
|
-
export declare function position(options:
|
|
51
|
-
export
|
|
52
|
-
readonly options: FloatingPositionOptionsNormalized;
|
|
53
|
-
readonly floating: Dimension;
|
|
54
|
-
readonly anchor: Rect;
|
|
55
|
-
readonly placement: Rect;
|
|
56
|
-
readonly computed?: ComputedPositon;
|
|
57
|
-
constructor(options: FloatingPositionOptionsNormalized, floating: Dimension, anchor: Rect, placement: Rect);
|
|
58
|
-
apply(floatingRef: FloatingRef): void;
|
|
59
|
-
}
|
|
31
|
+
export declare function position(options: PositionTraitOptions): PositionTrait;
|
|
32
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngutil/floating",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.65",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"tslib": "^2.6.2"
|
|
6
6
|
},
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
"@angular/cdk": "18.2.6",
|
|
9
9
|
"@angular/common": "18.2.6",
|
|
10
10
|
"@angular/core": "18.2.6",
|
|
11
|
-
"@ngutil/aria": "0.0.
|
|
12
|
-
"@ngutil/style": "0.0.
|
|
13
|
-
"@ngutil/common": "0.0.
|
|
11
|
+
"@ngutil/aria": "0.0.65",
|
|
12
|
+
"@ngutil/style": "0.0.65",
|
|
13
|
+
"@ngutil/common": "0.0.65"
|
|
14
14
|
},
|
|
15
15
|
"publishConfig": {
|
|
16
16
|
"access": "public",
|