()
| 446 | ) |
| 447 | |
| 448 | const syncNodes = () => { |
| 449 | const componentNodes = canvas.componentNodes |
| 450 | |
| 451 | const cloneNodes = cloneDeep(nodes) |
| 452 | const cloneEdges = cloneDeep(edges) |
| 453 | let toBeRemovedEdges = [] |
| 454 | |
| 455 | for (let i = 0; i < cloneNodes.length; i++) { |
| 456 | const node = cloneNodes[i] |
| 457 | const componentNode = componentNodes.find((cn) => cn.name === node.data.name) |
| 458 | if (componentNode && componentNode.version > node.data.version) { |
| 459 | const clonedComponentNode = cloneDeep(componentNode) |
| 460 | cloneNodes[i].data = updateOutdatedNodeData(clonedComponentNode, node.data, true) |
| 461 | toBeRemovedEdges.push(...updateOutdatedNodeEdge(cloneNodes[i].data, cloneEdges)) |
| 462 | } |
| 463 | } |
| 464 | |
| 465 | setNodes(cloneNodes) |
| 466 | setEdges(cloneEdges.filter((edge) => !toBeRemovedEdges.includes(edge))) |
| 467 | setDirty() |
| 468 | setIsSyncNodesButtonEnabled(false) |
| 469 | } |
| 470 | |
| 471 | const { reward: confettiReward } = useReward('canvasConfetti', 'confetti', { |
| 472 | elementCount: 150, |
no test coverage detected