| 123456789101112131415161718192021222324252627282930313233343536373839404142 | 
							- import { useCallback } from 'react'
 - import produce from 'immer'
 - import { useStoreApi } from 'reactflow'
 - import { useNodesSyncDraft } from './use-nodes-sync-draft'
 - import { useNodesReadOnly } from './use-workflow'
 - 
 - type NodeDataUpdatePayload = {
 -   id: string
 -   data: Record<string, any>
 - }
 - 
 - export const useNodeDataUpdate = () => {
 -   const store = useStoreApi()
 -   const { handleSyncWorkflowDraft } = useNodesSyncDraft()
 -   const { getNodesReadOnly } = useNodesReadOnly()
 - 
 -   const handleNodeDataUpdate = useCallback(({ id, data }: NodeDataUpdatePayload) => {
 -     const {
 -       getNodes,
 -       setNodes,
 -     } = store.getState()
 -     const newNodes = produce(getNodes(), (draft) => {
 -       const currentNode = draft.find(node => node.id === id)!
 - 
 -       currentNode.data = { ...currentNode?.data, ...data }
 -     })
 -     setNodes(newNodes)
 -   }, [store])
 - 
 -   const handleNodeDataUpdateWithSyncDraft = useCallback((payload: NodeDataUpdatePayload) => {
 -     if (getNodesReadOnly())
 -       return
 - 
 -     handleNodeDataUpdate(payload)
 -     handleSyncWorkflowDraft()
 -   }, [handleSyncWorkflowDraft, handleNodeDataUpdate, getNodesReadOnly])
 - 
 -   return {
 -     handleNodeDataUpdate,
 -     handleNodeDataUpdateWithSyncDraft,
 -   }
 - }
 
 
  |