From c84fad4436e6a37d8c4d884783764ae317a83a7c Mon Sep 17 00:00:00 2001 From: Ryan Di Date: Mon, 12 May 2025 16:24:00 +1000 Subject: [PATCH] experiment with zooming --- packages/excalidraw/components/App.tsx | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/excalidraw/components/App.tsx b/packages/excalidraw/components/App.tsx index 06e5427eb..4cd9a8688 100644 --- a/packages/excalidraw/components/App.tsx +++ b/packages/excalidraw/components/App.tsx @@ -3917,9 +3917,21 @@ class App extends React.Component { }), }; - this.setState(constrainScrollState(newState)); + this.setState(newState); + if (this.state.scrollConstraints) { + // debounce to allow centering on user's cursor position before constraining + if (newState.zoom.value !== this.state.zoom.value) { + this.debounceConstrainScrollState(newState); + } else { + this.setState(constrainScrollState(newState)); + } + } }; + private debounceConstrainScrollState = debounce((state: AppState) => { + this.setState(constrainScrollState(state, "rigid")); + }, 500); + private animateToConstrainedArea = ( fromValues: AnimateTranslateCanvasValues, toValues: AnimateTranslateCanvasValues,