Files
world/tests/panel-drag-harness.html
hanzo-dev 4ec77ea863 feat(world): best-in-class panel drag + resize (pointer events, custom ghost, FLIP reflow)
Replace HTML5 native DnD (OS drag image, y-only grid hit-test, no touch, no
animation) with a pointer-events system in services/panel-drag.ts:
- custom translucent ghost that tracks the pointer
- gap-opening placeholder + transform FLIP so siblings slide to their new slots
- 6px press threshold (no accidental drags), Escape-to-cancel, rAF-throttled
- unified mouse/touch/pen; on touch the panel header is the grab handle

Resize moves onto the same pointer plumbing with a clean 200px row-span snap
grid (fixes the old 250/350/500 thresholds that fought the 400/600/800 CSS
heights) and pointer capture for reliable mouse+touch.

App keeps panel-order persistence; Panel keeps the span<->class mapping — the
module owns only pointer math + visuals. Adds a deterministic Playwright drag
harness + spec (reorder, threshold guard, Escape cancel, resize snap).
2026-07-08 14:15:45 -07:00

13 lines
321 B
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Panel Drag Harness</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/e2e/panel-drag-harness.ts"></script>
</body>
</html>