import React, { useEffect, useRef } from 'react'; import { Voltmeter } from './Voltmeter'; import { Ammeter } from './Ammeter'; type InstrumentMetadataId = 'instr-voltmeter' | 'instr-ammeter'; interface InstrumentComponentProps { id: string; metadataId: InstrumentMetadataId; x: number; y: number; isSelected: boolean; onMouseDown: (e: React.MouseEvent) => void; } const PIN_INFO: Record< InstrumentMetadataId, Array<{ name: string; x: number; y: number; signals: unknown[] }> > = { 'instr-voltmeter': [ { name: 'V+', x: 4, y: 24, signals: [] }, { name: 'V-', x: 4, y: 48, signals: [] }, ], 'instr-ammeter': [ { name: 'A+', x: 4, y: 36, signals: [] }, { name: 'A-', x: 118, y: 36, signals: [] }, ], }; export const InstrumentComponent: React.FC = ({ id, metadataId, x, y, isSelected, onMouseDown, }) => { const wrapperRef = useRef(null); useEffect(() => { if (!wrapperRef.current) return; (wrapperRef.current as any).pinInfo = PIN_INFO[metadataId]; }, [metadataId]); const handleMouseDown = (e: React.MouseEvent) => { e.stopPropagation(); onMouseDown(e); }; return (
{metadataId === 'instr-voltmeter' ? : }
); };