import React, { useState, Fragment } from "react"; import { IconButton, Flex, Box } from "theme-ui"; import RadioIconButton from "./controls/RadioIconButton"; import Divider from "./controls/Divider"; import SelectMapButton from "./SelectMapButton"; import FogToolSettings from "./controls/FogToolSettings"; import BrushToolSettings from "./controls/BrushToolSettings"; import ShapeToolSettings from "./controls/ShapeToolSettings"; import EraseToolSettings from "./controls/EraseToolSettings"; import PanToolIcon from "../../icons/PanToolIcon"; import FogToolIcon from "../../icons/FogToolIcon"; import BrushToolIcon from "../../icons/BrushToolIcon"; import ShapeToolIcon from "../../icons/ShapeToolIcon"; import EraseToolIcon from "../../icons/EraseToolIcon"; import ExpandMoreIcon from "../../icons/ExpandMoreIcon"; function MapContols({ onMapChange, onMapStateChange, currentMap, currentMapState, selectedToolId, onSelectedToolChange, toolSettings, onToolSettingChange, onToolAction, disabledControls, disabledSettings, }) { const [isExpanded, setIsExpanded] = useState(false); const toolsById = { pan: { id: "pan", icon: , title: "Pan Tool", }, fog: { id: "fog", icon: , title: "Fog Tool", SettingsComponent: FogToolSettings, }, brush: { id: "brush", icon: , title: "Brush Tool", SettingsComponent: BrushToolSettings, }, shape: { id: "shape", icon: , title: "Shape Tool", SettingsComponent: ShapeToolSettings, }, erase: { id: "erase", icon: , title: "Erase tool", SettingsComponent: EraseToolSettings, }, }; const tools = ["pan", "fog", "brush", "shape", "erase"]; const sections = [ { id: "map", component: ( ), }, { id: "drawing", component: tools.map((tool) => ( onSelectedToolChange(tool)} isSelected={selectedToolId === tool} disabled={disabledControls.includes(tool)} > {toolsById[tool].icon} )), }, ]; let controls = null; if (sections.length === 1 && sections[0].id === "map") { controls = ( {sections[0].component} ); } else if (sections.length > 0) { controls = ( <> setIsExpanded(!isExpanded)} sx={{ transform: `rotate(${isExpanded ? "0" : "180deg"})`, display: "block", backgroundColor: "overlay", borderRadius: "50%", }} m={2} > {sections.map((section, index) => ( {section.component} {index !== sections.length - 1 && } ))} ); } function getToolSettings() { const Settings = toolsById[selectedToolId].SettingsComponent; if (Settings) { return ( onToolSettingChange(selectedToolId, change) } onToolAction={onToolAction} disabledActions={disabledSettings[selectedToolId]} /> ); } else { return null; } } return ( <> {controls} {getToolSettings()} ); } export default MapContols;