import React, { useEffect, useRef, useState } from "react"; import { AsileIcon, CommentIcon, CursorIcon, FloorIcon, FreeMoveIcon, PenIcon, PlayIcon, SaveTemplateIcon, WallIcon, ZoneIcon, } from "../icons/ExportToolsIcons"; import { ArrowIcon, TickIcon } from "../icons/ExportCommonIcons"; import useModuleStore from "../../store/useModuleStore"; import { handleSaveTemplate } from "../../modules/visualization/handleSaveTemplate"; import { usePlayButtonStore } from "../../store/usePlayButtonStore"; import useTemplateStore from "../../store/useTemplateStore"; import { useSelectedZoneStore } from "../../store/useZoneStore"; import { useAddAction, useDeleteModels, useSelectedWallItem, useToggleView } from "../../store/store"; const Tools: React.FC = () => { const { templates } = useTemplateStore(); const [activeTool, setActiveTool] = useState("cursor"); const [activeSubTool, setActiveSubTool] = useState("cursor"); const [toggleThreeD, setToggleThreeD] = useState(true); const dropdownRef = useRef(null); const [openDrop, setOpenDrop] = useState(false); const { activeModule } = useModuleStore(); const { isPlaying, setIsPlaying } = usePlayButtonStore(); const { addTemplate } = useTemplateStore(); const { selectedZone } = useSelectedZoneStore(); // wall options const { setToggleView } = useToggleView(); const { setDeleteModels } = useDeleteModels(); const { setAddAction } = useAddAction(); const { setSelectedWallItem } = useSelectedWallItem(); // Reset activeTool whenever activeModule changes useEffect(() => { setActiveTool(activeSubTool); setActiveSubTool(activeSubTool); }, [activeModule]); const toggleSwitch = () => { if (toggleThreeD) { setSelectedWallItem(null); setDeleteModels(false); setAddAction(null); setToggleView(true); } else { setToggleView(false); } setToggleThreeD(!toggleThreeD); }; useEffect(() => { const handleOutsideClick = (event: MouseEvent) => { if ( dropdownRef.current && !dropdownRef.current.contains(event.target as Node) ) { setOpenDrop(false); // Close the dropdown } }; document.addEventListener("mousedown", handleOutsideClick); return () => { document.removeEventListener("mousedown", handleOutsideClick); }; }, []); return (
{activeSubTool == "cursor" && (
{ setActiveTool("cursor"); }} >
)} {activeSubTool == "free-hand" && (
{ setActiveTool("free-hand"); }} >
)} {activeModule !== "visualization" && (
{ setOpenDrop(!openDrop); console.log(openDrop); }} > {openDrop && (
{ setOpenDrop(false); setActiveTool("cursor"); setActiveSubTool("cursor"); }} >
{activeSubTool === "cursor" && }
Cursor
{ setOpenDrop(false); setActiveTool("free-hand"); setActiveSubTool("free-hand"); }} >
{activeSubTool === "free-hand" && }
Free Hand
)}
)}
{!toggleThreeD && activeModule === "builder" && ( <>
{ setActiveTool("draw-wall"); }} >
{ setActiveTool("draw-zone"); }} >
{ setActiveTool("draw-aisle"); }} >
{ setActiveTool("draw-floor"); }} >
)} {activeModule === "simulation" && ( <>
{ setActiveTool("pen"); }} >
)} {activeModule === "visualization" && ( <>
handleSaveTemplate({ addTemplate, selectedZone, templates, }) } >
)}
{ setActiveTool("comment"); }} >
{ setActiveTool("play"); setIsPlaying(!isPlaying); }} >
2d
3d
); }; export default Tools;