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 (
{window.WAIC_WORKFLOW?.lang?.var_dialog || ''}
Close
{variables.length > 0 ? (
    {variables.map(group => (
  • {group.label}
    {group.sublabel}
    [{group.nodeId}]
      {Object.entries(group.variables).map(([key, val]) => { const isMeta = val.endsWith('*'); //const isField = val.endsWith('***'); const tooltip = isMeta ? window.WAIC_WORKFLOW?.lang?.['var_tooltip_' + key] || '' : ''; const placeholder = isMeta ? window.WAIC_WORKFLOW?.lang?.['var_plh_' + key] || '' : ''; //const placeholder = isField ? window.WAIC_WORKFLOW?.lang?.plh_field : ( val.endsWith('**') ? window.WAIC_WORKFLOW?.lang?.plh_taxonomy : window.WAIC_WORKFLOW?.lang?.plh_meta ); return (
    • {tooltip && ( info )} {isMeta && ( handleMetaChange(group.nodeId, key, e.target.value)} /> )}
    • ); })}
  • ))}
) : ( window.WAIC_WORKFLOW?.lang?.var_none || 'No variables' )}
); }