{"version":3,"names":["getNodeName","isHTMLElement","isWebKit","createEffect","onCleanup","createChangeEventDetails","REASONS","activeElement","contains","getTarget","ownerDocument","ownerWindow","FocusGuard","createStableCallback","AnimationFrame","useIsoLayoutEffect","Timeout","createAttribute","getFloatingFocusElement","isTypeableCombobox","isTypeableElement","enqueueFocus","isVirtualClick","isVirtualPointerEvent","stopEvent","markOthers","getNodeAncestors","getNodeChildren","focusable","getNextTabbable","getPreviousTabbable","isOutsideEvent","isTabbable","tabbable","usePortalContext","useFloatingTree","resolveRef","maybeRef","current","getEventType","event","lastInteractionType","win","KeyboardEvent","FocusEvent","pointerType","MouseEvent","detail","LIST_LIMIT","previouslyFocusedElements","clearDisconnectedPreviouslyFocusedElements","filter","entry","deref","isConnected","addPreviouslyFocusedElement","element","push","WeakRef","length","slice","getPreviouslyFocusedElement","getFirstTabbableElement","container","isFocusable","checkVisibility","rect","getBoundingClientRect","width","height","handleTabIndex","floatingFocusElement","orderRef","hasAttribute","includes","getAttribute","focusableElements","tabbableContent","dataTabIndex","startsWith","tabIndex","setAttribute","CLICK_TRIGGER_IDENTIFIER","FloatingFocusManager","props","disabled","initialFocus","returnFocusProp","returnFocus","restoreFocus","modal","closeOnFocusOut","openInteractionType","rootStore","context","dataRef","events","getNodeId","floatingContext","nodeId","ignoreInitialFocus","isUntrappedTypeableCombobox","useState","tree","externalTree","portalContext","preventReturnFocusRef","isPointerDownRef","pointerDownOutsideRef","lastFocusedTabbableRef","closeTypeRef","lastInteractionTypeRef","beforeGuardRef","afterGuardRef","blurTimeout","pointerDownTimeout","restoreFocusFrame","clear","cancel","isInsidePortal","getFloatingFocus","getTabbableContent","getResolvedInsideElements","getInsideElements","isDisabled","isModal","undefined","onKeyDown","key","doc","addEventListener","removeEventListener","open","floating","domReference","clearPointerDownOutside","onPointerDown","target","insideElements","pointerTargetInside","portalNode","some","closest","isCloseOnFocusOut","handlePointerDown","start","handleFocusIn","handleFocusOutside","relatedTarget","currentTarget","queueMicrotask","triggers","triggerElements","isRelatedFocusGuard","beforeInsideRef","afterInsideRef","beforeOutsideRef","afterOutsideRef","previousFocusableElement","nextFocusableElement","movedToUnrelatedNode","hasElement","hasMatchingElement","trigger","nodesRef","find","node","elements","body","focus","request","prevTabbable","nodeToFocus","insideReactTree","setOpen","focusOut","markInsideReactTree","domReferenceElement","cleanups","cleanup","portalNodes","Array","from","querySelectorAll","ancestors","rootAncestorComboboxDomReference","controlInsideElements","x","ariaHiddenCleanup","ariaHidden","mark","markerInsideElements","markerCleanup","prevFocus","initialFocusValueOrFn","resolvedInitialFocus","focusAlreadyInsideFloatingEl","getDefaultFocusElement","elToFocus","preventScroll","onOpenChangeLocal","details","nativeEvent","reason","triggerHover","type","outsidePress","nested","isPreventScrollSupported","createElement","on","getReturnElement","returnFocusValueOrFn","resolvedReturnFocusValue","el","fallback","off","activeEl","isFocusInsideFloatingTree","returnElement","tabbableReturnElement","hasExplicitReturnFocus","blur","setFocusManagerState","onOpenChange","floatingFocus","setBeforeGuardRef","beforeContentFocusGuardRef","setAfterGuardRef","shouldRenderGuards","onBeforeGuardFocus","els","sync","nextTabbable","onAfterGuardFocus","children"],"sources":["floating-focus-manager.tsx"],"sourcesContent":["import type { JSX } from \"@solidjs/web\";\n/**\n * Stage 5.2 port of Base UI React's `FloatingFocusManager`\n * (`base-ui/packages/react/src/floating-ui-react/components/FloatingFocusManager.tsx`).\n *\n * Despite living at `components/FocusTrap.tsx`-style paths in older\n * drafts, the React source filename used here is `FloatingFocusManager.tsx`\n * — confirmed by the `export function FloatingFocusManager(...)` declaration.\n *\n * Feature parity (1:1 with React):\n *  - Invisible `FocusGuard` sentinels (before / after the floating subtree)\n *    that catch Tab / Shift+Tab at the trap boundaries and redirect focus\n *    (wrap-around inside a modal; jump to the next / previous tabbable outside\n *    the portal for non-modal).\n *  - `initialFocus`: `boolean | HTMLElement | RefObject<HTMLElement> |\n *    ((type) => ...)`. `false` skips auto-focus; default picks the first\n *    tabbable element inside the floating container (or the container\n *    itself when empty).\n *  - `returnFocus`: same shape — restores focus to the trigger (or the\n *    `getPreviouslyFocusedElement()` fallback) when the floating element\n *    unmounts / closes. Virtual clicks (and `mouseleave`-driven hover close)\n *    skip return-focus to avoid unwanted viewport scrolls.\n *  - `restoreFocus`: `boolean | 'popup'`. When focus gets lost inside the\n *    subtree (e.g. the previously focused element is removed mid-session),\n *    restores to the last tabbable — or directly to the floating container\n *    with `'popup'`.\n *  - `modal`: modal (true) traps focus using `markOthers` — siblings get\n *    `aria-hidden=\"true\"` plus the `data-quoin-inert` marker. Non-modal\n *    (false) only manages initial / return focus + optional\n *    `closeOnFocusOut`.\n *  - `closeOnFocusOut`: when focus escapes the floating subtree (and the\n *    target isn't a sibling trigger, portal guard, child floating node, or\n *    ancestor combobox), dispatches `setOpen(false, ..., 'focus-out')`.\n *  - `disabled`: full no-op pass-through.\n *  - `nextFocusableElement` / `previousFocusableElement`: overrides for the\n *    outside Tab / Shift+Tab targets (used by combobox / navigation-menu).\n *  - `beforeContentFocusGuardRef`: external ref to the before-guard so\n *    consumers can focus the popup programmatically.\n *  - `externalTree`: escape-hatch `FloatingTreeStore` override (matches\n *    `useDismiss`).\n *  - `getInsideElements`: additional elements to treat as part of the\n *    floating subtree for `aria-hidden` / focus-escape calculations.\n *  - Nested-tree pause: the effect that installs document listeners is\n *    keyed on `open` and on the floating-focus element; child\n *    `FloatingFocusManager`s nest inside the same tree and each install\n *    their own listeners — the parent's `closeOnFocusOut` check excludes\n *    descendants via `getNodeChildren()`, so a focus move into a nested\n *    open floating element does NOT trigger the parent's close-on-focus-out.\n *    This mirrors React 1:1.\n *\n * ### React → Solid deviations\n *\n * 1. `useRef` → `MutableRef<T>` (plain `{ current }` shape).\n * 2. `useEffect` → `createEffect` + `onCleanup`. Each original React\n *    effect is mapped to a Solid `createEffect` whose tracked reads\n *    replace the React dep array.\n * 3. `useLayoutEffect` → `useIsoLayoutEffect` (alias of\n *    `createRenderEffect`), which runs compute / apply synchronously\n *    during the render phase — matching `useLayoutEffect` timing.\n * 4. `useMergedRefs` has no Solid equivalent — ref callbacks are just\n *    plain functions here. Each guard sets its own internal slot plus\n *    propagates to the consumer's `beforeContentFocusGuardRef` or the\n *    `usePortalContext()` before/after-inside refs.\n * 5. `useValueAsRef` collapses to plain variables captured by closure\n *    — Solid component bodies don't re-render, so the props reference\n *    captured at setup is the always-current one. For props that might\n *    be reactive (Solid signals on parent components), we read them\n *    through a stable callback.\n * 6. `useStableCallback` → `createStableCallback`.\n * 7. Shadow-DOM-safe `contains()` / `getTarget` / `activeElement` from\n *    `src/internals/dom/*`.\n * 8. React's `FocusGuard` component is re-implemented inline as the\n *    `FocusGuard` helper (no separate file — it's tiny).\n * 9. The React port imports `usePortalContext` from `./FloatingPortal`.\n *    The Solid port's `FloatingPortal` is being ported in parallel\n *    (Stage 5.1); to keep this file unblocked, we declare a local\n *    `FloatingPortalContext` (a null-default `createContext`) +\n *    `usePortalContext` helper here. When the sibling port lands it\n *    will re-export these (or adopt the same shape) so the import path\n *    stays stable. Follow-up: point `FloatingPortal.tsx` at this\n *    context or vice-versa once both are merged.\n * 10. The `openInteractionType` prop is accepted; our `InteractionType`\n *     type mirrors Base UI React's `useEnhancedClickHandler`-declared\n *     union. Because `@base-ui/utils` isn't available in the Solid port,\n *     we inline the union here.\n *\n * Reason strings dispatched:\n *   - `store.setOpen(false, createChangeEventDetails(REASONS.focusOut, event))`\n *     on focus-out (matches `\"focus-out\"` — see `REASONS.focusOut` in\n *     `src/internals/change-event-details.ts`).\n *\n * Deferrals: real-browser :focus-visible, real focus-scroll prevention\n * probing inside iframes, portal-sentinel integration validation.\n */\n\nimport { getNodeName, isHTMLElement, isWebKit } from \"@floating-ui/utils/dom\";\nimport { createEffect, onCleanup } from \"solid-js\";\nimport { createChangeEventDetails, REASONS } from \"../../change-event-details\";\nimport { activeElement } from \"../../dom/active-element\";\nimport { contains } from \"../../dom/contains\";\nimport { getTarget } from \"../../dom/get-target\";\nimport { ownerDocument } from \"../../dom/owner-document\";\nimport { ownerWindow } from \"../../dom/owner-window\";\nimport { FocusGuard } from \"../../popups/focus-guard\";\nimport { createStableCallback } from \"../../stable-callback\";\nimport { AnimationFrame } from \"../../use-animation-frame\";\nimport { useIsoLayoutEffect } from \"../../use-iso-layout-effect\";\nimport { Timeout } from \"../../use-timeout\";\nimport type {\n\tFloatingContext,\n\tFloatingRootContext,\n\tMutableRef,\n} from \"../types\";\nimport { createAttribute } from \"../utils/create-attribute\";\nimport {\n\tgetFloatingFocusElement,\n\tisTypeableCombobox,\n\tisTypeableElement,\n} from \"../utils/element\";\nimport { enqueueFocus } from \"../utils/enqueue-focus\";\nimport {\n\tisVirtualClick,\n\tisVirtualPointerEvent,\n\tstopEvent,\n} from \"../utils/event\";\nimport { markOthers } from \"../utils/mark-others\";\nimport { getNodeAncestors, getNodeChildren } from \"../utils/nodes\";\nimport {\n\ttype FocusableElement,\n\tfocusable,\n\tgetNextTabbable,\n\tgetPreviousTabbable,\n\tisOutsideEvent,\n\tisTabbable,\n\ttabbable,\n} from \"../utils/tabbable\";\nimport { usePortalContext } from \"./floating-portal\";\nimport type { FloatingUIOpenChangeDetails } from \"./floating-root-store\";\nimport { useFloatingTree } from \"./floating-tree\";\nimport type { FloatingTreeStore } from \"./floating-tree-store\";\n\n// ---------------------------------------------------------------------------\n// Interaction type — inlined from Base UI React's `useEnhancedClickHandler`.\n// ---------------------------------------------------------------------------\n\n/**\n * Interaction type used to open / close a floating element. Mirrors\n * `InteractionType` from `@base-ui/utils/useEnhancedClickHandler`.\n */\nexport type InteractionType = \"mouse\" | \"touch\" | \"pen\" | \"keyboard\" | \"\";\n\n// ---------------------------------------------------------------------------\n// Local helpers — 1:1 with the React source.\n// ---------------------------------------------------------------------------\n\nfunction resolveRef<T extends HTMLElement | null | undefined>(\n\tmaybeRef: T | MutableRef<T> | null | undefined,\n): T | null {\n\tif (maybeRef == null) {\n\t\treturn null;\n\t}\n\tif (typeof maybeRef === \"object\" && \"current\" in maybeRef) {\n\t\treturn maybeRef.current;\n\t}\n\treturn maybeRef as T;\n}\n\nfunction getEventType(\n\tevent: Event,\n\tlastInteractionType?: InteractionType,\n): InteractionType {\n\tconst win = ownerWindow(getTarget(event) as Node | null) as Window &\n\t\ttypeof globalThis;\n\tif (event instanceof win.KeyboardEvent) {\n\t\treturn \"keyboard\";\n\t}\n\tif (event instanceof win.FocusEvent) {\n\t\treturn lastInteractionType || \"keyboard\";\n\t}\n\tif (\"pointerType\" in event) {\n\t\treturn (\n\t\t\t((event as PointerEvent).pointerType as InteractionType) || \"keyboard\"\n\t\t);\n\t}\n\tif (\"touches\" in event) {\n\t\treturn \"touch\";\n\t}\n\tif (event instanceof win.MouseEvent) {\n\t\treturn (\n\t\t\tlastInteractionType ||\n\t\t\t((event as MouseEvent).detail === 0 ? \"keyboard\" : \"mouse\")\n\t\t);\n\t}\n\treturn \"\";\n}\n\nconst LIST_LIMIT = 20;\nlet previouslyFocusedElements: WeakRef<Element>[] = [];\n\nfunction clearDisconnectedPreviouslyFocusedElements(): void {\n\tpreviouslyFocusedElements = previouslyFocusedElements.filter(\n\t\t(entry) => entry.deref()?.isConnected,\n\t);\n}\n\nfunction addPreviouslyFocusedElement(\n\telement: Element | null | undefined,\n): void {\n\tclearDisconnectedPreviouslyFocusedElements();\n\tif (element && getNodeName(element) !== \"body\") {\n\t\tpreviouslyFocusedElements.push(new WeakRef(element));\n\t\tif (previouslyFocusedElements.length > LIST_LIMIT) {\n\t\t\tpreviouslyFocusedElements = previouslyFocusedElements.slice(-LIST_LIMIT);\n\t\t}\n\t}\n}\n\nfunction getPreviouslyFocusedElement(): Element | undefined {\n\tclearDisconnectedPreviouslyFocusedElements();\n\treturn previouslyFocusedElements[\n\t\tpreviouslyFocusedElements.length - 1\n\t]?.deref();\n}\n\nfunction getFirstTabbableElement(container: Element | null): Element | null {\n\tif (!container) {\n\t\treturn null;\n\t}\n\tif (isTabbable(container)) {\n\t\treturn container;\n\t}\n\treturn tabbable(container)[0] || container;\n}\n\nfunction isFocusable(element: Element | null): boolean {\n\tif (!element?.isConnected) {\n\t\treturn false;\n\t}\n\tif (typeof (element as HTMLElement).checkVisibility === \"function\") {\n\t\treturn (element as HTMLElement).checkVisibility();\n\t}\n\t// Fall back to the bounding-client-rect heuristic. `isElementVisible` lives\n\t// in `utils/composite.ts` but isn't re-exported by the element bundle —\n\t// accessing the raw rect here keeps the dependency graph small.\n\tconst rect = (element as HTMLElement).getBoundingClientRect?.();\n\treturn !!rect && rect.width > 0 && rect.height > 0;\n}\n\nfunction handleTabIndex(\n\tfloatingFocusElement: HTMLElement,\n\torderRef: MutableRef<Array<\"reference\" | \"floating\" | \"content\">>,\n): void {\n\tif (\n\t\tfloatingFocusElement.hasAttribute(\"tabindex\") &&\n\t\t!floatingFocusElement.hasAttribute(\"data-tabindex\")\n\t) {\n\t\treturn;\n\t}\n\n\tif (\n\t\t!orderRef.current.includes(\"floating\") &&\n\t\t!floatingFocusElement.getAttribute(\"role\")?.includes(\"dialog\")\n\t) {\n\t\treturn;\n\t}\n\n\tconst focusableElements = focusable(floatingFocusElement);\n\tconst tabbableContent = focusableElements.filter((element) => {\n\t\tconst dataTabIndex = element.getAttribute(\"data-tabindex\") || \"\";\n\t\treturn (\n\t\t\tisTabbable(element) ||\n\t\t\t(element.hasAttribute(\"data-tabindex\") && !dataTabIndex.startsWith(\"-\"))\n\t\t);\n\t});\n\tconst tabIndex = floatingFocusElement.getAttribute(\"tabindex\");\n\n\tif (orderRef.current.includes(\"floating\") || tabbableContent.length === 0) {\n\t\tif (tabIndex !== \"0\") {\n\t\t\tfloatingFocusElement.setAttribute(\"tabindex\", \"0\");\n\t\t}\n\t} else if (\n\t\ttabIndex !== \"-1\" ||\n\t\t(floatingFocusElement.hasAttribute(\"data-tabindex\") &&\n\t\t\tfloatingFocusElement.getAttribute(\"data-tabindex\") !== \"-1\")\n\t) {\n\t\tfloatingFocusElement.setAttribute(\"tabindex\", \"-1\");\n\t\tfloatingFocusElement.setAttribute(\"data-tabindex\", \"-1\");\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// `FloatingFocusManager`\n//\n// Trap-boundary `FocusGuard` sentinels come from the shared module at\n// `src/internals/popups/focus-guard.tsx` (imported above), which handles\n// the Safari `role=\"button\"` VoiceOver workaround that the earlier inline\n// helper deferred.\n// ---------------------------------------------------------------------------\n\nexport interface FloatingFocusManagerProps {\n\tchildren: JSX.Element;\n\t/**\n\t * The floating context returned from `useFloatingRootContext`.\n\t */\n\tcontext: FloatingRootContext | FloatingContext;\n\t/**\n\t * The interaction type used to open the floating element.\n\t */\n\topenInteractionType?: InteractionType | null | undefined;\n\t/**\n\t * Whether or not the focus manager should be disabled. Useful to delay\n\t * focus management until after a transition completes or some other\n\t * conditional state.\n\t * @default false\n\t */\n\tdisabled?: boolean | undefined;\n\t/**\n\t * Determines the element to focus when the floating element is opened.\n\t *\n\t * - `false`: Do not move focus.\n\t * - `true`: Move focus based on the default behavior (first tabbable\n\t *   element or floating element).\n\t * - `HTMLElement` / `RefObject<HTMLElement>`: Move focus to that element.\n\t * - `function`: Called with the interaction type; returns an element,\n\t *   `true`, `null`, `false`, or `undefined` to control the behavior.\n\t * @default true\n\t */\n\tinitialFocus?:\n\t\t| boolean\n\t\t| HTMLElement\n\t\t| MutableRef<HTMLElement | null>\n\t\t| ((openType: InteractionType) => boolean | HTMLElement | null | undefined)\n\t\t| undefined;\n\t/**\n\t * Determines the element to focus when the floating element is closed.\n\t *\n\t * Same shape as `initialFocus`.\n\t * @default true\n\t */\n\treturnFocus?:\n\t\t| boolean\n\t\t| HTMLElement\n\t\t| MutableRef<HTMLElement | null>\n\t\t| ((closeType: InteractionType) => boolean | HTMLElement | null | undefined)\n\t\t| undefined;\n\t/**\n\t * Determines where focus should be restored if focus inside the floating\n\t * element is lost.\n\t *\n\t * - `true`: nearest tabbable inside the floating tree.\n\t * - `'popup'`: directly to the floating container.\n\t * - `false`: no restoration.\n\t * @default false\n\t */\n\trestoreFocus?: boolean | \"popup\" | undefined;\n\t/**\n\t * Determines if focus is \"modal\", trapping focus fully inside the\n\t * floating element.\n\t * @default true\n\t */\n\tmodal?: boolean | undefined;\n\t/**\n\t * Whether focusout listeners controlling close-on-focus-out are attached\n\t * to the reference + floating elements. Mostly affects non-modal focus\n\t * management.\n\t * @default true\n\t */\n\tcloseOnFocusOut?: boolean | undefined;\n\t/** Overrides the Tab-forward target outside the floating element. */\n\tnextFocusableElement?:\n\t\t| HTMLElement\n\t\t| MutableRef<HTMLElement | null>\n\t\t| null\n\t\t| undefined;\n\t/** Overrides the Shift+Tab target outside the floating element. */\n\tpreviousFocusableElement?:\n\t\t| HTMLElement\n\t\t| MutableRef<HTMLElement | null>\n\t\t| null\n\t\t| undefined;\n\t/**\n\t * Ref to the focus guard preceding the floating content. Useful for\n\t * programmatic popup focus.\n\t */\n\tbeforeContentFocusGuardRef?: MutableRef<HTMLSpanElement | null> | undefined;\n\t/**\n\t * External `FloatingTreeStore` to use when the context-provided one is\n\t * not reachable.\n\t */\n\texternalTree?: FloatingTreeStore | undefined;\n\t/**\n\t * Additional elements that should be treated as part of the floating\n\t * subtree even if rendered outside the floating element itself.\n\t */\n\tgetInsideElements?: (() => Array<Element | null | undefined>) | undefined;\n}\n\nconst CLICK_TRIGGER_IDENTIFIER = \"data-quoin-click-trigger\";\n\n/**\n * Provides focus management for the floating element.\n * @see https://floating-ui.com/docs/FloatingFocusManager\n * @internal\n */\nexport function FloatingFocusManager(\n\tprops: FloatingFocusManagerProps,\n): JSX.Element {\n\t// Resolve-once destructuring with defaults (Solid component bodies\n\t// run once; reactive prop reads happen through the store).\n\tconst disabled = () => props.disabled ?? false;\n\tconst initialFocus = () => props.initialFocus ?? true;\n\tconst returnFocusProp = () => props.returnFocus ?? true;\n\tconst restoreFocus = () => props.restoreFocus ?? false;\n\tconst modal = () => props.modal ?? true;\n\tconst closeOnFocusOut = () => props.closeOnFocusOut ?? true;\n\tconst openInteractionType = () => props.openInteractionType ?? \"\";\n\n\tconst rootStore = () =>\n\t\t\"rootStore\" in props.context ? props.context.rootStore : props.context;\n\n\tconst dataRef = rootStore().context.dataRef;\n\tconst events = rootStore().context.events;\n\n\tconst getNodeId = createStableCallback<() => string | undefined>(\n\t\t() => () => dataRef.current.floatingContext?.nodeId,\n\t);\n\n\tconst ignoreInitialFocus = () => initialFocus() === false;\n\tconst isUntrappedTypeableCombobox = () =>\n\t\tisTypeableCombobox(rootStore().useState(\"domReferenceElement\")) &&\n\t\tignoreInitialFocus();\n\n\tconst orderRef: MutableRef<Array<\"reference\" | \"floating\" | \"content\">> = {\n\t\tcurrent: [\"content\"],\n\t};\n\n\tconst tree = useFloatingTree(props.externalTree);\n\tconst portalContext = usePortalContext();\n\n\tconst preventReturnFocusRef: MutableRef<boolean> = { current: false };\n\tconst isPointerDownRef: MutableRef<boolean> = { current: false };\n\tconst pointerDownOutsideRef: MutableRef<boolean> = { current: false };\n\tconst lastFocusedTabbableRef: MutableRef<FocusableElement | null> = {\n\t\tcurrent: null,\n\t};\n\tconst closeTypeRef: MutableRef<InteractionType> = { current: \"\" };\n\tconst lastInteractionTypeRef: MutableRef<InteractionType> = { current: \"\" };\n\n\tconst beforeGuardRef: MutableRef<HTMLSpanElement | null> = { current: null };\n\tconst afterGuardRef: MutableRef<HTMLSpanElement | null> = { current: null };\n\n\tconst blurTimeout = new Timeout();\n\tconst pointerDownTimeout = new Timeout();\n\tconst restoreFocusFrame = new AnimationFrame();\n\tonCleanup(() => {\n\t\tblurTimeout.clear();\n\t\tpointerDownTimeout.clear();\n\t\trestoreFocusFrame.cancel();\n\t});\n\n\tconst isInsidePortal = () => portalContext != null;\n\n\tconst getFloatingFocus = () =>\n\t\tgetFloatingFocusElement(rootStore().useState(\"floatingElement\"));\n\n\tconst getTabbableContent = createStableCallback<\n\t\t(container?: Element | null) => FocusableElement[]\n\t>(\n\t\t() =>\n\t\t\t(container: Element | null = getFloatingFocus()) =>\n\t\t\t\tcontainer ? tabbable(container) : [],\n\t);\n\n\tconst getResolvedInsideElements = createStableCallback<() => Element[]>(\n\t\t() => () =>\n\t\t\tprops\n\t\t\t\t.getInsideElements?.()\n\t\t\t\t.filter((element): element is Element => element != null) ?? [],\n\t);\n\n\t// Prevent Tab from escaping the modal when there are no tabbable elements.\n\t// NOTE: in Solid 2, `onCleanup` registered inside the EFFECT function of the\n\t// two-arg `createEffect(compute, effect)` form does not fire on dispose.\n\t// All setup + onCleanup therefore lives in the COMPUTE function; the effect\n\t// argument is a no-op.\n\tcreateEffect(\n\t\t() => {\n\t\t\tconst floatingFocusElement = getFloatingFocus();\n\t\t\tconst isDisabled = disabled();\n\t\t\tconst isModal = modal();\n\t\t\tif (isDisabled || !isModal) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tfunction onKeyDown(event: KeyboardEvent) {\n\t\t\t\tif (event.key === \"Tab\") {\n\t\t\t\t\tif (\n\t\t\t\t\t\tcontains(\n\t\t\t\t\t\t\tfloatingFocusElement,\n\t\t\t\t\t\t\tactiveElement(ownerDocument(floatingFocusElement)),\n\t\t\t\t\t\t) &&\n\t\t\t\t\t\tgetTabbableContent().length === 0 &&\n\t\t\t\t\t\t!isUntrappedTypeableCombobox()\n\t\t\t\t\t) {\n\t\t\t\t\t\tstopEvent(event);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst doc = ownerDocument(floatingFocusElement);\n\t\t\tdoc.addEventListener(\"keydown\", onKeyDown);\n\t\t\tonCleanup(() => {\n\t\t\t\tdoc.removeEventListener(\"keydown\", onKeyDown);\n\t\t\t});\n\t\t\treturn undefined;\n\t\t},\n\t\t() => {},\n\t);\n\n\t// Track pointer / keyboard interactions to disambiguate focus origins.\n\tcreateEffect(\n\t\t() => {\n\t\t\tconst open = rootStore().useState(\"open\");\n\t\t\tconst floating = rootStore().useState(\"floatingElement\");\n\t\t\tconst floatingFocusElement = getFloatingFocus();\n\t\t\tconst domReference = rootStore().useState(\"domReferenceElement\");\n\t\t\tconst isDisabled = disabled();\n\t\t\tif (isDisabled || !open) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst doc = ownerDocument(floatingFocusElement);\n\n\t\t\tfunction clearPointerDownOutside() {\n\t\t\t\tpointerDownOutsideRef.current = false;\n\t\t\t}\n\n\t\t\tfunction onPointerDown(event: PointerEvent) {\n\t\t\t\tconst target = getTarget(event) as Element | null;\n\t\t\t\tconst insideElements = getResolvedInsideElements();\n\t\t\t\tconst pointerTargetInside =\n\t\t\t\t\tcontains(floating, target) ||\n\t\t\t\t\tcontains(domReference, target) ||\n\t\t\t\t\tcontains(portalContext?.portalNode ?? null, target) ||\n\t\t\t\t\tinsideElements.some(\n\t\t\t\t\t\t(element) => element === target || contains(element, target),\n\t\t\t\t\t);\n\t\t\t\tpointerDownOutsideRef.current = !pointerTargetInside;\n\t\t\t\tlastInteractionTypeRef.current =\n\t\t\t\t\t(event.pointerType as InteractionType) || \"keyboard\";\n\n\t\t\t\tif (target?.closest?.(`[${CLICK_TRIGGER_IDENTIFIER}]`)) {\n\t\t\t\t\tisPointerDownRef.current = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction onKeyDown() {\n\t\t\t\tlastInteractionTypeRef.current = \"keyboard\";\n\t\t\t}\n\n\t\t\tdoc.addEventListener(\"pointerdown\", onPointerDown, true);\n\t\t\tdoc.addEventListener(\"pointerup\", clearPointerDownOutside, true);\n\t\t\tdoc.addEventListener(\"pointercancel\", clearPointerDownOutside, true);\n\t\t\tdoc.addEventListener(\"keydown\", onKeyDown, true);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tdoc.removeEventListener(\"pointerdown\", onPointerDown, true);\n\t\t\t\tdoc.removeEventListener(\"pointerup\", clearPointerDownOutside, true);\n\t\t\t\tdoc.removeEventListener(\"pointercancel\", clearPointerDownOutside, true);\n\t\t\t\tdoc.removeEventListener(\"keydown\", onKeyDown, true);\n\t\t\t});\n\t\t\treturn undefined;\n\t\t},\n\t\t() => {},\n\t);\n\n\t// Close on focus out and restore focus within the floating tree when\n\t// needed.\n\tcreateEffect(\n\t\t() => {\n\t\t\tconst floating = rootStore().useState(\"floatingElement\");\n\t\t\tconst domReference = rootStore().useState(\"domReferenceElement\");\n\t\t\tconst floatingFocusElement = getFloatingFocus();\n\t\t\tconst isDisabled = disabled();\n\t\t\tconst isCloseOnFocusOut = closeOnFocusOut();\n\t\t\tif (isDisabled || !isCloseOnFocusOut) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst doc = ownerDocument(floatingFocusElement);\n\n\t\t\tfunction handlePointerDown() {\n\t\t\t\tisPointerDownRef.current = true;\n\t\t\t\tpointerDownTimeout.start(0, () => {\n\t\t\t\t\tisPointerDownRef.current = false;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction handleFocusIn(event: FocusEvent) {\n\t\t\t\tconst target = getTarget(event) as FocusableElement | null;\n\t\t\t\tif (isTabbable(target)) {\n\t\t\t\t\tlastFocusedTabbableRef.current = target;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction handleFocusOutside(event: FocusEvent) {\n\t\t\t\tconst relatedTarget = event.relatedTarget as HTMLElement | null;\n\t\t\t\tconst currentTarget = event.currentTarget;\n\t\t\t\tconst target = getTarget(event) as HTMLElement | null;\n\n\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\tconst nodeId = getNodeId();\n\t\t\t\t\tconst triggers = rootStore().context.triggerElements;\n\t\t\t\t\tconst insideElements = getResolvedInsideElements();\n\t\t\t\t\tconst isRelatedFocusGuard =\n\t\t\t\t\t\t!!relatedTarget?.hasAttribute(createAttribute(\"focus-guard\")) &&\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tbeforeGuardRef.current,\n\t\t\t\t\t\t\tafterGuardRef.current,\n\t\t\t\t\t\t\tportalContext?.beforeInsideRef.current ?? null,\n\t\t\t\t\t\t\tportalContext?.afterInsideRef.current ?? null,\n\t\t\t\t\t\t\tportalContext?.beforeOutsideRef.current ?? null,\n\t\t\t\t\t\t\tportalContext?.afterOutsideRef.current ?? null,\n\t\t\t\t\t\t\tresolveRef(props.previousFocusableElement),\n\t\t\t\t\t\t\tresolveRef(props.nextFocusableElement),\n\t\t\t\t\t\t].includes(relatedTarget);\n\n\t\t\t\t\tconst movedToUnrelatedNode = !(\n\t\t\t\t\t\tcontains(domReference, relatedTarget) ||\n\t\t\t\t\t\tcontains(floating, relatedTarget) ||\n\t\t\t\t\t\tcontains(relatedTarget, floating) ||\n\t\t\t\t\t\tcontains(portalContext?.portalNode ?? null, relatedTarget) ||\n\t\t\t\t\t\tinsideElements.some(\n\t\t\t\t\t\t\t(element) =>\n\t\t\t\t\t\t\t\telement === relatedTarget || contains(element, relatedTarget),\n\t\t\t\t\t\t) ||\n\t\t\t\t\t\t(relatedTarget != null && triggers.hasElement(relatedTarget)) ||\n\t\t\t\t\t\ttriggers.hasMatchingElement((trigger) =>\n\t\t\t\t\t\t\tcontains(trigger, relatedTarget),\n\t\t\t\t\t\t) ||\n\t\t\t\t\t\tisRelatedFocusGuard ||\n\t\t\t\t\t\t(tree &&\n\t\t\t\t\t\t\t(getNodeChildren(tree.nodesRef.current, nodeId).find(\n\t\t\t\t\t\t\t\t(node) =>\n\t\t\t\t\t\t\t\t\tcontains(node.context?.elements.floating, relatedTarget) ||\n\t\t\t\t\t\t\t\t\tcontains(node.context?.elements.domReference, relatedTarget),\n\t\t\t\t\t\t\t) ||\n\t\t\t\t\t\t\t\tgetNodeAncestors(tree.nodesRef.current, nodeId).find(\n\t\t\t\t\t\t\t\t\t(node) =>\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\tnode.context?.elements.floating,\n\t\t\t\t\t\t\t\t\t\t\tgetFloatingFocusElement(node.context?.elements.floating),\n\t\t\t\t\t\t\t\t\t\t].includes(relatedTarget) ||\n\t\t\t\t\t\t\t\t\t\tnode.context?.elements.domReference === relatedTarget,\n\t\t\t\t\t\t\t\t)))\n\t\t\t\t\t);\n\n\t\t\t\t\tif (currentTarget === domReference && floatingFocusElement) {\n\t\t\t\t\t\thandleTabIndex(floatingFocusElement, orderRef);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Restore focus to a safe slot inside the floating tree when\n\t\t\t\t\t// focus is lost (e.g. active element removed from the DOM).\n\t\t\t\t\tif (\n\t\t\t\t\t\trestoreFocus() &&\n\t\t\t\t\t\tcurrentTarget !== domReference &&\n\t\t\t\t\t\t!isFocusable(target) &&\n\t\t\t\t\t\tactiveElement(doc) === doc.body\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (isHTMLElement(floatingFocusElement)) {\n\t\t\t\t\t\t\tfloatingFocusElement.focus();\n\t\t\t\t\t\t\tif (restoreFocus() === \"popup\") {\n\t\t\t\t\t\t\t\trestoreFocusFrame.request(() => {\n\t\t\t\t\t\t\t\t\tfloatingFocusElement.focus();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst tabbableContent =\n\t\t\t\t\t\t\tgetTabbableContent() as Array<Element | null>;\n\t\t\t\t\t\tconst prevTabbable = lastFocusedTabbableRef.current;\n\t\t\t\t\t\tconst nodeToFocus =\n\t\t\t\t\t\t\t(prevTabbable && tabbableContent.includes(prevTabbable)\n\t\t\t\t\t\t\t\t? prevTabbable\n\t\t\t\t\t\t\t\t: null) ||\n\t\t\t\t\t\t\ttabbableContent[tabbableContent.length - 1] ||\n\t\t\t\t\t\t\tfloatingFocusElement;\n\n\t\t\t\t\t\tif (isHTMLElement(nodeToFocus)) {\n\t\t\t\t\t\t\t(nodeToFocus as HTMLElement).focus();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (dataRef.current.insideReactTree) {\n\t\t\t\t\t\tdataRef.current.insideReactTree = false;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(isUntrappedTypeableCombobox() ? true : !modal()) &&\n\t\t\t\t\t\trelatedTarget &&\n\t\t\t\t\t\tmovedToUnrelatedNode &&\n\t\t\t\t\t\t!isPointerDownRef.current &&\n\t\t\t\t\t\t(isUntrappedTypeableCombobox() ||\n\t\t\t\t\t\t\trelatedTarget !== getPreviouslyFocusedElement())\n\t\t\t\t\t) {\n\t\t\t\t\t\tpreventReturnFocusRef.current = true;\n\t\t\t\t\t\trootStore().setOpen(\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\tcreateChangeEventDetails(REASONS.focusOut, event),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction markInsideReactTree() {\n\t\t\t\tif (pointerDownOutsideRef.current) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tdataRef.current.insideReactTree = true;\n\t\t\t\tblurTimeout.start(0, () => {\n\t\t\t\t\tdataRef.current.insideReactTree = false;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst domReferenceElement = isHTMLElement(domReference)\n\t\t\t\t? domReference\n\t\t\t\t: null;\n\t\t\tif (!floating && !domReferenceElement) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst cleanups: Array<() => void> = [];\n\t\t\tif (domReferenceElement) {\n\t\t\t\tdomReferenceElement.addEventListener(\n\t\t\t\t\t\"focusout\",\n\t\t\t\t\thandleFocusOutside as EventListener,\n\t\t\t\t);\n\t\t\t\tdomReferenceElement.addEventListener(\"pointerdown\", handlePointerDown);\n\t\t\t\tcleanups.push(() => {\n\t\t\t\t\tdomReferenceElement.removeEventListener(\n\t\t\t\t\t\t\"focusout\",\n\t\t\t\t\t\thandleFocusOutside as EventListener,\n\t\t\t\t\t);\n\t\t\t\t\tdomReferenceElement.removeEventListener(\n\t\t\t\t\t\t\"pointerdown\",\n\t\t\t\t\t\thandlePointerDown,\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (floating) {\n\t\t\t\tfloating.addEventListener(\"focusin\", handleFocusIn as EventListener);\n\t\t\t\tfloating.addEventListener(\n\t\t\t\t\t\"focusout\",\n\t\t\t\t\thandleFocusOutside as EventListener,\n\t\t\t\t);\n\t\t\t\tcleanups.push(() => {\n\t\t\t\t\tfloating.removeEventListener(\n\t\t\t\t\t\t\"focusin\",\n\t\t\t\t\t\thandleFocusIn as EventListener,\n\t\t\t\t\t);\n\t\t\t\t\tfloating.removeEventListener(\n\t\t\t\t\t\t\"focusout\",\n\t\t\t\t\t\thandleFocusOutside as EventListener,\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t\tif (portalContext) {\n\t\t\t\t\tfloating.addEventListener(\n\t\t\t\t\t\t\"focusout\",\n\t\t\t\t\t\tmarkInsideReactTree as EventListener,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t);\n\t\t\t\t\tcleanups.push(() => {\n\t\t\t\t\t\tfloating.removeEventListener(\n\t\t\t\t\t\t\t\"focusout\",\n\t\t\t\t\t\t\tmarkInsideReactTree as EventListener,\n\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tonCleanup(() => {\n\t\t\t\tfor (const cleanup of cleanups) {\n\t\t\t\t\tcleanup();\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn undefined;\n\t\t},\n\t\t() => {},\n\t);\n\n\t// Hide everything outside the floating tree from assistive tech while\n\t// open (modal) or keep the combobox reference exposed (untrapped combobox).\n\tcreateEffect(\n\t\t() => {\n\t\t\tconst open = rootStore().useState(\"open\");\n\t\t\tconst floating = rootStore().useState(\"floatingElement\");\n\t\t\tconst domReference = rootStore().useState(\"domReferenceElement\");\n\t\t\tconst isDisabled = disabled();\n\t\t\tconst isModal = modal();\n\t\t\tif (isDisabled || !floating || !open) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst portalNodes = Array.from(\n\t\t\t\tportalContext?.portalNode?.querySelectorAll(\n\t\t\t\t\t`[${createAttribute(\"portal\")}]`,\n\t\t\t\t) || [],\n\t\t\t);\n\n\t\t\tconst ancestors = tree\n\t\t\t\t? getNodeAncestors(tree.nodesRef.current, getNodeId())\n\t\t\t\t: [];\n\t\t\tconst rootAncestorComboboxDomReference = ancestors.find((node) =>\n\t\t\t\tisTypeableCombobox(node.context?.elements.domReference || null),\n\t\t\t)?.context?.elements.domReference;\n\n\t\t\tconst controlInsideElements = [\n\t\t\t\tfloating,\n\t\t\t\t...portalNodes,\n\t\t\t\tbeforeGuardRef.current,\n\t\t\t\tafterGuardRef.current,\n\t\t\t\tportalContext?.beforeOutsideRef.current ?? null,\n\t\t\t\tportalContext?.afterOutsideRef.current ?? null,\n\t\t\t\t...getResolvedInsideElements(),\n\t\t\t];\n\t\t\tconst insideElements = [\n\t\t\t\t...controlInsideElements,\n\t\t\t\trootAncestorComboboxDomReference,\n\t\t\t\tresolveRef(props.previousFocusableElement),\n\t\t\t\tresolveRef(props.nextFocusableElement),\n\t\t\t\tisUntrappedTypeableCombobox() ? domReference : null,\n\t\t\t].filter((x): x is Element => x != null);\n\n\t\t\tconst ariaHiddenCleanup = markOthers(insideElements, {\n\t\t\t\tariaHidden: isModal || isUntrappedTypeableCombobox(),\n\t\t\t\tmark: false,\n\t\t\t});\n\n\t\t\tconst markerInsideElements = [floating, ...portalNodes].filter(\n\t\t\t\t(x): x is Element => x != null,\n\t\t\t);\n\t\t\tconst markerCleanup = markOthers(markerInsideElements);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tmarkerCleanup();\n\t\t\t\tariaHiddenCleanup();\n\t\t\t});\n\t\t\treturn undefined;\n\t\t},\n\t\t() => {},\n\t);\n\n\t// Focus the initial element when the floating element opens.\n\tuseIsoLayoutEffect(\n\t\t() => {\n\t\t\tconst open = rootStore().useState(\"open\");\n\t\t\tconst floatingFocusElement = getFloatingFocus();\n\t\t\tif (!open || disabled() || !isHTMLElement(floatingFocusElement)) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst doc = ownerDocument(floatingFocusElement);\n\t\t\tconst prevFocus = activeElement(doc);\n\n\t\t\tqueueMicrotask(() => {\n\t\t\t\tconst initialFocusValueOrFn = initialFocus();\n\t\t\t\tconst resolvedInitialFocus =\n\t\t\t\t\ttypeof initialFocusValueOrFn === \"function\"\n\t\t\t\t\t\t? initialFocusValueOrFn(openInteractionType() || \"\")\n\t\t\t\t\t\t: initialFocusValueOrFn;\n\n\t\t\t\tif (\n\t\t\t\t\tresolvedInitialFocus === undefined ||\n\t\t\t\t\tresolvedInitialFocus === false\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst focusAlreadyInsideFloatingEl = contains(\n\t\t\t\t\tfloatingFocusElement,\n\t\t\t\t\tprevFocus,\n\t\t\t\t);\n\t\t\t\tif (focusAlreadyInsideFloatingEl) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet focusableElements: Array<FocusableElement> | null = null;\n\t\t\t\tconst getDefaultFocusElement = () => {\n\t\t\t\t\tif (focusableElements == null) {\n\t\t\t\t\t\tfocusableElements = getTabbableContent(floatingFocusElement);\n\t\t\t\t\t}\n\t\t\t\t\treturn focusableElements[0] || floatingFocusElement;\n\t\t\t\t};\n\n\t\t\t\tlet elToFocus: FocusableElement | null | undefined;\n\t\t\t\tif (resolvedInitialFocus === true || resolvedInitialFocus === null) {\n\t\t\t\t\telToFocus = getDefaultFocusElement();\n\t\t\t\t} else {\n\t\t\t\t\telToFocus = resolveRef(\n\t\t\t\t\t\tresolvedInitialFocus as\n\t\t\t\t\t\t\t| HTMLElement\n\t\t\t\t\t\t\t| MutableRef<HTMLElement | null>,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\telToFocus = elToFocus || getDefaultFocusElement();\n\n\t\t\t\t// `preventScroll: true` unconditionally (matches @floating-ui/react).\n\t\t\t\t// The floating element is placed by the positioner, not by the\n\t\t\t\t// browser's scroll-into-view — so focusing initial content (e.g. an\n\t\t\t\t// <input> inside a popover) must NOT scroll the page. Gating this on\n\t\t\t\t// `elToFocus === floatingFocusElement` (the old port) let inner-input\n\t\t\t\t// focus jump the page to the top while the popup was still at (0,0)\n\t\t\t\t// pre-position.\n\t\t\t\tenqueueFocus(elToFocus, {\n\t\t\t\t\tpreventScroll: true,\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn undefined;\n\t\t},\n\t\t() => {},\n\t);\n\n\t// Track return-focus targets and restore focus on unmount / close.\n\tuseIsoLayoutEffect(\n\t\t() => {\n\t\t\tconst floatingFocusElement = getFloatingFocus();\n\t\t\tconst floating = rootStore().useState(\"floatingElement\");\n\t\t\tconst domReference = rootStore().useState(\"domReferenceElement\");\n\t\t\tif (disabled() || !floatingFocusElement) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst doc = ownerDocument(floatingFocusElement);\n\t\t\tconst prevFocus = activeElement(doc);\n\n\t\t\taddPreviouslyFocusedElement(prevFocus);\n\n\t\t\tfunction onOpenChangeLocal(details: FloatingUIOpenChangeDetails) {\n\t\t\t\tif (!details.open) {\n\t\t\t\t\tcloseTypeRef.current = getEventType(\n\t\t\t\t\t\tdetails.nativeEvent,\n\t\t\t\t\t\tlastInteractionTypeRef.current,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tdetails.reason === REASONS.triggerHover &&\n\t\t\t\t\tdetails.nativeEvent.type === \"mouseleave\"\n\t\t\t\t) {\n\t\t\t\t\tpreventReturnFocusRef.current = true;\n\t\t\t\t}\n\n\t\t\t\tif (details.reason !== REASONS.outsidePress) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (details.nested) {\n\t\t\t\t\tpreventReturnFocusRef.current = false;\n\t\t\t\t} else if (\n\t\t\t\t\tisVirtualClick(details.nativeEvent as MouseEvent) ||\n\t\t\t\t\tisVirtualPointerEvent(details.nativeEvent as PointerEvent)\n\t\t\t\t) {\n\t\t\t\t\tpreventReturnFocusRef.current = false;\n\t\t\t\t} else {\n\t\t\t\t\tlet isPreventScrollSupported = false;\n\t\t\t\t\townerDocument(floatingFocusElement)\n\t\t\t\t\t\t.createElement(\"div\")\n\t\t\t\t\t\t.focus({\n\t\t\t\t\t\t\tget preventScroll() {\n\t\t\t\t\t\t\t\tisPreventScrollSupported = true;\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\n\t\t\t\t\tpreventReturnFocusRef.current = !isPreventScrollSupported;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tevents.on(\"openchange\", onOpenChangeLocal);\n\n\t\t\tfunction getReturnElement(): Element | null {\n\t\t\t\tconst returnFocusValueOrFn = returnFocusProp();\n\t\t\t\tlet resolvedReturnFocusValue =\n\t\t\t\t\ttypeof returnFocusValueOrFn === \"function\"\n\t\t\t\t\t\t? returnFocusValueOrFn(closeTypeRef.current)\n\t\t\t\t\t\t: returnFocusValueOrFn;\n\n\t\t\t\tif (\n\t\t\t\t\tresolvedReturnFocusValue === undefined ||\n\t\t\t\t\tresolvedReturnFocusValue === false\n\t\t\t\t) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tif (resolvedReturnFocusValue === null) {\n\t\t\t\t\tresolvedReturnFocusValue = true;\n\t\t\t\t}\n\n\t\t\t\tif (typeof resolvedReturnFocusValue === \"boolean\") {\n\t\t\t\t\tconst el = domReference || getPreviouslyFocusedElement();\n\t\t\t\t\treturn el && (el as HTMLElement).isConnected\n\t\t\t\t\t\t? (el as HTMLElement)\n\t\t\t\t\t\t: null;\n\t\t\t\t}\n\n\t\t\t\tconst fallback = domReference || getPreviouslyFocusedElement();\n\n\t\t\t\treturn (\n\t\t\t\t\tresolveRef(\n\t\t\t\t\t\tresolvedReturnFocusValue as\n\t\t\t\t\t\t\t| HTMLElement\n\t\t\t\t\t\t\t| MutableRef<HTMLElement | null>,\n\t\t\t\t\t) ||\n\t\t\t\t\t(fallback as HTMLElement | null) ||\n\t\t\t\t\tnull\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tonCleanup(() => {\n\t\t\t\tevents.off(\"openchange\", onOpenChangeLocal);\n\n\t\t\t\tconst activeEl = activeElement(doc);\n\t\t\t\tconst insideElements = getResolvedInsideElements();\n\t\t\t\tconst isFocusInsideFloatingTree =\n\t\t\t\t\tcontains(floating, activeEl) ||\n\t\t\t\t\tinsideElements.some(\n\t\t\t\t\t\t(element) => element === activeEl || contains(element, activeEl),\n\t\t\t\t\t) ||\n\t\t\t\t\t(!!tree &&\n\t\t\t\t\t\tgetNodeChildren(tree.nodesRef.current, getNodeId(), false).some(\n\t\t\t\t\t\t\t(node) => contains(node.context?.elements.floating, activeEl),\n\t\t\t\t\t\t));\n\n\t\t\t\tconst returnFocusValueOrFn = returnFocusProp();\n\t\t\t\tconst returnElement = getReturnElement();\n\n\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\tconst tabbableReturnElement = getFirstTabbableElement(returnElement);\n\t\t\t\t\tconst hasExplicitReturnFocus =\n\t\t\t\t\t\ttypeof returnFocusValueOrFn !== \"boolean\";\n\n\t\t\t\t\tif (\n\t\t\t\t\t\treturnFocusValueOrFn &&\n\t\t\t\t\t\t!preventReturnFocusRef.current &&\n\t\t\t\t\t\tisHTMLElement(tabbableReturnElement) &&\n\t\t\t\t\t\t(!hasExplicitReturnFocus &&\n\t\t\t\t\t\ttabbableReturnElement !== activeEl &&\n\t\t\t\t\t\tactiveEl !== doc.body\n\t\t\t\t\t\t\t? isFocusInsideFloatingTree\n\t\t\t\t\t\t\t: true)\n\t\t\t\t\t) {\n\t\t\t\t\t\t(tabbableReturnElement as HTMLElement).focus({\n\t\t\t\t\t\t\tpreventScroll: true,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tpreventReturnFocusRef.current = false;\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn undefined;\n\t\t},\n\t\t() => {},\n\t);\n\n\t// Safari scroll-to-bottom workaround: blur inputs inside the popup\n\t// before it unmounts.\n\tuseIsoLayoutEffect(\n\t\t() => ({\n\t\t\topen: rootStore().useState(\"open\"),\n\t\t\tfloating: rootStore().useState(\"floatingElement\"),\n\t\t}),\n\t\t({ open, floating }) => {\n\t\t\tif (!isWebKit() || open || !floating) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst activeEl = activeElement(ownerDocument(floating));\n\t\t\tif (!isHTMLElement(activeEl) || !isTypeableElement(activeEl)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (contains(floating, activeEl)) {\n\t\t\t\t(activeEl as HTMLElement).blur();\n\t\t\t}\n\t\t},\n\t);\n\n\t// Synchronize the `context` / `modal` value to the portal context so\n\t// the portal can choose whether to render its own outer guards.\n\tuseIsoLayoutEffect(\n\t\t// Compute snapshots all reactive inputs so apply runs without\n\t\t// re-reading anything; apply returns its cleanup instead of\n\t\t// calling `onCleanup` (apply scope is unowned).\n\t\t() => ({\n\t\t\topen: rootStore().useState(\"open\"),\n\t\t\tdomReference: rootStore().useState(\"domReferenceElement\"),\n\t\t\tisDisabled: disabled(),\n\t\t\tisModal: modal(),\n\t\t\tisCloseOnFocusOut: closeOnFocusOut(),\n\t\t}),\n\t\t({ open, domReference, isDisabled, isModal, isCloseOnFocusOut }) => {\n\t\t\tif (isDisabled || !portalContext) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tportalContext.setFocusManagerState({\n\t\t\t\tmodal: isModal,\n\t\t\t\tcloseOnFocusOut: isCloseOnFocusOut,\n\t\t\t\topen,\n\t\t\t\tonOpenChange: rootStore().setOpen,\n\t\t\t\tdomReference,\n\t\t\t});\n\n\t\t\treturn () => {\n\t\t\t\tportalContext.setFocusManagerState(null);\n\t\t\t};\n\t\t},\n\t);\n\n\t// Keep the floating element's tabIndex in sync.\n\tuseIsoLayoutEffect(\n\t\t() => ({ floatingFocus: getFloatingFocus(), isDisabled: disabled() }),\n\t\t({ floatingFocus, isDisabled }) => {\n\t\t\tif (isDisabled || !floatingFocus) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\thandleTabIndex(floatingFocus, orderRef);\n\t\t\treturn () => {\n\t\t\t\tqueueMicrotask(clearDisconnectedPreviouslyFocusedElements);\n\t\t\t};\n\t\t},\n\t);\n\n\t// Guard ref callbacks — propagate internal slot + optional external ref\n\t// + portal-context sentinel refs.\n\tfunction setBeforeGuardRef(el: HTMLSpanElement | null): void {\n\t\tbeforeGuardRef.current = el;\n\t\tif (props.beforeContentFocusGuardRef) {\n\t\t\tprops.beforeContentFocusGuardRef.current = el;\n\t\t}\n\t\tif (portalContext?.beforeInsideRef) {\n\t\t\tportalContext.beforeInsideRef.current = el;\n\t\t}\n\t}\n\tfunction setAfterGuardRef(el: HTMLSpanElement | null): void {\n\t\tafterGuardRef.current = el;\n\t\tif (portalContext?.afterInsideRef) {\n\t\t\tportalContext.afterInsideRef.current = el;\n\t\t}\n\t}\n\n\tconst shouldRenderGuards = () =>\n\t\t!disabled() &&\n\t\t(modal() ? !isUntrappedTypeableCombobox() : true) &&\n\t\t(isInsidePortal() || modal());\n\n\tfunction onBeforeGuardFocus(event: FocusEvent): void {\n\t\tif (modal()) {\n\t\t\tconst els = getTabbableContent();\n\t\t\t// Synchronous focus: under real-browser CDP Tab dispatch the browser\n\t\t\t// moves focus to the guard <span> and the test / next key event\n\t\t\t// reads `document.activeElement` inside the same tick. React's port\n\t\t\t// uses rAF here, but its tests run under `userEvent` which awaits a\n\t\t\t// frame automatically; native input has no such wait, so the\n\t\t\t// wrap-around must complete before the handler returns.\n\t\t\tenqueueFocus(els[els.length - 1] ?? null, { sync: true });\n\t\t} else if (portalContext?.portalNode) {\n\t\t\tpreventReturnFocusRef.current = false;\n\t\t\tif (isOutsideEvent(event, portalContext.portalNode)) {\n\t\t\t\tconst nextTabbable = getNextTabbable(\n\t\t\t\t\trootStore().useState(\"domReferenceElement\"),\n\t\t\t\t);\n\t\t\t\tnextTabbable?.focus();\n\t\t\t} else {\n\t\t\t\tresolveRef(\n\t\t\t\t\t(props.previousFocusableElement ?? portalContext.beforeOutsideRef) as\n\t\t\t\t\t\t| HTMLElement\n\t\t\t\t\t\t| MutableRef<HTMLElement | null>,\n\t\t\t\t)?.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction onAfterGuardFocus(event: FocusEvent): void {\n\t\tif (modal()) {\n\t\t\tenqueueFocus(getTabbableContent()[0] ?? null, { sync: true });\n\t\t} else if (portalContext?.portalNode) {\n\t\t\tif (closeOnFocusOut()) {\n\t\t\t\tpreventReturnFocusRef.current = true;\n\t\t\t}\n\t\t\tif (isOutsideEvent(event, portalContext.portalNode)) {\n\t\t\t\tconst prevTabbable = getPreviousTabbable(\n\t\t\t\t\trootStore().useState(\"domReferenceElement\"),\n\t\t\t\t);\n\t\t\t\tprevTabbable?.focus();\n\t\t\t} else {\n\t\t\t\tresolveRef(\n\t\t\t\t\t(props.nextFocusableElement ?? portalContext.afterOutsideRef) as\n\t\t\t\t\t\t| HTMLElement\n\t\t\t\t\t\t| MutableRef<HTMLElement | null>,\n\t\t\t\t)?.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{shouldRenderGuards() && (\n\t\t\t\t<FocusGuard\n\t\t\t\t\tdata-type=\"inside\"\n\t\t\t\t\tref={setBeforeGuardRef}\n\t\t\t\t\tonFocus={onBeforeGuardFocus}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{props.children}\n\t\t\t{shouldRenderGuards() && (\n\t\t\t\t<FocusGuard\n\t\t\t\t\tdata-type=\"inside\"\n\t\t\t\t\tref={setAfterGuardRef}\n\t\t\t\t\tonFocus={onAfterGuardFocus}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n}\n"],"mappings":"AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,WAAW,EAAEC,aAAa,EAAEC,QAAQ,QAAQ,wBAAwB;AAC7E,SAASC,YAAY,EAAEC,SAAS,QAAQ,UAAU;AAClD,SAASC,wBAAwB,EAAEC,OAAO,QAAQ,4BAA4B;AAC9E,SAASC,aAAa,QAAQ,0BAA0B;AACxD,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,SAAS,QAAQ,sBAAsB;AAChD,SAASC,aAAa,QAAQ,0BAA0B;AACxD,SAASC,WAAW,QAAQ,wBAAwB;AACpD,SAASC,UAAU,QAAQ,0BAA0B;AACrD,SAASC,oBAAoB,QAAQ,uBAAuB;AAC5D,SAASC,cAAc,QAAQ,2BAA2B;AAC1D,SAASC,kBAAkB,QAAQ,6BAA6B;AAChE,SAASC,OAAO,QAAQ,mBAAmB;AAM3C,SAASC,eAAe,QAAQ,2BAA2B;AAC3D,SACCC,uBAAuB,EACvBC,kBAAkB,EAClBC,iBAAiB,QACX,kBAAkB;AACzB,SAASC,YAAY,QAAQ,wBAAwB;AACrD,SACCC,cAAc,EACdC,qBAAqB,EACrBC,SAAS,QACH,gBAAgB;AACvB,SAASC,UAAU,QAAQ,sBAAsB;AACjD,SAASC,gBAAgB,EAAEC,eAAe,QAAQ,gBAAgB;AAClE,SAECC,SAAS,EACTC,eAAe,EACfC,mBAAmB,EACnBC,cAAc,EACdC,UAAU,EACV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","ignoreList":[]}