import { useState, useEffect, useMemo, useRef, useCallback } from 'react' import { parseSearchQueryForQuickCreate } from '../utils/exerciseAiQuickCreate' /** * Titel aus Suche vorbelegen; Kurzbeschreibung optional und manuell editierbar. * Suchwechsel setzt „touched“ zurück und befüllt neu — solange der Nutzer nicht editiert hat. */ export function useExerciseAiQuickCreateFields(debouncedSearch, { enabled = true } = {}) { const [title, setTitleState] = useState('') const [sketch, setSketchState] = useState('') const [focusAreaId, setFocusAreaId] = useState('') const titleTouchedRef = useRef(false) const sketchTouchedRef = useRef(false) const lastSearchRef = useRef('') const parsed = useMemo(() => parseSearchQueryForQuickCreate(debouncedSearch), [debouncedSearch]) useEffect(() => { if (!enabled) return if (debouncedSearch !== lastSearchRef.current) { lastSearchRef.current = debouncedSearch titleTouchedRef.current = false sketchTouchedRef.current = false } if (!debouncedSearch) return if (!titleTouchedRef.current) { setTitleState(parsed.title) } if (!sketchTouchedRef.current) { setSketchState('') } }, [enabled, debouncedSearch, parsed.title]) const setTitle = useCallback((v) => { titleTouchedRef.current = true setTitleState(v) }, []) const setSketch = useCallback((v) => { sketchTouchedRef.current = true setSketchState(v) }, []) const resetQuickCreateFields = useCallback(() => { setTitleState('') setSketchState('') setFocusAreaId('') titleTouchedRef.current = false sketchTouchedRef.current = false lastSearchRef.current = '' }, []) return { title, sketch, focusAreaId, setTitle, setSketch, setFocusAreaId, resetQuickCreateFields, } }