- ScenarioCreatorPage: full-screen layout (sidebar + Leaflet map) - AreaMapView: Leaflet map with area polygon and draggable vessel markers - VesselMarker: SVG icon rotated by heading - ScenarioForm: scenario name input + area dropdown - VesselList: add/remove vessels with heading editor - SimulationControls: start/stop buttons + live simulation time display - Sidebar: composition of all form components - useScenarioStore: Zustand draft state (area, vessels, positions, headings) - useAreas / useVessels: fetch hooks with loading/error/retry - geo.ts: equirectangular lat/lng ↔ meters conversion + isInsidePolygon - simulationStore: extend with loadScenario + scenarioVessels state - simulation.worker: support loadScenario message with multi-vessel init - 59 unit tests, coverage >80% on all metrics (stmts 94%, branches 84%) - E2E Playwright smoke spec for scenario-creator flow - gitignore: add apps/web/coverage/ Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
23 lines
573 B
JSON
23 lines
573 B
JSON
{
|
|
"compilerOptions": {
|
|
"target": "ES2022",
|
|
"useDefineForClassFields": true,
|
|
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
|
"types": ["vite/client"],
|
|
"module": "ESNext",
|
|
"moduleResolution": "bundler",
|
|
"resolveJsonModule": true,
|
|
"jsx": "react-jsx",
|
|
"strict": true,
|
|
"noEmit": true,
|
|
"esModuleInterop": true,
|
|
"skipLibCheck": true,
|
|
"allowImportingTsExtensions": true,
|
|
"paths": {
|
|
"@ymir/types": ["../../packages/types/src/index.ts"]
|
|
}
|
|
},
|
|
"include": ["src"],
|
|
"references": [{ "path": "./tsconfig.node.json" }]
|
|
}
|