{"version":3,"names":["isElement","createEffect","flush","onCleanup","untrack","createChangeEventDetails","REASONS","ownerDocument","readOption","createStableCallback","useFloatingTree","contains","getTarget","isTargetInsideEnabledTrigger","isMouseLikePointerType","applySafePolygonPointerEventsMutation","clearSafePolygonPointerEventsMutation","useHoverInteractionSharedState","getDelay","getRestMs","isClickLikeOpenEvent","isClickLikeOpenEventShared","EMPTY_REF","current","useHoverReferenceInteraction","context","props","store","rootStore","dataRef","events","delay","handleClose","mouseOnly","restMs","move","triggerElementRef","externalTree","getHandleCloseContext","isClosing","readEnabled","enabled","readIsActiveTrigger","isActiveTrigger","readTriggerElement","triggerElement","tree","instance","isHoverCloseActiveRef","active","handleCloseOptions","__options","openEvent","type","interactedInside","isRelatedTargetInsideEnabledTrigger","target","triggerElements","isOverInactiveTrigger","currentDomReference","currentTarget","allTriggers","hasElement","targetElement","hasMatchingElement","trigger","closeWithDelay","event","runElseBranch","closeDelay","pointerType","openChangeTimeout","start","setOpen","triggerHover","emit","clear","cleanupMouseMoveHandler","handler","doc","state","domReferenceElement","removeEventListener","undefined","clearPointerEvents","isEnabled","onOpenChangeLocal","details","open","reason","restTimeout","blockMouseMove","restTimeoutPending","on","off","triggerEl","referenceHasPointer","onPointerEnterNative","onMouseEnter","restMsValue","openDelay","eventTarget","triggerNode","elements","isOverInactive","isOpen","isInClosingTransition","transitionStatus","isHoverCloseTransition","isReenteringSameTriggerDuringCloseTransition","isRestOnlyDelay","shouldOpenImmediately","shouldOpen","onMouseLeave","handleCloseContextBase","floatingContext","ignoreRelatedTargetTrigger","relatedTarget","currentTrigger","x","clientX","y","clientY","onClose","addEventListener","shouldClose","floatingElement","syncHoverWhileAlreadyOver","isStarted","hovered","matches","MouseEvent","bubbles","cancelable","cleanups","onceHandler","evt","once","push","queueMicrotask","cleanup","setPointerRef","onPointerDown","onPointerEnter","onMouseMove","nativeEvent","currentOpen","blockPointerEvents","scopeElement","getScope","body","referenceElement","movementX","movementY","handleMouseMove","latestOpen"],"sources":["use-hover-reference-interaction.ts"],"sourcesContent":["/**\n * Stage 4.4 port of Base UI React's `useHoverReferenceInteraction`.\n *\n * React source:\n *   `base-ui/packages/react/src/floating-ui-react/hooks/useHoverReferenceInteraction.ts`\n *\n * Attaches the hover event handlers that belong on the reference (trigger)\n * element. Coordinates with the floating-side counterpart (below) via\n * `HoverInteraction`, the shared mutable bag on `dataRef`.\n *\n * Returns a prop bag (`onPointerDown`, `onPointerEnter`, `onMouseMove`)\n * applied via the `reference` slot of `useInteractions`. The heavy\n * `mouseenter` / `mouseleave` wiring is installed imperatively with\n * `addEventListener` so disabled-element gaps don't swallow the events\n * (React's delegation system has the same quirk).\n *\n * ### React → Solid deviations\n *\n * 1. `useRef` → plain `MutableRef<T>` objects or closure `let`s. The\n *    `HoverInteraction` shared bag is pure mutables so no signals are\n *    involved — the hover logic runs entirely in event callbacks and\n *    effect bodies.\n * 2. `useValueAsRef` → not needed for options read inside event\n *    handlers — we capture them at setup. Options are read at event\n *    time off the captured `props` reference so late-bound changes\n *    observed by callers still apply (plain JS behaviour).\n * 3. `useStableCallback` → `createStableCallback` from\n *    `src/internals/stable-callback.ts`. Same identity-stability\n *    guarantee — ensures `addEventListener` / `removeEventListener`\n *    pair up across re-installations.\n * 4. React's `useEffect` with dep arrays → `createEffect` in the\n *    split `(compute, apply)` form. The compute branch returns a\n *    tracked snapshot keyed on `enabled` / the signals we want to\n *    re-run on; the apply branch installs listeners and registers\n *    `onCleanup`.\n * 5. `ReactDOM.flushSync` (used on the touch open path) → Solid's\n *    `flush()` from `solid-js`. Same semantics: apply all pending\n *    updates before the next tick, so downstream reactive readers\n *    see the touch-opened state synchronously.\n * 6. React returns `HTMLProps | undefined` from `useMemo`; the Solid\n *    port returns a plain object since the body runs once.\n */\n\nimport { isElement } from \"@floating-ui/utils/dom\";\nimport { createEffect, flush, onCleanup, untrack } from \"solid-js\";\nimport {\n\ttype BaseUIChangeEventDetails,\n\tcreateChangeEventDetails,\n\tREASONS,\n} from \"../../change-event-details\";\nimport { ownerDocument } from \"../../dom/owner-document\";\nimport { type MaybeAccessor, readOption } from \"../../maybe-accessor\";\nimport { createStableCallback } from \"../../stable-callback\";\nimport type { FloatingUIOpenChangeDetails } from \"../components/floating-root-store\";\nimport { useFloatingTree } from \"../components/floating-tree\";\nimport type { FloatingTreeStore } from \"../components/floating-tree-store\";\nimport type {\n\tDelay,\n\tElementPropsBag,\n\tFloatingContext,\n\tFloatingRootContext,\n\tMutableRef,\n} from \"../types\";\nimport {\n\tcontains,\n\tgetTarget,\n\tisTargetInsideEnabledTrigger,\n} from \"../utils/element\";\nimport { isMouseLikePointerType } from \"../utils/event\";\nimport {\n\tapplySafePolygonPointerEventsMutation,\n\tclearSafePolygonPointerEventsMutation,\n\tuseHoverInteractionSharedState,\n} from \"./use-hover-interaction-shared-state\";\nimport type { HandleClose, HandleCloseContextBase } from \"./use-hover-shared\";\nimport {\n\tgetDelay,\n\tgetRestMs,\n\tisClickLikeOpenEvent as isClickLikeOpenEventShared,\n} from \"./use-hover-shared\";\n\nconst EMPTY_REF: Readonly<MutableRef<Element | null>> = { current: null };\n\nexport interface UseHoverReferenceInteractionProps {\n\tenabled?: MaybeAccessor<boolean> | undefined;\n\thandleClose?: HandleClose | null | undefined;\n\trestMs?: number | (() => number) | undefined;\n\tdelay?: Delay | (() => Delay) | undefined;\n\tmove?: boolean | undefined;\n\tmouseOnly?: boolean | undefined;\n\texternalTree?: FloatingTreeStore | undefined;\n\t/**\n\t * Whether the hook controls the active trigger. When `false`, consumers\n\t * spread the returned props on an inactive trigger via\n\t * `getTriggerProps`.\n\t * @default true\n\t */\n\tisActiveTrigger?: MaybeAccessor<boolean> | undefined;\n\t/**\n\t * Reactive trigger element — re-arms `mouseenter` / `mouseleave` listeners\n\t * when the ref callback mounts (split-effect compute phase).\n\t */\n\ttriggerElement?: MaybeAccessor<Element | null> | undefined;\n\ttriggerElementRef?: Readonly<MutableRef<Element | null>> | undefined;\n\tgetHandleCloseContext?: (() => HandleCloseContextBase | null) | undefined;\n\tisClosing?: (() => boolean) | undefined;\n}\n\n/**\n * Provides hover interactions that should be attached to reference or trigger\n * elements.\n */\nexport function useHoverReferenceInteraction(\n\tcontext: FloatingRootContext | FloatingContext,\n\tprops: UseHoverReferenceInteractionProps = {},\n): ElementPropsBag | undefined {\n\tconst store = \"rootStore\" in context ? context.rootStore : context;\n\tconst { dataRef, events } = store.context;\n\n\t// Untrack the body-time prop destructure: parents may pass\n\t// signal-derived values via JSX, which makes each `props.foo`\n\t// access a tracked read and fires `[STRICT_READ_UNTRACKED]` under\n\t// the strict-read scope set up by `devComponent(...)`. These fields\n\t// are typed as plain values (not `MaybeAccessor`), so a one-shot\n\t// snapshot here matches the React fork's semantics.\n\tconst {\n\t\tdelay = 0,\n\t\thandleClose = null,\n\t\tmouseOnly = false,\n\t\trestMs = 0,\n\t\tmove = true,\n\t\ttriggerElementRef = EMPTY_REF,\n\t\texternalTree,\n\t\tgetHandleCloseContext,\n\t\tisClosing,\n\t} = untrack(() => ({\n\t\tdelay: props.delay,\n\t\thandleClose: props.handleClose,\n\t\tmouseOnly: props.mouseOnly,\n\t\trestMs: props.restMs,\n\t\tmove: props.move,\n\t\ttriggerElementRef: props.triggerElementRef,\n\t\texternalTree: props.externalTree,\n\t\tgetHandleCloseContext: props.getHandleCloseContext,\n\t\tisClosing: props.isClosing,\n\t}));\n\n\tconst readEnabled = (): boolean => readOption(props.enabled) ?? true;\n\tconst readIsActiveTrigger = (): boolean =>\n\t\treadOption(props.isActiveTrigger) ?? true;\n\tconst readTriggerElement = (): Element | null =>\n\t\treadOption(props.triggerElement) ?? null;\n\n\tconst tree = useFloatingTree(externalTree);\n\n\tconst instance = useHoverInteractionSharedState(store);\n\tconst isHoverCloseActiveRef: MutableRef<boolean> = { current: false };\n\n\tcreateEffect(\n\t\t() => readIsActiveTrigger(),\n\t\t(active) => {\n\t\t\tif (active) {\n\t\t\t\tinstance.handleCloseOptions = handleClose?.__options;\n\t\t\t}\n\t\t},\n\t);\n\n\tconst isClickLikeOpenEvent = createStableCallback<() => boolean>(\n\t\t() => () =>\n\t\t\tisClickLikeOpenEventShared(\n\t\t\t\tdataRef.current.openEvent?.type,\n\t\t\t\tinstance.interactedInside,\n\t\t\t),\n\t);\n\n\tconst isRelatedTargetInsideEnabledTrigger = createStableCallback<\n\t\t(target: EventTarget | null) => boolean\n\t>(() => (target: EventTarget | null) => {\n\t\treturn isTargetInsideEnabledTrigger(target, store.context.triggerElements);\n\t});\n\n\tconst isOverInactiveTrigger = createStableCallback<\n\t\t(\n\t\t\tcurrentDomReference: Element | null,\n\t\t\tcurrentTarget: Element,\n\t\t\ttarget: EventTarget | null,\n\t\t) => boolean\n\t>(\n\t\t() =>\n\t\t\t(\n\t\t\t\tcurrentDomReference: Element | null,\n\t\t\t\tcurrentTarget: Element,\n\t\t\t\ttarget: EventTarget | null,\n\t\t\t) => {\n\t\t\t\tconst allTriggers = store.context.triggerElements;\n\n\t\t\t\tif (allTriggers.hasElement(currentTarget)) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t!currentDomReference ||\n\t\t\t\t\t\t!contains(currentDomReference, currentTarget)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (!isElement(target)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst targetElement = target as Element;\n\t\t\t\treturn (\n\t\t\t\t\tallTriggers.hasMatchingElement((trigger) =>\n\t\t\t\t\t\tcontains(trigger, targetElement),\n\t\t\t\t\t) &&\n\t\t\t\t\t(!currentDomReference ||\n\t\t\t\t\t\t!contains(currentDomReference, targetElement))\n\t\t\t\t);\n\t\t\t},\n\t);\n\n\tconst closeWithDelay = createStableCallback<\n\t\t(event: MouseEvent, runElseBranch?: boolean) => void\n\t>(() => (event: MouseEvent, runElseBranch = true) => {\n\t\tconst closeDelay = getDelay(delay, \"close\", instance.pointerType);\n\t\tif (closeDelay) {\n\t\t\tinstance.openChangeTimeout.start(closeDelay, () => {\n\t\t\t\tstore.setOpen(\n\t\t\t\t\tfalse,\n\t\t\t\t\tcreateChangeEventDetails(\n\t\t\t\t\t\tREASONS.triggerHover,\n\t\t\t\t\t\tevent,\n\t\t\t\t\t) as BaseUIChangeEventDetails<string>,\n\t\t\t\t);\n\t\t\t\ttree?.events.emit(\"floating.closed\", event);\n\t\t\t});\n\t\t} else if (runElseBranch) {\n\t\t\tinstance.openChangeTimeout.clear();\n\t\t\tstore.setOpen(\n\t\t\t\tfalse,\n\t\t\t\tcreateChangeEventDetails(\n\t\t\t\t\tREASONS.triggerHover,\n\t\t\t\t\tevent,\n\t\t\t\t) as BaseUIChangeEventDetails<string>,\n\t\t\t);\n\t\t\ttree?.events.emit(\"floating.closed\", event);\n\t\t}\n\t});\n\n\tconst cleanupMouseMoveHandler = createStableCallback<() => void>(() => () => {\n\t\tif (!instance.handler) {\n\t\t\treturn;\n\t\t}\n\t\tconst doc = ownerDocument(store.state.domReferenceElement);\n\t\tdoc.removeEventListener(\"mousemove\", instance.handler);\n\t\tinstance.handler = undefined;\n\t});\n\n\tconst clearPointerEvents = createStableCallback<() => void>(() => () => {\n\t\tclearSafePolygonPointerEventsMutation(instance);\n\t});\n\n\t// Single-shot unmount-style cleanup — matches React's\n\t// `React.useEffect(() => cleanupMouseMoveHandler, [...])`.\n\tonCleanup(() => {\n\t\tcleanupMouseMoveHandler();\n\t});\n\n\t// `openchange` listener: clears pending hover timers whenever the\n\t// popup closes so a delayed hover-open can't fight an external\n\t// `setOpen(false)`. Matches React's subscriber.\n\tcreateEffect(\n\t\t() => readEnabled(),\n\t\t(isEnabled) => {\n\t\t\tif (!isEnabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfunction onOpenChangeLocal(details: FloatingUIOpenChangeDetails) {\n\t\t\t\tif (!details.open) {\n\t\t\t\t\tisHoverCloseActiveRef.current =\n\t\t\t\t\t\tdetails.reason === REASONS.triggerHover;\n\t\t\t\t\tcleanupMouseMoveHandler();\n\t\t\t\t\tinstance.openChangeTimeout.clear();\n\t\t\t\t\tinstance.restTimeout.clear();\n\t\t\t\t\tinstance.blockMouseMove = true;\n\t\t\t\t\tinstance.restTimeoutPending = false;\n\t\t\t\t} else {\n\t\t\t\t\tisHoverCloseActiveRef.current = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tevents.on(\"openchange\", onOpenChangeLocal);\n\t\t\treturn () => {\n\t\t\t\tevents.off(\"openchange\", onOpenChangeLocal);\n\t\t\t};\n\t\t},\n\t);\n\n\t// Main reference-element listener effect. Re-runs when the reference\n\t// element identity changes (so `addEventListener` latches on the new\n\t// node), when the trigger ref signal updates, or when `enabled` flips.\n\tcreateEffect(\n\t\t() => {\n\t\t\tconst isActiveTrigger = readIsActiveTrigger();\n\t\t\tconst trigger =\n\t\t\t\treadTriggerElement() ??\n\t\t\t\t(triggerElementRef.current as HTMLElement | null) ??\n\t\t\t\t(isActiveTrigger\n\t\t\t\t\t? (store.state.domReferenceElement as HTMLElement | null)\n\t\t\t\t\t: null);\n\t\t\treturn { trigger, enabled: readEnabled() };\n\t\t},\n\t\t({ trigger, enabled }) => {\n\t\t\tif (!enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!isElement(trigger)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// `isElement` narrows to `Element`, but the listeners below use the\n\t\t\t// `HTMLElementEventMap` overloads; bind a non-null `HTMLElement` so the\n\t\t\t// typed handlers resolve and the narrowing survives nested closures.\n\t\t\tconst triggerEl = trigger as HTMLElement;\n\n\t\t\tlet referenceHasPointer = false;\n\n\t\t\tfunction onPointerEnterNative(event: PointerEvent) {\n\t\t\t\tinstance.pointerType = event.pointerType;\n\t\t\t}\n\n\t\t\tfunction onMouseEnter(event: MouseEvent) {\n\t\t\t\treferenceHasPointer = true;\n\t\t\t\tinstance.openChangeTimeout.clear();\n\t\t\t\tinstance.blockMouseMove = false;\n\n\t\t\t\t// `mouseenter` can fire before JSX `onPointerEnter` runs (or when\n\t\t\t\t// only imperative listeners are active). Treat it as mouse-like.\n\t\t\t\tif (\n\t\t\t\t\tmouseOnly &&\n\t\t\t\t\t!isMouseLikePointerType(instance.pointerType) &&\n\t\t\t\t\tevent.type === \"mouseenter\"\n\t\t\t\t) {\n\t\t\t\t\tinstance.pointerType = \"mouse\";\n\t\t\t\t}\n\n\t\t\t\tif (mouseOnly && !isMouseLikePointerType(instance.pointerType)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Only rest delay is set; there's no fallback delay.\n\t\t\t\t// This will be handled by `onMouseMove`.\n\t\t\t\tconst restMsValue = getRestMs(restMs);\n\t\t\t\tconst openDelay = getDelay(delay, \"open\", instance.pointerType);\n\t\t\t\tconst eventTarget = getTarget(event);\n\t\t\t\tconst currentTarget = (event.currentTarget as HTMLElement) ?? null;\n\t\t\t\tconst currentDomReference = store.state.domReferenceElement;\n\t\t\t\tlet triggerNode = currentTarget;\n\n\t\t\t\t// Wrapper/delegated mode: resolve the actual trigger from the event target.\n\t\t\t\tif (\n\t\t\t\t\tisElement(eventTarget) &&\n\t\t\t\t\t!store.context.triggerElements.hasElement(eventTarget as Element)\n\t\t\t\t) {\n\t\t\t\t\tfor (const triggerElement of store.context.triggerElements.elements()) {\n\t\t\t\t\t\tif (contains(triggerElement, eventTarget as Element)) {\n\t\t\t\t\t\t\ttriggerNode = triggerElement as HTMLElement;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Wrapper/delegated mode fallback.\n\t\t\t\tif (\n\t\t\t\t\tisElement(currentTarget) &&\n\t\t\t\t\tisElement(currentDomReference) &&\n\t\t\t\t\t!store.context.triggerElements.hasElement(currentTarget) &&\n\t\t\t\t\tcontains(currentTarget, currentDomReference as Element)\n\t\t\t\t) {\n\t\t\t\t\ttriggerNode = currentDomReference as HTMLElement;\n\t\t\t\t}\n\n\t\t\t\tconst isOverInactive =\n\t\t\t\t\ttriggerNode == null\n\t\t\t\t\t\t? false\n\t\t\t\t\t\t: isOverInactiveTrigger(\n\t\t\t\t\t\t\t\tcurrentDomReference,\n\t\t\t\t\t\t\t\ttriggerNode,\n\t\t\t\t\t\t\t\teventTarget,\n\t\t\t\t\t\t\t);\n\t\t\t\tconst isOpen = store.state.open;\n\t\t\t\tconst isInClosingTransition =\n\t\t\t\t\tisClosing?.() ?? store.state.transitionStatus === \"ending\";\n\t\t\t\tconst isHoverCloseTransition =\n\t\t\t\t\t!isOpen && isInClosingTransition && isHoverCloseActiveRef.current;\n\t\t\t\tconst isReenteringSameTriggerDuringCloseTransition =\n\t\t\t\t\t!isOverInactive &&\n\t\t\t\t\tisElement(triggerNode) &&\n\t\t\t\t\tisElement(currentDomReference) &&\n\t\t\t\t\tcontains(currentDomReference as Element, triggerNode) &&\n\t\t\t\t\tisHoverCloseTransition;\n\t\t\t\tconst isRestOnlyDelay = restMsValue > 0 && !openDelay;\n\t\t\t\tconst shouldOpenImmediately =\n\t\t\t\t\t(isOverInactive && (isOpen || isHoverCloseTransition)) ||\n\t\t\t\t\tisReenteringSameTriggerDuringCloseTransition;\n\n\t\t\t\tconst shouldOpen = !isOpen || isOverInactive;\n\n\t\t\t\tif (shouldOpenImmediately) {\n\t\t\t\t\tstore.setOpen(\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\tcreateChangeEventDetails(\n\t\t\t\t\t\t\tREASONS.triggerHover,\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\ttriggerNode ?? undefined,\n\t\t\t\t\t\t) as BaseUIChangeEventDetails<string>,\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (isRestOnlyDelay) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (openDelay) {\n\t\t\t\t\tinstance.openChangeTimeout.start(openDelay, () => {\n\t\t\t\t\t\tif (!shouldOpen || !referenceHasPointer) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!store.state.open) {\n\t\t\t\t\t\t\tstore.setOpen(\n\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\tcreateChangeEventDetails(\n\t\t\t\t\t\t\t\t\tREASONS.triggerHover,\n\t\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\t\ttriggerNode ?? undefined,\n\t\t\t\t\t\t\t\t) as BaseUIChangeEventDetails<string>,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else if (shouldOpen) {\n\t\t\t\t\tstore.setOpen(\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\tcreateChangeEventDetails(\n\t\t\t\t\t\t\tREASONS.triggerHover,\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\ttriggerNode ?? undefined,\n\t\t\t\t\t\t) as BaseUIChangeEventDetails<string>,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction onMouseLeave(event: MouseEvent) {\n\t\t\t\treferenceHasPointer = false;\n\n\t\t\t\tif (isClickLikeOpenEvent()) {\n\t\t\t\t\tclearPointerEvents();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Cancel a pending hover-open when the pointer leaves before the\n\t\t\t\t// delay elapses. This must run even when `floatingContext` is not\n\t\t\t\t// wired yet (popup still mounting) — otherwise the timer fires\n\t\t\t\t// after leave and the surface blips visible briefly.\n\t\t\t\tif (!store.state.open) {\n\t\t\t\t\tinstance.openChangeTimeout.clear();\n\t\t\t\t}\n\n\t\t\t\tcleanupMouseMoveHandler();\n\n\t\t\t\tconst domReferenceElement = store.state.domReferenceElement;\n\t\t\t\tconst doc = ownerDocument(domReferenceElement);\n\t\t\t\tinstance.restTimeout.clear();\n\t\t\t\tinstance.restTimeoutPending = false;\n\n\t\t\t\tconst handleCloseContextBase =\n\t\t\t\t\tdataRef.current.floatingContext ?? getHandleCloseContext?.();\n\n\t\t\t\tconst ignoreRelatedTargetTrigger = isRelatedTargetInsideEnabledTrigger(\n\t\t\t\t\tevent.relatedTarget,\n\t\t\t\t);\n\n\t\t\t\tif (ignoreRelatedTargetTrigger) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (handleClose && handleCloseContextBase) {\n\t\t\t\t\tif (!store.state.open) {\n\t\t\t\t\t\tinstance.openChangeTimeout.clear();\n\t\t\t\t\t}\n\n\t\t\t\t\tconst currentTrigger = triggerElementRef.current;\n\n\t\t\t\t\tinstance.handler = handleClose({\n\t\t\t\t\t\t...(handleCloseContextBase as HandleCloseContextBase),\n\t\t\t\t\t\ttree,\n\t\t\t\t\t\tx: event.clientX,\n\t\t\t\t\t\ty: event.clientY,\n\t\t\t\t\t\tonClose() {\n\t\t\t\t\t\t\tclearPointerEvents();\n\t\t\t\t\t\t\tcleanupMouseMoveHandler();\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\treadEnabled() &&\n\t\t\t\t\t\t\t\t!isClickLikeOpenEvent() &&\n\t\t\t\t\t\t\t\tcurrentTrigger === store.state.domReferenceElement\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tcloseWithDelay(event, true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\n\t\t\t\t\tdoc.addEventListener(\"mousemove\", instance.handler);\n\t\t\t\t\tinstance.handler(event);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!store.state.open) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst shouldClose =\n\t\t\t\t\tinstance.pointerType === \"touch\"\n\t\t\t\t\t\t? !contains(\n\t\t\t\t\t\t\t\tstore.state.floatingElement,\n\t\t\t\t\t\t\t\tevent.relatedTarget as Element | null,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: true;\n\n\t\t\t\tif (shouldClose) {\n\t\t\t\t\tcloseWithDelay(event);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction syncHoverWhileAlreadyOver(): void {\n\t\t\t\tif (store.state.open || instance.openChangeTimeout.isStarted()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet hovered = false;\n\t\t\t\ttry {\n\t\t\t\t\thovered = triggerEl.matches(\":hover\");\n\t\t\t\t} catch {\n\t\t\t\t\thovered = false;\n\t\t\t\t}\n\t\t\t\tif (!hovered) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tonMouseEnter(\n\t\t\t\t\tnew MouseEvent(\"mouseenter\", { bubbles: true, cancelable: true }),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst cleanups: Array<() => void> = [];\n\n\t\t\tif (move) {\n\t\t\t\tconst onceHandler = (evt: MouseEvent) => onMouseEnter(evt);\n\t\t\t\ttriggerEl.addEventListener(\"mousemove\", onceHandler, { once: true });\n\t\t\t\tcleanups.push(() => {\n\t\t\t\t\ttriggerEl.removeEventListener(\"mousemove\", onceHandler);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\ttriggerEl.addEventListener(\"pointerenter\", onPointerEnterNative);\n\t\t\ttriggerEl.addEventListener(\"mouseenter\", onMouseEnter);\n\t\t\ttriggerEl.addEventListener(\"mouseleave\", onMouseLeave);\n\t\t\tcleanups.push(() => {\n\t\t\t\ttriggerEl.removeEventListener(\"pointerenter\", onPointerEnterNative);\n\t\t\t\ttriggerEl.removeEventListener(\"mouseenter\", onMouseEnter);\n\t\t\t\ttriggerEl.removeEventListener(\"mouseleave\", onMouseLeave);\n\t\t\t});\n\n\t\t\tqueueMicrotask(syncHoverWhileAlreadyOver);\n\n\t\t\treturn () => {\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},\n\t);\n\n\tfunction setPointerRef(event: PointerEvent) {\n\t\tinstance.pointerType = event.pointerType;\n\t}\n\n\treturn {\n\t\tonPointerDown: setPointerRef,\n\t\tonPointerEnter: setPointerRef,\n\t\tonMouseMove(event: MouseEvent) {\n\t\t\tconst nativeEvent = event;\n\t\t\tconst trigger = event.currentTarget as HTMLElement;\n\n\t\t\tconst currentDomReference = store.state.domReferenceElement;\n\t\t\tconst currentOpen = store.state.open;\n\t\t\tconst isOverInactive = isOverInactiveTrigger(\n\t\t\t\tcurrentDomReference,\n\t\t\t\ttrigger,\n\t\t\t\tevent.target,\n\t\t\t);\n\n\t\t\tif (mouseOnly && !isMouseLikePointerType(instance.pointerType)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tcurrentOpen &&\n\t\t\t\tisOverInactive &&\n\t\t\t\tinstance.handleCloseOptions?.blockPointerEvents\n\t\t\t) {\n\t\t\t\tconst floatingElement = store.state.floatingElement;\n\n\t\t\t\tif (floatingElement) {\n\t\t\t\t\tconst scopeElement =\n\t\t\t\t\t\tinstance.handleCloseOptions?.getScope?.() ??\n\t\t\t\t\t\ttrigger.ownerDocument.body;\n\n\t\t\t\t\tapplySafePolygonPointerEventsMutation(instance, {\n\t\t\t\t\t\tscopeElement,\n\t\t\t\t\t\treferenceElement: trigger,\n\t\t\t\t\t\tfloatingElement,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst restMsValue = getRestMs(restMs);\n\t\t\tif ((currentOpen && !isOverInactive) || restMsValue === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst movementX = (event as MouseEvent & { movementX?: number })\n\t\t\t\t.movementX;\n\t\t\tconst movementY = (event as MouseEvent & { movementY?: number })\n\t\t\t\t.movementY;\n\t\t\tif (\n\t\t\t\t!isOverInactive &&\n\t\t\t\tinstance.restTimeoutPending &&\n\t\t\t\t(movementX ?? 0) ** 2 + (movementY ?? 0) ** 2 < 2\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tinstance.restTimeout.clear();\n\n\t\t\tfunction handleMouseMove() {\n\t\t\t\tinstance.restTimeoutPending = false;\n\n\t\t\t\t// A delayed hover open should not override a click-like open that\n\t\t\t\t// happened while the hover delay was pending.\n\t\t\t\tif (isClickLikeOpenEvent()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst latestOpen = store.state.open;\n\n\t\t\t\tif (!instance.blockMouseMove && (!latestOpen || isOverInactive)) {\n\t\t\t\t\tstore.setOpen(\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\tcreateChangeEventDetails(\n\t\t\t\t\t\t\tREASONS.triggerHover,\n\t\t\t\t\t\t\tnativeEvent,\n\t\t\t\t\t\t\ttrigger,\n\t\t\t\t\t\t) as BaseUIChangeEventDetails<string>,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (instance.pointerType === \"touch\") {\n\t\t\t\t// React uses `ReactDOM.flushSync` to apply the touch-open\n\t\t\t\t// synchronously so downstream reactive readers see it in\n\t\t\t\t// the same tick. Solid's `flush()` is the direct analogue.\n\t\t\t\thandleMouseMove();\n\t\t\t\tflush();\n\t\t\t} else if (isOverInactive && currentOpen) {\n\t\t\t\thandleMouseMove();\n\t\t\t} else {\n\t\t\t\tinstance.restTimeoutPending = true;\n\t\t\t\tinstance.restTimeout.start(restMsValue, handleMouseMove);\n\t\t\t}\n\t\t},\n\t};\n}\n"],"mappings":"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","ignoreList":[]}