'use client'; import * as React from 'react'; import { isElement } from '@floating-ui/utils/dom'; import { fastComponentRef } from '@base-ui/utils/fastHooks'; import { useTimeout } from '@base-ui/utils/useTimeout'; import { useValueAsRef } from '@base-ui/utils/useValueAsRef'; import { useTooltipRootContext } from '../root/TooltipRootContext'; import type { BaseUIComponentProps, BaseUIEvent } from '../../internals/types'; import { triggerOpenStateMapping } from '../../utils/popupStateMapping'; import { useRenderElement } from '../../internals/useRenderElement'; import { usePopupHandleStore, useTriggerDataForwarding } from '../../utils/popups'; import { useBaseUiId } from '../../internals/useBaseUiId'; import type { TooltipHandle } from '../store/TooltipHandle'; import { useTooltipProviderContext } from '../provider/TooltipProviderContext'; import { safePolygon, useDelayGroup, useFocus, useHoverReferenceInteraction, } from '../../floating-ui-react'; import { closest, contains, getTarget } from '../../floating-ui-react/utils/element'; import { isMouseLikePointerType } from '../../floating-ui-react/utils/event'; import { createChangeEventDetails } from '../../internals/createBaseUIEventDetails'; import { REASONS } from '../../internals/reasons'; import { useHoverInteractionSharedState } from '../../floating-ui-react/hooks/useHoverInteractionSharedState'; import { getDelay } from '../../floating-ui-react/hooks/useHoverShared'; import * as TooltipTriggerDataAttributes from './TooltipTriggerDataAttributes'; import { OPEN_DELAY } from '../utils/constants'; const TOOLTIP_TRIGGER_IDENTIFIER = 'data-base-ui-tooltip-trigger'; function getTargetElement(event: Event): Element | null { const target = getTarget(event); return isElement(target) ? target : null; } /** * An element to attach the tooltip to. * Renders a `