import React, { useState, useRef, useEffect } from "react"; interface RenameInputProps { value: string; onRename?: (newText: string) => void; } const RenameInput: React.FC = ({ value, onRename }) => { const [isEditing, setIsEditing] = useState(false); const [text, setText] = useState(value); const inputRef = useRef(null); useEffect(() => { setText(value); // Ensure state updates when parent value changes }, [value]); const handleDoubleClick = () => { setIsEditing(true); setTimeout(() => inputRef.current?.focus(), 0); // Focus the input after rendering }; const handleBlur = () => { setIsEditing(false); if (onRename) { onRename(text); } }; const handleChange = (e: React.ChangeEvent) => { setText(e.target.value); }; const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === "Enter") { setIsEditing(false); if (onRename) { onRename(text); } } }; return ( <> {isEditing ? ( ) : ( {text} )} ); }; export default RenameInput;