From e366d88f7e7e6b5181a1b728eba21452bd0d536b Mon Sep 17 00:00:00 2001 From: Mitchell McCaffrey Date: Sun, 19 Apr 2020 17:39:56 +1000 Subject: [PATCH] Added cursor for different tools, allowed panning to work on touch while drawing Stopped double tap to reset zoom while not on pan tool --- src/components/Map.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/components/Map.js b/src/components/Map.js index ebb3bd5..fd02740 100644 --- a/src/components/Map.js +++ b/src/components/Map.js @@ -92,18 +92,18 @@ function Map({ } useEffect(() => { - function handleMove(event) { + function handleMove(event, isGesture) { const scale = mapScaleRef.current; const translate = mapTranslateRef.current; let newScale = scale; let newTranslate = translate; - if (event.ds) { + if (isGesture) { newScale = Math.max(Math.min(scale + event.ds, maxZoom), minZoom); } - if (selectedTool === "pan") { + if (selectedTool === "pan" || isGesture) { newTranslate = { x: translate.x + event.dx, y: translate.y + event.dy, @@ -114,20 +114,25 @@ function Map({ interact(".map") .gesturable({ listeners: { - move: handleMove, + move: (e) => handleMove(e, true), }, }) .draggable({ inertia: true, listeners: { - move: handleMove, + move: (e) => handleMove(e, false), + }, + cursorChecker: () => { + return selectedTool === "pan" && mapData ? "move" : "default"; }, }); interact(".map").on("doubletap", (event) => { event.preventDefault(); - setTranslateAndScale({ x: 0, y: 0 }, 1); + if (selectedTool === "pan") { + setTranslateAndScale({ x: 0, y: 0 }, 1); + } }); - }, [selectedTool]); + }, [selectedTool, mapData]); // Reset map transform when map changes useEffect(() => {