From 20153994661a91de289717d6feb269e53acb2d75 Mon Sep 17 00:00:00 2001 From: Mitchell McCaffrey Date: Sun, 21 Mar 2021 17:20:37 +1100 Subject: [PATCH] Don't zoom on wheel end --- src/hooks/useStageInteraction.js | 44 +++++++++++++++++--------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/src/hooks/useStageInteraction.js b/src/hooks/useStageInteraction.js index 9d6ade1..123116e 100644 --- a/src/hooks/useStageInteraction.js +++ b/src/hooks/useStageInteraction.js @@ -51,30 +51,34 @@ function useStageInteraction( if (preventInteraction || !isInteractingWithCanvas.current) { return; } - const { event } = props; - const { pixelY } = normalizeWheel(event); + const { event, last } = props; + if (!last) { + const { pixelY } = normalizeWheel(event); - const newScale = Math.min( - Math.max( - stageScale + - (pixelY * wheelZoomSpeed * stageScale * zoomSpeed) / - window.innerHeight, - minZoom - ), - maxZoom - ); + const newScale = Math.min( + Math.max( + stageScale + + (pixelY * wheelZoomSpeed * stageScale * zoomSpeed) / + window.innerHeight, + minZoom + ), + maxZoom + ); - // Center on pointer - const pointer = stage.getPointerPosition(); - const newTranslate = { - x: pointer.x - ((pointer.x - stage.x()) / stageScale) * newScale, - y: pointer.y - ((pointer.y - stage.y()) / stageScale) * newScale, - }; + // Center on pointer + const pointer = stage.getPointerPosition(); + const newTranslate = { + x: pointer.x - ((pointer.x - stage.x()) / stageScale) * newScale, + y: pointer.y - ((pointer.y - stage.y()) / stageScale) * newScale, + }; - stage.position(newTranslate); - stageTranslateRef.current = newTranslate; + stage.position(newTranslate); + + stageTranslateRef.current = newTranslate; + + onStageScaleChange(newScale); + } - onStageScaleChange(newScale); gesture.onWheel && gesture.onWheel(props); }, onPinchStart: (props) => {