38 lines
1.1 KiB
TypeScript
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
|
|
})
|
|
}
|