Skip to content

Commit 224d052

Browse files
committed
updated visualization page (fixed dragging bug)
1 parent 8888a0d commit 224d052

1 file changed

Lines changed: 23 additions & 8 deletions

File tree

docusaurus-site/src/components/ProofSearchCanvas.js

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,8 @@ export default function ProofSearchCanvas({
252252
const maxY = minY + viewH;
253253
const centerX = minX + viewW * 0.5;
254254
const centerY = minY + viewH * 0.5;
255+
const dragState = dragRef.current;
256+
const grabbedId = dragState && dragState.type === 'node' ? dragState.id : null;
255257

256258
// Subtle grid (world space)
257259
ctx.strokeStyle = palette.grid;
@@ -293,10 +295,18 @@ export default function ProofSearchCanvas({
293295
const force = 60 / dist2;
294296
const fx = force * dx;
295297
const fy = force * dy;
296-
a.vx += fx;
297-
a.vy += fy;
298-
b.vx -= fx;
299-
b.vy -= fy;
298+
if (grabbedId && String(a.id) === String(grabbedId)) {
299+
b.vx -= fx;
300+
b.vy -= fy;
301+
} else if (grabbedId && String(b.id) === String(grabbedId)) {
302+
a.vx += fx;
303+
a.vy += fy;
304+
} else {
305+
a.vx += fx;
306+
a.vy += fy;
307+
b.vx -= fx;
308+
b.vy -= fy;
309+
}
300310
}
301311
}
302312
} else {
@@ -310,8 +320,8 @@ export default function ProofSearchCanvas({
310320

311321
for (let i = 0; i < count; i += 1) {
312322
const node = nodes[i];
313-
const dragState = dragRef.current;
314-
const dragging = dragState && dragState.type === 'node' && dragState.id === node.id && dragState.dragging;
323+
const grabbed = grabbedId && String(node.id) === String(grabbedId);
324+
const dragging = grabbed && dragState?.dragging;
315325
if (!dragging) {
316326
const target = targets.get(String(node.id));
317327
if (target) {
@@ -324,9 +334,14 @@ export default function ProofSearchCanvas({
324334
}
325335
node.vx *= 0.78;
326336
node.vy *= 0.78;
337+
} else {
338+
node.vx = 0;
339+
node.vy = 0;
340+
}
341+
if (!grabbed) {
342+
node.x += node.vx;
343+
node.y += node.vy;
327344
}
328-
node.x += node.vx;
329-
node.y += node.vy;
330345

331346
const pad = 28;
332347
node.x = clamp(node.x, minX + pad, maxX - pad);

0 commit comments

Comments
 (0)