import { useState, useEffect, useCallback } from 'react'; import { ReplayMap } from './components/iran/ReplayMap'; import type { FlyToTarget } from './components/iran/ReplayMap'; import { GlobeMap } from './components/iran/GlobeMap'; import { SatelliteMap } from './components/iran/SatelliteMap'; import { KoreaMap } from './components/korea/KoreaMap'; import { TimelineSlider } from './components/common/TimelineSlider'; import { ReplayControls } from './components/common/ReplayControls'; import { LiveControls } from './components/common/LiveControls'; import { SensorChart } from './components/common/SensorChart'; import { EventLog } from './components/common/EventLog'; import { LayerPanel } from './components/common/LayerPanel'; import { useReplay } from './hooks/useReplay'; import { useMonitor } from './hooks/useMonitor'; import { useIranData } from './hooks/useIranData'; import { useKoreaData } from './hooks/useKoreaData'; import { useKoreaFilters } from './hooks/useKoreaFilters'; import { useVesselAnalysis } from './hooks/useVesselAnalysis'; import type { GeoEvent, LayerVisibility, AppMode } from './types'; import { useTheme } from './hooks/useTheme'; import { useAuth } from './hooks/useAuth'; import { useTranslation } from 'react-i18next'; import LoginPage from './components/auth/LoginPage'; import CollectorMonitor from './components/common/CollectorMonitor'; import { FieldAnalysisModal } from './components/korea/FieldAnalysisModal'; // 정적 데이터 카운트용 import (이미 useStaticDeckLayers에서 번들 포함됨) import { EAST_ASIA_PORTS } from './data/ports'; import { KOREAN_AIRPORTS } from './services/airports'; import { MILITARY_BASES } from './data/militaryBases'; import { GOV_BUILDINGS } from './data/govBuildings'; import { KOREA_WIND_FARMS } from './data/windFarms'; import { NK_LAUNCH_SITES } from './data/nkLaunchSites'; import { NK_MISSILE_EVENTS } from './data/nkMissileEvents'; import { COAST_GUARD_FACILITIES } from './services/coastGuard'; import { NAV_WARNINGS } from './services/navWarning'; import { PIRACY_ZONES } from './services/piracy'; import { KOREA_SUBMARINE_CABLES } from './services/submarineCable'; import { HAZARD_FACILITIES } from './data/hazardFacilities'; import { CN_POWER_PLANTS, CN_MILITARY_FACILITIES } from './data/cnFacilities'; import { JP_POWER_PLANTS, JP_MILITARY_FACILITIES } from './data/jpFacilities'; import './App.css'; function App() { const { user, isLoading: authLoading, isAuthenticated, login, devLogin, logout } = useAuth(); if (authLoading) { return (