import React from 'react'; import { useSimulatorStore } from '../../store/useSimulatorStore'; import { WireRenderer } from './WireRenderer'; import { WireInProgressRenderer } from './WireInProgressRenderer'; export interface SegmentHandle { segIndex: number; axis: 'horizontal' | 'vertical'; mx: number; // midpoint X my: number; // midpoint Y } interface WireLayerProps { hoveredWireId: string | null; /** Segment drag preview: overrides the path of a specific wire */ segmentDragPreview: { wireId: string; overridePath: string } | null; /** Handles to render for the selected wire */ segmentHandles: SegmentHandle[]; /** Called when user starts dragging a handle (passes segIndex) */ onHandleMouseDown: (e: React.MouseEvent, segIndex: number) => void; } export const WireLayer: React.FC = ({ hoveredWireId, segmentDragPreview, segmentHandles, onHandleMouseDown, }) => { const wires = useSimulatorStore((s) => s.wires); const wireInProgress = useSimulatorStore((s) => s.wireInProgress); const selectedWireId = useSimulatorStore((s) => s.selectedWireId); return ( {wires.map((wire) => ( ))} {/* Segment handles for the selected wire */} {segmentHandles.map((handle) => ( onHandleMouseDown(e, handle.segIndex)} /> ))} {wireInProgress && ( )} ); };