From a29d7c86f050bcdf976577699b37df76fcef2d71 Mon Sep 17 00:00:00 2001 From: braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Thu, 6 Oct 2022 23:21:16 +0200 Subject: [PATCH] feat(nodes): add from position to position change event --- packages/vue-flow/src/store/actions.ts | 1 + packages/vue-flow/src/types/changes.ts | 2 ++ packages/vue-flow/src/utils/drag.ts | 25 ++++++++++++++----------- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/packages/vue-flow/src/store/actions.ts b/packages/vue-flow/src/store/actions.ts index f34e2349..79a748f9 100644 --- a/packages/vue-flow/src/store/actions.ts +++ b/packages/vue-flow/src/store/actions.ts @@ -67,6 +67,7 @@ export default (state: State, getters: ComputedGetters): Actions => { id: node.id, type: 'position', dragging, + from: node.from, } if (changed) { diff --git a/packages/vue-flow/src/types/changes.ts b/packages/vue-flow/src/types/changes.ts index 5fd59d4e..b81e312c 100644 --- a/packages/vue-flow/src/types/changes.ts +++ b/packages/vue-flow/src/types/changes.ts @@ -9,6 +9,7 @@ export interface NodeDragItem { // distance from the mouse cursor to the node when start dragging distance: XYPosition dimensions: Dimensions + from: XYPosition extent?: Node['extent'] parentNode?: string } @@ -25,6 +26,7 @@ export interface NodePositionChange { type: 'position' position: XYPosition computedPosition: XYPosition + from: XYPosition dragging: boolean } diff --git a/packages/vue-flow/src/utils/drag.ts b/packages/vue-flow/src/utils/drag.ts index ba179fea..c4a8af12 100644 --- a/packages/vue-flow/src/utils/drag.ts +++ b/packages/vue-flow/src/utils/drag.ts @@ -23,17 +23,20 @@ export function getDragItems( ): NodeDragItem[] { return nodes .filter((n) => (n.selected || n.id === nodeId) && (!n.parentNode || !isParentSelected(n, getNode))) - .map((n) => ({ - id: n.id, - position: n.computedPosition || { x: 0, y: 0, z: 0 }, - distance: { - x: mousePos.x - n.computedPosition?.x || 0, - y: mousePos.y - n.computedPosition?.y || 0, - }, - extent: n.extent, - parentNode: n.parentNode, - dimensions: n.dimensions, - })) + .map((n) => + markRaw({ + id: n.id, + position: n.computedPosition || { x: 0, y: 0, z: 0 }, + distance: { + x: mousePos.x - n.computedPosition?.x || 0, + y: mousePos.y - n.computedPosition?.y || 0, + }, + from: n.computedPosition, + extent: n.extent, + parentNode: n.parentNode, + dimensions: n.dimensions, + }), + ) } export function getEventHandlerParams({