"use client"; import { useState, useRef, useEffect } from 'react'; import { createPortal } from 'react-dom'; interface EdgeExplanationModalProps { sourceTitle: string; targetTitle: string; onSubmit: (explanation: string) => void; onCancel: () => void; } export default function EdgeExplanationModal({ sourceTitle, targetTitle, onSubmit, onCancel, }: EdgeExplanationModalProps) { const [explanation, setExplanation] = useState(''); const textareaRef = useRef(null); useEffect(() => { textareaRef.current?.focus(); document.body.style.overflow = 'hidden'; return () => { document.body.style.overflow = ''; }; }, []); const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === 'Escape') { onCancel(); } else if (e.key === 'Enter' && (e.metaKey || e.ctrlKey) && explanation.trim()) { e.preventDefault(); onSubmit(explanation.trim()); } }; const modalContent = (
e.stopPropagation()} > {/* Connection visualization */}
{sourceTitle.length > 24 ? sourceTitle.slice(0, 22) + '\u2026' : sourceTitle} {targetTitle.length > 24 ? targetTitle.slice(0, 22) + '\u2026' : targetTitle}
{/* Textarea */}