From 7757c89fccdeb9d571d669a8de9a9983cea0c3a0 Mon Sep 17 00:00:00 2001 From: draedful Date: Mon, 6 Apr 2026 17:20:16 +0300 Subject: [PATCH 1/2] feat: support snapping in group --- src/components/canvas/groups/Group.ts | 90 ++++++++++++++++++++++----- 1 file changed, 74 insertions(+), 16 deletions(-) diff --git a/src/components/canvas/groups/Group.ts b/src/components/canvas/groups/Group.ts index 2a28c19d..197a302c 100644 --- a/src/components/canvas/groups/Group.ts +++ b/src/components/canvas/groups/Group.ts @@ -94,6 +94,12 @@ export class Group extends GraphComponent extends GraphComponent extends GraphComponent { - if (group) { - this.setState({ - ...this.state, - ...group, - } as T); + if (!group) { + return; + } + if (this.isDragging) { + // Suppress rect update during drag to prevent the block bounding-box signal chain + // from overwriting the position set by handleDrag / subclass snapping logic. + const { rect: _rect, ...groupWithoutRect } = group; + this.setState({ ...this.state, ...groupWithoutRect } as T); + } else { + this.setState({ ...this.state, ...group } as T); this.updateHitBox(this.getRect(group.rect)); } }); From 8c4f147f21a893b8586e014760c2bf26b4fc6b41 Mon Sep 17 00:00:00 2001 From: draedful Date: Thu, 9 Apr 2026 15:13:30 +0300 Subject: [PATCH 2/2] ... --- src/components/canvas/groups/Group.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/canvas/groups/Group.ts b/src/components/canvas/groups/Group.ts index 197a302c..6cc6dc23 100644 --- a/src/components/canvas/groups/Group.ts +++ b/src/components/canvas/groups/Group.ts @@ -287,9 +287,9 @@ export class Group extends GraphComponent