// src/client/shared/lib/useTooltip.ts
// Composable for managing tooltip state with AppCursorTooltip

import { ref } from 'vue';
import { useMouseFollower } from './useMouseFollower';

// Global tooltip state (singleton pattern)
const tooltipText = ref('');
const tooltipVisible = ref(false);

/**
 * Composable for managing tooltip state
 * Uses global state to ensure only one tooltip instance exists
 *
 * @returns Object with tooltip control functions
 */
export function useTooltip() {
  const { setInvertedMode } = useMouseFollower();

  /**
   * Show tooltip with specified text
   * @param text - Tooltip text to display
   * @param options - Optional configuration object
   * @param options.invert - If true, tooltip anchors to bottom-right of cursor
   */
  const showTooltip = (text: string, options?: { invert?: boolean }) => {
    tooltipText.value = text;
    tooltipVisible.value = true;

    // Apply inverted mode if specified
    if (options?.invert) {
      setInvertedMode(true);
    }
  };

  /**
   * Hide tooltip
   */
  const hideTooltip = () => {
    tooltipVisible.value = false;
    // Сбрасываем режим инверсии при скрытии
    setInvertedMode(false);
  };

  return {
    tooltipText,
    tooltipVisible,
    showTooltip,
    hideTooltip
  };
}
