diff --git a/packages/vue-flow/src/components/Nodes/NodeWrapper.vue b/packages/vue-flow/src/components/Nodes/NodeWrapper.vue index b523c566..873afe05 100644 --- a/packages/vue-flow/src/components/Nodes/NodeWrapper.vue +++ b/packages/vue-flow/src/components/Nodes/NodeWrapper.vue @@ -2,7 +2,7 @@ import { useVModel } from '@vueuse/core' import { useDrag, useNodeHooks, useVueFlow } from '../../composables' import type { GraphNode, NodeComponent, SnapGrid, XYZPosition } from '../../types' -import { NodeId } from '../../context' +import { NodeId, NodeRef } from '../../context' import { getConnectedEdges, getXYZPos, handleNodeClick } from '../../utils' const { id, type, name, draggable, selectable, connectable, snapGrid, ...props } = defineProps<{ @@ -41,6 +41,8 @@ const parentNode = $computed(() => (node.parentNode ? getNode(node.parentNode) : const nodeElement = ref() +provide(NodeRef, nodeElement) + const { emit, on } = useNodeHooks(node, emits) const dragging = useDrag({ diff --git a/packages/vue-flow/src/context/index.ts b/packages/vue-flow/src/context/index.ts index 0a023dba..b677c22c 100644 --- a/packages/vue-flow/src/context/index.ts +++ b/packages/vue-flow/src/context/index.ts @@ -1,6 +1,7 @@ -import type { InjectionKey, Slots as TSlots } from 'vue' +import type { InjectionKey, Ref, Slots as TSlots } from 'vue' import type { VueFlowStore } from '~/types' export const VueFlow: InjectionKey = Symbol('vueFlow') export const NodeId: InjectionKey = Symbol('nodeId') +export const NodeRef: InjectionKey> = Symbol('nodeRef') export const Slots: InjectionKey = Symbol('slots')