diff --git a/packages/excalidraw/components/App.tsx b/packages/excalidraw/components/App.tsx index 5723a0602..611634dad 100644 --- a/packages/excalidraw/components/App.tsx +++ b/packages/excalidraw/components/App.tsx @@ -10237,7 +10237,7 @@ class App extends React.Component { croppingElement, this.scene.getNonDeletedElementsMap(), { - oldSize: { + newSize: { width: croppingElement.width, height: croppingElement.height, }, diff --git a/packages/excalidraw/components/Stats/MultiDimension.tsx b/packages/excalidraw/components/Stats/MultiDimension.tsx index 0d1a65e91..257642e98 100644 --- a/packages/excalidraw/components/Stats/MultiDimension.tsx +++ b/packages/excalidraw/components/Stats/MultiDimension.tsx @@ -69,7 +69,6 @@ const resizeElementInGroup = ( originalElementsMap: ElementsMap, ) => { const updates = getResizedUpdates(anchorX, anchorY, scale, origElement); - const { width: oldWidth, height: oldHeight } = latestElement; mutateElement(latestElement, updates, false); const boundTextElement = getBoundTextElement( @@ -79,7 +78,7 @@ const resizeElementInGroup = ( if (boundTextElement) { const newFontSize = boundTextElement.fontSize * scale; updateBoundElements(latestElement, elementsMap, { - oldSize: { width: oldWidth, height: oldHeight }, + newSize: { width: updates.width, height: updates.height }, }); const latestBoundTextElement = elementsMap.get(boundTextElement.id); if (latestBoundTextElement && isTextElement(latestBoundTextElement)) { diff --git a/packages/excalidraw/components/Stats/utils.ts b/packages/excalidraw/components/Stats/utils.ts index a6a443b9b..3fcbc11c7 100644 --- a/packages/excalidraw/components/Stats/utils.ts +++ b/packages/excalidraw/components/Stats/utils.ts @@ -151,8 +151,6 @@ export const resizeElement = ( nextHeight = Math.max(nextHeight, minHeight); } - const { width: oldWidth, height: oldHeight } = latestElement; - mutateElement( latestElement, { @@ -201,7 +199,7 @@ export const resizeElement = ( } updateBoundElements(latestElement, elementsMap, { - oldSize: { width: oldWidth, height: oldHeight }, + newSize: { width: nextWidth, height: nextHeight }, }); if (boundTextElement && boundTextFont) { diff --git a/packages/excalidraw/element/binding.ts b/packages/excalidraw/element/binding.ts index d0faa4269..3c4869fe4 100644 --- a/packages/excalidraw/element/binding.ts +++ b/packages/excalidraw/element/binding.ts @@ -576,11 +576,11 @@ export const updateBoundElements = ( elementsMap: NonDeletedSceneElementsMap | SceneElementsMap, options?: { simultaneouslyUpdated?: readonly ExcalidrawElement[]; - oldSize?: { width: number; height: number }; + newSize?: { width: number; height: number }; changedElements?: Map; }, ) => { - const { oldSize, simultaneouslyUpdated, changedElements } = options ?? {}; + const { newSize, simultaneouslyUpdated, changedElements } = options ?? {}; const simultaneouslyUpdatedElementIds = getSimultaneouslyUpdatedElementIds( simultaneouslyUpdated, ); @@ -603,12 +603,12 @@ export const updateBoundElements = ( startBinding: maybeCalculateNewGapWhenScaling( changedElement, element.startBinding, - oldSize, + newSize, ), endBinding: maybeCalculateNewGapWhenScaling( changedElement, element.endBinding, - oldSize, + newSize, ), }; diff --git a/packages/excalidraw/element/resizeElements.ts b/packages/excalidraw/element/resizeElements.ts index 1fea04371..dab5ffa1c 100644 --- a/packages/excalidraw/element/resizeElements.ts +++ b/packages/excalidraw/element/resizeElements.ts @@ -739,9 +739,9 @@ export const resizeSingleElement = ( mutateElement(element, resizedElement); updateBoundElements(element, elementsMap, { - oldSize: { - width: stateAtResizeStart.width, - height: stateAtResizeStart.height, + newSize: { + width: resizedElement.width, + height: resizedElement.height, }, }); @@ -999,14 +999,13 @@ export const resizeMultipleElements = ( element, update: { boundTextFontSize, ...update }, } of elementsAndUpdates) { - const { angle } = update; - const { width: oldWidth, height: oldHeight } = element; + const { angle, width: newWidth, height: newHeight } = update; mutateElement(element, update, false); updateBoundElements(element, elementsMap, { simultaneouslyUpdated: elementsToUpdate, - oldSize: { width: oldWidth, height: oldHeight }, + newSize: { width: newWidth, height: newHeight }, }); const boundTextElement = getBoundTextElement(element, elementsMap); diff --git a/packages/excalidraw/tests/cropElement.test.tsx b/packages/excalidraw/tests/cropElement.test.tsx index f2cb297f2..9b03c5261 100644 --- a/packages/excalidraw/tests/cropElement.test.tsx +++ b/packages/excalidraw/tests/cropElement.test.tsx @@ -156,8 +156,8 @@ describe("Crop an image", () => { [-initialWidth / 3, 0], true, ); - expect(image.width).toBe(resizedWidth); - expect(image.height).toBe(resizedHeight); + expect(image.width).toBeCloseTo(resizedWidth, 10); + expect(image.height).toBeCloseTo(resizedHeight, 10); // re-crop to initial state UI.crop(image, "w", naturalWidth, naturalHeight, [-initialWidth / 3, 0]); diff --git a/packages/excalidraw/tests/linearElementEditor.test.tsx b/packages/excalidraw/tests/linearElementEditor.test.tsx index 3341d2da3..a6abfcdc9 100644 --- a/packages/excalidraw/tests/linearElementEditor.test.tsx +++ b/packages/excalidraw/tests/linearElementEditor.test.tsx @@ -1235,8 +1235,7 @@ describe("Test Linear Elements", () => { mouse.downAt(rect.x, rect.y); mouse.moveTo(200, 0); mouse.upAt(200, 0); - - expect(arrow.width).toBe(205); + expect(arrow.width).toBe(200); expect(rect.x).toBe(200); expect(rect.y).toBe(0); expect(handleBindTextResizeSpy).toHaveBeenCalledWith( diff --git a/packages/excalidraw/tests/resize.test.tsx b/packages/excalidraw/tests/resize.test.tsx index 05f8627a8..abf99bcf6 100644 --- a/packages/excalidraw/tests/resize.test.tsx +++ b/packages/excalidraw/tests/resize.test.tsx @@ -882,11 +882,11 @@ describe("multiple selection", () => { expect(leftBoundArrow.x).toBeCloseTo(-110); expect(leftBoundArrow.y).toBeCloseTo(50); - expect(leftBoundArrow.width).toBeCloseTo(137.5, 0); + expect(leftBoundArrow.width).toBeCloseTo(140, 0); expect(leftBoundArrow.height).toBeCloseTo(7, 0); expect(leftBoundArrow.angle).toEqual(0); expect(leftBoundArrow.startBinding).toBeNull(); - expect(leftBoundArrow.endBinding?.gap).toBeCloseTo(12.352); + expect(leftBoundArrow.endBinding?.gap).toBeCloseTo(10); expect(leftBoundArrow.endBinding?.elementId).toBe( leftArrowBinding.elementId, );