import React, { memo, useCallback, useMemo } from 'react' interface SentenceInputProps { value: string onChange: (value: string) => void onSubmit: () => void disabled?: boolean placeholder?: string showResult?: boolean targetWordLength?: number className?: string } export const SentenceInput = memo(({ value, onChange, onSubmit, disabled = false, placeholder = '', showResult = false, targetWordLength = 0, className = '' }) => { const handleChange = useCallback((e: React.ChangeEvent) => { onChange(e.target.value) }, [onChange]) const handleKeyDown = useCallback((e: React.KeyboardEvent) => { if (e.key === 'Enter' && !showResult && value.trim()) { onSubmit() } }, [onSubmit, showResult, value]) const inputWidth = useMemo(() => { return Math.max(100, Math.max(targetWordLength * 12, value.length * 12 + 20)) }, [targetWordLength, value.length]) return ( {!value && ( ____ )} ) }) SentenceInput.displayName = 'SentenceInput'