From b5bf346229fcd0d8900e30eabd4fa4ca4a28e9a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arno=C5=A1t=20Pleskot?= Date: Fri, 9 Feb 2024 16:10:58 +0100 Subject: [PATCH] fix: prevent jumping when trying to zoom out the zoomFactor --- packages/excalidraw/scene/scrollConstraints.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/excalidraw/scene/scrollConstraints.ts b/packages/excalidraw/scene/scrollConstraints.ts index ea6242de09..32791d7ee7 100644 --- a/packages/excalidraw/scene/scrollConstraints.ts +++ b/packages/excalidraw/scene/scrollConstraints.ts @@ -401,11 +401,17 @@ export const constrainScrollState = ( allowOverscroll, }); - const constrainedValues = constrainScrollValues({ - ...constraints, - scrollX, - scrollY, - }); + const constrainedValues = + zoom.value >= constraints.constrainedZoom.value // when trying to zoom out of the constrained area we want to keep the viewport centered and prevent jumping caused by change of scrollX and scrollY values when zooming + ? constrainScrollValues({ + ...constraints, + scrollX, + scrollY, + }) + : calculateConstrainedScrollCenter(state, { + scrollX, + scrollY, + }); if (!canUseMemoizedValues) { memoizedValues = {