import { useRef } from "react"; import type { Signal } from "./model"; import styles from "./ClockTimeline.module.css"; import SelectSignal from "../Selector/SelectSignal"; interface SignalEditorListProps { signals: Signal[]; placeholder?: string; onAdd: (signal: Signal | null) => void; onUpdate: (index: number, signal: Signal | null) => void; onRemove: (index: number) => void; onReorder: (sourceIdx: number, targetIdx: number) => void; } export default function SignalEditorList({ signals, placeholder, onAdd, onUpdate, onRemove, onReorder, }: SignalEditorListProps) { const draggedSignalIdx = useRef(null); return (
{signals.map((s, i) => ( 1} onDragStart={(e) => { draggedSignalIdx.current = i; e.dataTransfer.effectAllowed = "move"; }} onDragOver={(e) => { e.preventDefault(); e.dataTransfer.dropEffect = "move"; }} onDrop={(e) => { e.preventDefault(); const sourceIdx = draggedSignalIdx.current; if (sourceIdx !== null && sourceIdx !== i) { onReorder(sourceIdx, i); } draggedSignalIdx.current = null; }} onDragEnd={() => { draggedSignalIdx.current = null; }} > onUpdate(i, sig)} /> {signals.length > 1 && ( )} ))} onAdd(sig)} />
); }