/** * Type definitions for drag and drop functionality */ export interface MousePosition { x: number; y: number; clientX?: number; clientY?: number; } export interface DragOffset { x: number; y: number; offsetX?: number; offsetY?: number; } export interface DragState { isDragging: boolean; draggedElement: HTMLElement | null; draggedClone: HTMLElement | null; eventId: string | null; startColumn: string | null; currentColumn: string | null; mouseOffset: DragOffset; } export interface DragEndPosition { column: string; y: number; snappedY: number; time?: Date; } export interface StackLinkData { prev?: string; next?: string; isFirst?: boolean; isLast?: boolean; } export interface DragEventHandlers { handleDragStart?(originalElement: HTMLElement, eventId: string, mouseOffset: DragOffset, column: string): void; handleDragMove?(eventId: string, snappedY: number, column: string, mouseOffset: DragOffset): void; handleDragEnd?(eventId: string, originalElement: HTMLElement, draggedClone: HTMLElement, finalColumn: string, finalY: number): void; }