Merge pull request #2657 from wbkd/refactor/node-drag
Refactor Nodes: only trigger drag event when change happened
This commit is contained in:
5
.changeset/swift-mayflies-wink.md
Normal file
5
.changeset/swift-mayflies-wink.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@reactflow/core': patch
|
||||
---
|
||||
|
||||
Only trigger drag event when change happened
|
||||
@@ -108,6 +108,9 @@ function useDrag({
|
||||
x: pointerPos.xSnapped,
|
||||
y: pointerPos.ySnapped,
|
||||
};
|
||||
|
||||
let hasChange = false;
|
||||
|
||||
dragItems.current = dragItems.current.map((n) => {
|
||||
const nextPosition = { x: pointerPos.x - n.distance.x, y: pointerPos.y - n.distance.y };
|
||||
|
||||
@@ -118,12 +121,20 @@ function useDrag({
|
||||
|
||||
const updatedPos = calcNextPosition(n, nextPosition, nodeInternals, nodeExtent, nodeOrigin);
|
||||
|
||||
// we want to make sure that we only fire a change event when there is a changes
|
||||
hasChange =
|
||||
hasChange || n.position.x !== updatedPos.position.x || n.position.y !== updatedPos.position.y;
|
||||
|
||||
n.position = updatedPos.position;
|
||||
n.positionAbsolute = updatedPos.positionAbsolute;
|
||||
|
||||
return n;
|
||||
});
|
||||
|
||||
if (!hasChange) {
|
||||
return;
|
||||
}
|
||||
|
||||
const onDrag = nodeId ? onNodeDrag : wrapSelectionDragFunc(onSelectionDrag);
|
||||
|
||||
updateNodePositions(dragItems.current, true, true);
|
||||
|
||||
Reference in New Issue
Block a user