From 8346c2533f7c042c29f7552ecccfad484ec25245 Mon Sep 17 00:00:00 2001
From: Fedor Katurov <gotham48@gmail.com>
Date: Tue, 20 Apr 2021 17:34:53 +0700
Subject: [PATCH] fixed sticker deletion bug

---
 package.json              |  1 -
 src/map/Sticker/index.tsx | 20 ++++++++++----------
 yarn.lock                 | 12 ------------
 3 files changed, 10 insertions(+), 23 deletions(-)

diff --git a/package.json b/package.json
index f29bbf5..31dfab0 100644
--- a/package.json
+++ b/package.json
@@ -32,7 +32,6 @@
     "gpx-parser-builder": "^1.0.2",
     "leaflet": "1.6.0",
     "leaflet-editable": "^1.1.0",
-    "leaflet-geometryutil": "^0.9.0",
     "leaflet-routing-machine": "^3.2.12",
     "leaflet.markercluster": "^1.4.1",
     "node-sass": "^5.0.0",
diff --git a/src/map/Sticker/index.tsx b/src/map/Sticker/index.tsx
index a611388..900df90 100644
--- a/src/map/Sticker/index.tsx
+++ b/src/map/Sticker/index.tsx
@@ -49,7 +49,7 @@ const Sticker: React.FC<IProps> = ({
   const stickerImage = React.useRef<HTMLDivElement>(null);
 
   const onChange = React.useCallback(state => mapSetSticker(index, state), [mapSetSticker, index]);
-  const onDelete = React.useCallback(state => mapDropSticker(index), [mapSetSticker, index]);
+  const onDelete = React.useCallback(() => setTimeout(() => mapDropSticker(index), 0), [mapDropSticker, index]);
 
   const updateAngle = useCallback(
     ang => {
@@ -65,12 +65,12 @@ const Sticker: React.FC<IProps> = ({
 
       stickerArrow.current.style.transform = `rotate(${ang + Math.PI}rad)`;
     },
-    [stickerArrow, stickerImage]
+    [stickerArrow, stickerImage],
   );
 
   const onDragStart = React.useCallback(() => {
     if (!layer?.dragging) {
-      return
+      return;
     }
 
     layer.dragging.disable();
@@ -100,7 +100,7 @@ const Sticker: React.FC<IProps> = ({
 
       setTimeout(MainMap.enableClicks, 100);
     },
-    [setDragging, layer, MainMap, sticker, angle]
+    [setDragging, layer, MainMap, sticker, angle],
   );
 
   const onMoveStarted = React.useCallback(() => {
@@ -118,7 +118,7 @@ const Sticker: React.FC<IProps> = ({
 
       MainMap.enableClicks();
     },
-    [onChange, sticker]
+    [onChange, sticker],
   );
 
   const onDrag = React.useCallback(
@@ -130,7 +130,7 @@ const Sticker: React.FC<IProps> = ({
       angle.current = parseFloat(Math.atan2(y - pageY, x - pageX).toFixed(2));
       updateAngle(angle.current);
     },
-    [element, updateAngle, angle]
+    [element, updateAngle, angle],
   );
 
   const onTextChange = React.useCallback(text => setText(text), [sticker, onChange]);
@@ -143,7 +143,7 @@ const Sticker: React.FC<IProps> = ({
   }, [text, onChange, sticker]);
 
   const direction = React.useMemo(() => {
-    getLabelDirection(sticker?.angle)
+    getLabelDirection(sticker?.angle);
   }, [sticker.angle]);
 
   useEffect(() => {
@@ -165,9 +165,9 @@ const Sticker: React.FC<IProps> = ({
   useEffect(() => {
     if (!wrapper || !wrapper.current) return;
 
-    const scale = getAdaptiveScale(zoom) // adaptive zoom :-)
+    const scale = getAdaptiveScale(zoom); // adaptive zoom :-)
 
-    wrapper.current.style.transform = `scale(${scale}) perspective(1px)`
+    wrapper.current.style.transform = `scale(${scale}) perspective(1px)`;
   }, [zoom, wrapper]);
 
   // Attaches onMoveFinished event to item
@@ -246,7 +246,7 @@ const Sticker: React.FC<IProps> = ({
         <div className="sticker-delete" onMouseDown={onDelete} onTouchStart={onDelete} />
       </div>
     </div>,
-    element
+    element,
   );
 };
 
diff --git a/yarn.lock b/yarn.lock
index c754c94..f0cac18 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7197,13 +7197,6 @@ leaflet-editable@^1.1.0:
   resolved "https://registry.yarnpkg.com/leaflet-editable/-/leaflet-editable-1.2.0.tgz#a3a01001764ba58ea923381ee6a1c814708a0b84"
   integrity sha512-wG11JwpL8zqIbypTop6xCRGagMuWw68ihYu4uqrqc5Ep0wnEJeyob7NB2Rt5t74Oih4rwJ3OfwaGbzdowOGfYQ==
 
-leaflet-geometryutil@^0.9.0:
-  version "0.9.3"
-  resolved "https://registry.yarnpkg.com/leaflet-geometryutil/-/leaflet-geometryutil-0.9.3.tgz#e10fa302d99d4b1d3c6365a1f39298635a2704cd"
-  integrity sha512-Wi6YvfNx/Xu9q35AEfXpsUXmIFLen/MO+C2qimxHRnjyeyOxBhdcZa6kSiReaOX0cGK7yQInqrzz0dkIqZ8Dpg==
-  dependencies:
-    leaflet ">=0.7.0"
-
 leaflet-routing-machine@^3.2.12:
   version "3.2.12"
   resolved "https://registry.yarnpkg.com/leaflet-routing-machine/-/leaflet-routing-machine-3.2.12.tgz#9e4aef008321b0227cf894d829c3b4c1f13e4e13"
@@ -7223,11 +7216,6 @@ leaflet@1.6.0:
   resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.6.0.tgz#aecbb044b949ec29469eeb31c77a88e2f448f308"
   integrity sha512-CPkhyqWUKZKFJ6K8umN5/D2wrJ2+/8UIpXppY7QDnUZW5bZL5+SEI2J7GBpwh4LIupOKqbNSQXgqmrEJopHVNQ==
 
-leaflet@>=0.7.0:
-  version "1.7.1"
-  resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.7.1.tgz#10d684916edfe1bf41d688a3b97127c0322a2a19"
-  integrity sha512-/xwPEBidtg69Q3HlqPdU3DnrXQOvQU/CCHA1tcDQVzOwm91YMYaILjNp7L4Eaw5Z4sOYdbBz6koWyibppd8Zqw==
-
 leven@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"