refactor(wrapnode): pass shallow clones to handlers
This commit is contained in:
@@ -140,7 +140,7 @@ export default (NodeComponent: ComponentType<NodeProps>) => {
|
|||||||
(event: DraggableEvent) => {
|
(event: DraggableEvent) => {
|
||||||
if (onNodeDragStart) {
|
if (onNodeDragStart) {
|
||||||
const node = store.getState().nodeInternals.get(id)!;
|
const node = store.getState().nodeInternals.get(id)!;
|
||||||
onNodeDragStart(event as MouseEvent, node);
|
onNodeDragStart(event as MouseEvent, { ...node });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (selectNodesOnDrag && isSelectable) {
|
if (selectNodesOnDrag && isSelectable) {
|
||||||
@@ -161,10 +161,18 @@ export default (NodeComponent: ComponentType<NodeProps>) => {
|
|||||||
(event: DraggableEvent, draggableData: DraggableData) => {
|
(event: DraggableEvent, draggableData: DraggableData) => {
|
||||||
if (onNodeDrag) {
|
if (onNodeDrag) {
|
||||||
const node = store.getState().nodeInternals.get(id)!;
|
const node = store.getState().nodeInternals.get(id)!;
|
||||||
// node.position.x += draggableData.deltaX;
|
onNodeDrag(event as MouseEvent, {
|
||||||
// node.position.y += draggableData.deltaY;
|
...node,
|
||||||
|
dragging: true,
|
||||||
onNodeDrag(event as MouseEvent, node);
|
position: {
|
||||||
|
x: node.position.x + draggableData.deltaX,
|
||||||
|
y: node.position.y + draggableData.deltaY,
|
||||||
|
},
|
||||||
|
positionAbsolute: {
|
||||||
|
x: (node.positionAbsolute?.x || 0) + draggableData.deltaX,
|
||||||
|
y: (node.positionAbsolute?.y || 0) + draggableData.deltaY,
|
||||||
|
},
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
updateNodePosition({ id, dragging: true, diff: { x: draggableData.deltaX, y: draggableData.deltaY } });
|
updateNodePosition({ id, dragging: true, diff: { x: draggableData.deltaX, y: draggableData.deltaY } });
|
||||||
@@ -188,7 +196,7 @@ export default (NodeComponent: ComponentType<NodeProps>) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (onClick && node) {
|
if (onClick && node) {
|
||||||
onClick(event as MouseEvent, node);
|
onClick(event as MouseEvent, { ...node });
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -200,7 +208,7 @@ export default (NodeComponent: ComponentType<NodeProps>) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (onNodeDragStop && node) {
|
if (onNodeDragStop && node) {
|
||||||
onNodeDragStop(event as MouseEvent, node);
|
onNodeDragStop(event as MouseEvent, { ...node, dragging: false });
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[id, isSelectable, selectNodesOnDrag, onClick, onNodeDragStop, dragging, selected]
|
[id, isSelectable, selectNodesOnDrag, onClick, onNodeDragStop, dragging, selected]
|
||||||
@@ -210,7 +218,7 @@ export default (NodeComponent: ComponentType<NodeProps>) => {
|
|||||||
(event: MouseEvent) => {
|
(event: MouseEvent) => {
|
||||||
if (onNodeDoubleClick) {
|
if (onNodeDoubleClick) {
|
||||||
const node = store.getState().nodeInternals.get(id)!;
|
const node = store.getState().nodeInternals.get(id)!;
|
||||||
onNodeDoubleClick(event, node);
|
onNodeDoubleClick(event, { ...node });
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[id, onNodeDoubleClick]
|
[id, onNodeDoubleClick]
|
||||||
|
|||||||
Reference in New Issue
Block a user