import { memo, useCallback, useMemo } from "react"; import { GripVertical } from "lucide-react"; import { Button } from "~/components/ui/button"; import { Badge } from "~/components/ui/badge"; import { AutodraftSettings } from "~/components/AutodraftSettings"; import { DndContext, closestCenter, KeyboardSensor, PointerSensor, useSensor, useSensors, } from "@dnd-kit/core"; import type { DragEndEvent } from "@dnd-kit/core"; import { arrayMove, SortableContext, sortableKeyboardCoordinates, useSortable, verticalListSortingStrategy, } from "@dnd-kit/sortable"; import { CSS } from "@dnd-kit/utilities"; interface QueueSectionProps { queue: Array<{ id: string; participantId: string; }>; availableParticipants: Array<{ id: string; name: string; sport: { name: string }; }>; seasonId: string; teamId: string; isMyTurn: boolean; canPick: boolean; userAutodraft: { isEnabled: boolean; mode: "next_pick" | "while_on"; queueOnly: boolean; }; onRemoveFromQueue: (queueId: string) => void; onAutodraftUpdate: (isEnabled: boolean, mode: "next_pick" | "while_on", queueOnly: boolean) => void; onReorder: (participantIds: string[]) => void; onMakePick?: (participantId: string) => void; } // Sortable queue item component const SortableQueueItem = memo(function SortableQueueItem({ item, index, participantName, sportName, canPick, onRemove, onDraft, }: { item: { id: string; participantId: string }; index: number; participantName: string; sportName?: string; canPick: boolean; onRemove: (queueId: string) => void; onDraft?: (participantId: string) => void; }) { const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition, isDragging, } = useSortable({ id: item.id }); const style = { transform: CSS.Transform.toString(transform), transition, opacity: isDragging ? 0.5 : 1, }; return (
{participantName}
{sportName &&{sportName}
}Click participants in Available to add to your queue
) : (