@radix-ng/primitives 1.0.10 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -5
- package/fesm2022/radix-ng-primitives-autocomplete.mjs +88 -21
- package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs +199 -129
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-combobox.mjs +203 -52
- package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-composite.mjs +221 -36
- package/fesm2022/radix-ng-primitives-composite.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +352 -24
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-date-field.mjs +11 -5
- package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-field.mjs +127 -23
- package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-form.mjs +35 -4
- package/fesm2022/radix-ng-primitives-form.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-input.mjs +87 -15
- package/fesm2022/radix-ng-primitives-input.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +34 -7
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-number-field.mjs +38 -7
- package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs +80 -11
- package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-radio.mjs +49 -2
- package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-scroll-area.mjs +6 -3
- package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-select.mjs +70 -14
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-signal-forms.mjs +27 -11
- package/fesm2022/radix-ng-primitives-signal-forms.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +17 -2
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-switch.mjs +60 -7
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-time-field.mjs +12 -6
- package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +25 -3
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
- package/package.json +8 -3
- package/types/radix-ng-primitives-autocomplete.d.ts +16 -2
- package/types/radix-ng-primitives-checkbox.d.ts +66 -44
- package/types/radix-ng-primitives-combobox.d.ts +74 -3
- package/types/radix-ng-primitives-composite.d.ts +48 -2
- package/types/radix-ng-primitives-core.d.ts +212 -96
- package/types/radix-ng-primitives-date-field.d.ts +7 -4
- package/types/radix-ng-primitives-field.d.ts +55 -8
- package/types/radix-ng-primitives-form.d.ts +9 -0
- package/types/radix-ng-primitives-input.d.ts +10 -2
- package/types/radix-ng-primitives-menu.d.ts +45 -4
- package/types/radix-ng-primitives-navigation-menu.d.ts +2 -2
- package/types/radix-ng-primitives-number-field.d.ts +12 -5
- package/types/radix-ng-primitives-popover.d.ts +2 -2
- package/types/radix-ng-primitives-popper.d.ts +60 -15
- package/types/radix-ng-primitives-preview-card.d.ts +2 -2
- package/types/radix-ng-primitives-radio.d.ts +6 -1
- package/types/radix-ng-primitives-select.d.ts +25 -4
- package/types/radix-ng-primitives-signal-forms.d.ts +22 -8
- package/types/radix-ng-primitives-slider.d.ts +2 -1
- package/types/radix-ng-primitives-switch.d.ts +19 -3
- package/types/radix-ng-primitives-time-field.d.ts +9 -6
- package/types/radix-ng-primitives-toggle-group.d.ts +5 -1
- package/types/radix-ng-primitives-tooltip.d.ts +2 -2
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ElementRef, Directive, contentChild, signal, InjectionToken, numberAttribute, Injector, input,
|
|
2
|
+
import { inject, ElementRef, Directive, contentChild, signal, InjectionToken, numberAttribute, Injector, input, computed, booleanAttribute, output, forwardRef, resource, linkedSignal, afterRenderEffect, afterNextRender, EnvironmentInjector, effect, createComponent, inputBinding } from '@angular/core';
|
|
3
3
|
import { RdxArrow } from '@radix-ng/primitives/arrow';
|
|
4
4
|
import { flip, shift, limitShift, computePosition, offset, size, arrow, hide, autoUpdate } from '@floating-ui/dom';
|
|
5
5
|
import { createContext, elementSize, watch } from '@radix-ng/primitives/core';
|
|
6
|
+
import { injectDirection } from '@radix-ng/primitives/direction-provider';
|
|
6
7
|
|
|
7
8
|
class RdxPopperAnchor {
|
|
8
9
|
constructor() {
|
|
@@ -62,6 +63,39 @@ function provideRdxPopperContentConfig(config) {
|
|
|
62
63
|
const SIDE_OPTIONS = ['top', 'right', 'bottom', 'left'];
|
|
63
64
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
64
65
|
const ALIGN_OPTIONS = ['start', 'center', 'end'];
|
|
66
|
+
/**
|
|
67
|
+
* Resolve a logical inline side to a physical one for the current text direction; physical sides pass
|
|
68
|
+
* through unchanged (Base UI `useAnchorPositioning`). `inline-start` is the reading-start edge
|
|
69
|
+
* (`left` in LTR, `right` in RTL); `inline-end` is the reading-end edge.
|
|
70
|
+
*/
|
|
71
|
+
function resolvePhysicalSide(side, isRtl) {
|
|
72
|
+
if (side === 'inline-start') {
|
|
73
|
+
return isRtl ? 'right' : 'left';
|
|
74
|
+
}
|
|
75
|
+
if (side === 'inline-end') {
|
|
76
|
+
return isRtl ? 'left' : 'right';
|
|
77
|
+
}
|
|
78
|
+
return side;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Report a rendered physical side back in the same "kind" the consumer requested (Base UI
|
|
82
|
+
* `getLogicalSide`): when a logical side was requested, a `left`/`right` rendered side is mapped back
|
|
83
|
+
* to `inline-start`/`inline-end` for the direction (so a post-collision flip surfaces logically); a
|
|
84
|
+
* physical request, or a `top`/`bottom` rendered side, passes through unchanged.
|
|
85
|
+
*/
|
|
86
|
+
function toLogicalSide(requestedSide, renderedSide, isRtl) {
|
|
87
|
+
const requestedLogical = requestedSide === 'inline-start' || requestedSide === 'inline-end';
|
|
88
|
+
if (!requestedLogical) {
|
|
89
|
+
return renderedSide;
|
|
90
|
+
}
|
|
91
|
+
if (renderedSide === 'left') {
|
|
92
|
+
return isRtl ? 'inline-end' : 'inline-start';
|
|
93
|
+
}
|
|
94
|
+
if (renderedSide === 'right') {
|
|
95
|
+
return isRtl ? 'inline-start' : 'inline-end';
|
|
96
|
+
}
|
|
97
|
+
return renderedSide;
|
|
98
|
+
}
|
|
65
99
|
function isNotNull(value) {
|
|
66
100
|
return value !== null;
|
|
67
101
|
}
|
|
@@ -118,6 +152,7 @@ const context = () => {
|
|
|
118
152
|
const popperContentWrapper = inject(RdxPopperContentWrapper);
|
|
119
153
|
return {
|
|
120
154
|
placedSide: popperContentWrapper.placedSide,
|
|
155
|
+
physicalPlacedSide: popperContentWrapper.physicalPlacedSide,
|
|
121
156
|
placedAlign: popperContentWrapper.placedAlign,
|
|
122
157
|
arrowX: popperContentWrapper.arrowX,
|
|
123
158
|
arrowY: popperContentWrapper.arrowY,
|
|
@@ -135,6 +170,7 @@ class RdxPopperContentWrapper {
|
|
|
135
170
|
strategy: this.positionStrategy(),
|
|
136
171
|
placement: this.desiredPlacement(),
|
|
137
172
|
side: this.side(),
|
|
173
|
+
isRtl: this.direction() === 'rtl',
|
|
138
174
|
align: this.align(),
|
|
139
175
|
sideOffset: this.sideOffset(),
|
|
140
176
|
alignOffset: this.alignOffset(),
|
|
@@ -162,9 +198,24 @@ class RdxPopperContentWrapper {
|
|
|
162
198
|
/**
|
|
163
199
|
* The preferred side of the anchor to render against when open.
|
|
164
200
|
* Will be reversed when collisions occur and avoidCollisions is enabled.
|
|
201
|
+
*
|
|
202
|
+
* Accepts the logical `'inline-start'` / `'inline-end'` in addition to the physical sides; those
|
|
203
|
+
* resolve to `left` / `right` for the text direction (Base UI parity). The placed side reported via
|
|
204
|
+
* `data-side` / `placedSide()` echoes the requested kind: logical in → logical out (even after a
|
|
205
|
+
* collision flip), physical in → physical out.
|
|
165
206
|
*/
|
|
166
207
|
this.side = input(this.config.side ?? 'bottom', /* @ts-ignore */
|
|
167
208
|
...(ngDevMode ? [{ debugName: "side" }] : /* istanbul ignore next */ []));
|
|
209
|
+
/**
|
|
210
|
+
* Text direction, used only to resolve a logical `side` (`inline-start` / `inline-end`) to a
|
|
211
|
+
* physical one. Falls back to an enclosing direction provider, then `ltr`.
|
|
212
|
+
*/
|
|
213
|
+
this.dir = input(undefined, /* @ts-ignore */
|
|
214
|
+
...(ngDevMode ? [{ debugName: "dir" }] : /* istanbul ignore next */ []));
|
|
215
|
+
this.direction = injectDirection(this.dir);
|
|
216
|
+
/** The `side` input with any logical inline value resolved to a physical side for the direction. */
|
|
217
|
+
this.resolvedSide = computed(() => resolvePhysicalSide(this.side(), this.direction() === 'rtl'), /* @ts-ignore */
|
|
218
|
+
...(ngDevMode ? [{ debugName: "resolvedSide" }] : /* istanbul ignore next */ []));
|
|
168
219
|
/**
|
|
169
220
|
* Distance between the anchor and the popup in pixels. Also accepts an {@link OffsetFunction} that
|
|
170
221
|
* reads the anchor / positioner dimensions and the resolved side / align.
|
|
@@ -282,7 +333,7 @@ class RdxPopperContentWrapper {
|
|
|
282
333
|
...(ngDevMode ? [{ debugName: "arrowY" }] : /* istanbul ignore next */ []));
|
|
283
334
|
this.anchorHidden = computed(() => this.position.value()?.middlewareData.hide?.referenceHidden === true, /* @ts-ignore */
|
|
284
335
|
...(ngDevMode ? [{ debugName: "anchorHidden" }] : /* istanbul ignore next */ []));
|
|
285
|
-
this.desiredPlacement = computed(() => (this.
|
|
336
|
+
this.desiredPlacement = computed(() => (this.resolvedSide() + (this.align() !== 'center' ? '-' + this.align() : '')), /* @ts-ignore */
|
|
286
337
|
...(ngDevMode ? [{ debugName: "desiredPlacement" }] : /* istanbul ignore next */ []));
|
|
287
338
|
this.arrowSize = computed(() => {
|
|
288
339
|
const arrowElementRef = this.arrow()?.elementRef;
|
|
@@ -372,7 +423,10 @@ class RdxPopperContentWrapper {
|
|
|
372
423
|
offset((state) => {
|
|
373
424
|
const [placedSide, placedAlign] = getSideAndAlignFromPlacement(state.placement);
|
|
374
425
|
const data = {
|
|
375
|
-
side:
|
|
426
|
+
// Report the placed side in the same kind the consumer requested: logical
|
|
427
|
+
// when a logical `side` was passed (so a post-collision flip stays logical),
|
|
428
|
+
// physical otherwise (Base UI parity).
|
|
429
|
+
side: toLogicalSide(params.side, placedSide, params.isRtl),
|
|
376
430
|
align: placedAlign,
|
|
377
431
|
anchor: {
|
|
378
432
|
width: state.rects.reference.width,
|
|
@@ -454,9 +508,22 @@ class RdxPopperContentWrapper {
|
|
|
454
508
|
}, /* @ts-ignore */
|
|
455
509
|
...(ngDevMode ? [{ debugName: "placement" }] : /* istanbul ignore next */ []));
|
|
456
510
|
/**
|
|
457
|
-
* The side the panel is currently placed against.
|
|
511
|
+
* The physical side the panel is currently placed against. Internal geometry (arrow position,
|
|
512
|
+
* transform origins) must use this — never {@link placedSide}, which can be logical.
|
|
513
|
+
*/
|
|
514
|
+
this.physicalPlacedSide = computed(() => this.placement()?.side, /* @ts-ignore */
|
|
515
|
+
...(ngDevMode ? [{ debugName: "physicalPlacedSide" }] : /* istanbul ignore next */ []));
|
|
516
|
+
/**
|
|
517
|
+
* The side the panel is currently placed against, reported in the kind the consumer requested
|
|
518
|
+
* (Base UI positioner `side`): when a logical `side` was passed, a placed `left`/`right` maps back
|
|
519
|
+
* to `inline-start`/`inline-end` for the direction — so a post-collision flip stays logical and
|
|
520
|
+
* `[data-side="inline-start"]` CSS is direction-agnostic. A physical request is always reported
|
|
521
|
+
* physically.
|
|
458
522
|
*/
|
|
459
|
-
this.placedSide = computed(() =>
|
|
523
|
+
this.placedSide = computed(() => {
|
|
524
|
+
const side = this.placement()?.side;
|
|
525
|
+
return side === undefined ? undefined : toLogicalSide(this.side(), side, this.direction() === 'rtl');
|
|
526
|
+
}, /* @ts-ignore */
|
|
460
527
|
...(ngDevMode ? [{ debugName: "placedSide" }] : /* istanbul ignore next */ []));
|
|
461
528
|
/**
|
|
462
529
|
* The current alignment of the panel.
|
|
@@ -541,7 +608,7 @@ class RdxPopperContentWrapper {
|
|
|
541
608
|
});
|
|
542
609
|
}
|
|
543
610
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxPopperContentWrapper, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
544
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "22.0.2", type: RdxPopperContentWrapper, isStandalone: true, selector: "[rdxPopperContentWrapper]", inputs: { anchor: { classPropertyName: "anchor", publicName: "anchor", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, sideOffset: { classPropertyName: "sideOffset", publicName: "sideOffset", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, alignOffset: { classPropertyName: "alignOffset", publicName: "alignOffset", isSignal: true, isRequired: false, transformFunction: null }, arrowPadding: { classPropertyName: "arrowPadding", publicName: "arrowPadding", isSignal: true, isRequired: false, transformFunction: null }, avoidCollisions: { classPropertyName: "avoidCollisions", publicName: "avoidCollisions", isSignal: true, isRequired: false, transformFunction: null }, collisionAvoidance: { classPropertyName: "collisionAvoidance", publicName: "collisionAvoidance", isSignal: true, isRequired: false, transformFunction: null }, collisionBoundary: { classPropertyName: "collisionBoundary", publicName: "collisionBoundary", isSignal: true, isRequired: false, transformFunction: null }, collisionPadding: { classPropertyName: "collisionPadding", publicName: "collisionPadding", isSignal: true, isRequired: false, transformFunction: null }, sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null }, hideWhenDetached: { classPropertyName: "hideWhenDetached", publicName: "hideWhenDetached", isSignal: true, isRequired: false, transformFunction: null }, positionStrategy: { classPropertyName: "positionStrategy", publicName: "positionStrategy", isSignal: true, isRequired: false, transformFunction: null }, updatePositionStrategy: { classPropertyName: "updatePositionStrategy", publicName: "updatePositionStrategy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { placed: "placed" }, host: { attributes: { "data-radix-popper-content-wrapper": "" }, properties: { "attr.data-side": "placedSide()", "attr.data-align": "placedAlign()", "attr.data-anchor-hidden": "anchorHidden() ? \"\" : undefined", "style": "style()" } }, providers: [providePopperContentWrapperContext(context)], queries: [{ propertyName: "arrow", first: true, predicate: i0.forwardRef(() => RdxPopperArrow), descendants: true, isSignal: true }], ngImport: i0 }); }
|
|
611
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "22.0.2", type: RdxPopperContentWrapper, isStandalone: true, selector: "[rdxPopperContentWrapper]", inputs: { anchor: { classPropertyName: "anchor", publicName: "anchor", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, dir: { classPropertyName: "dir", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, sideOffset: { classPropertyName: "sideOffset", publicName: "sideOffset", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, alignOffset: { classPropertyName: "alignOffset", publicName: "alignOffset", isSignal: true, isRequired: false, transformFunction: null }, arrowPadding: { classPropertyName: "arrowPadding", publicName: "arrowPadding", isSignal: true, isRequired: false, transformFunction: null }, avoidCollisions: { classPropertyName: "avoidCollisions", publicName: "avoidCollisions", isSignal: true, isRequired: false, transformFunction: null }, collisionAvoidance: { classPropertyName: "collisionAvoidance", publicName: "collisionAvoidance", isSignal: true, isRequired: false, transformFunction: null }, collisionBoundary: { classPropertyName: "collisionBoundary", publicName: "collisionBoundary", isSignal: true, isRequired: false, transformFunction: null }, collisionPadding: { classPropertyName: "collisionPadding", publicName: "collisionPadding", isSignal: true, isRequired: false, transformFunction: null }, sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null }, hideWhenDetached: { classPropertyName: "hideWhenDetached", publicName: "hideWhenDetached", isSignal: true, isRequired: false, transformFunction: null }, positionStrategy: { classPropertyName: "positionStrategy", publicName: "positionStrategy", isSignal: true, isRequired: false, transformFunction: null }, updatePositionStrategy: { classPropertyName: "updatePositionStrategy", publicName: "updatePositionStrategy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { placed: "placed" }, host: { attributes: { "data-radix-popper-content-wrapper": "" }, properties: { "attr.data-side": "placedSide()", "attr.data-align": "placedAlign()", "attr.data-anchor-hidden": "anchorHidden() ? \"\" : undefined", "style": "style()" } }, providers: [providePopperContentWrapperContext(context)], queries: [{ propertyName: "arrow", first: true, predicate: i0.forwardRef(() => RdxPopperArrow), descendants: true, isSignal: true }], ngImport: i0 }); }
|
|
545
612
|
}
|
|
546
613
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxPopperContentWrapper, decorators: [{
|
|
547
614
|
type: Directive,
|
|
@@ -558,7 +625,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImpor
|
|
|
558
625
|
'[style]': 'style()'
|
|
559
626
|
}
|
|
560
627
|
}]
|
|
561
|
-
}], ctorParameters: () => [], propDecorators: { anchor: [{ type: i0.Input, args: [{ isSignal: true, alias: "anchor", required: false }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], sideOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "sideOffset", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], alignOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignOffset", required: false }] }], arrowPadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "arrowPadding", required: false }] }], avoidCollisions: [{ type: i0.Input, args: [{ isSignal: true, alias: "avoidCollisions", required: false }] }], collisionAvoidance: [{ type: i0.Input, args: [{ isSignal: true, alias: "collisionAvoidance", required: false }] }], collisionBoundary: [{ type: i0.Input, args: [{ isSignal: true, alias: "collisionBoundary", required: false }] }], collisionPadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "collisionPadding", required: false }] }], sticky: [{ type: i0.Input, args: [{ isSignal: true, alias: "sticky", required: false }] }], hideWhenDetached: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideWhenDetached", required: false }] }], positionStrategy: [{ type: i0.Input, args: [{ isSignal: true, alias: "positionStrategy", required: false }] }], updatePositionStrategy: [{ type: i0.Input, args: [{ isSignal: true, alias: "updatePositionStrategy", required: false }] }], placed: [{ type: i0.Output, args: ["placed"] }], arrow: [{ type: i0.ContentChild, args: [forwardRef(() => RdxPopperArrow), { isSignal: true }] }] } });
|
|
628
|
+
}], ctorParameters: () => [], propDecorators: { anchor: [{ type: i0.Input, args: [{ isSignal: true, alias: "anchor", required: false }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], dir: [{ type: i0.Input, args: [{ isSignal: true, alias: "dir", required: false }] }], sideOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "sideOffset", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], alignOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignOffset", required: false }] }], arrowPadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "arrowPadding", required: false }] }], avoidCollisions: [{ type: i0.Input, args: [{ isSignal: true, alias: "avoidCollisions", required: false }] }], collisionAvoidance: [{ type: i0.Input, args: [{ isSignal: true, alias: "collisionAvoidance", required: false }] }], collisionBoundary: [{ type: i0.Input, args: [{ isSignal: true, alias: "collisionBoundary", required: false }] }], collisionPadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "collisionPadding", required: false }] }], sticky: [{ type: i0.Input, args: [{ isSignal: true, alias: "sticky", required: false }] }], hideWhenDetached: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideWhenDetached", required: false }] }], positionStrategy: [{ type: i0.Input, args: [{ isSignal: true, alias: "positionStrategy", required: false }] }], updatePositionStrategy: [{ type: i0.Input, args: [{ isSignal: true, alias: "updatePositionStrategy", required: false }] }], placed: [{ type: i0.Output, args: ["placed"] }], arrow: [{ type: i0.ContentChild, args: [forwardRef(() => RdxPopperArrow), { isSignal: true }] }] } });
|
|
562
629
|
/**
|
|
563
630
|
* Providers a "thin" positioner that `extends RdxPopperContentWrapper` must include. Angular
|
|
564
631
|
* inherits a base directive's inputs/outputs/host bindings/queries but **not** its `providers`, so
|
|
@@ -610,7 +677,9 @@ class RdxPopperArrow {
|
|
|
610
677
|
this.elementRef = inject(ElementRef);
|
|
611
678
|
this.width = input(10, { ...(ngDevMode ? { debugName: "width" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
612
679
|
this.height = input(5, { ...(ngDevMode ? { debugName: "height" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
613
|
-
|
|
680
|
+
// Geometry is physical: the arrow reads `physicalPlacedSide` (`placedSide` can be logical
|
|
681
|
+
// `inline-start`/`inline-end` when a logical side was requested — a styling hook, not a direction).
|
|
682
|
+
this.baseSide = computed(() => OPPOSITE_SIDE[this.popperContentContext.physicalPlacedSide()], /* @ts-ignore */
|
|
614
683
|
...(ngDevMode ? [{ debugName: "baseSide" }] : /* istanbul ignore next */ []));
|
|
615
684
|
this.style = computed(() => {
|
|
616
685
|
return {
|
|
@@ -623,13 +692,13 @@ class RdxPopperArrow {
|
|
|
623
692
|
right: '0 0',
|
|
624
693
|
bottom: 'center 0',
|
|
625
694
|
left: '100% 0'
|
|
626
|
-
}[this.popperContentContext.
|
|
695
|
+
}[this.popperContentContext.physicalPlacedSide()],
|
|
627
696
|
transform: {
|
|
628
697
|
top: 'translateY(100%)',
|
|
629
698
|
right: 'translateY(50%) rotate(90deg) translateX(-50%)',
|
|
630
699
|
bottom: `rotate(180deg)`,
|
|
631
700
|
left: 'translateY(50%) rotate(-90deg) translateX(50%)'
|
|
632
|
-
}[this.popperContentContext.
|
|
701
|
+
}[this.popperContentContext.physicalPlacedSide()],
|
|
633
702
|
visibility: this.popperContentContext.shouldHideArrow() ? 'hidden' : undefined
|
|
634
703
|
};
|
|
635
704
|
}, /* @ts-ignore */
|
|
@@ -700,5 +769,5 @@ const popperImports = [RdxPopper, RdxPopperArrow, RdxPopperContentWrapper, RdxPo
|
|
|
700
769
|
* Generated bundle index. Do not edit.
|
|
701
770
|
*/
|
|
702
771
|
|
|
703
|
-
export { DROPDOWN_COLLISION_AVOIDANCE, POPUP_COLLISION_AVOIDANCE, RdxPopper, RdxPopperAnchor, RdxPopperArrow, RdxPopperContent, RdxPopperContentConfigToken, RdxPopperContentWrapper, getSideAndAlignFromPlacement, injectPopperContentWrapperContext, isNotNull, legacyPopperVars, popperImports, providePopperContentWrapperContext, provideRdxPopperContentConfig, provideRdxPopperContentWrapper, transformOrigin };
|
|
772
|
+
export { DROPDOWN_COLLISION_AVOIDANCE, POPUP_COLLISION_AVOIDANCE, RdxPopper, RdxPopperAnchor, RdxPopperArrow, RdxPopperContent, RdxPopperContentConfigToken, RdxPopperContentWrapper, getSideAndAlignFromPlacement, injectPopperContentWrapperContext, isNotNull, legacyPopperVars, popperImports, providePopperContentWrapperContext, provideRdxPopperContentConfig, provideRdxPopperContentWrapper, resolvePhysicalSide, toLogicalSide, transformOrigin };
|
|
704
773
|
//# sourceMappingURL=radix-ng-primitives-popper.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-popper.mjs","sources":["../../../packages/primitives/popper/src/popper-anchor.ts","../../../packages/primitives/popper/src/popper.ts","../../../packages/primitives/popper/src/popper-content.config.ts","../../../packages/primitives/popper/src/utils.ts","../../../packages/primitives/popper/src/popper-content-wrapper.ts","../../../packages/primitives/popper/src/popper-arrow.ts","../../../packages/primitives/popper/src/popper-content.ts","../../../packages/primitives/popper/index.ts","../../../packages/primitives/popper/radix-ng-primitives-popper.ts"],"sourcesContent":["import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[rdxPopperAnchor]'\n})\nexport class RdxPopperAnchor {\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n}\n","import { contentChild, Directive, signal } from '@angular/core';\nimport type { ReferenceElement } from '@floating-ui/dom';\nimport { RdxPopperAnchor } from './popper-anchor';\n\n@Directive({\n selector: '[rdxPopperRoot]'\n})\nexport class RdxPopper {\n readonly anchor = contentChild(RdxPopperAnchor);\n readonly anchorOverride = signal<ReferenceElement | undefined>(undefined);\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { Align, OffsetFunction, RdxCollisionAvoidance, Side } from './utils';\n\n/**\n * Default positioning values for `RdxPopperContentWrapper`.\n *\n * Lets a composing primitive (e.g. tooltip) provide its own Base UI-aligned defaults without\n * changing the shared popper defaults that other consumers (e.g. popover) rely on. Any value left\n * `undefined` falls back to the wrapper's built-in default. Consumer template bindings always win.\n */\nexport interface RdxPopperContentConfig {\n side?: Side;\n align?: Align;\n sideOffset?: number | OffsetFunction;\n alignOffset?: number | OffsetFunction;\n arrowPadding?: number;\n /**\n * @deprecated Use {@link collisionAvoidance} instead. Kept for back-compat: `false` disables all\n * collision avoidance (equivalent to `{ side: 'none', align: 'none', fallbackAxisSide: 'none' }`).\n */\n avoidCollisions?: boolean;\n /** Per-primitive collision-avoidance default (Base UI parity). See {@link RdxCollisionAvoidance}. */\n collisionAvoidance?: RdxCollisionAvoidance;\n collisionPadding?: number | Partial<Record<Side, number>>;\n sticky?: 'partial' | 'always';\n hideWhenDetached?: boolean;\n positionStrategy?: 'fixed' | 'absolute';\n updatePositionStrategy?: 'optimized' | 'always';\n}\n\n/**\n * Collision-avoidance preset for dropdown-style popups (Base UI `DROPDOWN_COLLISION_AVOIDANCE`).\n *\n * Dropdowns (select / combobox / autocomplete / menu) strictly prefer their top/bottom placement and\n * cap their height with `var(--available-height)`, so they must **not** fall back to the perpendicular\n * (left/right) axis. `side`/`align` fall back to the wrapper default (`'flip'`).\n */\nexport const DROPDOWN_COLLISION_AVOIDANCE: RdxCollisionAvoidance = { fallbackAxisSide: 'none' };\n\n/**\n * Collision-avoidance preset for regular popups (Base UI `POPUP_COLLISION_AVOIDANCE`).\n *\n * Popovers / tooltips / preview cards aren't height-capped and may freely flip to the perpendicular\n * axis, preferring the logical end side. This equals the wrapper's built-in default; it is exported so\n * popups can state the intent explicitly.\n */\nexport const POPUP_COLLISION_AVOIDANCE: RdxCollisionAvoidance = { fallbackAxisSide: 'end' };\n\nexport const RdxPopperContentConfigToken = new InjectionToken<RdxPopperContentConfig>('RdxPopperContentConfig', {\n factory: () => ({})\n});\n\nexport function provideRdxPopperContentConfig(config: RdxPopperContentConfig): Provider {\n return { provide: RdxPopperContentConfigToken, useValue: config };\n}\n","import type { Middleware, Placement } from '@floating-ui/dom';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst SIDE_OPTIONS = ['top', 'right', 'bottom', 'left'] as const;\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst ALIGN_OPTIONS = ['start', 'center', 'end'] as const;\n\nexport type Side = (typeof SIDE_OPTIONS)[number];\nexport type Align = (typeof ALIGN_OPTIONS)[number];\n\n/**\n * How the popper avoids collisions with the boundary edges (Base UI `collisionAvoidance`).\n *\n * - `side` — behavior on the **preferred placement axis** (`top`/`bottom` or `left`/`right`):\n * `'flip'` swaps to the opposite side when it doesn't fit, `'shift'` keeps the side and nudges the\n * popup within the boundary, `'none'` leaves side-axis overflow uncorrected.\n * - `align` — behavior on the **alignment axis** (`start`/`center`/`end`): `'flip'` swaps `start`/`end`,\n * `'shift'` nudges the popup along the alignment axis, `'none'` leaves it uncorrected.\n * - `fallbackAxisSide` — when neither preferred side fits, whether to fall back to the perpendicular\n * axis and which logical side to prefer (`'start'` / `'end'`), or `'none'` to stay on the axis.\n *\n * Any omitted field falls back to the wrapper default (`side: 'flip'`, `align: 'flip'`,\n * `fallbackAxisSide: 'end'`), matching Base UI.\n */\nexport interface RdxCollisionAvoidance {\n side?: 'flip' | 'shift' | 'none';\n align?: 'flip' | 'shift' | 'none';\n fallbackAxisSide?: 'start' | 'end' | 'none';\n}\n\n/** Fully-resolved {@link RdxCollisionAvoidance} — every field present (no wrapper-default fallback left). */\nexport type ResolvedCollisionAvoidance = Required<RdxCollisionAvoidance>;\n\n/**\n * Function form of `sideOffset` / `alignOffset` (Base UI `OffsetFunction`). Receives the resolved\n * placement and the measured anchor / positioner dimensions, and returns the offset in pixels — e.g.\n * `({ anchor }) => anchor.width` to offset by the trigger's own width. `side` is the physical side the\n * popup is placed against.\n */\nexport type OffsetFunction = (data: {\n side: Side;\n align: Align;\n anchor: { width: number; height: number };\n positioner: { width: number; height: number };\n}) => number;\n\nexport function isNotNull<T>(value: T | null): value is T {\n return value !== null;\n}\n\nexport function transformOrigin(options: { arrowWidth: number; arrowHeight: number }): Middleware {\n return {\n name: 'transformOrigin',\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: '0%', center: '50%', end: '100%' }[placedAlign];\n\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n\n let x = '';\n let y = '';\n\n if (placedSide === 'bottom') {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === 'top') {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === 'right') {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === 'left') {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n };\n}\n\nexport function getSideAndAlignFromPlacement(placement: Placement) {\n const [side, align = 'center'] = placement.split('-');\n return [side as Side, align as Align] as const;\n}\n","import {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChild,\n Directive,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n linkedSignal,\n numberAttribute,\n output,\n Provider,\n resource,\n Signal,\n signal,\n Type\n} from '@angular/core';\nimport type { ComputePositionReturn, ReferenceElement, VirtualElement } from '@floating-ui/dom';\nimport {\n autoUpdate,\n computePosition,\n flip,\n arrow as floatingUIArrow,\n hide,\n limitShift,\n offset,\n Placement,\n shift,\n size\n} from '@floating-ui/dom';\nimport { BooleanInput, createContext, elementSize, NumberInput, watch } from '@radix-ng/primitives/core';\nimport { RdxPopper } from './popper';\nimport { RdxPopperArrow } from './popper-arrow';\nimport { RdxPopperContentConfigToken } from './popper-content.config';\nimport {\n Align,\n getSideAndAlignFromPlacement,\n isNotNull,\n OffsetFunction,\n RdxCollisionAvoidance,\n ResolvedCollisionAvoidance,\n Side,\n transformOrigin\n} from './utils';\n\n/**\n * `input()` transform for `sideOffset` / `alignOffset`: coerce string/number attribute values to a\n * number but pass an {@link OffsetFunction} through untouched. A **named** module-level function (not\n * an inline arrow) so compodoc parses the file — see CLAUDE.md's compodoc gotcha.\n */\nfunction coerceOffset(value: number | OffsetFunction | string | null | undefined): number | OffsetFunction {\n return typeof value === 'function' ? value : numberAttribute(value);\n}\n\nexport type RdxPopperAnchorElement =\n | Element\n | ElementRef<Element>\n | VirtualElement\n | (() => Element | VirtualElement | null)\n | null\n | undefined;\n\ntype PopperPositionParams = {\n positioningActive: boolean;\n anchor: ReferenceElement | null;\n strategy: 'fixed' | 'absolute';\n placement: Placement;\n side: Side;\n align: Align;\n sideOffset: number | OffsetFunction;\n alignOffset: number | OffsetFunction;\n arrowHeight: number;\n arrowWidth: number;\n collisionAvoidance: ResolvedCollisionAvoidance;\n sticky: 'partial' | 'always';\n detectOverflowOptions: {\n padding: number | Partial<Record<Side, number>>;\n boundary: Element[];\n altBoundary: boolean;\n };\n arrow: RdxPopperArrow | undefined;\n arrowPadding: number;\n hideWhenDetached: boolean;\n};\n\nconst context = () => {\n const popperContentWrapper = inject(RdxPopperContentWrapper);\n\n return {\n placedSide: popperContentWrapper.placedSide,\n placedAlign: popperContentWrapper.placedAlign,\n arrowX: popperContentWrapper.arrowX,\n arrowY: popperContentWrapper.arrowY,\n shouldHideArrow: popperContentWrapper.shouldHideArrow,\n isPositioned: popperContentWrapper.isPositioned,\n anchorHidden: popperContentWrapper.anchorHidden\n };\n};\n\nexport type PopperContentWrapperContext = ReturnType<typeof context>;\n\nexport const [injectPopperContentWrapperContext, providePopperContentWrapperContext] =\n createContext<PopperContentWrapperContext>('PopperContentWrapperContext', 'utils/popper');\n\n@Directive({\n selector: '[rdxPopperContentWrapper]',\n providers: [providePopperContentWrapperContext(context)],\n host: {\n 'data-radix-popper-content-wrapper': '',\n // Placement state, emitted once for every positioner (ADR 0012). The popup\n // (`RdxPopperContent`) keeps its own `data-side`/`data-align` as popup-level styling hooks.\n '[attr.data-side]': 'placedSide()',\n '[attr.data-align]': 'placedAlign()',\n '[attr.data-anchor-hidden]': 'anchorHidden() ? \"\" : undefined',\n '[style]': 'style()'\n }\n})\nexport class RdxPopperContentWrapper {\n private readonly elementRef = inject(ElementRef);\n private readonly injector = inject(Injector);\n\n private readonly context = inject(RdxPopper);\n\n /** Optional positioning defaults provided by a composing primitive (e.g. tooltip). */\n private readonly config = inject(RdxPopperContentConfigToken);\n\n /**\n * An element to position the popup against. Defaults to the popper anchor.\n */\n readonly anchor = input<RdxPopperAnchorElement>();\n\n /**\n * The preferred side of the anchor to render against when open.\n * Will be reversed when collisions occur and avoidCollisions is enabled.\n */\n readonly side = input<Side>(this.config.side ?? 'bottom');\n\n /**\n * Distance between the anchor and the popup in pixels. Also accepts an {@link OffsetFunction} that\n * reads the anchor / positioner dimensions and the resolved side / align.\n */\n readonly sideOffset = input(this.config.sideOffset ?? 0, { transform: coerceOffset });\n\n /**\n * How to align the popup relative to the specified side. May change when collisions occur.\n */\n readonly align = input<Align>(this.config.align ?? 'center');\n\n /**\n * An offset in pixels from the `start` or `end` alignment options. Also accepts an\n * {@link OffsetFunction} (same signature as `sideOffset`).\n */\n readonly alignOffset = input(this.config.alignOffset ?? 0, { transform: coerceOffset });\n\n /**\n * Minimum distance to maintain between the arrow and the edges of the popup.\n * If your content has border-radius, this will prevent it from overflowing the corners.\n */\n readonly arrowPadding = input<number, NumberInput>(this.config.arrowPadding ?? 0, { transform: numberAttribute });\n\n /**\n * When `true`, overrides the `side` and `align` preferences to prevent collisions with boundary edges.\n *\n * @deprecated Use {@link collisionAvoidance} for fine-grained control (Base UI parity). Still honored:\n * `false` disables all avoidance (unless a `collisionAvoidance` object is provided, which wins).\n */\n readonly avoidCollisions = input<boolean, BooleanInput>(this.config.avoidCollisions ?? true, {\n transform: booleanAttribute\n });\n\n /**\n * How the popup avoids colliding with the boundary edges, per axis (Base UI `collisionAvoidance`).\n * Overrides the deprecated `avoidCollisions` and any per-primitive preset. An object here **fully\n * replaces** the preset — omitted fields fall back to `side: 'flip'`, `align: 'flip'`,\n * `fallbackAxisSide: 'end'`, never to the preset. See {@link RdxCollisionAvoidance}.\n */\n readonly collisionAvoidance = input<RdxCollisionAvoidance | undefined>(undefined);\n\n /**\n * Collision avoidance resolved against the deprecated `avoidCollisions` flag, the per-primitive\n * config preset, and the wrapper defaults. Precedence: an explicit `collisionAvoidance` input →\n * a legacy `avoidCollisions=false` (disables everything) → the config preset → the Base UI defaults.\n */\n private readonly effectiveCollisionAvoidance = computed<ResolvedCollisionAvoidance>(() => {\n const explicit = this.collisionAvoidance();\n\n // Legacy escape hatch (deprecated): `avoidCollisions=false` disables avoidance entirely — unless\n // the consumer passes an explicit `collisionAvoidance` object, which always wins. Checked before\n // the preset so `[avoidCollisions]=\"false\"` still works on a positioner that ships a preset.\n if (!explicit && this.avoidCollisions() === false) {\n return { side: 'none', align: 'none', fallbackAxisSide: 'none' };\n }\n\n // A consumer object fully REPLACES the preset (Base UI parity — the preset is only the default\n // when the consumer passes nothing); omitted fields fall back to the global defaults, not the\n // preset. `??` (not spread-merge) is what enforces the \"replaces, not merges\" semantics.\n const source = explicit ?? this.config.collisionAvoidance;\n\n return {\n side: source?.side ?? 'flip',\n align: source?.align ?? 'flip',\n fallbackAxisSide: source?.fallbackAxisSide ?? 'end'\n };\n });\n\n /**\n * The element used as the collision boundary.\n * By default this is the viewport, though you can provide additional element(s) to be included in this check.\n */\n readonly collisionBoundary = input<ElementRef<HTMLElement> | ElementRef<HTMLElement>[]>();\n /**\n * The distance in pixels from the boundary edges where collision detection should occur.\n * Accepts a number (same for all sides), or a partial padding object, for example: `{ top: 20, left: 20 }`.\n */\n readonly collisionPadding = input<number | Partial<Record<Side, number>>>(this.config.collisionPadding ?? 0);\n\n /**\n * The sticky behavior on the align axis. `partial` will keep the\n * content in the boundary as long as the trigger is at least partially\n * in the boundary whilst \"always\" will keep the content in the boundary\n * regardless.\n */\n readonly sticky = input<'partial' | 'always'>(this.config.sticky ?? 'partial');\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n */\n readonly hideWhenDetached = input<boolean, BooleanInput>(this.config.hideWhenDetached ?? false, {\n transform: booleanAttribute\n });\n\n /**\n * The type of CSS position property to use.\n */\n readonly positionStrategy = input<'fixed' | 'absolute'>(this.config.positionStrategy ?? 'fixed');\n\n /**\n * Strategy to update the position of the floating element on every animation frame.\n */\n readonly updatePositionStrategy = input<'optimized' | 'always'>(this.config.updatePositionStrategy ?? 'optimized');\n\n /**\n * Emits when the element is placed.\n */\n readonly placed = output<void>();\n\n readonly arrow = contentChild(forwardRef(() => RdxPopperArrow));\n\n /**\n * When `true`, the content is rendered click/hover-through (`pointer-events: none`). Used for\n * cursor-following content (e.g. a tooltip tracking the pointer) that must never intercept the\n * pointer and steal hover from its trigger.\n */\n readonly nonInteractive = signal(false);\n\n readonly shouldHideArrow = computed(() => this.position.value()?.middlewareData['arrow']?.centerOffset !== 0);\n /** Whether the arrow could not be centered on the anchor because the popup was shifted. */\n readonly arrowUncentered = computed(\n () => (this.position.value()?.middlewareData['arrow']?.centerOffset ?? 0) !== 0\n );\n readonly arrowX = computed(() => this.position.value()?.middlewareData['arrow']?.x);\n readonly arrowY = computed(() => this.position.value()?.middlewareData['arrow']?.y);\n readonly anchorHidden = computed(() => this.position.value()?.middlewareData.hide?.referenceHidden === true);\n\n private readonly desiredPlacement = computed(\n () => (this.side() + (this.align() !== 'center' ? '-' + this.align() : '')) as Placement\n );\n\n private readonly arrowSize = computed(() => {\n const arrowElementRef = this.arrow()?.elementRef;\n\n if (!arrowElementRef) {\n return computed(() => ({\n height: 0,\n width: 0\n }));\n }\n\n return elementSize({\n elementRef: arrowElementRef,\n injector: this.injector\n });\n });\n\n private readonly boundary = computed(() => {\n const boundary = this.collisionBoundary();\n\n if (Array.isArray(boundary)) {\n return boundary.map((e) => e.nativeElement);\n }\n\n if (!boundary) {\n return [];\n }\n\n return [boundary.nativeElement];\n });\n\n private readonly hasExplicitBoundaries = computed(() => this.boundary().length > 0);\n\n private readonly detectOverflowOptions = computed(() => ({\n padding: this.collisionPadding(),\n boundary: this.boundary().filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: this.hasExplicitBoundaries()\n }));\n\n private readonly resolvedAnchor = computed<ReferenceElement | null>(() => {\n const anchor = this.anchor();\n const resolvedAnchor = typeof anchor === 'function' ? anchor() : anchor;\n\n if (resolvedAnchor instanceof ElementRef) {\n return resolvedAnchor.nativeElement;\n }\n\n if (resolvedAnchor) {\n return resolvedAnchor;\n }\n\n return this.context.anchorOverride() ?? this.context.anchor()?.elementRef.nativeElement ?? null;\n });\n\n private readonly position = resource<ComputePositionReturn | null, PopperPositionParams>({\n params: () => this.positionParams(),\n loader: ({ params }) => {\n // Skip computing a position for a paused (closed keep-mounted) positioner.\n if (!params.positioningActive || !params.anchor) {\n return Promise.resolve(null);\n }\n\n const ca = params.collisionAvoidance;\n // Ported from Base UI `useAnchorPositioning`: `side`/`align`/`fallbackAxisSide` select and\n // configure the `flip()` / `shift()` middleware instead of the old boolean toggle.\n const shiftDisabled = ca.align === 'none' && ca.side !== 'shift';\n const crossAxisShiftEnabled = !shiftDisabled && (params.sticky === 'always' || ca.side === 'shift');\n\n const flipMiddleware =\n ca.side === 'none'\n ? undefined\n : flip({\n ...params.detectOverflowOptions,\n mainAxis: ca.side === 'flip',\n crossAxis: ca.align === 'flip' ? 'alignment' : false,\n fallbackAxisSideDirection: ca.fallbackAxisSide\n });\n\n const shiftMiddleware = shiftDisabled\n ? undefined\n : shift({\n ...params.detectOverflowOptions,\n mainAxis: ca.align !== 'none',\n crossAxis: crossAxisShiftEnabled,\n // `partial` keeps the popup attached to the anchor (limitShift); `always` keeps it\n // fully inside the boundary regardless (no limiter).\n limiter: params.sticky === 'partial' ? limitShift() : undefined\n });\n\n // https://floating-ui.com/docs/flip#combining-with-shift — run shift first when shifting is\n // the primary correction (or for center alignment), otherwise flip first.\n const collisionMiddleware =\n ca.side === 'shift' || ca.align === 'shift' || params.align === 'center'\n ? [shiftMiddleware, flipMiddleware]\n : [flipMiddleware, shiftMiddleware];\n\n return computePosition(params.anchor, this.elementRef.nativeElement, {\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: params.strategy,\n placement: params.placement,\n middleware: [\n offset((state) => {\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(state.placement);\n const data = {\n side: placedSide,\n align: placedAlign,\n anchor: {\n width: state.rects.reference.width,\n height: state.rects.reference.height\n },\n positioner: {\n width: state.rects.floating.width,\n height: state.rects.floating.height\n }\n };\n const sideAxis =\n typeof params.sideOffset === 'function' ? params.sideOffset(data) : params.sideOffset;\n const alignAxis =\n typeof params.alignOffset === 'function' ? params.alignOffset(data) : params.alignOffset;\n\n return {\n mainAxis: sideAxis + params.arrowHeight || 0,\n // both axes so `alignOffset` also applies to center-aligned popups\n // (`alignmentAxis` overrides `crossAxis` for start/end placements)\n crossAxis: alignAxis,\n alignmentAxis: alignAxis\n };\n }),\n ...collisionMiddleware,\n size({\n ...params.detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty('--radix-popper-available-width', `${availableWidth}px`);\n contentStyle.setProperty('--radix-popper-available-height', `${availableHeight}px`);\n contentStyle.setProperty('--radix-popper-anchor-width', `${anchorWidth}px`);\n contentStyle.setProperty('--radix-popper-anchor-height', `${anchorHeight}px`);\n }\n }),\n params.arrow &&\n floatingUIArrow({\n element: params.arrow.elementRef.nativeElement,\n padding: params.arrowPadding\n }),\n transformOrigin({\n arrowWidth: params.arrowWidth,\n arrowHeight: params.arrowHeight\n }),\n params.hideWhenDetached &&\n hide({\n strategy: 'referenceHidden',\n ...params.detectOverflowOptions\n })\n ]\n });\n }\n });\n\n private positionParams(): PopperPositionParams {\n return {\n positioningActive: this.positioningActive(),\n anchor: this.resolvedAnchor(),\n strategy: this.positionStrategy(),\n placement: this.desiredPlacement(),\n side: this.side(),\n align: this.align(),\n sideOffset: this.sideOffset(),\n alignOffset: this.alignOffset(),\n arrowHeight: this.arrowSize()().height,\n arrowWidth: this.arrowSize()().width,\n collisionAvoidance: this.effectiveCollisionAvoidance(),\n sticky: this.sticky(),\n detectOverflowOptions: this.detectOverflowOptions(),\n arrow: this.arrow(),\n arrowPadding: this.arrowPadding(),\n hideWhenDetached: this.hideWhenDetached()\n };\n }\n\n /**\n * The last successfully computed position, retained while a new one is being computed.\n *\n * The `position` resource resets `value()` to `undefined` whenever its params change (e.g. on\n * every pointer move while a tooltip tracks the cursor). Reading it directly would blank the\n * popup (`visibility: hidden` + off-screen transform) for the frames between a move and the next\n * resolved position — a visible flicker at high pointer-move rates. Holding the previous value\n * keeps the popup placed and visible until the new position is ready.\n */\n private readonly resolvedPosition = linkedSignal<\n ComputePositionReturn | undefined,\n ComputePositionReturn | undefined\n >({\n source: () => this.position.value() ?? undefined,\n computation: (value, previous) => value ?? previous?.value\n });\n\n /**\n * Whether the panel is positioned.\n */\n readonly isPositioned = computed(() => !!this.position.value());\n\n /**\n * The current placement of the panel.\n */\n readonly placement = computed(() => {\n const placement = this.position.value()?.placement;\n\n if (!placement) {\n return;\n }\n\n const [side, align = 'center'] = placement.split('-');\n\n return {\n side: side as Side,\n align: align as Align\n };\n });\n\n /**\n * The side the panel is currently placed against.\n */\n readonly placedSide = computed(() => this.placement()?.side);\n\n /**\n * The current alignment of the panel.\n */\n readonly placedAlign = computed(() => this.placement()?.align);\n\n protected readonly style = computed(() => {\n const pos = this.resolvedPosition();\n const x = pos?.x;\n const y = pos?.y;\n\n const ready = Number.isFinite(x) && Number.isFinite(y);\n\n return {\n position: this.positionStrategy(),\n transform: ready ? '' : 'translate(0, -200%)', // keep off the page when measuring\n minWidth: 'max-content',\n // ADR 0012 §3: z-index belongs on the positioner (set it via a class/style on the\n // positioner element), Base UI-aligned. The wrapper no longer copies the popup's computed\n // z-index, so a positioner no longer requires an inner `RdxPopperContent` to exist.\n top: Number.isFinite(y) ? `${y}px` : '',\n left: Number.isFinite(x) ? `${x}px` : '',\n '--radix-popper-transform-origin': [\n pos?.middlewareData['transformOrigin']?.x,\n pos?.middlewareData['transformOrigin']?.y\n ].join(' '),\n '--radix-popper-content-wrapper-width': `${this.elementRef.nativeElement.offsetWidth}px`,\n '--radix-popper-content-wrapper-height': `${this.elementRef.nativeElement.offsetHeight}px`,\n\n // Unified Base UI-style variables (ADR 0012), emitted once for every positioner so\n // consumers learn a single dialect. They alias the engine-level `--radix-popper-*` values\n // (the `--anchor-*`/`--available-*` ones are set imperatively by the `size` middleware).\n '--anchor-width': 'var(--radix-popper-anchor-width)',\n '--anchor-height': 'var(--radix-popper-anchor-height)',\n '--available-width': 'var(--radix-popper-available-width)',\n '--available-height': 'var(--radix-popper-available-height)',\n '--positioner-width': 'var(--radix-popper-content-wrapper-width)',\n '--positioner-height': 'var(--radix-popper-content-wrapper-height)',\n '--transform-origin': 'var(--radix-popper-transform-origin)',\n\n visibility: ready ? 'visible' : 'hidden',\n pointerEvents: this.nonInteractive() || !ready ? 'none' : 'auto',\n\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...(pos?.middlewareData.hide?.referenceHidden && {\n visibility: 'hidden',\n pointerEvents: 'none'\n })\n };\n });\n\n /**\n * Whether the positioner should actively track its anchor (recompute + `autoUpdate`). Defaults to\n * always-on — the historical behavior, correct for a positioner that unmounts when its layer closes.\n * A positioner that can stay mounted while closed (`keepMounted`) **overrides** this with its\n * open/presence signal so a closed, hidden positioner doesn't spin an endless `autoUpdate`\n * `requestAnimationFrame` loop (only relevant when `updatePositionStrategy: 'always'`). It's a\n * reassignable field (not `readonly`) because the render effect below reads it lazily, after the\n * subclass constructor has swapped it in.\n */\n protected positioningActive: Signal<boolean> = computed(() => true);\n\n private readonly afterRenderEffect = afterRenderEffect((onCleanup) => {\n // Closed keep-mounted positioner: skip positioning entirely so `autoUpdate` doesn't keep firing.\n if (!this.positioningActive()) {\n return;\n }\n\n this.position.reload();\n\n const anchor = this.resolvedAnchor();\n if (!anchor) {\n return;\n }\n\n const cleanup = autoUpdate(anchor, this.elementRef.nativeElement, () => this.position.reload(), {\n animationFrame: this.updatePositionStrategy() === 'always'\n });\n\n onCleanup(cleanup);\n });\n\n constructor() {\n watch([this.isPositioned], ([isPositioned]) => {\n if (!isPositioned) {\n return;\n }\n\n afterNextRender(\n () => {\n this.placed.emit();\n },\n { injector: this.injector }\n );\n });\n }\n}\n\n/**\n * Providers a \"thin\" positioner that `extends RdxPopperContentWrapper` must include. Angular\n * inherits a base directive's inputs/outputs/host bindings/queries but **not** its `providers`, so\n * the `useExisting` alias (lets the popup and arrow resolve the subclass through the\n * {@link RdxPopperContentWrapper} token) and the wrapper context provider (what\n * `injectPopperContentWrapperContext()` reads) are re-declared here in one place.\n *\n * Combine with {@link provideRdxPopperContentConfig} for per-primitive positioning defaults:\n *\n * ```ts\n * providers: [\n * ...provideRdxPopperContentWrapper(RdxComboboxPositioner),\n * provideRdxPopperContentConfig({ sideOffset: 4, align: 'start' })\n * ]\n * ```\n */\nexport function provideRdxPopperContentWrapper(positioner: Type<RdxPopperContentWrapper>): Provider[] {\n return [{ provide: RdxPopperContentWrapper, useExisting: positioner }, providePopperContentWrapperContext(context)];\n}\n\n/**\n * Deprecated per-primitive aliases of the unified popper variables (ADR 0012). Since the wrapper now\n * emits the unified `--anchor-*` / `--available-*` / `--transform-origin` set itself, a positioner no\n * longer hand-writes a re-namespacing `[style]` map; it spreads this helper into a host `[style]`\n * binding only to keep the legacy `--radix-<name>-content-*` / `--radix-<name>-trigger-*` names alive\n * for one release of consumer back-compat. Migrate to the unified set; these are removed next minor.\n *\n * @deprecated Use the unified `--anchor-*` / `--available-*` / `--transform-origin` variables.\n */\nexport function legacyPopperVars(name: string): Record<string, string> {\n return {\n [`--radix-${name}-content-transform-origin`]: 'var(--radix-popper-transform-origin)',\n [`--radix-${name}-content-available-width`]: 'var(--radix-popper-available-width)',\n [`--radix-${name}-content-available-height`]: 'var(--radix-popper-available-height)',\n [`--radix-${name}-trigger-width`]: 'var(--radix-popper-anchor-width)',\n [`--radix-${name}-trigger-height`]: 'var(--radix-popper-anchor-height)'\n };\n}\n","import {\n computed,\n createComponent,\n Directive,\n effect,\n ElementRef,\n EnvironmentInjector,\n inject,\n input,\n inputBinding,\n numberAttribute\n} from '@angular/core';\nimport { RdxArrow } from '@radix-ng/primitives/arrow';\nimport { injectPopperContentWrapperContext } from './popper-content-wrapper';\nimport { Side } from './utils';\n\nconst OPPOSITE_SIDE: Record<Side, Side> = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right'\n};\n\n@Directive({\n selector: '[rdxPopperArrow]',\n host: {\n // The arrow is purely decorative — keep it out of the accessibility tree (Base UI does the same).\n 'aria-hidden': 'true',\n '[style]': 'style()'\n }\n})\nexport class RdxPopperArrow {\n private readonly popperContentContext = injectPopperContentWrapperContext();\n\n private readonly environmentInjector = inject(EnvironmentInjector);\n\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly width = input(10, { transform: numberAttribute });\n\n readonly height = input(5, { transform: numberAttribute });\n\n baseSide = computed(() => OPPOSITE_SIDE[this.popperContentContext.placedSide()!]);\n\n protected readonly style = computed(() => {\n return {\n position: 'absolute',\n left: this.popperContentContext.arrowX() ? `${this.popperContentContext.arrowX()}px` : undefined,\n top: this.popperContentContext.arrowY() ? `${this.popperContentContext.arrowY()}px` : undefined,\n [this.baseSide()]: 0,\n transformOrigin: {\n top: '',\n right: '0 0',\n bottom: 'center 0',\n left: '100% 0'\n }[this.popperContentContext.placedSide()!],\n transform: {\n top: 'translateY(100%)',\n right: 'translateY(50%) rotate(90deg) translateX(-50%)',\n bottom: `rotate(180deg)`,\n left: 'translateY(50%) rotate(-90deg) translateX(50%)'\n }[this.popperContentContext.placedSide()!],\n visibility: this.popperContentContext.shouldHideArrow() ? 'hidden' : undefined\n };\n });\n\n private onCleanup = effect((onCleanup) => {\n const component = createComponent(RdxArrow, {\n environmentInjector: this.environmentInjector,\n hostElement: this.elementRef.nativeElement,\n projectableNodes: [Array.from(this.elementRef.nativeElement.childNodes)],\n bindings: [inputBinding('width', () => this.width()), inputBinding('height', () => this.height())]\n });\n\n component.changeDetectorRef.detectChanges();\n\n onCleanup(() => component.destroy());\n });\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectPopperContentWrapperContext } from './popper-content-wrapper';\n\n@Directive({\n selector: '[rdxPopperContent]',\n host: {\n '[attr.data-side]': 'popperContentWrapper?.placedSide()',\n '[attr.data-align]': 'popperContentWrapper?.placedAlign()',\n '[style]': 'style()'\n }\n})\nexport class RdxPopperContent {\n /**\n * Optional so the directive can be composed onto a content part that is also used outside Popper\n * positioning (e.g. select's `item-aligned` mode, where there is no `RdxPopperContentWrapper`\n * ancestor). With no wrapper the `data-side` / `data-align` bindings and the animation guard\n * simply no-op.\n */\n protected readonly popperContentWrapper = injectPopperContentWrapperContext(true);\n\n /**\n * if the PopperContent hasn't been placed yet (not all measurements done)\n * we prevent animations so that users's animation don't kick in too early referring wrong sides\n */\n protected readonly style = computed(() => ({\n animation: this.popperContentWrapper && !this.popperContentWrapper.isPositioned() ? 'none' : undefined\n }));\n}\n","import { RdxPopper } from './src/popper';\nimport { RdxPopperAnchor } from './src/popper-anchor';\nimport { RdxPopperArrow } from './src/popper-arrow';\nimport { RdxPopperContent } from './src/popper-content';\nimport { RdxPopperContentWrapper } from './src/popper-content-wrapper';\n\nexport * from './src/popper';\nexport * from './src/popper-anchor';\nexport * from './src/popper-arrow';\nexport * from './src/popper-content';\nexport * from './src/popper-content-wrapper';\nexport * from './src/popper-content.config';\nexport * from './src/utils';\n\nexport const popperImports = [RdxPopper, RdxPopperArrow, RdxPopperContentWrapper, RdxPopperContent, RdxPopperAnchor];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["floatingUIArrow"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"radix-ng-primitives-popper.mjs","sources":["../../../packages/primitives/popper/src/popper-anchor.ts","../../../packages/primitives/popper/src/popper.ts","../../../packages/primitives/popper/src/popper-content.config.ts","../../../packages/primitives/popper/src/utils.ts","../../../packages/primitives/popper/src/popper-content-wrapper.ts","../../../packages/primitives/popper/src/popper-arrow.ts","../../../packages/primitives/popper/src/popper-content.ts","../../../packages/primitives/popper/index.ts","../../../packages/primitives/popper/radix-ng-primitives-popper.ts"],"sourcesContent":["import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[rdxPopperAnchor]'\n})\nexport class RdxPopperAnchor {\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n}\n","import { contentChild, Directive, signal } from '@angular/core';\nimport type { ReferenceElement } from '@floating-ui/dom';\nimport { RdxPopperAnchor } from './popper-anchor';\n\n@Directive({\n selector: '[rdxPopperRoot]'\n})\nexport class RdxPopper {\n readonly anchor = contentChild(RdxPopperAnchor);\n readonly anchorOverride = signal<ReferenceElement | undefined>(undefined);\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { Align, OffsetFunction, RdxCollisionAvoidance, Side, SideOrLogical } from './utils';\n\n/**\n * Default positioning values for `RdxPopperContentWrapper`.\n *\n * Lets a composing primitive (e.g. tooltip) provide its own Base UI-aligned defaults without\n * changing the shared popper defaults that other consumers (e.g. popover) rely on. Any value left\n * `undefined` falls back to the wrapper's built-in default. Consumer template bindings always win.\n */\nexport interface RdxPopperContentConfig {\n side?: SideOrLogical;\n align?: Align;\n sideOffset?: number | OffsetFunction;\n alignOffset?: number | OffsetFunction;\n arrowPadding?: number;\n /**\n * @deprecated Use {@link collisionAvoidance} instead. Kept for back-compat: `false` disables all\n * collision avoidance (equivalent to `{ side: 'none', align: 'none', fallbackAxisSide: 'none' }`).\n */\n avoidCollisions?: boolean;\n /** Per-primitive collision-avoidance default (Base UI parity). See {@link RdxCollisionAvoidance}. */\n collisionAvoidance?: RdxCollisionAvoidance;\n collisionPadding?: number | Partial<Record<Side, number>>;\n sticky?: 'partial' | 'always';\n hideWhenDetached?: boolean;\n positionStrategy?: 'fixed' | 'absolute';\n updatePositionStrategy?: 'optimized' | 'always';\n}\n\n/**\n * Collision-avoidance preset for dropdown-style popups (Base UI `DROPDOWN_COLLISION_AVOIDANCE`).\n *\n * Dropdowns (select / combobox / autocomplete / menu) strictly prefer their top/bottom placement and\n * cap their height with `var(--available-height)`, so they must **not** fall back to the perpendicular\n * (left/right) axis. `side`/`align` fall back to the wrapper default (`'flip'`).\n */\nexport const DROPDOWN_COLLISION_AVOIDANCE: RdxCollisionAvoidance = { fallbackAxisSide: 'none' };\n\n/**\n * Collision-avoidance preset for regular popups (Base UI `POPUP_COLLISION_AVOIDANCE`).\n *\n * Popovers / tooltips / preview cards aren't height-capped and may freely flip to the perpendicular\n * axis, preferring the logical end side. This equals the wrapper's built-in default; it is exported so\n * popups can state the intent explicitly.\n */\nexport const POPUP_COLLISION_AVOIDANCE: RdxCollisionAvoidance = { fallbackAxisSide: 'end' };\n\nexport const RdxPopperContentConfigToken = new InjectionToken<RdxPopperContentConfig>('RdxPopperContentConfig', {\n factory: () => ({})\n});\n\nexport function provideRdxPopperContentConfig(config: RdxPopperContentConfig): Provider {\n return { provide: RdxPopperContentConfigToken, useValue: config };\n}\n","import type { Middleware, Placement } from '@floating-ui/dom';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst SIDE_OPTIONS = ['top', 'right', 'bottom', 'left'] as const;\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst ALIGN_OPTIONS = ['start', 'center', 'end'] as const;\n\nexport type Side = (typeof SIDE_OPTIONS)[number];\nexport type Align = (typeof ALIGN_OPTIONS)[number];\n\n/** Logical (writing-direction-relative) inline sides, resolved to a physical {@link Side} by text direction. */\nexport type LogicalSide = 'inline-start' | 'inline-end';\n\n/** A physical {@link Side} or a {@link LogicalSide} — accepted by the positioner's `side` input. */\nexport type SideOrLogical = Side | LogicalSide;\n\n/**\n * Resolve a logical inline side to a physical one for the current text direction; physical sides pass\n * through unchanged (Base UI `useAnchorPositioning`). `inline-start` is the reading-start edge\n * (`left` in LTR, `right` in RTL); `inline-end` is the reading-end edge.\n */\nexport function resolvePhysicalSide(side: SideOrLogical, isRtl: boolean): Side {\n if (side === 'inline-start') {\n return isRtl ? 'right' : 'left';\n }\n\n if (side === 'inline-end') {\n return isRtl ? 'left' : 'right';\n }\n\n return side;\n}\n\n/**\n * Report a rendered physical side back in the same \"kind\" the consumer requested (Base UI\n * `getLogicalSide`): when a logical side was requested, a `left`/`right` rendered side is mapped back\n * to `inline-start`/`inline-end` for the direction (so a post-collision flip surfaces logically); a\n * physical request, or a `top`/`bottom` rendered side, passes through unchanged.\n */\nexport function toLogicalSide(requestedSide: SideOrLogical, renderedSide: Side, isRtl: boolean): SideOrLogical {\n const requestedLogical = requestedSide === 'inline-start' || requestedSide === 'inline-end';\n\n if (!requestedLogical) {\n return renderedSide;\n }\n\n if (renderedSide === 'left') {\n return isRtl ? 'inline-end' : 'inline-start';\n }\n\n if (renderedSide === 'right') {\n return isRtl ? 'inline-start' : 'inline-end';\n }\n\n return renderedSide;\n}\n\n/**\n * How the popper avoids collisions with the boundary edges (Base UI `collisionAvoidance`).\n *\n * - `side` — behavior on the **preferred placement axis** (`top`/`bottom` or `left`/`right`):\n * `'flip'` swaps to the opposite side when it doesn't fit, `'shift'` keeps the side and nudges the\n * popup within the boundary, `'none'` leaves side-axis overflow uncorrected.\n * - `align` — behavior on the **alignment axis** (`start`/`center`/`end`): `'flip'` swaps `start`/`end`,\n * `'shift'` nudges the popup along the alignment axis, `'none'` leaves it uncorrected.\n * - `fallbackAxisSide` — when neither preferred side fits, whether to fall back to the perpendicular\n * axis and which logical side to prefer (`'start'` / `'end'`), or `'none'` to stay on the axis.\n *\n * Any omitted field falls back to the wrapper default (`side: 'flip'`, `align: 'flip'`,\n * `fallbackAxisSide: 'end'`), matching Base UI.\n */\nexport interface RdxCollisionAvoidance {\n side?: 'flip' | 'shift' | 'none';\n align?: 'flip' | 'shift' | 'none';\n fallbackAxisSide?: 'start' | 'end' | 'none';\n}\n\n/** Fully-resolved {@link RdxCollisionAvoidance} — every field present (no wrapper-default fallback left). */\nexport type ResolvedCollisionAvoidance = Required<RdxCollisionAvoidance>;\n\n/**\n * Function form of `sideOffset` / `alignOffset` (Base UI `OffsetFunction`). Receives the resolved\n * placement and the measured anchor / positioner dimensions, and returns the offset in pixels — e.g.\n * `({ anchor }) => anchor.width` to offset by the trigger's own width. `side` is the side the popup is\n * placed against — reported logically (`inline-start` / `inline-end`) when a logical side was\n * requested, otherwise physical (Base UI parity).\n */\nexport type OffsetFunction = (data: {\n side: SideOrLogical;\n align: Align;\n anchor: { width: number; height: number };\n positioner: { width: number; height: number };\n}) => number;\n\nexport function isNotNull<T>(value: T | null): value is T {\n return value !== null;\n}\n\nexport function transformOrigin(options: { arrowWidth: number; arrowHeight: number }): Middleware {\n return {\n name: 'transformOrigin',\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: '0%', center: '50%', end: '100%' }[placedAlign];\n\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n\n let x = '';\n let y = '';\n\n if (placedSide === 'bottom') {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === 'top') {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === 'right') {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === 'left') {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n };\n}\n\nexport function getSideAndAlignFromPlacement(placement: Placement) {\n const [side, align = 'center'] = placement.split('-');\n return [side as Side, align as Align] as const;\n}\n","import {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChild,\n Directive,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n linkedSignal,\n numberAttribute,\n output,\n Provider,\n resource,\n Signal,\n signal,\n Type\n} from '@angular/core';\nimport type { ComputePositionReturn, ReferenceElement, VirtualElement } from '@floating-ui/dom';\nimport {\n autoUpdate,\n computePosition,\n flip,\n arrow as floatingUIArrow,\n hide,\n limitShift,\n offset,\n Placement,\n shift,\n size\n} from '@floating-ui/dom';\nimport { BooleanInput, createContext, Direction, elementSize, NumberInput, watch } from '@radix-ng/primitives/core';\nimport { injectDirection } from '@radix-ng/primitives/direction-provider';\nimport { RdxPopper } from './popper';\nimport { RdxPopperArrow } from './popper-arrow';\nimport { RdxPopperContentConfigToken } from './popper-content.config';\nimport {\n Align,\n getSideAndAlignFromPlacement,\n isNotNull,\n OffsetFunction,\n RdxCollisionAvoidance,\n ResolvedCollisionAvoidance,\n resolvePhysicalSide,\n Side,\n SideOrLogical,\n toLogicalSide,\n transformOrigin\n} from './utils';\n\n/**\n * `input()` transform for `sideOffset` / `alignOffset`: coerce string/number attribute values to a\n * number but pass an {@link OffsetFunction} through untouched. A **named** module-level function (not\n * an inline arrow) so compodoc parses the file — see CLAUDE.md's compodoc gotcha.\n */\nfunction coerceOffset(value: number | OffsetFunction | string | null | undefined): number | OffsetFunction {\n return typeof value === 'function' ? value : numberAttribute(value);\n}\n\nexport type RdxPopperAnchorElement =\n | Element\n | ElementRef<Element>\n | VirtualElement\n | (() => Element | VirtualElement | null)\n | null\n | undefined;\n\ntype PopperPositionParams = {\n positioningActive: boolean;\n anchor: ReferenceElement | null;\n strategy: 'fixed' | 'absolute';\n placement: Placement;\n /** The original requested side (may be logical) — used to report the side logically to offset functions. */\n side: SideOrLogical;\n isRtl: boolean;\n align: Align;\n sideOffset: number | OffsetFunction;\n alignOffset: number | OffsetFunction;\n arrowHeight: number;\n arrowWidth: number;\n collisionAvoidance: ResolvedCollisionAvoidance;\n sticky: 'partial' | 'always';\n detectOverflowOptions: {\n padding: number | Partial<Record<Side, number>>;\n boundary: Element[];\n altBoundary: boolean;\n };\n arrow: RdxPopperArrow | undefined;\n arrowPadding: number;\n hideWhenDetached: boolean;\n};\n\nconst context = () => {\n const popperContentWrapper = inject(RdxPopperContentWrapper);\n\n return {\n placedSide: popperContentWrapper.placedSide,\n physicalPlacedSide: popperContentWrapper.physicalPlacedSide,\n placedAlign: popperContentWrapper.placedAlign,\n arrowX: popperContentWrapper.arrowX,\n arrowY: popperContentWrapper.arrowY,\n shouldHideArrow: popperContentWrapper.shouldHideArrow,\n isPositioned: popperContentWrapper.isPositioned,\n anchorHidden: popperContentWrapper.anchorHidden\n };\n};\n\nexport type PopperContentWrapperContext = ReturnType<typeof context>;\n\nexport const [injectPopperContentWrapperContext, providePopperContentWrapperContext] =\n createContext<PopperContentWrapperContext>('PopperContentWrapperContext', 'utils/popper');\n\n@Directive({\n selector: '[rdxPopperContentWrapper]',\n providers: [providePopperContentWrapperContext(context)],\n host: {\n 'data-radix-popper-content-wrapper': '',\n // Placement state, emitted once for every positioner (ADR 0012). The popup\n // (`RdxPopperContent`) keeps its own `data-side`/`data-align` as popup-level styling hooks.\n '[attr.data-side]': 'placedSide()',\n '[attr.data-align]': 'placedAlign()',\n '[attr.data-anchor-hidden]': 'anchorHidden() ? \"\" : undefined',\n '[style]': 'style()'\n }\n})\nexport class RdxPopperContentWrapper {\n private readonly elementRef = inject(ElementRef);\n private readonly injector = inject(Injector);\n\n private readonly context = inject(RdxPopper);\n\n /** Optional positioning defaults provided by a composing primitive (e.g. tooltip). */\n private readonly config = inject(RdxPopperContentConfigToken);\n\n /**\n * An element to position the popup against. Defaults to the popper anchor.\n */\n readonly anchor = input<RdxPopperAnchorElement>();\n\n /**\n * The preferred side of the anchor to render against when open.\n * Will be reversed when collisions occur and avoidCollisions is enabled.\n *\n * Accepts the logical `'inline-start'` / `'inline-end'` in addition to the physical sides; those\n * resolve to `left` / `right` for the text direction (Base UI parity). The placed side reported via\n * `data-side` / `placedSide()` echoes the requested kind: logical in → logical out (even after a\n * collision flip), physical in → physical out.\n */\n readonly side = input<SideOrLogical>(this.config.side ?? 'bottom');\n\n /**\n * Text direction, used only to resolve a logical `side` (`inline-start` / `inline-end`) to a\n * physical one. Falls back to an enclosing direction provider, then `ltr`.\n */\n readonly dir = input<Direction | undefined>(undefined);\n private readonly direction = injectDirection(this.dir);\n\n /** The `side` input with any logical inline value resolved to a physical side for the direction. */\n private readonly resolvedSide = computed<Side>(() => resolvePhysicalSide(this.side(), this.direction() === 'rtl'));\n\n /**\n * Distance between the anchor and the popup in pixels. Also accepts an {@link OffsetFunction} that\n * reads the anchor / positioner dimensions and the resolved side / align.\n */\n readonly sideOffset = input(this.config.sideOffset ?? 0, { transform: coerceOffset });\n\n /**\n * How to align the popup relative to the specified side. May change when collisions occur.\n */\n readonly align = input<Align>(this.config.align ?? 'center');\n\n /**\n * An offset in pixels from the `start` or `end` alignment options. Also accepts an\n * {@link OffsetFunction} (same signature as `sideOffset`).\n */\n readonly alignOffset = input(this.config.alignOffset ?? 0, { transform: coerceOffset });\n\n /**\n * Minimum distance to maintain between the arrow and the edges of the popup.\n * If your content has border-radius, this will prevent it from overflowing the corners.\n */\n readonly arrowPadding = input<number, NumberInput>(this.config.arrowPadding ?? 0, { transform: numberAttribute });\n\n /**\n * When `true`, overrides the `side` and `align` preferences to prevent collisions with boundary edges.\n *\n * @deprecated Use {@link collisionAvoidance} for fine-grained control (Base UI parity). Still honored:\n * `false` disables all avoidance (unless a `collisionAvoidance` object is provided, which wins).\n */\n readonly avoidCollisions = input<boolean, BooleanInput>(this.config.avoidCollisions ?? true, {\n transform: booleanAttribute\n });\n\n /**\n * How the popup avoids colliding with the boundary edges, per axis (Base UI `collisionAvoidance`).\n * Overrides the deprecated `avoidCollisions` and any per-primitive preset. An object here **fully\n * replaces** the preset — omitted fields fall back to `side: 'flip'`, `align: 'flip'`,\n * `fallbackAxisSide: 'end'`, never to the preset. See {@link RdxCollisionAvoidance}.\n */\n readonly collisionAvoidance = input<RdxCollisionAvoidance | undefined>(undefined);\n\n /**\n * Collision avoidance resolved against the deprecated `avoidCollisions` flag, the per-primitive\n * config preset, and the wrapper defaults. Precedence: an explicit `collisionAvoidance` input →\n * a legacy `avoidCollisions=false` (disables everything) → the config preset → the Base UI defaults.\n */\n private readonly effectiveCollisionAvoidance = computed<ResolvedCollisionAvoidance>(() => {\n const explicit = this.collisionAvoidance();\n\n // Legacy escape hatch (deprecated): `avoidCollisions=false` disables avoidance entirely — unless\n // the consumer passes an explicit `collisionAvoidance` object, which always wins. Checked before\n // the preset so `[avoidCollisions]=\"false\"` still works on a positioner that ships a preset.\n if (!explicit && this.avoidCollisions() === false) {\n return { side: 'none', align: 'none', fallbackAxisSide: 'none' };\n }\n\n // A consumer object fully REPLACES the preset (Base UI parity — the preset is only the default\n // when the consumer passes nothing); omitted fields fall back to the global defaults, not the\n // preset. `??` (not spread-merge) is what enforces the \"replaces, not merges\" semantics.\n const source = explicit ?? this.config.collisionAvoidance;\n\n return {\n side: source?.side ?? 'flip',\n align: source?.align ?? 'flip',\n fallbackAxisSide: source?.fallbackAxisSide ?? 'end'\n };\n });\n\n /**\n * The element used as the collision boundary.\n * By default this is the viewport, though you can provide additional element(s) to be included in this check.\n */\n readonly collisionBoundary = input<ElementRef<HTMLElement> | ElementRef<HTMLElement>[]>();\n /**\n * The distance in pixels from the boundary edges where collision detection should occur.\n * Accepts a number (same for all sides), or a partial padding object, for example: `{ top: 20, left: 20 }`.\n */\n readonly collisionPadding = input<number | Partial<Record<Side, number>>>(this.config.collisionPadding ?? 0);\n\n /**\n * The sticky behavior on the align axis. `partial` will keep the\n * content in the boundary as long as the trigger is at least partially\n * in the boundary whilst \"always\" will keep the content in the boundary\n * regardless.\n */\n readonly sticky = input<'partial' | 'always'>(this.config.sticky ?? 'partial');\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n */\n readonly hideWhenDetached = input<boolean, BooleanInput>(this.config.hideWhenDetached ?? false, {\n transform: booleanAttribute\n });\n\n /**\n * The type of CSS position property to use.\n */\n readonly positionStrategy = input<'fixed' | 'absolute'>(this.config.positionStrategy ?? 'fixed');\n\n /**\n * Strategy to update the position of the floating element on every animation frame.\n */\n readonly updatePositionStrategy = input<'optimized' | 'always'>(this.config.updatePositionStrategy ?? 'optimized');\n\n /**\n * Emits when the element is placed.\n */\n readonly placed = output<void>();\n\n readonly arrow = contentChild(forwardRef(() => RdxPopperArrow));\n\n /**\n * When `true`, the content is rendered click/hover-through (`pointer-events: none`). Used for\n * cursor-following content (e.g. a tooltip tracking the pointer) that must never intercept the\n * pointer and steal hover from its trigger.\n */\n readonly nonInteractive = signal(false);\n\n readonly shouldHideArrow = computed(() => this.position.value()?.middlewareData['arrow']?.centerOffset !== 0);\n /** Whether the arrow could not be centered on the anchor because the popup was shifted. */\n readonly arrowUncentered = computed(\n () => (this.position.value()?.middlewareData['arrow']?.centerOffset ?? 0) !== 0\n );\n readonly arrowX = computed(() => this.position.value()?.middlewareData['arrow']?.x);\n readonly arrowY = computed(() => this.position.value()?.middlewareData['arrow']?.y);\n readonly anchorHidden = computed(() => this.position.value()?.middlewareData.hide?.referenceHidden === true);\n\n private readonly desiredPlacement = computed(\n () => (this.resolvedSide() + (this.align() !== 'center' ? '-' + this.align() : '')) as Placement\n );\n\n private readonly arrowSize = computed(() => {\n const arrowElementRef = this.arrow()?.elementRef;\n\n if (!arrowElementRef) {\n return computed(() => ({\n height: 0,\n width: 0\n }));\n }\n\n return elementSize({\n elementRef: arrowElementRef,\n injector: this.injector\n });\n });\n\n private readonly boundary = computed(() => {\n const boundary = this.collisionBoundary();\n\n if (Array.isArray(boundary)) {\n return boundary.map((e) => e.nativeElement);\n }\n\n if (!boundary) {\n return [];\n }\n\n return [boundary.nativeElement];\n });\n\n private readonly hasExplicitBoundaries = computed(() => this.boundary().length > 0);\n\n private readonly detectOverflowOptions = computed(() => ({\n padding: this.collisionPadding(),\n boundary: this.boundary().filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: this.hasExplicitBoundaries()\n }));\n\n private readonly resolvedAnchor = computed<ReferenceElement | null>(() => {\n const anchor = this.anchor();\n const resolvedAnchor = typeof anchor === 'function' ? anchor() : anchor;\n\n if (resolvedAnchor instanceof ElementRef) {\n return resolvedAnchor.nativeElement;\n }\n\n if (resolvedAnchor) {\n return resolvedAnchor;\n }\n\n return this.context.anchorOverride() ?? this.context.anchor()?.elementRef.nativeElement ?? null;\n });\n\n private readonly position = resource<ComputePositionReturn | null, PopperPositionParams>({\n params: () => this.positionParams(),\n loader: ({ params }) => {\n // Skip computing a position for a paused (closed keep-mounted) positioner.\n if (!params.positioningActive || !params.anchor) {\n return Promise.resolve(null);\n }\n\n const ca = params.collisionAvoidance;\n // Ported from Base UI `useAnchorPositioning`: `side`/`align`/`fallbackAxisSide` select and\n // configure the `flip()` / `shift()` middleware instead of the old boolean toggle.\n const shiftDisabled = ca.align === 'none' && ca.side !== 'shift';\n const crossAxisShiftEnabled = !shiftDisabled && (params.sticky === 'always' || ca.side === 'shift');\n\n const flipMiddleware =\n ca.side === 'none'\n ? undefined\n : flip({\n ...params.detectOverflowOptions,\n mainAxis: ca.side === 'flip',\n crossAxis: ca.align === 'flip' ? 'alignment' : false,\n fallbackAxisSideDirection: ca.fallbackAxisSide\n });\n\n const shiftMiddleware = shiftDisabled\n ? undefined\n : shift({\n ...params.detectOverflowOptions,\n mainAxis: ca.align !== 'none',\n crossAxis: crossAxisShiftEnabled,\n // `partial` keeps the popup attached to the anchor (limitShift); `always` keeps it\n // fully inside the boundary regardless (no limiter).\n limiter: params.sticky === 'partial' ? limitShift() : undefined\n });\n\n // https://floating-ui.com/docs/flip#combining-with-shift — run shift first when shifting is\n // the primary correction (or for center alignment), otherwise flip first.\n const collisionMiddleware =\n ca.side === 'shift' || ca.align === 'shift' || params.align === 'center'\n ? [shiftMiddleware, flipMiddleware]\n : [flipMiddleware, shiftMiddleware];\n\n return computePosition(params.anchor, this.elementRef.nativeElement, {\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: params.strategy,\n placement: params.placement,\n middleware: [\n offset((state) => {\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(state.placement);\n const data = {\n // Report the placed side in the same kind the consumer requested: logical\n // when a logical `side` was passed (so a post-collision flip stays logical),\n // physical otherwise (Base UI parity).\n side: toLogicalSide(params.side, placedSide, params.isRtl),\n align: placedAlign,\n anchor: {\n width: state.rects.reference.width,\n height: state.rects.reference.height\n },\n positioner: {\n width: state.rects.floating.width,\n height: state.rects.floating.height\n }\n };\n const sideAxis =\n typeof params.sideOffset === 'function' ? params.sideOffset(data) : params.sideOffset;\n const alignAxis =\n typeof params.alignOffset === 'function' ? params.alignOffset(data) : params.alignOffset;\n\n return {\n mainAxis: sideAxis + params.arrowHeight || 0,\n // both axes so `alignOffset` also applies to center-aligned popups\n // (`alignmentAxis` overrides `crossAxis` for start/end placements)\n crossAxis: alignAxis,\n alignmentAxis: alignAxis\n };\n }),\n ...collisionMiddleware,\n size({\n ...params.detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty('--radix-popper-available-width', `${availableWidth}px`);\n contentStyle.setProperty('--radix-popper-available-height', `${availableHeight}px`);\n contentStyle.setProperty('--radix-popper-anchor-width', `${anchorWidth}px`);\n contentStyle.setProperty('--radix-popper-anchor-height', `${anchorHeight}px`);\n }\n }),\n params.arrow &&\n floatingUIArrow({\n element: params.arrow.elementRef.nativeElement,\n padding: params.arrowPadding\n }),\n transformOrigin({\n arrowWidth: params.arrowWidth,\n arrowHeight: params.arrowHeight\n }),\n params.hideWhenDetached &&\n hide({\n strategy: 'referenceHidden',\n ...params.detectOverflowOptions\n })\n ]\n });\n }\n });\n\n private positionParams(): PopperPositionParams {\n return {\n positioningActive: this.positioningActive(),\n anchor: this.resolvedAnchor(),\n strategy: this.positionStrategy(),\n placement: this.desiredPlacement(),\n side: this.side(),\n isRtl: this.direction() === 'rtl',\n align: this.align(),\n sideOffset: this.sideOffset(),\n alignOffset: this.alignOffset(),\n arrowHeight: this.arrowSize()().height,\n arrowWidth: this.arrowSize()().width,\n collisionAvoidance: this.effectiveCollisionAvoidance(),\n sticky: this.sticky(),\n detectOverflowOptions: this.detectOverflowOptions(),\n arrow: this.arrow(),\n arrowPadding: this.arrowPadding(),\n hideWhenDetached: this.hideWhenDetached()\n };\n }\n\n /**\n * The last successfully computed position, retained while a new one is being computed.\n *\n * The `position` resource resets `value()` to `undefined` whenever its params change (e.g. on\n * every pointer move while a tooltip tracks the cursor). Reading it directly would blank the\n * popup (`visibility: hidden` + off-screen transform) for the frames between a move and the next\n * resolved position — a visible flicker at high pointer-move rates. Holding the previous value\n * keeps the popup placed and visible until the new position is ready.\n */\n private readonly resolvedPosition = linkedSignal<\n ComputePositionReturn | undefined,\n ComputePositionReturn | undefined\n >({\n source: () => this.position.value() ?? undefined,\n computation: (value, previous) => value ?? previous?.value\n });\n\n /**\n * Whether the panel is positioned.\n */\n readonly isPositioned = computed(() => !!this.position.value());\n\n /**\n * The current placement of the panel.\n */\n readonly placement = computed(() => {\n const placement = this.position.value()?.placement;\n\n if (!placement) {\n return;\n }\n\n const [side, align = 'center'] = placement.split('-');\n\n return {\n side: side as Side,\n align: align as Align\n };\n });\n\n /**\n * The physical side the panel is currently placed against. Internal geometry (arrow position,\n * transform origins) must use this — never {@link placedSide}, which can be logical.\n */\n readonly physicalPlacedSide = computed(() => this.placement()?.side);\n\n /**\n * The side the panel is currently placed against, reported in the kind the consumer requested\n * (Base UI positioner `side`): when a logical `side` was passed, a placed `left`/`right` maps back\n * to `inline-start`/`inline-end` for the direction — so a post-collision flip stays logical and\n * `[data-side=\"inline-start\"]` CSS is direction-agnostic. A physical request is always reported\n * physically.\n */\n readonly placedSide = computed<SideOrLogical | undefined>(() => {\n const side = this.placement()?.side;\n\n return side === undefined ? undefined : toLogicalSide(this.side(), side, this.direction() === 'rtl');\n });\n\n /**\n * The current alignment of the panel.\n */\n readonly placedAlign = computed(() => this.placement()?.align);\n\n protected readonly style = computed(() => {\n const pos = this.resolvedPosition();\n const x = pos?.x;\n const y = pos?.y;\n\n const ready = Number.isFinite(x) && Number.isFinite(y);\n\n return {\n position: this.positionStrategy(),\n transform: ready ? '' : 'translate(0, -200%)', // keep off the page when measuring\n minWidth: 'max-content',\n // ADR 0012 §3: z-index belongs on the positioner (set it via a class/style on the\n // positioner element), Base UI-aligned. The wrapper no longer copies the popup's computed\n // z-index, so a positioner no longer requires an inner `RdxPopperContent` to exist.\n top: Number.isFinite(y) ? `${y}px` : '',\n left: Number.isFinite(x) ? `${x}px` : '',\n '--radix-popper-transform-origin': [\n pos?.middlewareData['transformOrigin']?.x,\n pos?.middlewareData['transformOrigin']?.y\n ].join(' '),\n '--radix-popper-content-wrapper-width': `${this.elementRef.nativeElement.offsetWidth}px`,\n '--radix-popper-content-wrapper-height': `${this.elementRef.nativeElement.offsetHeight}px`,\n\n // Unified Base UI-style variables (ADR 0012), emitted once for every positioner so\n // consumers learn a single dialect. They alias the engine-level `--radix-popper-*` values\n // (the `--anchor-*`/`--available-*` ones are set imperatively by the `size` middleware).\n '--anchor-width': 'var(--radix-popper-anchor-width)',\n '--anchor-height': 'var(--radix-popper-anchor-height)',\n '--available-width': 'var(--radix-popper-available-width)',\n '--available-height': 'var(--radix-popper-available-height)',\n '--positioner-width': 'var(--radix-popper-content-wrapper-width)',\n '--positioner-height': 'var(--radix-popper-content-wrapper-height)',\n '--transform-origin': 'var(--radix-popper-transform-origin)',\n\n visibility: ready ? 'visible' : 'hidden',\n pointerEvents: this.nonInteractive() || !ready ? 'none' : 'auto',\n\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...(pos?.middlewareData.hide?.referenceHidden && {\n visibility: 'hidden',\n pointerEvents: 'none'\n })\n };\n });\n\n /**\n * Whether the positioner should actively track its anchor (recompute + `autoUpdate`). Defaults to\n * always-on — the historical behavior, correct for a positioner that unmounts when its layer closes.\n * A positioner that can stay mounted while closed (`keepMounted`) **overrides** this with its\n * open/presence signal so a closed, hidden positioner doesn't spin an endless `autoUpdate`\n * `requestAnimationFrame` loop (only relevant when `updatePositionStrategy: 'always'`). It's a\n * reassignable field (not `readonly`) because the render effect below reads it lazily, after the\n * subclass constructor has swapped it in.\n */\n protected positioningActive: Signal<boolean> = computed(() => true);\n\n private readonly afterRenderEffect = afterRenderEffect((onCleanup) => {\n // Closed keep-mounted positioner: skip positioning entirely so `autoUpdate` doesn't keep firing.\n if (!this.positioningActive()) {\n return;\n }\n\n this.position.reload();\n\n const anchor = this.resolvedAnchor();\n if (!anchor) {\n return;\n }\n\n const cleanup = autoUpdate(anchor, this.elementRef.nativeElement, () => this.position.reload(), {\n animationFrame: this.updatePositionStrategy() === 'always'\n });\n\n onCleanup(cleanup);\n });\n\n constructor() {\n watch([this.isPositioned], ([isPositioned]) => {\n if (!isPositioned) {\n return;\n }\n\n afterNextRender(\n () => {\n this.placed.emit();\n },\n { injector: this.injector }\n );\n });\n }\n}\n\n/**\n * Providers a \"thin\" positioner that `extends RdxPopperContentWrapper` must include. Angular\n * inherits a base directive's inputs/outputs/host bindings/queries but **not** its `providers`, so\n * the `useExisting` alias (lets the popup and arrow resolve the subclass through the\n * {@link RdxPopperContentWrapper} token) and the wrapper context provider (what\n * `injectPopperContentWrapperContext()` reads) are re-declared here in one place.\n *\n * Combine with {@link provideRdxPopperContentConfig} for per-primitive positioning defaults:\n *\n * ```ts\n * providers: [\n * ...provideRdxPopperContentWrapper(RdxComboboxPositioner),\n * provideRdxPopperContentConfig({ sideOffset: 4, align: 'start' })\n * ]\n * ```\n */\nexport function provideRdxPopperContentWrapper(positioner: Type<RdxPopperContentWrapper>): Provider[] {\n return [{ provide: RdxPopperContentWrapper, useExisting: positioner }, providePopperContentWrapperContext(context)];\n}\n\n/**\n * Deprecated per-primitive aliases of the unified popper variables (ADR 0012). Since the wrapper now\n * emits the unified `--anchor-*` / `--available-*` / `--transform-origin` set itself, a positioner no\n * longer hand-writes a re-namespacing `[style]` map; it spreads this helper into a host `[style]`\n * binding only to keep the legacy `--radix-<name>-content-*` / `--radix-<name>-trigger-*` names alive\n * for one release of consumer back-compat. Migrate to the unified set; these are removed next minor.\n *\n * @deprecated Use the unified `--anchor-*` / `--available-*` / `--transform-origin` variables.\n */\nexport function legacyPopperVars(name: string): Record<string, string> {\n return {\n [`--radix-${name}-content-transform-origin`]: 'var(--radix-popper-transform-origin)',\n [`--radix-${name}-content-available-width`]: 'var(--radix-popper-available-width)',\n [`--radix-${name}-content-available-height`]: 'var(--radix-popper-available-height)',\n [`--radix-${name}-trigger-width`]: 'var(--radix-popper-anchor-width)',\n [`--radix-${name}-trigger-height`]: 'var(--radix-popper-anchor-height)'\n };\n}\n","import {\n computed,\n createComponent,\n Directive,\n effect,\n ElementRef,\n EnvironmentInjector,\n inject,\n input,\n inputBinding,\n numberAttribute\n} from '@angular/core';\nimport { RdxArrow } from '@radix-ng/primitives/arrow';\nimport { injectPopperContentWrapperContext } from './popper-content-wrapper';\nimport { Side } from './utils';\n\nconst OPPOSITE_SIDE: Record<Side, Side> = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right'\n};\n\n@Directive({\n selector: '[rdxPopperArrow]',\n host: {\n // The arrow is purely decorative — keep it out of the accessibility tree (Base UI does the same).\n 'aria-hidden': 'true',\n '[style]': 'style()'\n }\n})\nexport class RdxPopperArrow {\n private readonly popperContentContext = injectPopperContentWrapperContext();\n\n private readonly environmentInjector = inject(EnvironmentInjector);\n\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly width = input(10, { transform: numberAttribute });\n\n readonly height = input(5, { transform: numberAttribute });\n\n // Geometry is physical: the arrow reads `physicalPlacedSide` (`placedSide` can be logical\n // `inline-start`/`inline-end` when a logical side was requested — a styling hook, not a direction).\n baseSide = computed(() => OPPOSITE_SIDE[this.popperContentContext.physicalPlacedSide()!]);\n\n protected readonly style = computed(() => {\n return {\n position: 'absolute',\n left: this.popperContentContext.arrowX() ? `${this.popperContentContext.arrowX()}px` : undefined,\n top: this.popperContentContext.arrowY() ? `${this.popperContentContext.arrowY()}px` : undefined,\n [this.baseSide()]: 0,\n transformOrigin: {\n top: '',\n right: '0 0',\n bottom: 'center 0',\n left: '100% 0'\n }[this.popperContentContext.physicalPlacedSide()!],\n transform: {\n top: 'translateY(100%)',\n right: 'translateY(50%) rotate(90deg) translateX(-50%)',\n bottom: `rotate(180deg)`,\n left: 'translateY(50%) rotate(-90deg) translateX(50%)'\n }[this.popperContentContext.physicalPlacedSide()!],\n visibility: this.popperContentContext.shouldHideArrow() ? 'hidden' : undefined\n };\n });\n\n private onCleanup = effect((onCleanup) => {\n const component = createComponent(RdxArrow, {\n environmentInjector: this.environmentInjector,\n hostElement: this.elementRef.nativeElement,\n projectableNodes: [Array.from(this.elementRef.nativeElement.childNodes)],\n bindings: [inputBinding('width', () => this.width()), inputBinding('height', () => this.height())]\n });\n\n component.changeDetectorRef.detectChanges();\n\n onCleanup(() => component.destroy());\n });\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectPopperContentWrapperContext } from './popper-content-wrapper';\n\n@Directive({\n selector: '[rdxPopperContent]',\n host: {\n '[attr.data-side]': 'popperContentWrapper?.placedSide()',\n '[attr.data-align]': 'popperContentWrapper?.placedAlign()',\n '[style]': 'style()'\n }\n})\nexport class RdxPopperContent {\n /**\n * Optional so the directive can be composed onto a content part that is also used outside Popper\n * positioning (e.g. select's `item-aligned` mode, where there is no `RdxPopperContentWrapper`\n * ancestor). With no wrapper the `data-side` / `data-align` bindings and the animation guard\n * simply no-op.\n */\n protected readonly popperContentWrapper = injectPopperContentWrapperContext(true);\n\n /**\n * if the PopperContent hasn't been placed yet (not all measurements done)\n * we prevent animations so that users's animation don't kick in too early referring wrong sides\n */\n protected readonly style = computed(() => ({\n animation: this.popperContentWrapper && !this.popperContentWrapper.isPositioned() ? 'none' : undefined\n }));\n}\n","import { RdxPopper } from './src/popper';\nimport { RdxPopperAnchor } from './src/popper-anchor';\nimport { RdxPopperArrow } from './src/popper-arrow';\nimport { RdxPopperContent } from './src/popper-content';\nimport { RdxPopperContentWrapper } from './src/popper-content-wrapper';\n\nexport * from './src/popper';\nexport * from './src/popper-anchor';\nexport * from './src/popper-arrow';\nexport * from './src/popper-content';\nexport * from './src/popper-content-wrapper';\nexport * from './src/popper-content.config';\nexport * from './src/utils';\n\nexport const popperImports = [RdxPopper, RdxPopperArrow, RdxPopperContentWrapper, RdxPopperContent, RdxPopperAnchor];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["floatingUIArrow"],"mappings":";;;;;;;MAKa,eAAe,CAAA;AAH5B,IAAA,WAAA,GAAA;AAIa,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AACpE,IAAA;8GAFY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;MCGY,SAAS,CAAA;AAHtB,IAAA,WAAA,GAAA;QAIa,IAAA,CAAA,MAAM,GAAG,YAAY,CAAC,eAAe;mFAAC;QACtC,IAAA,CAAA,cAAc,GAAG,MAAM,CAA+B,SAAS;2FAAC;AAC5E,IAAA;8GAHY,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,+GACa,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FADrC,SAAS,EAAA,UAAA,EAAA,CAAA;kBAHrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE;AACb,iBAAA;2FAEkC,eAAe,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACsBlD;;;;;;AAMG;MACU,4BAA4B,GAA0B,EAAE,gBAAgB,EAAE,MAAM;AAE7F;;;;;;AAMG;MACU,yBAAyB,GAA0B,EAAE,gBAAgB,EAAE,KAAK;MAE5E,2BAA2B,GAAG,IAAI,cAAc,CAAyB,wBAAwB,EAAE;AAC5G,IAAA,OAAO,EAAE,OAAO,EAAE;AACrB,CAAA;AAEK,SAAU,6BAA6B,CAAC,MAA8B,EAAA;IACxE,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,MAAM,EAAE;AACrE;;ACpDA;AACA,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAU;AAChE;AACA,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAU;AAWzD;;;;AAIG;AACG,SAAU,mBAAmB,CAAC,IAAmB,EAAE,KAAc,EAAA;AACnE,IAAA,IAAI,IAAI,KAAK,cAAc,EAAE;QACzB,OAAO,KAAK,GAAG,OAAO,GAAG,MAAM;IACnC;AAEA,IAAA,IAAI,IAAI,KAAK,YAAY,EAAE;QACvB,OAAO,KAAK,GAAG,MAAM,GAAG,OAAO;IACnC;AAEA,IAAA,OAAO,IAAI;AACf;AAEA;;;;;AAKG;SACa,aAAa,CAAC,aAA4B,EAAE,YAAkB,EAAE,KAAc,EAAA;IAC1F,MAAM,gBAAgB,GAAG,aAAa,KAAK,cAAc,IAAI,aAAa,KAAK,YAAY;IAE3F,IAAI,CAAC,gBAAgB,EAAE;AACnB,QAAA,OAAO,YAAY;IACvB;AAEA,IAAA,IAAI,YAAY,KAAK,MAAM,EAAE;QACzB,OAAO,KAAK,GAAG,YAAY,GAAG,cAAc;IAChD;AAEA,IAAA,IAAI,YAAY,KAAK,OAAO,EAAE;QAC1B,OAAO,KAAK,GAAG,cAAc,GAAG,YAAY;IAChD;AAEA,IAAA,OAAO,YAAY;AACvB;AAuCM,SAAU,SAAS,CAAI,KAAe,EAAA;IACxC,OAAO,KAAK,KAAK,IAAI;AACzB;AAEM,SAAU,eAAe,CAAC,OAAoD,EAAA;IAChF,OAAO;AACH,QAAA,IAAI,EAAE,iBAAiB;QACvB,OAAO;AACP,QAAA,EAAE,CAAC,IAAI,EAAA;YACH,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;YAEjD,MAAM,iBAAiB,GAAG,cAAc,CAAC,KAAK,EAAE,YAAY,KAAK,CAAC;YAClE,MAAM,aAAa,GAAG,iBAAiB;AACvC,YAAA,MAAM,UAAU,GAAG,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU;AACzD,YAAA,MAAM,WAAW,GAAG,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW;YAE3D,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,4BAA4B,CAAC,SAAS,CAAC;AACzE,YAAA,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC;AAE7E,YAAA,MAAM,YAAY,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,UAAU,GAAG,CAAC;AACpE,YAAA,MAAM,YAAY,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,WAAW,GAAG,CAAC;YAErE,IAAI,CAAC,GAAG,EAAE;YACV,IAAI,CAAC,GAAG,EAAE;AAEV,YAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AACzB,gBAAA,CAAC,GAAG,aAAa,GAAG,YAAY,GAAG,CAAA,EAAG,YAAY,CAAA,EAAA,CAAI;AACtD,gBAAA,CAAC,GAAG,CAAA,EAAG,CAAC,WAAW,IAAI;YAC3B;AAAO,iBAAA,IAAI,UAAU,KAAK,KAAK,EAAE;AAC7B,gBAAA,CAAC,GAAG,aAAa,GAAG,YAAY,GAAG,CAAA,EAAG,YAAY,CAAA,EAAA,CAAI;gBACtD,CAAC,GAAG,CAAA,EAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAA,EAAA,CAAI;YAClD;AAAO,iBAAA,IAAI,UAAU,KAAK,OAAO,EAAE;AAC/B,gBAAA,CAAC,GAAG,CAAA,EAAG,CAAC,WAAW,IAAI;AACvB,gBAAA,CAAC,GAAG,aAAa,GAAG,YAAY,GAAG,CAAA,EAAG,YAAY,CAAA,EAAA,CAAI;YAC1D;AAAO,iBAAA,IAAI,UAAU,KAAK,MAAM,EAAE;gBAC9B,CAAC,GAAG,CAAA,EAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,WAAW,CAAA,EAAA,CAAI;AAC7C,gBAAA,CAAC,GAAG,aAAa,GAAG,YAAY,GAAG,CAAA,EAAG,YAAY,CAAA,EAAA,CAAI;YAC1D;YACA,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QAC7B;KACH;AACL;AAEM,SAAU,4BAA4B,CAAC,SAAoB,EAAA;AAC7D,IAAA,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;AACrD,IAAA,OAAO,CAAC,IAAY,EAAE,KAAc,CAAU;AAClD;;ACvFA;;;;AAIG;AACH,SAAS,YAAY,CAAC,KAA0D,EAAA;AAC5E,IAAA,OAAO,OAAO,KAAK,KAAK,UAAU,GAAG,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;AACvE;AAmCA,MAAM,OAAO,GAAG,MAAK;AACjB,IAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,uBAAuB,CAAC;IAE5D,OAAO;QACH,UAAU,EAAE,oBAAoB,CAAC,UAAU;QAC3C,kBAAkB,EAAE,oBAAoB,CAAC,kBAAkB;QAC3D,WAAW,EAAE,oBAAoB,CAAC,WAAW;QAC7C,MAAM,EAAE,oBAAoB,CAAC,MAAM;QACnC,MAAM,EAAE,oBAAoB,CAAC,MAAM;QACnC,eAAe,EAAE,oBAAoB,CAAC,eAAe;QACrD,YAAY,EAAE,oBAAoB,CAAC,YAAY;QAC/C,YAAY,EAAE,oBAAoB,CAAC;KACtC;AACL,CAAC;AAIM,MAAM,CAAC,iCAAiC,EAAE,kCAAkC,CAAC,GAChF,aAAa,CAA8B,6BAA6B,EAAE,cAAc;MAe/E,uBAAuB,CAAA;IAwUxB,cAAc,GAAA;QAClB,OAAO;AACH,YAAA,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE;AAC3C,YAAA,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE;AAC7B,YAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACjC,YAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE;AAClC,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,KAAK;AACjC,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM;AACtC,YAAA,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK;AACpC,YAAA,kBAAkB,EAAE,IAAI,CAAC,2BAA2B,EAAE;AACtD,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE;AACnD,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;AACjC,YAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;SAC1C;IACL;AAgJA,IAAA,WAAA,GAAA;AA3eiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE3B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;;AAG3B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,2BAA2B,CAAC;AAE7D;;AAEG;AACM,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK;8FAA0B;AAEjD;;;;;;;;AAQG;QACM,IAAA,CAAA,IAAI,GAAG,KAAK,CAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ;iFAAC;AAElE;;;AAGG;QACM,IAAA,CAAA,GAAG,GAAG,KAAK,CAAwB,SAAS;gFAAC;AACrC,QAAA,IAAA,CAAA,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;;AAGrC,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAO,MAAM,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,KAAK,CAAC;yFAAC;AAElH;;;AAGG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,YAAY,GAAG;AAErF;;AAEG;QACM,IAAA,CAAA,KAAK,GAAG,KAAK,CAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,QAAQ;kFAAC;AAE5D;;;AAGG;AACM,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,aAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,YAAY,GAAG;AAEvF;;;AAGG;AACM,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAsB,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,eAAe,GAAG;AAEjH;;;;;AAKG;AACM,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAwB,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,CAAA,EACvF,SAAS,EAAE,gBAAgB,GAC7B;AAEF;;;;;AAKG;QACM,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAoC,SAAS;+FAAC;AAEjF;;;;AAIG;AACc,QAAA,IAAA,CAAA,2BAA2B,GAAG,QAAQ,CAA6B,MAAK;AACrF,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE;;;;YAK1C,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,KAAK,EAAE;AAC/C,gBAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE;YACpE;;;;YAKA,MAAM,MAAM,GAAG,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB;YAEzD,OAAO;AACH,gBAAA,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,MAAM;AAC5B,gBAAA,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,MAAM;AAC9B,gBAAA,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,IAAI;aACjD;QACL,CAAC;wGAAC;AAEF;;;AAGG;AACM,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK;yGAAuD;AACzF;;;AAGG;QACM,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAyC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC;6FAAC;AAE5G;;;;;AAKG;QACM,IAAA,CAAA,MAAM,GAAG,KAAK,CAAuB,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,SAAS;mFAAC;AAE9E;;AAEG;AACM,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAwB,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,8BAAA,EAAA,CAAA,EAC1F,SAAS,EAAE,gBAAgB,GAC7B;AAEF;;AAEG;QACM,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAuB,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,OAAO;6FAAC;AAEhG;;AAEG;QACM,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAyB,IAAI,CAAC,MAAM,CAAC,sBAAsB,IAAI,WAAW;mGAAC;AAElH;;AAEG;QACM,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;QAEvB,IAAA,CAAA,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,cAAc,CAAC;kFAAC;AAE/D;;;;AAIG;QACM,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,KAAK;2FAAC;QAE9B,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,YAAY,KAAK,CAAC;4FAAC;;QAEpG,IAAA,CAAA,eAAe,GAAG,QAAQ,CAC/B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,YAAY,IAAI,CAAC,MAAM,CAAC;4FAClF;AACQ,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;mFAAC;AAC1E,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;mFAAC;AAC1E,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,cAAc,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI;yFAAC;AAE3F,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CACxC,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAc;6FACnG;AAEgB,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;YACvC,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU;YAEhD,IAAI,CAAC,eAAe,EAAE;AAClB,gBAAA,OAAO,QAAQ,CAAC,OAAO;AACnB,oBAAA,MAAM,EAAE,CAAC;AACT,oBAAA,KAAK,EAAE;AACV,iBAAA,CAAC,CAAC;YACP;AAEA,YAAA,OAAO,WAAW,CAAC;AACf,gBAAA,UAAU,EAAE,eAAe;gBAC3B,QAAQ,EAAE,IAAI,CAAC;AAClB,aAAA,CAAC;QACN,CAAC;sFAAC;AAEe,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACtC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAEzC,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACzB,gBAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;YAC/C;YAEA,IAAI,CAAC,QAAQ,EAAE;AACX,gBAAA,OAAO,EAAE;YACb;AAEA,YAAA,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;QACnC,CAAC;qFAAC;AAEe,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC;kGAAC;AAElE,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAC,OAAO;AACrD,YAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE;YAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;;AAE3C,YAAA,WAAW,EAAE,IAAI,CAAC,qBAAqB;SAC1C,CAAC;kGAAC;AAEc,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAA0B,MAAK;AACrE,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,MAAM,cAAc,GAAG,OAAO,MAAM,KAAK,UAAU,GAAG,MAAM,EAAE,GAAG,MAAM;AAEvE,YAAA,IAAI,cAAc,YAAY,UAAU,EAAE;gBACtC,OAAO,cAAc,CAAC,aAAa;YACvC;YAEA,IAAI,cAAc,EAAE;AAChB,gBAAA,OAAO,cAAc;YACzB;AAEA,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,aAAa,IAAI,IAAI;QACnG,CAAC;2FAAC;QAEe,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EAChC,MAAM,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE;AACnC,YAAA,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAI;;gBAEnB,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAC7C,oBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;gBAChC;AAEA,gBAAA,MAAM,EAAE,GAAG,MAAM,CAAC,kBAAkB;;;AAGpC,gBAAA,MAAM,aAAa,GAAG,EAAE,CAAC,KAAK,KAAK,MAAM,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO;AAChE,gBAAA,MAAM,qBAAqB,GAAG,CAAC,aAAa,KAAK,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC;AAEnG,gBAAA,MAAM,cAAc,GAChB,EAAE,CAAC,IAAI,KAAK;AACR,sBAAE;sBACA,IAAI,CAAC;wBACD,GAAG,MAAM,CAAC,qBAAqB;AAC/B,wBAAA,QAAQ,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM;AAC5B,wBAAA,SAAS,EAAE,EAAE,CAAC,KAAK,KAAK,MAAM,GAAG,WAAW,GAAG,KAAK;wBACpD,yBAAyB,EAAE,EAAE,CAAC;AACjC,qBAAA,CAAC;gBAEZ,MAAM,eAAe,GAAG;AACpB,sBAAE;sBACA,KAAK,CAAC;wBACF,GAAG,MAAM,CAAC,qBAAqB;AAC/B,wBAAA,QAAQ,EAAE,EAAE,CAAC,KAAK,KAAK,MAAM;AAC7B,wBAAA,SAAS,EAAE,qBAAqB;;;AAGhC,wBAAA,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,SAAS,GAAG,UAAU,EAAE,GAAG;AACzD,qBAAA,CAAC;;;AAIR,gBAAA,MAAM,mBAAmB,GACrB,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,EAAE,CAAC,KAAK,KAAK,OAAO,IAAI,MAAM,CAAC,KAAK,KAAK;AAC5D,sBAAE,CAAC,eAAe,EAAE,cAAc;AAClC,sBAAE,CAAC,cAAc,EAAE,eAAe,CAAC;gBAE3C,OAAO,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;;oBAEjE,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,SAAS,EAAE,MAAM,CAAC,SAAS;AAC3B,oBAAA,UAAU,EAAE;AACR,wBAAA,MAAM,CAAC,CAAC,KAAK,KAAI;AACb,4BAAA,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,4BAA4B,CAAC,KAAK,CAAC,SAAS,CAAC;AAC/E,4BAAA,MAAM,IAAI,GAAG;;;;AAIT,gCAAA,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC;AAC1D,gCAAA,KAAK,EAAE,WAAW;AAClB,gCAAA,MAAM,EAAE;AACJ,oCAAA,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK;AAClC,oCAAA,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;AACjC,iCAAA;AACD,gCAAA,UAAU,EAAE;AACR,oCAAA,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK;AACjC,oCAAA,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;AAChC;6BACJ;4BACD,MAAM,QAAQ,GACV,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU;4BACzF,MAAM,SAAS,GACX,OAAO,MAAM,CAAC,WAAW,KAAK,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,WAAW;4BAE5F,OAAO;AACH,gCAAA,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC;;;AAG5C,gCAAA,SAAS,EAAE,SAAS;AACpB,gCAAA,aAAa,EAAE;6BAClB;AACL,wBAAA,CAAC,CAAC;AACF,wBAAA,GAAG,mBAAmB;AACtB,wBAAA,IAAI,CAAC;4BACD,GAAG,MAAM,CAAC,qBAAqB;AAC/B,4BAAA,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,KAAI;AAC5D,gCAAA,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,SAAS;AACpE,gCAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK;gCAC5C,YAAY,CAAC,WAAW,CAAC,gCAAgC,EAAE,CAAA,EAAG,cAAc,CAAA,EAAA,CAAI,CAAC;gCACjF,YAAY,CAAC,WAAW,CAAC,iCAAiC,EAAE,CAAA,EAAG,eAAe,CAAA,EAAA,CAAI,CAAC;gCACnF,YAAY,CAAC,WAAW,CAAC,6BAA6B,EAAE,CAAA,EAAG,WAAW,CAAA,EAAA,CAAI,CAAC;gCAC3E,YAAY,CAAC,WAAW,CAAC,8BAA8B,EAAE,CAAA,EAAG,YAAY,CAAA,EAAA,CAAI,CAAC;4BACjF;yBACH,CAAC;AACF,wBAAA,MAAM,CAAC,KAAK;AACR,4BAAAA,KAAe,CAAC;AACZ,gCAAA,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa;gCAC9C,OAAO,EAAE,MAAM,CAAC;6BACnB,CAAC;AACN,wBAAA,eAAe,CAAC;4BACZ,UAAU,EAAE,MAAM,CAAC,UAAU;4BAC7B,WAAW,EAAE,MAAM,CAAC;yBACvB,CAAC;AACF,wBAAA,MAAM,CAAC,gBAAgB;AACnB,4BAAA,IAAI,CAAC;AACD,gCAAA,QAAQ,EAAE,iBAAiB;gCAC3B,GAAG,MAAM,CAAC;6BACb;AACR;AACJ,iBAAA,CAAC;AACN,YAAA,CAAC,GACH;AAwBF;;;;;;;;AAQG;AACc,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,8BAAA,EAAA,CAAA,EAI5C,MAAM,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,SAAS;AAChD,YAAA,WAAW,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,KAAK,IAAI,QAAQ,EAAE,KAAK,GAC5D;AAEF;;AAEG;AACM,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;yFAAC;AAE/D;;AAEG;AACM,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS;YAElD,IAAI,CAAC,SAAS,EAAE;gBACZ;YACJ;AAEA,YAAA,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;YAErD,OAAO;AACH,gBAAA,IAAI,EAAE,IAAY;AAClB,gBAAA,KAAK,EAAE;aACV;QACL,CAAC;sFAAC;AAEF;;;AAGG;QACM,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI;+FAAC;AAEpE;;;;;;AAMG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAA4B,MAAK;YAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI;YAEnC,OAAO,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,KAAK,CAAC;QACxG,CAAC;uFAAC;AAEF;;AAEG;QACM,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK;wFAAC;AAE3C,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACnC,YAAA,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;AAChB,YAAA,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;AAEhB,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAEtD,OAAO;AACH,gBAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE;gBACjC,SAAS,EAAE,KAAK,GAAG,EAAE,GAAG,qBAAqB;AAC7C,gBAAA,QAAQ,EAAE,aAAa;;;;AAIvB,gBAAA,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA,EAAA,CAAI,GAAG,EAAE;AACvC,gBAAA,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA,EAAA,CAAI,GAAG,EAAE;AACxC,gBAAA,iCAAiC,EAAE;AAC/B,oBAAA,GAAG,EAAE,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAC;AACzC,oBAAA,GAAG,EAAE,cAAc,CAAC,iBAAiB,CAAC,EAAE;iBAC3C,CAAC,IAAI,CAAC,GAAG,CAAC;gBACX,sCAAsC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAA,EAAA,CAAI;gBACxF,uCAAuC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAA,EAAA,CAAI;;;;AAK1F,gBAAA,gBAAgB,EAAE,kCAAkC;AACpD,gBAAA,iBAAiB,EAAE,mCAAmC;AACtD,gBAAA,mBAAmB,EAAE,qCAAqC;AAC1D,gBAAA,oBAAoB,EAAE,sCAAsC;AAC5D,gBAAA,oBAAoB,EAAE,2CAA2C;AACjE,gBAAA,qBAAqB,EAAE,4CAA4C;AACnE,gBAAA,oBAAoB,EAAE,sCAAsC;gBAE5D,UAAU,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ;AACxC,gBAAA,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,MAAM;;;;gBAKhE,IAAI,GAAG,EAAE,cAAc,CAAC,IAAI,EAAE,eAAe,IAAI;AAC7C,oBAAA,UAAU,EAAE,QAAQ;AACpB,oBAAA,aAAa,EAAE;iBAClB;aACJ;QACL,CAAC;kFAAC;AAEF;;;;;;;;AAQG;AACO,QAAA,IAAA,CAAA,iBAAiB,GAAoB,QAAQ,CAAC,MAAM,IAAI;8FAAC;AAElD,QAAA,IAAA,CAAA,iBAAiB,GAAG,iBAAiB,CAAC,CAAC,SAAS,KAAI;;AAEjE,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;gBAC3B;YACJ;AAEA,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AAEtB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;YACpC,IAAI,CAAC,MAAM,EAAE;gBACT;YACJ;YAEA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;AAC5F,gBAAA,cAAc,EAAE,IAAI,CAAC,sBAAsB,EAAE,KAAK;AACrD,aAAA,CAAC;YAEF,SAAS,CAAC,OAAO,CAAC;AACtB,QAAA,CAAC,CAAC;AAGE,QAAA,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,KAAI;YAC1C,IAAI,CAAC,YAAY,EAAE;gBACf;YACJ;YAEA,eAAe,CACX,MAAK;AACD,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACtB,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC9B;AACL,QAAA,CAAC,CAAC;IACN;8GAzfS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mCAAA,EAAA,EAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,mCAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,EAAA,SAAA,EAXrB,CAAC,kCAAkC,CAAC,OAAO,CAAC,CAAC,iFA2JT,cAAc,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAhJpD,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAbnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,SAAS,EAAE,CAAC,kCAAkC,CAAC,OAAO,CAAC,CAAC;AACxD,oBAAA,IAAI,EAAE;AACF,wBAAA,mCAAmC,EAAE,EAAE;;;AAGvC,wBAAA,kBAAkB,EAAE,cAAc;AAClC,wBAAA,mBAAmB,EAAE,eAAe;AACpC,wBAAA,2BAA2B,EAAE,iCAAiC;AAC9D,wBAAA,SAAS,EAAE;AACd;AACJ,iBAAA;AAiJiC,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,cAAc,CAAC,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;AA4WlE;;;;;;;;;;;;;;;AAeG;AACG,SAAU,8BAA8B,CAAC,UAAyC,EAAA;AACpF,IAAA,OAAO,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,kCAAkC,CAAC,OAAO,CAAC,CAAC;AACvH;AAEA;;;;;;;;AAQG;AACG,SAAU,gBAAgB,CAAC,IAAY,EAAA;IACzC,OAAO;AACH,QAAA,CAAC,CAAA,QAAA,EAAW,IAAI,CAAA,yBAAA,CAA2B,GAAG,sCAAsC;AACpF,QAAA,CAAC,CAAA,QAAA,EAAW,IAAI,CAAA,wBAAA,CAA0B,GAAG,qCAAqC;AAClF,QAAA,CAAC,CAAA,QAAA,EAAW,IAAI,CAAA,yBAAA,CAA2B,GAAG,sCAAsC;AACpF,QAAA,CAAC,CAAA,QAAA,EAAW,IAAI,CAAA,cAAA,CAAgB,GAAG,kCAAkC;AACrE,QAAA,CAAC,CAAA,QAAA,EAAW,IAAI,CAAA,eAAA,CAAiB,GAAG;KACvC;AACL;;ACjpBA,MAAM,aAAa,GAAuB;AACtC,IAAA,GAAG,EAAE,QAAQ;AACb,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,IAAI,EAAE;CACT;MAUY,cAAc,CAAA;AAR3B,IAAA,WAAA,GAAA;QASqB,IAAA,CAAA,oBAAoB,GAAG,iCAAiC,EAAE;AAE1D,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAEzD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;QAExD,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE,6EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;QAEjD,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,CAAC,8EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;;;AAI1D,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,EAAG,CAAC;qFAAC;AAEtE,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;YACrC,OAAO;AACH,gBAAA,QAAQ,EAAE,UAAU;gBACpB,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAA,EAAA,CAAI,GAAG,SAAS;gBAChG,GAAG,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAA,EAAA,CAAI,GAAG,SAAS;AAC/F,gBAAA,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;AACpB,gBAAA,eAAe,EAAE;AACb,oBAAA,GAAG,EAAE,EAAE;AACP,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,IAAI,EAAE;AACT,iBAAA,CAAC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,EAAG,CAAC;AAClD,gBAAA,SAAS,EAAE;AACP,oBAAA,GAAG,EAAE,kBAAkB;AACvB,oBAAA,KAAK,EAAE,gDAAgD;AACvD,oBAAA,MAAM,EAAE,CAAA,cAAA,CAAgB;AACxB,oBAAA,IAAI,EAAE;AACT,iBAAA,CAAC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,EAAG,CAAC;AAClD,gBAAA,UAAU,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,GAAG,QAAQ,GAAG;aACxE;QACL,CAAC;kFAAC;AAEM,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,CAAC,SAAS,KAAI;AACrC,YAAA,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,EAAE;gBACxC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;AAC7C,gBAAA,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa;AAC1C,gBAAA,gBAAgB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBACxE,QAAQ,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACpG,aAAA,CAAC;AAEF,YAAA,SAAS,CAAC,iBAAiB,CAAC,aAAa,EAAE;YAE3C,SAAS,CAAC,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;QACxC,CAAC;sFAAC;AACL,IAAA;8GAjDY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAR1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,IAAI,EAAE;;AAEF,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,SAAS,EAAE;AACd;AACJ,iBAAA;;;MCnBY,gBAAgB,CAAA;AAR7B,IAAA,WAAA,GAAA;AASI;;;;;AAKG;AACgB,QAAA,IAAA,CAAA,oBAAoB,GAAG,iCAAiC,CAAC,IAAI,CAAC;AAEjF;;;AAGG;AACgB,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,OAAO;AACvC,YAAA,SAAS,EAAE,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,GAAG,MAAM,GAAG;SAChG,CAAC;kFAAC;AACN,IAAA;8GAhBY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,oCAAA,EAAA,iBAAA,EAAA,qCAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE;AACF,wBAAA,kBAAkB,EAAE,oCAAoC;AACxD,wBAAA,mBAAmB,EAAE,qCAAqC;AAC1D,wBAAA,SAAS,EAAE;AACd;AACJ,iBAAA;;;ACIM,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,cAAc,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,eAAe;;ACdnH;;AAEG;;;;"}
|