regression: calculate handle bounds regardless of update
This commit is contained in:
@@ -70,35 +70,33 @@ const targetPosition = computed(() => (targetHandle.value ? targetHandle.value.p
|
|||||||
const edgeUpdaterRadius = computed(() => store.edgeUpdaterRadius)
|
const edgeUpdaterRadius = computed(() => store.edgeUpdaterRadius)
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
nextTick(() => {
|
watch(
|
||||||
watch(
|
[
|
||||||
[
|
sourcePosition,
|
||||||
sourcePosition,
|
targetPosition,
|
||||||
targetPosition,
|
() => edge.value.sourceNode.position,
|
||||||
() => edge.value.sourceNode.position,
|
() => edge.value.targetNode.position,
|
||||||
() => edge.value.targetNode.position,
|
() => edge.value.sourceNode.computedPosition,
|
||||||
() => edge.value.sourceNode.computedPosition,
|
() => edge.value.targetNode.computedPosition,
|
||||||
() => edge.value.targetNode.computedPosition,
|
() => edge.value.sourceNode.dimensions,
|
||||||
() => edge.value.sourceNode.dimensions,
|
() => edge.value.targetNode.dimensions,
|
||||||
() => edge.value.targetNode.dimensions,
|
],
|
||||||
],
|
() => {
|
||||||
() => {
|
const { sourceX, sourceY, targetY, targetX } = getEdgePositions(
|
||||||
const { sourceX, sourceY, targetY, targetX } = getEdgePositions(
|
edge.value.sourceNode,
|
||||||
edge.value.sourceNode,
|
sourceHandle.value,
|
||||||
sourceHandle.value,
|
sourcePosition.value,
|
||||||
sourcePosition.value,
|
edge.value.targetNode,
|
||||||
edge.value.targetNode,
|
targetHandle.value,
|
||||||
targetHandle.value,
|
targetPosition.value,
|
||||||
targetPosition.value,
|
)
|
||||||
)
|
if (edge.value.sourceX !== sourceX) edge.value.sourceX = sourceX
|
||||||
if (edge.value.sourceX !== sourceX) edge.value.sourceX = sourceX
|
if (edge.value.sourceY !== sourceY) edge.value.sourceY = sourceY
|
||||||
if (edge.value.sourceY !== sourceY) edge.value.sourceY = sourceY
|
if (edge.value.targetX !== targetX) edge.value.targetX = targetX
|
||||||
if (edge.value.targetX !== targetX) edge.value.targetX = targetX
|
if (edge.value.targetY !== targetY) edge.value.targetY = targetY
|
||||||
if (edge.value.targetY !== targetY) edge.value.targetY = targetY
|
},
|
||||||
},
|
{ immediate: true, deep: true },
|
||||||
{ immediate: true, deep: true },
|
)
|
||||||
)
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
@@ -112,6 +110,7 @@ export default {
|
|||||||
:class="[
|
:class="[
|
||||||
'vue-flow__edge',
|
'vue-flow__edge',
|
||||||
`vue-flow__edge-${edge.type || 'default'}`,
|
`vue-flow__edge-${edge.type || 'default'}`,
|
||||||
|
store.noPanClassName,
|
||||||
{
|
{
|
||||||
selected: edge.selected,
|
selected: edge.selected,
|
||||||
animated: edge.animated,
|
animated: edge.animated,
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
import useState from './state'
|
import useState from './state'
|
||||||
import {
|
import {
|
||||||
CoordinateExtent,
|
|
||||||
EdgeChange,
|
|
||||||
Actions,
|
Actions,
|
||||||
ComputedGetters,
|
ComputedGetters,
|
||||||
State,
|
Connection,
|
||||||
|
CoordinateExtent,
|
||||||
|
Edge,
|
||||||
|
EdgeChange,
|
||||||
|
Getters,
|
||||||
|
GraphEdge,
|
||||||
GraphNode,
|
GraphNode,
|
||||||
Node,
|
Node,
|
||||||
NodeChange,
|
NodeChange,
|
||||||
NodeDimensionChange,
|
NodeDimensionChange,
|
||||||
Edge,
|
|
||||||
Connection,
|
|
||||||
GraphEdge,
|
|
||||||
NodePositionChange,
|
NodePositionChange,
|
||||||
Getters,
|
State,
|
||||||
} from '~/types'
|
} from '~/types'
|
||||||
import {
|
import {
|
||||||
applyChanges,
|
applyChanges,
|
||||||
@@ -149,11 +149,10 @@ export default (state: State, getters: ComputedGetters): Actions => {
|
|||||||
dimensions.height &&
|
dimensions.height &&
|
||||||
(node.dimensions.width !== dimensions.width || node.dimensions.height !== dimensions.height || update.forceUpdate)
|
(node.dimensions.width !== dimensions.width || node.dimensions.height !== dimensions.height || update.forceUpdate)
|
||||||
)
|
)
|
||||||
|
node.handleBounds = getHandleBounds(update.nodeElement, state.transform[2])
|
||||||
|
|
||||||
if (doUpdate) {
|
if (doUpdate) {
|
||||||
const handleBounds = getHandleBounds(update.nodeElement, state.transform[2])
|
|
||||||
node.dimensions = dimensions
|
node.dimensions = dimensions
|
||||||
node.handleBounds = handleBounds
|
|
||||||
|
|
||||||
res.push({
|
res.push({
|
||||||
id: node.id,
|
id: node.id,
|
||||||
|
|||||||
Reference in New Issue
Block a user