Files
yaak/src-web/lib/dnd.ts
2025-11-23 08:38:13 -08:00

21 lines
722 B
TypeScript

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';
}