From f8d5c2a1b69a8ebaebb6016a1de043ab3eb05557 Mon Sep 17 00:00:00 2001 From: David Luzar <5153846+dwelle@users.noreply.github.com> Date: Fri, 17 Nov 2023 14:23:19 +0100 Subject: [PATCH 1/3] build: allow a range of major node versions (#7306) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 479f33c5e..4f8e550f3 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,7 @@ "vitest-canvas-mock": "0.3.2" }, "engines": { - "node": "^18.0.0" + "node": "18.0.0 - 20.x.x" }, "homepage": ".", "name": "excalidraw", From 1e37dbd60e13402b0ad413c0257508932f79a9fd Mon Sep 17 00:00:00 2001 From: David Luzar <5153846+dwelle@users.noreply.github.com> Date: Fri, 17 Nov 2023 14:37:43 +0100 Subject: [PATCH 2/3] feat: change frame resizing behavior (#7307) --- src/components/App.tsx | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/src/components/App.tsx b/src/components/App.tsx index 42080e831..ccb010305 100644 --- a/src/components/App.tsx +++ b/src/components/App.tsx @@ -8317,39 +8317,6 @@ class App extends React.Component { const elementsToHighlight = new Set(); selectedFrames.forEach((frame) => { - const elementsInFrame = getFrameChildren( - this.scene.getNonDeletedElements(), - frame.id, - ); - - // keep elements' positions relative to their frames on frames resizing - if (transformHandleType) { - if (transformHandleType.includes("w")) { - elementsInFrame.forEach((element) => { - mutateElement(element, { - x: - frame.x + - (frameElementsOffsetsMap.get(frame.id + element.id)?.x || 0), - y: - frame.y + - (frameElementsOffsetsMap.get(frame.id + element.id)?.y || 0), - }); - }); - } - if (transformHandleType.includes("n")) { - elementsInFrame.forEach((element) => { - mutateElement(element, { - x: - frame.x + - (frameElementsOffsetsMap.get(frame.id + element.id)?.x || 0), - y: - frame.y + - (frameElementsOffsetsMap.get(frame.id + element.id)?.y || 0), - }); - }); - } - } - getElementsInResizingFrame( this.scene.getNonDeletedElements(), frame, From 7c9cf30909c6c368407994cb25e22292b99eee5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Barnab=C3=A1s=20Moln=C3=A1r?= <38168628+barnabasmolnar@users.noreply.github.com> Date: Fri, 17 Nov 2023 15:56:19 +0100 Subject: [PATCH 3/3] fix: make zoomToFit fitToViewport account for sidebar (#7298) --- src/actions/actionCanvas.tsx | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/actions/actionCanvas.tsx b/src/actions/actionCanvas.tsx index 2194f63b1..f61f57dbd 100644 --- a/src/actions/actionCanvas.tsx +++ b/src/actions/actionCanvas.tsx @@ -265,7 +265,21 @@ export const zoomToFit = ({ 30.0, ) as NormalizedZoomValue; - scrollX = (appState.width / 2) * (1 / newZoomValue) - centerX; + let appStateWidth = appState.width; + + if (appState.openSidebar) { + const sidebarDOMElem = document.querySelector( + ".sidebar", + ) as HTMLElement | null; + const sidebarWidth = sidebarDOMElem?.offsetWidth ?? 0; + const isRTL = document.documentElement.getAttribute("dir") === "rtl"; + + appStateWidth = !isRTL + ? appState.width - sidebarWidth + : appState.width + sidebarWidth; + } + + scrollX = (appStateWidth / 2) * (1 / newZoomValue) - centerX; scrollY = (appState.height / 2) * (1 / newZoomValue) - centerY; } else { newZoomValue = zoomValueToFitBoundsOnViewport(commonBounds, {