diff --git a/packages/core/src/utils/changes.ts b/packages/core/src/utils/changes.ts index 71d38af7..9594936d 100644 --- a/packages/core/src/utils/changes.ts +++ b/packages/core/src/utils/changes.ts @@ -114,9 +114,13 @@ export const applyChanges = < | NodeRemoveChange | EdgeRemoveChange )[] + addRemoveChanges.forEach((change) => { if (change.type === 'add') { - elements.push(change.item) + const index = elements.findIndex((el) => el.id === change.item.id) + + if (index === -1) elements.push(change.item) + else warn(`${isNode(change.item) ? `Node` : `Edge`} with id ${change.item.id} already exists`) } else if (change.type === 'remove') { const index = elements.findIndex((el) => el.id === change.id) if (index !== -1) elements.splice(index, 1)