{"version":3,"names":["flip","offset","shift","size","dynamic","createEffect","createMemo","createSignal","omit","Show","composeRefs","userRef","FloatingNode","useFloatingNodeId","useFloating","arrow","mergeRootProps","resolveClassStyle","usePopoverRootContext","PopoverPositionerContext","composePlacement","side","align","physicalSide","parsePlacement","placement","rawSide","rawAlign","split","PopoverPositioner","props","root","nodeId","sideOffsetValue","sideOffset","alignOffsetValue","alignOffset","arrowPadding","collisionPadding","strategy","positionMethod","arrowRef","current","floating","rootContext","floatingRootContext","middleware","mainAxis","alignmentAxis","padding","apply","rects","availableWidth","availableHeight","elements","els","s","style","setProperty","reference","width","height","element","offsetParent","positionerNode","setPositionerElement","el","opacity","transition","refs","setFloating","mounted","transform","Math","round","x","y","positioned","isPositioned","open","starting","transitionStatus","data","computedSideAlign","computedSide","computedAlign","anchorHidden","arrowStyles","middlewareData","position","styles","left","top","arrowUncentered","centerOffset","positionerContext","state","update","positionerStyle","openNow","mountedNow","visibility","undefined","internal","hidden","data-open","data-closed","data-side","data-align","data-anchor-hidden","userClassStyle","userProps","merged","Tag","as"],"sources":["popover-positioner.tsx"],"sourcesContent":["import { flip, offset, type Placement, shift, size } from \"@floating-ui/dom\";\nimport type { JSX, ValidComponent } from \"@solidjs/web\";\nimport { dynamic } from \"@solidjs/web\";\nimport { createEffect, createMemo, createSignal, omit, Show } from \"solid-js\";\nimport { composeRefs, userRef } from \"../../internals/compose-refs\";\nimport {\n\tFloatingNode,\n\tuseFloatingNodeId,\n} from \"../../internals/floating-ui/components/floating-tree\";\nimport { useFloating } from \"../../internals/floating-ui/hooks/use-floating\";\nimport { arrow } from \"../../internals/floating-ui/middleware/arrow\";\nimport type { MutableRef } from \"../../internals/floating-ui/types\";\nimport { mergeRootProps } from \"../../internals/merge-root-props\";\nimport { resolveClassStyle } from \"../../internals/resolve-class-style\";\nimport type { BaseUIComponentProps } from \"../../internals/types\";\nimport { usePopoverRootContext } from \"../popover-root-context\";\nimport {\n\ttype PopoverAlign,\n\tPopoverPositionerContext,\n\ttype PopoverPositionerContextValue,\n\ttype PopoverSide,\n} from \"./popover-positioner-context\";\n\nexport interface PopoverPositionerState {\n\t/** Whether the popover is currently open. */\n\topen: boolean;\n\t/** The side of the anchor the component is placed on. */\n\tside: PopoverSide;\n\t/** The alignment of the component relative to the anchor. */\n\talign: PopoverAlign;\n\t/** Whether the anchor element is hidden. */\n\tanchorHidden: boolean;\n}\n\nexport interface PopoverPositionerProps\n\textends BaseUIComponentProps<\"div\", PopoverPositionerState> {\n\t/**\n\t * Tag/component to render. Defaults to `\"div\"`. Replaces the\n\t * pre-spike `render` prop (axis G).\n\t */\n\tas?: ValidComponent;\n\t/**\n\t * Which side of the trigger to place the popover on.\n\t * @default \"bottom\"\n\t */\n\tside?: PopoverSide | undefined;\n\t/**\n\t * How to align the popover along the chosen side.\n\t * @default \"center\"\n\t */\n\talign?: PopoverAlign | undefined;\n\t/**\n\t * Gap (px) between the trigger and the popover.\n\t * @default 0\n\t */\n\tsideOffset?: number | undefined;\n\t/**\n\t * Shift (px) along the side for finer `start` / `end` alignment.\n\t * @default 0\n\t */\n\talignOffset?: number | undefined;\n\t/**\n\t * Padding (px) between the arrow element and the positioner's edges.\n\t * @default 5\n\t */\n\tarrowPadding?: number | undefined;\n\t/**\n\t * Padding (px) between the positioner and the collision boundary.\n\t * @default 5\n\t */\n\tcollisionPadding?: number | undefined;\n\t/**\n\t * `absolute` (default) or `fixed` CSS positioning strategy.\n\t * @default \"absolute\"\n\t */\n\tpositionMethod?: \"absolute\" | \"fixed\" | undefined;\n}\n\n// ---------------------------------------------------------------------------\n// Placement helpers\n// ---------------------------------------------------------------------------\n\n/** Compose floating-ui's `Placement` string from `side` + `align`. */\nfunction composePlacement(side: PopoverSide, align: PopoverAlign): Placement {\n\t// Solid port: `inline-start` / `inline-end` are dir-sensitive aliases\n\t// provided for API parity; we map them to logical `left` / `right` here\n\t// and let consumers plug in a DirectionProvider reactive transform if\n\t// they need the full logical-property behavior. The React source does the\n\t// same mapping inside `useAnchorPositioning`.\n\tconst physicalSide: \"top\" | \"right\" | \"bottom\" | \"left\" =\n\t\tside === \"inline-start\" ? \"left\" : side === \"inline-end\" ? \"right\" : side;\n\tif (align === \"center\") return physicalSide as Placement;\n\treturn `${physicalSide}-${align}` as Placement;\n}\n\n/** Split floating-ui's placement back into `side` + `align`. */\nfunction parsePlacement(placement: Placement): {\n\tside: PopoverSide;\n\talign: PopoverAlign;\n} {\n\tconst [rawSide, rawAlign] = placement.split(\"-\") as [\n\t\t\"top\" | \"right\" | \"bottom\" | \"left\",\n\t\t\"start\" | \"end\" | undefined,\n\t];\n\treturn {\n\t\tside: rawSide,\n\t\talign: rawAlign ?? \"center\",\n\t};\n}\n\n/**\n * Positions the popover against the trigger. Renders a `<div>` element.\n *\n * ### React → Solid deviations\n *\n * - **No `anchor` prop**. React's `useAnchorPositioning` supports custom\n *   anchor elements / refs / virtual-element functions; the Solid port\n *   anchors to the trigger element exclusively (matches the common-case\n *   usage). Easy to extend later.\n * - **No `collisionBoundary` prop**. Uses the viewport by default via\n *   `@floating-ui/dom`'s `shift`/`flip` middleware defaults.\n * - **No `sticky` / `disableAnchorTracking` / `collisionAvoidance`**. The\n *   floating-ui `autoUpdate` loop is always enabled when the popup is\n *   mounted.\n * - **No `adaptiveOrigin` / viewport integration**. Viewport is not a\n *   ported component.\n * - **No `useAnchoredPopupScrollLock`**. Modal scroll-lock is deferred —\n *   `modal={true}` still traps focus and blocks outside pointer events via\n *   `FloatingFocusManager` + `useDismiss`, just without scroll locking.\n * - **No `InternalBackdrop` cutout**. The user-facing `<Popover.Backdrop>`\n *   still works; the internal non-visible backdrop used to block outside\n *   pointer events during modal mode is skipped.\n *\n * `happy-dom` returns 0 for every geometry function, so assertions on the\n * computed `--anchor-width` / `left` / `top` values are not meaningful. Real\n * positioning correctness needs browser-level coverage.\n */\nexport function PopoverPositioner(props: PopoverPositionerProps): JSX.Element {\n\tconst root = usePopoverRootContext();\n\tconst nodeId = useFloatingNodeId();\n\n\tconst side = (): PopoverSide => props.side ?? \"bottom\";\n\tconst align = (): PopoverAlign => props.align ?? \"center\";\n\tconst sideOffsetValue = (): number => props.sideOffset ?? 0;\n\tconst alignOffsetValue = (): number => props.alignOffset ?? 0;\n\tconst arrowPadding = (): number => props.arrowPadding ?? 5;\n\tconst collisionPadding = (): number => props.collisionPadding ?? 5;\n\tconst strategy = (): \"absolute\" | \"fixed\" =>\n\t\tprops.positionMethod ?? \"absolute\";\n\n\t// Arrow ref slot — `<Popover.Arrow>` writes it on mount. We seed `null`\n\t// and the arrow middleware tolerates it (returns empty result).\n\tconst arrowRef: MutableRef<HTMLElement | null> = { current: null };\n\n\t// `useFloating` needs a reactive placement. We re-read `side` / `align`\n\t// inside a memo and feed it to the options as a plain value (no tracking\n\t// needed since `useFloating` reads every field through a getter-based\n\t// options object). Here the options go directly into `useFloating` so we\n\t// wrap them in getters.\n\tconst floating = useFloating({\n\t\trootContext: root.floatingRootContext,\n\t\tnodeId,\n\t\tget placement() {\n\t\t\treturn composePlacement(side(), align());\n\t\t},\n\t\tget strategy() {\n\t\t\treturn strategy();\n\t\t},\n\t\tget middleware() {\n\t\t\treturn [\n\t\t\t\toffset({\n\t\t\t\t\tmainAxis: sideOffsetValue(),\n\t\t\t\t\talignmentAxis: alignOffsetValue(),\n\t\t\t\t}),\n\t\t\t\tflip({ padding: collisionPadding() }),\n\t\t\t\tshift({ padding: collisionPadding() }),\n\t\t\t\tsize({\n\t\t\t\t\tpadding: collisionPadding(),\n\t\t\t\t\tapply({ rects, availableWidth, availableHeight, elements: els }) {\n\t\t\t\t\t\tconst s = els.floating.style;\n\t\t\t\t\t\ts.setProperty(\"--anchor-width\", `${rects.reference.width}px`);\n\t\t\t\t\t\ts.setProperty(\"--anchor-height\", `${rects.reference.height}px`);\n\t\t\t\t\t\ts.setProperty(\"--available-width\", `${availableWidth}px`);\n\t\t\t\t\t\ts.setProperty(\"--available-height\", `${availableHeight}px`);\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tarrow({\n\t\t\t\t\telement: arrowRef.current,\n\t\t\t\t\tpadding: arrowPadding(),\n\t\t\t\t\toffsetParent: \"real\",\n\t\t\t\t}),\n\t\t\t];\n\t\t},\n\t});\n\n\t// Positioner ref — writes into floating-ui's `setFloating` so the\n\t// positioning engine knows about our element.\n\tlet positionerNode: HTMLElement | null = null;\n\tconst setPositionerElement = (el: HTMLElement | null): void => {\n\t\tpositionerNode = el;\n\t\t// Start hidden the instant the element exists — in the ref callback,\n\t\t// which runs during DOM construction (before first paint). The reveal\n\t\t// effect below alone is too late: in Solid 2 its apply can run AFTER the\n\t\t// first paint, so the popup flashes at (0,0) before opacity is set. This\n\t\t// guarantees opacity:0 is on the element from its very first frame.\n\t\t// `transition: none` for the same reason: `computePosition`'s\n\t\t// getBoundingClientRect forces a style/layout flush while the element is\n\t\t// still at `transform: none`, so a consumer transition on\n\t\t// `transform`/`top`/`left` would animate the first positioning write —\n\t\t// the popup visibly flies in from the document origin. Mirrors Base UI's\n\t\t// `getDisabledMountTransitionStyles` (transition: none while \"starting\");\n\t\t// the reveal effect clears it when the status leaves \"starting\".\n\t\tif (el) {\n\t\t\tel.style.opacity = \"0\";\n\t\t\tel.style.transition = \"none\";\n\t\t}\n\t\tfloating.refs.setFloating(el);\n\t};\n\n\t// Mirror BOTH the transform and the reveal imperatively, in ONE effect, so\n\t// they land in the SAME DOM write (no frame where the popup is visible at\n\t// the stale (0,0) transform — the teleport). This is exactly Base UI's model\n\t// (`useAnchorPositioning`): it sets `opacity:0` until `isPositioned` and\n\t// applies the transform + opacity together as one reactive `floatingStyles`\n\t// unit. We must do it imperatively because Solid 2's `style` spread\n\t// subscribes `get style()` late and misses the async `isPositioned`/`x`/`y`\n\t// flips from `computePosition().then()`. `opacity` (not `visibility`) matches\n\t// Base UI and avoids fighting the reactive `visibility` in the style object.\n\t// `|| !open` keeps it opaque while closing (`isPositioned` resets on\n\t// `open=false`) so exit transitions aren't clipped.\n\tcreateEffect(\n\t\t() => {\n\t\t\tif (!root.mounted()) return null;\n\t\t\treturn {\n\t\t\t\ttransform: `translate(${Math.round(floating.x)}px, ${Math.round(floating.y)}px)`,\n\t\t\t\tpositioned: floating.isPositioned || !root.open(),\n\t\t\t\tstarting: root.transitionStatus() === \"starting\",\n\t\t\t};\n\t\t},\n\t\t(data) => {\n\t\t\tif (!data || !positionerNode) return;\n\t\t\tpositionerNode.style.transform = data.transform;\n\t\t\tpositionerNode.style.opacity = data.positioned ? \"\" : \"0\";\n\t\t\t// Suppress consumer position transitions until the mount settles\n\t\t\t// (see the ref callback above); re-enable after \"starting\" so anchor\n\t\t\t// tracking still animates.\n\t\t\tpositionerNode.style.transition = data.starting ? \"none\" : \"\";\n\t\t},\n\t);\n\n\t// `side` / `align` parsed from the computed placement (may differ from\n\t// the requested one after `flip` kicks in).\n\tconst computedSideAlign = createMemo<{\n\t\tside: PopoverSide;\n\t\talign: PopoverAlign;\n\t}>(() => parsePlacement(floating.placement));\n\n\tconst computedSide = (): PopoverSide => computedSideAlign().side;\n\tconst computedAlign = (): PopoverAlign => computedSideAlign().align;\n\n\t// `anchorHidden` reflects floating-ui's `hide` middleware, which we do\n\t// not currently include — default to `false`. Reserved here so the\n\t// public state shape + data-attrs match React.\n\tconst [anchorHidden] = createSignal<boolean>(false);\n\n\t// Arrow middleware data — the `arrow` middleware writes `x`/`y` into\n\t// `middlewareData.arrow`. Expose reactive styles / `uncentered` for the\n\t// arrow component.\n\tconst arrowStyles = createMemo<JSX.CSSProperties>(() => {\n\t\tconst data = floating.middlewareData.arrow as\n\t\t\t| { x?: number; y?: number; centerOffset?: number }\n\t\t\t| undefined;\n\t\tif (!data) return { position: \"absolute\" };\n\t\tconst styles: JSX.CSSProperties = { position: \"absolute\" };\n\t\tif (data.x != null) styles.left = `${data.x}px`;\n\t\tif (data.y != null) styles.top = `${data.y}px`;\n\t\treturn styles;\n\t});\n\n\tconst arrowUncentered = createMemo<boolean>(() => {\n\t\tconst data = floating.middlewareData.arrow as\n\t\t\t| { centerOffset?: number }\n\t\t\t| undefined;\n\t\treturn (data?.centerOffset ?? 0) !== 0;\n\t});\n\n\tconst positionerContext: PopoverPositionerContextValue = {\n\t\tside: computedSide,\n\t\talign: computedAlign,\n\t\tanchorHidden,\n\t\tarrowRef,\n\t\tarrowStyles,\n\t\tarrowUncentered,\n\t};\n\n\tconst state = createMemo<PopoverPositionerState>(() => ({\n\t\topen: root.open(),\n\t\tside: computedSide(),\n\t\talign: computedAlign(),\n\t\tanchorHidden: anchorHidden(),\n\t}));\n\n\t// Re-run arrow middleware when the arrow ref lands, otherwise the\n\t// floating-ui `arrow` middleware sees `element: null` forever. React's\n\t// `useAnchorPositioning` handles this through `useMergeRefs` + effect;\n\t// the Solid port uses a fresh recompute on `root.mounted()` transitions.\n\tcreateEffect(\n\t\t() => root.mounted(),\n\t\t() => {\n\t\t\tfloating.update();\n\t\t},\n\t);\n\n\tconst positionerStyle = createMemo<JSX.CSSProperties>(() => {\n\t\tconst openNow = root.open();\n\t\tconst mountedNow = root.mounted();\n\t\treturn {\n\t\t\tposition: strategy(),\n\t\t\ttop: \"0\",\n\t\t\tleft: \"0\",\n\t\t\t// Visibility is owned by the imperative effect above (the reactive\n\t\t\t// spread can't track the `isPositioned` flip). Keep the not-mounted\n\t\t\t// hidden here for keep-mounted popups; when mounted, leave it unset\n\t\t\t// so the imperative effect controls it.\n\t\t\tvisibility: mountedNow ? undefined : \"hidden\",\n\t\t\t\"pointer-events\": openNow ? undefined : \"none\",\n\t\t};\n\t});\n\n\tconst internal = {\n\t\tget style() {\n\t\t\treturn positionerStyle();\n\t\t},\n\t\tget hidden() {\n\t\t\treturn !root.open();\n\t\t},\n\t\tget \"data-open\"() {\n\t\t\treturn state().open ? \"\" : undefined;\n\t\t},\n\t\tget \"data-closed\"() {\n\t\t\treturn state().open ? undefined : \"\";\n\t\t},\n\t\tget \"data-side\"() {\n\t\t\treturn state().side;\n\t\t},\n\t\tget \"data-align\"() {\n\t\t\treturn state().align;\n\t\t},\n\t\tget \"data-anchor-hidden\"() {\n\t\t\treturn state().anchorHidden ? \"\" : undefined;\n\t\t},\n\t};\n\n\tconst userClassStyle = resolveClassStyle(props, () => state());\n\n\tconst userProps = omit(\n\t\tprops,\n\t\t\"as\",\n\t\t\"class\",\n\t\t\"style\",\n\t\t\"attrs\",\n\n\t\t\"side\",\n\t\t\"align\",\n\t\t\"sideOffset\",\n\t\t\"alignOffset\",\n\t\t\"arrowPadding\",\n\t\t\"collisionPadding\",\n\t\t\"positionMethod\",\n\t);\n\n\tlet merged: Record<string, unknown> = mergeRootProps(\n\t\tinternal,\n\t\tuserClassStyle,\n\t);\n\tmerged = mergeRootProps(merged, userProps);\n\n\tconst Tag = dynamic(() => props.as ?? \"div\");\n\treturn (\n\t\t<FloatingNode id={nodeId}>\n\t\t\t<PopoverPositionerContext value={positionerContext}>\n\t\t\t\t<Show when={root.mounted()}>\n\t\t\t\t\t<Tag\n\t\t\t\t\t\t{...merged}\n\t\t\t\t\t\tref={composeRefs(setPositionerElement, userRef(props))}\n\t\t\t\t\t/>\n\t\t\t\t</Show>\n\t\t\t</PopoverPositionerContext>\n\t\t</FloatingNode>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}