From 829c82cfda95c8e863c23a00791f36a2887cf5d0 Mon Sep 17 00:00:00 2001 From: peterkogo Date: Wed, 24 Jan 2024 13:44:28 +0100 Subject: [PATCH] fixed, parentExpand & simplified updateNodePositions --- packages/react/src/store/index.ts | 9 +++------ packages/react/src/utils/changes.ts | 3 ++- packages/svelte/src/lib/store/index.ts | 2 +- packages/system/src/types/general.ts | 6 +----- packages/system/src/xydrag/XYDrag.ts | 4 ++-- 5 files changed, 9 insertions(+), 15 deletions(-) diff --git a/packages/react/src/store/index.ts b/packages/react/src/store/index.ts index 13311a1b..173d5e5c 100644 --- a/packages/react/src/store/index.ts +++ b/packages/react/src/store/index.ts @@ -151,19 +151,16 @@ const createRFStore = ({ onNodesChange?.(changes); } }, - updateNodePositions: (nodeDragItems, positionChanged = true, dragging = false) => { + updateNodePositions: (nodeDragItems, dragging = false) => { const changes = nodeDragItems.map((node) => { const change: NodePositionChange = { id: node.id, type: 'position', + position: node.position, + positionAbsolute: node.computed?.positionAbsolute, dragging, }; - if (positionChanged) { - change.positionAbsolute = node.computed?.positionAbsolute; - change.position = node.position; - } - return change; }); diff --git a/packages/react/src/utils/changes.ts b/packages/react/src/utils/changes.ts index 6bcddabd..f295b815 100644 --- a/packages/react/src/utils/changes.ts +++ b/packages/react/src/utils/changes.ts @@ -3,6 +3,7 @@ import { EdgeLookup, NodeLookup } from '@xyflow/system'; import type { Node, Edge, EdgeChange, NodeChange, NodeSelectionChange, EdgeSelectionChange } from '../types'; export function handleParentExpand(updatedElements: any[], updateItem: any) { + console.log(updatedElements, updateItem); for (const [index, item] of updatedElements.entries()) { if (item.id === updateItem.parentNode) { const parent = { ...item }; @@ -106,7 +107,7 @@ function applyChanges(changes: any[], elements: any[]): any[] { const updatedElement = { ...element }; for (const change of changes) { - applyChange(change, updatedElement, elements); + applyChange(change, updatedElement, updatedElements); } updatedElements.push(updatedElement); diff --git a/packages/svelte/src/lib/store/index.ts b/packages/svelte/src/lib/store/index.ts index 1cdc8904..f2b74e03 100644 --- a/packages/svelte/src/lib/store/index.ts +++ b/packages/svelte/src/lib/store/index.ts @@ -63,7 +63,7 @@ export function createStore({ store.edges.set(addEdgeUtil(edgeParams, edges)); } - const updateNodePositions: UpdateNodePositions = (nodeDragItems, _, dragging = false) => { + const updateNodePositions: UpdateNodePositions = (nodeDragItems, dragging = false) => { const nodeLookup = get(store.nodeLookup); nodeDragItems.forEach((nodeDragItem) => { diff --git a/packages/system/src/types/general.ts b/packages/system/src/types/general.ts index 5fe4a844..b52930ef 100644 --- a/packages/system/src/types/general.ts +++ b/packages/system/src/types/general.ts @@ -123,11 +123,7 @@ export type SelectionRect = Rect & { export type OnError = (id: string, message: string) => void; -export type UpdateNodePositions = ( - dragItems: NodeDragItem[] | NodeBase[], - positionChanged?: boolean, - dragging?: boolean -) => void; +export type UpdateNodePositions = (dragItems: NodeDragItem[] | NodeBase[], dragging?: boolean) => void; export type PanBy = (delta: XYPosition) => boolean; export type UpdateConnection = (params: { diff --git a/packages/system/src/xydrag/XYDrag.ts b/packages/system/src/xydrag/XYDrag.ts index 40d1aa4b..78eefc74 100644 --- a/packages/system/src/xydrag/XYDrag.ts +++ b/packages/system/src/xydrag/XYDrag.ts @@ -164,7 +164,7 @@ export function XYDrag voi return; } - updateNodePositions(dragItems, true, true); + updateNodePositions(dragItems, true); const onNodeOrSelectionDrag = nodeId ? onNodeDrag : wrapSelectionDragFunc(onSelectionDrag); if (dragEvent && (onDrag || onNodeOrSelectionDrag)) { @@ -296,7 +296,7 @@ export function XYDrag voi const { nodeLookup, updateNodePositions, onNodeDragStop, onSelectionDragStop } = getStoreItems(); const onNodeOrSelectionDragStop = nodeId ? onNodeDragStop : wrapSelectionDragFunc(onSelectionDragStop); - updateNodePositions(dragItems, false, false); + updateNodePositions(dragItems, false); if (onDragStop || onNodeOrSelectionDragStop) { const [currentNode, currentNodes] = getEventHandlerParams({