diff --git a/packages/core/src/hooks/useNodesInitialized.ts b/packages/core/src/hooks/useNodesInitialized.ts new file mode 100644 index 00000000..3612253d --- /dev/null +++ b/packages/core/src/hooks/useNodesInitialized.ts @@ -0,0 +1,12 @@ +import { ReactFlowState } from '../types'; +import { useStore } from './useStore'; + +const selector = (s: ReactFlowState) => Array.from(s.nodeInternals.values()).every((n) => n.width && n.height); + +function useNodesInitialized(): boolean { + const initialized = useStore(selector); + + return initialized; +} + +export default useNodesInitialized; diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 0f2ce6a6..4777566e 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -41,5 +41,7 @@ export { default as useKeyPress } from './hooks/useKeyPress'; export * from './hooks/useNodesEdgesState'; export { useStore, useStoreApi } from './hooks/useStore'; export { default as useOnViewportChange } from './hooks/useOnViewportChange'; +export { default as useOnSelectionChange } from './hooks/useOnSelectionChange'; +export { default as useNodesInitialized } from './hooks/useNodesInitialized'; export * from './types';