From b47a04fb8bb7659f10128274a32008caa2a56df0 Mon Sep 17 00:00:00 2001 From: moklick Date: Mon, 23 Sep 2024 15:01:20 +0200 Subject: [PATCH] chore(useReactFlow): cleanup fitView --- .changeset/smart-insects-tease.md | 2 +- packages/react/src/hooks/useViewportHelper.ts | 32 ++++++++++--------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/.changeset/smart-insects-tease.md b/.changeset/smart-insects-tease.md index a2bb7f65..33b5b211 100644 --- a/.changeset/smart-insects-tease.md +++ b/.changeset/smart-insects-tease.md @@ -3,4 +3,4 @@ '@xyflow/svelte': patch --- -Calculate viewport dimensions in fitView instead of using stored dimensions. Fixes [#4652](https://github.com/xyflow/xyflow/issues/4652) +Calculate viewport dimensions in `fitView` instead of using stored dimensions. Fixes [#4652](https://github.com/xyflow/xyflow/issues/4652) diff --git a/packages/react/src/hooks/useViewportHelper.ts b/packages/react/src/hooks/useViewportHelper.ts index 1e653d19..5e7e6cfa 100644 --- a/packages/react/src/hooks/useViewportHelper.ts +++ b/packages/react/src/hooks/useViewportHelper.ts @@ -66,23 +66,25 @@ const useViewportHelper = (): ViewportHelperFunctions => { }, fitView: (options) => { const { nodeLookup, minZoom, maxZoom, panZoom, domNode } = store.getState(); + + if (!panZoom || !domNode) { + return Promise.resolve(false); + } + const fitViewNodes = getFitViewNodes(nodeLookup, options); + const { width, height } = getDimensions(domNode); - const { width, height } = getDimensions(domNode!); - - return panZoom - ? fitView( - { - nodes: fitViewNodes, - width, - height, - minZoom, - maxZoom, - panZoom, - }, - options - ) - : Promise.resolve(false); + return fitView( + { + nodes: fitViewNodes, + width, + height, + minZoom, + maxZoom, + panZoom, + }, + options + ); }, setCenter: async (x, y, options) => { const { width, height, maxZoom, panZoom } = store.getState();