"use client"; import { useEffect, useState } from "react"; import { ChartColumnBig, ChevronLeft, ChevronRight, History, PanelsTopLeft, PencilRuler, Search, Settings2, TriangleAlert, Waves, } from "lucide-react"; import type { WindowPopupKey } from "@/features/windowPopup/model/popupDefinitions"; type Props = { onOpenPopup: (popupKey: WindowPopupKey) => Window | null; onOpenInfoSearch: () => void; onToggleGisEdit?: () => void; isGisEditActive?: boolean; isInfoSearchActive?: boolean; }; const ANALYSIS_POPUP_ITEMS: Array<{ key: WindowPopupKey | "infoSearch"; label: string; icon: typeof ChartColumnBig; }> = [ { key: "infoSearch", label: "정보검색", icon: Search }, { key: "pipeAnalysisPopup", label: "관로분석", icon: ChartColumnBig }, { key: "floodPredictionMapPopup", label: "침수예측지도", icon: Waves }, { key: "floodHistoryPopup", label: "침수발생이력", icon: History }, { key: "gisEditPopup", label: "GIS 편집", icon: PencilRuler }, { key: "gisManagementPopup", label: "GIS 관리", icon: Settings2 }, { key: "flowRiskPopup", label: "통수 위험", icon: TriangleAlert }, ]; export default function AnalysisPopupMenu({ onOpenPopup, onOpenInfoSearch, onToggleGisEdit, isGisEditActive = false, isInfoSearchActive = false, }: Props) { const [isOpen, setIsOpen] = useState(true); const [activeKey, setActiveKey] = useState(null); // GIS 편집 모드가 꺼지면 메뉴 강조 상태도 함께 정리해 사용자가 현재 모드를 오해하지 않게 한다. useEffect(() => { if (!isGisEditActive && activeKey === "gisEditPopup") { setActiveKey(null); } }, [activeKey, isGisEditActive]); useEffect(() => { if (!isInfoSearchActive && activeKey === "infoSearch") { setActiveKey(null); } }, [activeKey, isInfoSearchActive]); return (
{isOpen ? (
분석도구
{ANALYSIS_POPUP_ITEMS.map((item) => { const Icon = item.icon; const isActive = item.key === "gisEditPopup" ? isGisEditActive : activeKey === item.key; return ( ); })}
) : null}
); }