import { useMemo, useState } from 'react' import { PORT_DIRECTIONS } from '../../domain/constants' import { allPortTypes } from '../../domain/diagram' import type { PortDirection } from '../../domain/types' import { useCatalogStore } from '../../state/catalogStore' import { useDiagramStore } from '../../state/diagramStore' import { useCanEdit } from '../../hooks/useCanEdit' import CategorySelect from '../common/CategorySelect' import ManufacturerSelect from '../common/ManufacturerSelect' export default function DeviceInspector({ deviceId }: { deviceId: string }) { const diagram = useDiagramStore((s) => s.diagram) const catalog = useCatalogStore((s) => s.catalog) const canEdit = useCanEdit() const updateDevice = useDiagramStore((s) => s.updateDevice) const removeDevice = useDiagramStore((s) => s.removeDevice) const addPort = useDiagramStore((s) => s.addPort) const clonePort = useDiagramStore((s) => s.clonePort) const updatePort = useDiagramStore((s) => s.updatePort) const removePort = useDiagramStore((s) => s.removePort) const [focusPortId, setFocusPortId] = useState(null) const device = diagram.devices.find((d) => d.id === deviceId) const portTypes = useMemo( () => [...allPortTypes(catalog)].sort((a, b) => a.name.localeCompare(b.name)), [catalog], ) if (!device) return null const connectionCountForPort = (portId: string) => diagram.connections.filter((c) => c.sourcePortId === portId || c.targetPortId === portId).length return (