diff --git a/src/actions/actionCanvas.tsx b/src/actions/actionCanvas.tsx index 2194f63b..f61f57db 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, {