From 972da582e96e20e0562d5f645d19a8e43630cdc0 Mon Sep 17 00:00:00 2001 From: moklick Date: Thu, 25 Apr 2024 17:02:57 +0200 Subject: [PATCH] fix(react): useNodesInitialized true when nodes measured closes #4202 --- packages/react/CHANGELOG.md | 1 + packages/react/src/hooks/useNodesInitialized.ts | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index 06402425..6685ad5b 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -5,6 +5,7 @@ ## Patch changes - fix batching for `setNodes`, `updateNode`, `updateNodeData` etc. +- fix `useNodesInitialized` ## 12.0.0-next.15 diff --git a/packages/react/src/hooks/useNodesInitialized.ts b/packages/react/src/hooks/useNodesInitialized.ts index 346e56d9..98bfa6b7 100644 --- a/packages/react/src/hooks/useNodesInitialized.ts +++ b/packages/react/src/hooks/useNodesInitialized.ts @@ -1,5 +1,6 @@ import { useStore } from './useStore'; import type { ReactFlowState } from '../types'; +import { nodeHasDimensions } from '@xyflow/system'; export type UseNodesInitializedOptions = { includeHiddenNodes?: boolean; @@ -10,9 +11,9 @@ const selector = (options: UseNodesInitializedOptions) => (s: ReactFlowState) => return false; } - for (const [, node] of s.nodeLookup) { - if (options.includeHiddenNodes || !node.hidden) { - if (node.internals.handleBounds === undefined) { + for (const [, { hidden, internals }] of s.nodeLookup) { + if (options.includeHiddenNodes || !hidden) { + if (internals.handleBounds === undefined || !nodeHasDimensions(internals.userNode)) { return false; } }