Files
vue-flow/packages/core/src/composables/useNodesInitialized.ts
T

38 lines
1.1 KiB
TypeScript

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
})
}