import { computed } from 'vue' import { useVueFlow } from './useVueFlow' export interface UseNodesInitializedOptions { includeHiddenNodes?: boolean } /** * Composable for getting the initialized state of all nodes. * * When a new node is added to the graph, it is not immediately initialized. * That's because the node's bounds are not yet known. * This composable will return false and then true when all nodes are initialized, i.e. when their bounds are known. * * @public * @param options - Options * @returns boolean indicating whether all nodes are initialized */ export function useNodesInitialized(options: UseNodesInitializedOptions = { includeHiddenNodes: false }) { const { nodes } = useVueFlow() return computed(() => { if (nodes.value.length === 0) { return false } for (const node of nodes.value) { if (options.includeHiddenNodes || !node.hidden) { if (node?.handleBounds === undefined || node.dimensions.width === 0 || node.dimensions.height === 0) { return false } } } return true }) }