| const { | const { | ||||
| setClipboardElements, | setClipboardElements, | ||||
| shortcutsDisabled, | |||||
| } = workflowStore.getState() | } = workflowStore.getState() | ||||
| if (shortcutsDisabled) | |||||
| return | |||||
| const { | const { | ||||
| getNodes, | getNodes, | ||||
| } = store.getState() | } = store.getState() | ||||
| const { | const { | ||||
| clipboardElements, | clipboardElements, | ||||
| shortcutsDisabled, | |||||
| } = workflowStore.getState() | } = workflowStore.getState() | ||||
| if (shortcutsDisabled) | |||||
| return | |||||
| const { | const { | ||||
| getNodes, | getNodes, | ||||
| setNodes, | setNodes, | ||||
| if (getNodesReadOnly()) | if (getNodesReadOnly()) | ||||
| return | return | ||||
| const { | |||||
| shortcutsDisabled, | |||||
| } = workflowStore.getState() | |||||
| if (shortcutsDisabled) | |||||
| return | |||||
| const { | const { | ||||
| getNodes, | getNodes, | ||||
| } = store.getState() | } = store.getState() | ||||
| for (const node of nodesToDelete) | for (const node of nodesToDelete) | ||||
| handleNodeDelete(node.id) | handleNodeDelete(node.id) | ||||
| }, [getNodesReadOnly, handleNodeDelete, store]) | |||||
| }, [getNodesReadOnly, handleNodeDelete, store, workflowStore]) | |||||
| return { | return { | ||||
| handleNodeDragStart, | handleNodeDragStart, | 
| return nodes.find(node => node.id === nodeId) || nodes.find(node => node.data.type === BlockEnum.Start) | return nodes.find(node => node.id === nodeId) || nodes.find(node => node.data.type === BlockEnum.Start) | ||||
| }, [store]) | }, [store]) | ||||
| const enableShortcuts = useCallback(() => { | |||||
| const { setShortcutsDisabled } = workflowStore.getState() | |||||
| setShortcutsDisabled(false) | |||||
| }, [workflowStore]) | |||||
| const disableShortcuts = useCallback(() => { | |||||
| const { setShortcutsDisabled } = workflowStore.getState() | |||||
| setShortcutsDisabled(true) | |||||
| }, [workflowStore]) | |||||
| return { | return { | ||||
| handleLayout, | handleLayout, | ||||
| getTreeLeafNodes, | getTreeLeafNodes, | ||||
| renderTreeFromRecord, | renderTreeFromRecord, | ||||
| getNode, | getNode, | ||||
| getBeforeNodeById, | getBeforeNodeById, | ||||
| enableShortcuts, | |||||
| disableShortcuts, | |||||
| } | } | ||||
| } | } | ||||
| handleEdgeDelete, | handleEdgeDelete, | ||||
| handleEdgesChange, | handleEdgesChange, | ||||
| } = useEdgesInteractions() | } = useEdgesInteractions() | ||||
| const { isValidConnection } = useWorkflow() | |||||
| const { | |||||
| isValidConnection, | |||||
| enableShortcuts, | |||||
| disableShortcuts, | |||||
| } = useWorkflow() | |||||
| useOnViewportChange({ | useOnViewportChange({ | ||||
| onEnd: () => { | onEnd: () => { | ||||
| edgeTypes={edgeTypes} | edgeTypes={edgeTypes} | ||||
| nodes={nodes} | nodes={nodes} | ||||
| edges={edges} | edges={edges} | ||||
| onPointerDown={enableShortcuts} | |||||
| onMouseLeave={disableShortcuts} | |||||
| onNodeDragStart={handleNodeDragStart} | onNodeDragStart={handleNodeDragStart} | ||||
| onNodeDrag={handleNodeDrag} | onNodeDrag={handleNodeDrag} | ||||
| onNodeDragStop={handleNodeDragStop} | onNodeDragStop={handleNodeDragStop} | 
| setCustomTools: (tools: ToolWithProvider[]) => void | setCustomTools: (tools: ToolWithProvider[]) => void | ||||
| clipboardElements: Node[] | clipboardElements: Node[] | ||||
| setClipboardElements: (clipboardElements: Node[]) => void | setClipboardElements: (clipboardElements: Node[]) => void | ||||
| shortcutsDisabled: boolean | |||||
| setShortcutsDisabled: (shortcutsDisabled: boolean) => void | |||||
| } | } | ||||
| export const createWorkflowStore = () => { | export const createWorkflowStore = () => { | ||||
| setCustomTools: customTools => set(() => ({ customTools })), | setCustomTools: customTools => set(() => ({ customTools })), | ||||
| clipboardElements: [], | clipboardElements: [], | ||||
| setClipboardElements: clipboardElements => set(() => ({ clipboardElements })), | setClipboardElements: clipboardElements => set(() => ({ clipboardElements })), | ||||
| shortcutsDisabled: false, | |||||
| setShortcutsDisabled: shortcutsDisabled => set(() => ({ shortcutsDisabled })), | |||||
| })) | })) | ||||
| } | } | ||||