import { useEffect, useRef } from 'react';

/**
 * Setzt den Fokus einmalig auf ein Element, sobald es erscheint.
 *
 * Wird für Bereiche gebraucht, die eine Bedienfläche ersetzen (Ergebnis,
 * Musterantwort): ohne diesen Sprung landet der Fokus beim Verschwinden der
 * Schaltfläche auf `<body>` und die Tastaturbedienung verliert ihren Platz.
 *
 * `aktiv = false` liefert nur die Referenz und lässt den Fokus in Ruhe – nötig,
 * wenn derselbe Bereich mehrfach auf einer Seite steht (etwa die Musterantwort
 * in der Nachbewertung): Mehrere Elemente dürfen sich den Fokus nicht streitig
 * machen.
 */
export function useFokusBeimAufbau<T extends HTMLElement>(aktiv = true): React.RefObject<T | null> {
  const ref = useRef<T | null>(null);

  useEffect(() => {
    if (aktiv) {
      ref.current?.focus();
    }
  }, [aktiv]);

  return ref;
}
