"use client"; import { useEffect, useRef, useState } from "react"; import type { QuestionField } from "@/lib/schema-adapter"; import { useI18n } from "@/translations/provider"; import { useQuestionAnswers } from "./question-answer-storage"; import QuestionTitle from "./question-title"; type QuestionTextareaProps = { question: QuestionField; description?: string; disabled?: boolean; }; export function QuestionTextarea({ question, description, disabled, }: QuestionTextareaProps) { const { dictionary: t } = useI18n(); const { getAnswerValue, setAnswerValue } = useQuestionAnswers(); const value = getAnswerValue(question); const [localValue, setLocalValue] = useState(String(value ?? "")); const debounceTimerRef = useRef(null); useEffect(() => { setLocalValue(String(value ?? "")); }, [value]); const handleChange = (e: React.ChangeEvent) => { const val = e.target.value; setLocalValue(val); if (debounceTimerRef.current) { clearTimeout(debounceTimerRef.current); } debounceTimerRef.current = setTimeout(() => { setAnswerValue(question, val); }, 300); }; const handleBlur = () => { if (debounceTimerRef.current) { clearTimeout(debounceTimerRef.current); } setAnswerValue(question, localValue); }; const stringValue = localValue.trim(); const isAnswered = question.required === false ? true : stringValue.length > 0; return (