import React, { useRef, useState, useEffect } from "react";
import {
IconButton,
Box,
Button,
Image as UIImage,
Flex,
Label,
Input
} from "theme-ui";
import Modal from "./Modal";
const defaultMapSize = 22;
function AddMapButton({ onMapChanged }) {
const fileInputRef = useRef();
function openImageDialog() {
if (fileInputRef.current) {
fileInputRef.current.click();
}
}
const [isAddModalOpen, setIsAddModalOpen] = useState(false);
function openModal() {
setIsAddModalOpen(true);
}
function closeModal() {
setIsAddModalOpen(false);
}
const [imageLoaded, setImageLoaded] = useState(false);
const mapDataRef = useRef(null);
const [mapSource, setMapSource] = useState(null);
function handleImageUpload(event) {
const file = event.target.files[0];
const url = URL.createObjectURL(file);
let image = new Image();
image.onload = function() {
mapDataRef.current = {
file,
rows,
columns,
width: image.width,
height: image.height
};
setImageLoaded(true);
};
image.src = url;
setMapSource(url);
}
function handleDone() {
if (mapDataRef.current && mapSource) {
onMapChanged(mapDataRef.current, mapSource);
}
closeModal();
}
const [rows, setRows] = useState(defaultMapSize);
const [columns, setColumns] = useState(defaultMapSize);
useEffect(() => {
if (mapDataRef.current) {
mapDataRef.current.rows = rows;
mapDataRef.current.columns = columns;
}
}, [rows, columns]);
return (
<>
{
e.preventDefault();
handleDone();
}}
>
setRows(e.target.value)}
/>
setColumns(e.target.value)}
/>
{mapSource ? (
) : (
)}
>
);
}
export default AddMapButton;