refactor(system): mutate internal node instead of creating a new one
This commit is contained in:
@@ -254,13 +254,10 @@ export function updateNodeInternals<NodeType extends InternalNodeBase>(
|
|||||||
const node = nodeLookup.get(update.id);
|
const node = nodeLookup.get(update.id);
|
||||||
|
|
||||||
if (node?.hidden) {
|
if (node?.hidden) {
|
||||||
nodeLookup.set(node.id, {
|
node.internals = {
|
||||||
...node,
|
...node.internals,
|
||||||
internals: {
|
handleBounds: undefined,
|
||||||
...node.internals,
|
};
|
||||||
handleBounds: undefined,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
updatedInternals = true;
|
updatedInternals = true;
|
||||||
} else if (node) {
|
} else if (node) {
|
||||||
const dimensions = getDimensions(update.nodeElement);
|
const dimensions = getDimensions(update.nodeElement);
|
||||||
@@ -272,33 +269,29 @@ export function updateNodeInternals<NodeType extends InternalNodeBase>(
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (doUpdate) {
|
if (doUpdate) {
|
||||||
const newNode = {
|
node.measured = dimensions;
|
||||||
...node,
|
node.internals = {
|
||||||
measured: dimensions,
|
...node.internals,
|
||||||
internals: {
|
handleBounds: {
|
||||||
...node.internals,
|
source: getHandleBounds('.source', update.nodeElement, zoom, node.origin || nodeOrigin),
|
||||||
handleBounds: {
|
target: getHandleBounds('.target', update.nodeElement, zoom, node.origin || nodeOrigin),
|
||||||
source: getHandleBounds('.source', update.nodeElement, zoom, node.origin || nodeOrigin),
|
|
||||||
target: getHandleBounds('.target', update.nodeElement, zoom, node.origin || nodeOrigin),
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
nodeLookup.set(node.id, newNode);
|
|
||||||
updatedInternals = true;
|
updatedInternals = true;
|
||||||
|
|
||||||
if (dimensionChanged) {
|
if (dimensionChanged) {
|
||||||
changes.push({
|
changes.push({
|
||||||
id: newNode.id,
|
id: node.id,
|
||||||
type: 'dimensions',
|
type: 'dimensions',
|
||||||
dimensions,
|
dimensions,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (newNode.expandParent && newNode.parentId) {
|
if (node.expandParent && node.parentId) {
|
||||||
parentExpandChildren.push({
|
parentExpandChildren.push({
|
||||||
id: newNode.id,
|
id: node.id,
|
||||||
parentId: newNode.parentId,
|
parentId: node.parentId,
|
||||||
rect: nodeToRect(newNode, newNode.origin || nodeOrigin),
|
rect: nodeToRect(node, nodeOrigin),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user