diff --git a/packages/element/src/linearElementEditor.ts b/packages/element/src/linearElementEditor.ts index 347d6a889..260d74390 100644 --- a/packages/element/src/linearElementEditor.ts +++ b/packages/element/src/linearElementEditor.ts @@ -492,10 +492,9 @@ export class LinearElementEditor { }; return { - ...app.state, selectedLinearElement: newLinearElementEditor, suggestedBindings, - }; + } as Pick; } return null; diff --git a/packages/excalidraw/components/App.tsx b/packages/excalidraw/components/App.tsx index 72f45c428..645bee030 100644 --- a/packages/excalidraw/components/App.tsx +++ b/packages/excalidraw/components/App.tsx @@ -8861,7 +8861,22 @@ class App extends React.Component { pointerDownState.lastCoords.y = y; pointerDownState.drag.hasOccurred = true; - this.setState(newState); + if ( + !isShallowEqual( + newState.suggestedBindings ?? [], + this.state.suggestedBindings, + ) || + !isShallowEqual( + newState.selectedLinearElement?.selectedPointsIndices ?? [], + this.state.selectedLinearElement?.selectedPointsIndices ?? [], + ) || + newState.selectedLinearElement?.hoverPointIndex !== + this.state.selectedLinearElement?.hoverPointIndex || + newState.selectedLinearElement?.customLineAngle !== + this.state.selectedLinearElement?.customLineAngle + ) { + this.setState(newState); + } return; }