The rundown list is virtualised, so dragging an entry far enough for its
row to leave the render window unmounts the draggable. dnd-kit then loses
both the rect used for collision detection and the data attached to the
active element: the dragged element stopped being rendered and the drop
had no effect.
- render a drag overlay (portaled to the body) with a lightweight preview
of the dragged entry, which keeps the drag visible and gives dnd-kit a
stable rect for collision detection
- keep a copy of the active element data from drag start, and use it on
drag end when dnd-kit falls back to empty data
- sortable entries stay in place as a dimmed placeholder while dragging,
since the overlay now represents the moving element
- clear the drag state on drag cancel
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TEnUVARPnSqXijiz8KiLiE
* chore: migrate eslint to oxlint
* chore: migrate prettier to oxfmt
* chore: migrate typescript
* chore: toThrow should have a expected value
* chore: cast test value as Day
* chore: small title fix
* chore: mocks should be hoisted
* chore: incorrect async useage
* chore: test should be inside description
* chore: test sohuld include an expeced
* chore: oxfmt
---------
Co-authored-by: alex-Arc <omnivox@LAPTOP-RC5SNBVV.localdomain>