import React, { useRef, useState, useEffect } from 'react'; export default function VariablesDialog({ open, variables, onSelect, onClose }) { const dialogRef = useRef(null); const [metaKeys, setMetaKeys] = useState({}); useEffect(() => { if (!open) return; const dialog = dialogRef.current; if (!dialog) return; let isDragging = false; let offsetX = 0; let offsetY = 0; const header = dialog.querySelector('.waic-dialog-header'); const onMouseDown = (e) => { isDragging = true; offsetX = e.clientX - dialog.offsetLeft; offsetY = e.clientY - dialog.offsetTop; document.addEventListener('mousemove', onMouseMove); document.addEventListener('mouseup', onMouseUp); }; const onMouseMove = (e) => { if (!isDragging) return; dialog.style.left = e.clientX - offsetX + 'px'; dialog.style.top = e.clientY - offsetY + 'px'; }; const onMouseUp = () => { isDragging = false; document.removeEventListener('mousemove', onMouseMove); document.removeEventListener('mouseup', onMouseUp); }; const handleClickOutside = (e) => { if (!dialog.contains(e.target)) { onClose(); } }; waicInitTooltips('.waic-group-list'); header.addEventListener('mousedown', onMouseDown); document.addEventListener('mousedown', handleClickOutside); return () => { header.removeEventListener('mousedown', onMouseDown); document.removeEventListener('mousedown', handleClickOutside); }; }, [open, onClose]); const handleSelect = (nodeId, varKey, isMeta) => { const customKey = isMeta ? metaKeys[`${nodeId}_${varKey}`] : null; onSelect(nodeId, varKey, customKey); setMetaKeys(prev => ({ ...prev, [`${nodeId}_${varKey}`]: '' })); }; const handleMetaChange = (nodeId, varKey, value) => { setMetaKeys(prev => ({ ...prev, [`${nodeId}_${varKey}`]: value })); }; /*const handleSelect = (nodeId, varKey, isMeta) => { const customKey = isMeta ? metaKey : null; onSelect(nodeId, varKey, metaKey); setMetaKey(null); };*/ if (!open) return null; return (
)}
{isMeta && (
handleMetaChange(group.nodeId, key, e.target.value)}
/>
)}