|
|
|
|
@ -289,8 +289,10 @@ const FlowEditor: React.FC = () => {
|
|
|
|
|
// 监听边的变化,处理添加节点的触发
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
const edgeToAddNode = edges.find(edge => edge.data?.addNodeTrigger);
|
|
|
|
|
const pane = reactFlowWrapper.current?.getBoundingClientRect();
|
|
|
|
|
if (edgeToAddNode) {
|
|
|
|
|
console.log('Triggering add node for edge:', edgeToAddNode.id);
|
|
|
|
|
edgeToAddNode.data.y = (edgeToAddNode.data.clientY as number) - pane.top;
|
|
|
|
|
edgeToAddNode.data.x = (edgeToAddNode.data.clientX as number) - pane.left;
|
|
|
|
|
setEdgeForNodeAdd(edgeToAddNode);
|
|
|
|
|
|
|
|
|
|
// 清除触发标志
|
|
|
|
|
@ -380,7 +382,12 @@ const FlowEditor: React.FC = () => {
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// 点击画布其他区域关闭菜单
|
|
|
|
|
const onPaneClick = useCallback(() => setMenu(null), [setMenu]);
|
|
|
|
|
const onPaneClick = useCallback(() => {
|
|
|
|
|
setMenu(null);
|
|
|
|
|
// 关闭添加节点菜单
|
|
|
|
|
setEdgeForNodeAdd(null);
|
|
|
|
|
setPositionForNodeAdd(null);
|
|
|
|
|
}, [setMenu]);
|
|
|
|
|
|
|
|
|
|
// 关闭编辑弹窗
|
|
|
|
|
const closeEditModal = useCallback(() => {
|
|
|
|
|
@ -711,14 +718,19 @@ const FlowEditor: React.FC = () => {
|
|
|
|
|
<div
|
|
|
|
|
style={{
|
|
|
|
|
position: 'absolute',
|
|
|
|
|
top: edgeForNodeAdd ? '50%' : (positionForNodeAdd?.y || 0),
|
|
|
|
|
left: edgeForNodeAdd ? '50%' : (positionForNodeAdd?.x || 0),
|
|
|
|
|
top: edgeForNodeAdd ? (edgeForNodeAdd.data?.y as number || 0) : (positionForNodeAdd?.y || 0),
|
|
|
|
|
left: edgeForNodeAdd ? ((edgeForNodeAdd.data?.x as number || 0) + 20) : (positionForNodeAdd?.x || 0),
|
|
|
|
|
zIndex: 1000,
|
|
|
|
|
transform: edgeForNodeAdd ? 'translate(-50%, -50%)' : 'none'
|
|
|
|
|
transform: 'none'
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
<AddNodeMenu
|
|
|
|
|
onAddNode={handleAddNode}
|
|
|
|
|
onAddNode={(nodeType) => {
|
|
|
|
|
handleAddNode(nodeType);
|
|
|
|
|
// 关闭菜单
|
|
|
|
|
setEdgeForNodeAdd(null);
|
|
|
|
|
setPositionForNodeAdd(null);
|
|
|
|
|
}}
|
|
|
|
|
position={positionForNodeAdd || undefined}
|
|
|
|
|
edgeId={edgeForNodeAdd?.id}
|
|
|
|
|
/>
|
|
|
|
|
|