Resize n/w: inkrementell delta i stedet for kumulativ

Forrige versjon sendte total offset fra startposisjon på hvert
pointermove-event, som ble addert gjentatte ganger og akselererte
panelet ut av bildet. Nå beregnes delta fra forrige frame.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
vegard 2026-03-19 05:53:54 +00:00
parent b8be448908
commit b37746207a

View file

@ -82,6 +82,8 @@
let resizeStartY = 0; let resizeStartY = 0;
let resizeStartW = 0; let resizeStartW = 0;
let resizeStartH = 0; let resizeStartH = 0;
let resizeLastW = 0;
let resizeLastH = 0;
// Track drag interaction // Track drag interaction
let dragStartX = 0; let dragStartX = 0;
@ -205,6 +207,9 @@
resizeStartW = clampedWidth; resizeStartW = clampedWidth;
resizeStartH = clampedHeight; resizeStartH = clampedHeight;
resizeLastW = clampedWidth;
resizeLastH = clampedHeight;
// Capture on the document level for smooth resizing // Capture on the document level for smooth resizing
window.addEventListener('pointermove', handleResizeMove); window.addEventListener('pointermove', handleResizeMove);
window.addEventListener('pointerup', handleResizeEnd); window.addEventListener('pointerup', handleResizeEnd);
@ -233,11 +238,14 @@
const clampedW = Math.min(constraints.maxWidth, Math.max(constraints.minWidth, newW)); const clampedW = Math.min(constraints.maxWidth, Math.max(constraints.minWidth, newW));
const clampedH = Math.min(constraints.maxHeight, Math.max(constraints.minHeight, newH)); const clampedH = Math.min(constraints.maxHeight, Math.max(constraints.minHeight, newH));
// Position delta for n/w dragging: move origin to keep the opposite edge fixed // Incremental position delta for n/w dragging
let posDx = 0; let posDx = 0;
let posDy = 0; let posDy = 0;
if (resizeDir.includes('w')) posDx = resizeStartW - clampedW; if (resizeDir.includes('w')) posDx = resizeLastW - clampedW;
if (resizeDir.includes('n')) posDy = resizeStartH - clampedH; if (resizeDir.includes('n')) posDy = resizeLastH - clampedH;
resizeLastW = clampedW;
resizeLastH = clampedH;
onResize?.(clampedW, clampedH, posDx, posDy); onResize?.(clampedW, clampedH, posDx, posDy);
} }