UNPKG

@difizen/ai-flow

Version:

Scalable, out-of-the-box, agent-oriented flow

53 lines 2.21 kB
import { produce } from 'immer'; import { create } from 'zustand'; import { useFlowStore } from "./flowStore"; import { useHelpLine } from "./helpLine"; export var useNodeInteractions = create(function (set, get) { return { dragNodeStartPosition: { x: 0, y: 0 }, setNodeDragStartPosition: function setNodeDragStartPosition(x, y) { set({ dragNodeStartPosition: { x: x, y: y } }); }, onNodeDragStart: function onNodeDragStart(node) { get().setNodeDragStartPosition(node.position.x, node.position.y); }, onNodeDrag: function onNodeDrag(node) { var _useHelpLine$getState = useHelpLine.getState(), showHorizontalHelpLine = _useHelpLine$getState.showHorizontalHelpLine, showVerticalHelpLine = _useHelpLine$getState.showVerticalHelpLine; var showHorizontalHelpLineNodes = showHorizontalHelpLine(node); var showVerticalHelpLineNodes = showVerticalHelpLine(node); var _useFlowStore$getStat = useFlowStore.getState(), nodes = _useFlowStore$getStat.nodes, setNodes = _useFlowStore$getStat.setNodes; var newNodes = produce(nodes, function (draft) { var currentNode = draft.find(function (n) { return n.id === node.id; }); if (showVerticalHelpLineNodes.length > 0) currentNode.position.x = showVerticalHelpLineNodes[0].position.x;else currentNode.position.x = node.position.x; if (showHorizontalHelpLineNodes.length > 0) currentNode.position.y = showHorizontalHelpLineNodes[0].position.y;else currentNode.position.y = node.position.y; }); setNodes(newNodes); }, onNodeDragEnd: function onNodeDragEnd(node) { var _useHelpLine$getState2 = useHelpLine.getState(), setHelpLineHorizontal = _useHelpLine$getState2.setHelpLineHorizontal, setHelpLineVertical = _useHelpLine$getState2.setHelpLineVertical; var _get$dragNodeStartPos = get().dragNodeStartPosition, x = _get$dragNodeStartPos.x, y = _get$dragNodeStartPos.y; if (!(x === node.position.x && y === node.position.y)) { setHelpLineHorizontal(); setHelpLineVertical(); } } }; });