import { useState, useEffect, useCallback, useRef } from 'react'; import { HNSLeftPanel } from './HNSLeftPanel'; import type { HNSInputParams } from './HNSLeftPanel'; import { HNSRightPanel } from './HNSRightPanel'; import { MapView } from '@common/components/map/MapView'; import { HNSAnalysisListTable } from './HNSAnalysisListTable'; import { HNSTheoryView } from './HNSTheoryView'; import { HNSSubstanceView } from './HNSSubstanceView'; import { HNSScenarioView } from './HNSScenarioView'; import { HNSRecalcModal } from './HNSRecalcModal'; import type { RecalcParams } from './HNSRecalcModal'; import { useSubMenu, navigateToTab, setReportGenCategory, setHnsReportPayload } from '@common/hooks/useSubMenu'; import { windDirToCompass } from '../hooks/useWeatherFetch'; import { useAuthStore } from '@common/store/authStore'; import { createHnsAnalysis, saveHnsAnalysis, fetchHnsAnalysis } from '../services/hnsApi'; import { computeDispersion } from '../utils/dispersionEngine'; import { getSubstanceToxicity } from '../utils/toxicityData'; import type { DispersionPoint, DispersionGridResult, DispersionModel, MeteoParams, SourceParams, SimParams, AlgorithmType, } from '../utils/dispersionTypes'; /* ─── HNS 매뉴얼 뷰어 컴포넌트 ─── */ function HNSManualViewer() { const card = 'rounded-md p-4 mb-3' return (