import React, { useState, useEffect } from "react"; import { Box, Flex } from "theme-ui"; import RadioIconButton from "./RadioIconButton"; // Section of map tools with the option to collapse into a vertical list function ToolSection({ collapse, tools, onToolClick }) { const [showMore, setShowMore] = useState(false); const [collapsedTool, setCollapsedTool] = useState(); useEffect(() => { const selectedTool = tools.find((tool) => tool.isSelected); if (selectedTool) { setCollapsedTool(selectedTool); } else { setCollapsedTool( (prevTool) => prevTool && { ...prevTool, isSelected: false } ); } }, [tools]); function handleToolClick(tool) { if (collapse && tool.isSelected) { setShowMore(!showMore); } else if (collapse && !tool.isSelected) { setShowMore(false); } onToolClick(tool); } function renderTool(tool) { return ( handleToolClick(tool)} key={tool.id} isSelected={tool.isSelected} > {tool.icon} ); } if (collapse) { if (!collapsedTool) { return null; } return ( {renderTool(collapsedTool)} {/* Render chevron when more tools is available */} {showMore && ( {tools.filter((tool) => !tool.isSelected).map(renderTool)} )} ); } else { return tools.map((tool) => ( handleToolClick(tool)} key={tool.id} isSelected={tool.isSelected} > {tool.icon} )); } } export default ToolSection;