Moved map and map tokens to Konva

This commit is contained in:
Mitchell McCaffrey
2020-05-21 16:46:50 +10:00
parent 542388a67f
commit 5b70f69fb7
12 changed files with 420 additions and 503 deletions

View File

@@ -1,8 +1,9 @@
import React, { useEffect, useState } from "react";
import React, { useEffect, useState, useContext } from "react";
import Modal from "react-modal";
import { useThemeUI } from "theme-ui";
import MapInteractionContext from "../../contexts/MapInteractionContext";
function MapMenu({
isOpen,
onRequestClose,
@@ -21,6 +22,8 @@ function MapMenu({
// callback
const [modalContentNode, setModalContentNode] = useState(null);
const { setPreventMapInteraction } = useContext(MapInteractionContext);
useEffect(() => {
// Close modal if interacting with any other element
function handlePointerDown(event) {
@@ -29,17 +32,20 @@ function MapMenu({
!path.includes(modalContentNode) &&
!(excludeNode && path.includes(excludeNode))
) {
setPreventMapInteraction(false);
onRequestClose();
document.body.removeEventListener("pointerdown", handlePointerDown);
}
}
if (modalContentNode) {
setPreventMapInteraction(true);
document.body.addEventListener("pointerdown", handlePointerDown);
// Check for wheel event to close modal as well
document.body.addEventListener(
"wheel",
() => {
setPreventMapInteraction(false);
onRequestClose();
},
{ once: true }
@@ -50,7 +56,7 @@ function MapMenu({
document.body.removeEventListener("pointerdown", handlePointerDown);
}
};
}, [modalContentNode, excludeNode, onRequestClose]);
}, [modalContentNode, excludeNode, onRequestClose, setPreventMapInteraction]);
function handleModalContent(node) {
setModalContentNode(node);