// This file is auto-generated by "@aria-ui/cli". Do not edit this file directly. import { registerTooltipTriggerElement, type TooltipTriggerElement, type TooltipTriggerProps as TooltipTriggerElementProps } from '@prosekit/web/tooltip'; import { createElement, forwardRef, useCallback, useRef, type ForwardedRef, type ForwardRefExoticComponent, type HTMLAttributes, type RefAttributes, useLayoutEffect } from 'react'; /** Props for the {@link TooltipTrigger} React component. */ export interface TooltipTriggerProps { /** * Whether the component should ignore user interaction. * @default false */ disabled?: TooltipTriggerElementProps['disabled']; /** * The delay in milliseconds before opening the tooltip on hover. * @default 600 */ openDelay?: TooltipTriggerElementProps['openDelay']; /** * The delay in milliseconds before closing the tooltip when hover/focus ends. * @default 0 */ closeDelay?: TooltipTriggerElementProps['closeDelay']; } function TooltipTriggerComponent(props: TooltipTriggerProps, forwardedRef: ForwardedRef) { registerTooltipTriggerElement(); const elementRef = useRef(null); const { closeDelay: p0, disabled: p1, openDelay: p2, ...restProps } = props; useLayoutEffect(() => { const element = elementRef.current as Record | null; if (!element) return; Object.assign(element, { closeDelay: p0, disabled: p1, openDelay: p2 }); }); const mergedRef = useCallback( (element: TooltipTriggerElement | null) => { elementRef.current = element; if (typeof forwardedRef === 'function') { forwardedRef(element); } else if (forwardedRef) { forwardedRef.current = element; } }, [forwardedRef], ); return createElement('prosekit-tooltip-trigger', { ...restProps, ref: mergedRef, suppressHydrationWarning: true }); } /** A React component that renders an `prosekit-tooltip-trigger` custom element. */ export const TooltipTrigger: ForwardRefExoticComponent & RefAttributes> = /* @__PURE__ */ forwardRef(TooltipTriggerComponent);