diff --git a/packages/vue-flow/src/components/Nodes/NodeWrapper.vue b/packages/vue-flow/src/components/Nodes/NodeWrapper.vue index cbd24ee6..35778ae9 100644 --- a/packages/vue-flow/src/components/Nodes/NodeWrapper.vue +++ b/packages/vue-flow/src/components/Nodes/NodeWrapper.vue @@ -71,18 +71,22 @@ const updatePosition = (nodePos: XYZPosition, parentPos?: XYZPosition) => { } } +const updateInternals = () => { + updateNodeDimensions([{ id, nodeElement: nodeElement.value, forceUpdate: true }]) + + updatePosition( + { + x: node.position.x, + y: node.position.y, + z: node.computedPosition.z ? node.computedPosition.z : node.selected ? 1000 : 0, + }, + parentNode ? { ...parentNode.computedPosition } : undefined, + ) +} + onUpdateNodeInternals((updateIds) => { if (updateIds.includes(id)) { - updateNodeDimensions([{ id, nodeElement: nodeElement.value, forceUpdate: true }]) - - updatePosition( - { - x: node.position.x, - y: node.position.y, - z: node.computedPosition.z ? node.computedPosition.z : node.selected ? 1000 : 0, - }, - parentNode ? { ...parentNode.computedPosition } : undefined, - ) + updateInternals() } }) @@ -234,6 +238,7 @@ export default { :source-position="node.sourcePosition" :label="node.label" :drag-handle="node.dragHandle" + @update-node-internals="updateInternals" /> diff --git a/packages/vue-flow/src/env.d.ts b/packages/vue-flow/src/env.d.ts index fe706fd0..3f271324 100644 --- a/packages/vue-flow/src/env.d.ts +++ b/packages/vue-flow/src/env.d.ts @@ -4,7 +4,7 @@ declare module '*.vue' { import type { DefineComponent } from 'vue' - // eslint-disable-next-line @typescript-eslint/ban-types + const component: DefineComponent<{}, {}, any> export default component } diff --git a/packages/vue-flow/src/types/hooks.ts b/packages/vue-flow/src/types/hooks.ts index 80e15a3c..e9906dcc 100644 --- a/packages/vue-flow/src/types/hooks.ts +++ b/packages/vue-flow/src/types/hooks.ts @@ -44,6 +44,7 @@ export interface FlowEvents { nodeDragStart: NodeDragEvent nodeDrag: NodeDragEvent nodeDragStop: NodeDragEvent + updateNodeInternals: string[] miniMapNodeClick: NodeMouseEvent miniMapNodeDoubleClick: NodeMouseEvent miniMapNodeMouseEnter: NodeMouseEvent @@ -75,7 +76,6 @@ export interface FlowEvents { edgeUpdateStart: EdgeMouseEvent edgeUpdate: EdgeUpdateEvent edgeUpdateEnd: EdgeMouseEvent - updateNodeInternals: string[] } export type FlowHooks = Readonly<{ diff --git a/packages/vue-flow/src/utils/node.ts b/packages/vue-flow/src/utils/node.ts index e7e55b47..503b952c 100644 --- a/packages/vue-flow/src/utils/node.ts +++ b/packages/vue-flow/src/utils/node.ts @@ -1,6 +1,6 @@ +import type { Ref } from 'vue' import { getDimensions } from './graph' import type { Actions, GraphNode, HandleElement, Position } from '~/types' -import { Ref } from "vue"; export const getHandleBoundsByHandleType = ( selector: string,