import type { DragMoveEvent } from '@dnd-kit/core'; export function computeSideForDragMove( id: string, e: DragMoveEvent, ): 'above' | 'below' | null { if (e.over == null || e.over.id !== id) { return null; } if (e.active.rect.current.initial == null) return null; const overRect = e.over.rect; const activeTop = e.active.rect.current.translated?.top ?? e.active.rect.current.initial.top + e.delta.y; const pointerY = activeTop + e.active.rect.current.initial.height / 2; const hoverTop = overRect.top; const hoverBottom = overRect.bottom; const hoverMiddleY = (hoverBottom - hoverTop) / 2; const hoverClientY = pointerY - hoverTop; return hoverClientY < hoverMiddleY ? 'above' : 'below'; }