refactor(nodes): remove node and parent node props from wrapper
This commit is contained in:
@@ -5,10 +5,8 @@ import { GraphNode, NodeComponent, SnapGrid } from '../../types'
|
|||||||
import { NodeId } from '../../context'
|
import { NodeId } from '../../context'
|
||||||
import { getConnectedEdges, getHandleBounds, getXYZPos } from '../../utils'
|
import { getConnectedEdges, getHandleBounds, getXYZPos } from '../../utils'
|
||||||
|
|
||||||
const { id, type, name, node, parentNode, draggable, selectable, connectable, snapGrid } = defineProps<{
|
const { id, type, name, draggable, selectable, connectable, snapGrid } = defineProps<{
|
||||||
id: string
|
id: string
|
||||||
node: GraphNode
|
|
||||||
parentNode?: GraphNode
|
|
||||||
draggable: boolean
|
draggable: boolean
|
||||||
selectable: boolean
|
selectable: boolean
|
||||||
connectable: boolean
|
connectable: boolean
|
||||||
@@ -35,6 +33,9 @@ const {
|
|||||||
resetSelectedElements,
|
resetSelectedElements,
|
||||||
} = $(useVueFlow())
|
} = $(useVueFlow())
|
||||||
|
|
||||||
|
const node = $computed(() => getNode(id)!)
|
||||||
|
const parentNode = $computed(() => (node.parentNode ? getNode(node.parentNode) : undefined))
|
||||||
|
|
||||||
const nodeElement = ref()
|
const nodeElement = ref()
|
||||||
|
|
||||||
let dragging = $ref(false)
|
let dragging = $ref(false)
|
||||||
@@ -69,38 +70,35 @@ useDrag({
|
|||||||
},
|
},
|
||||||
onDrag(event, { dx, dy }) {
|
onDrag(event, { dx, dy }) {
|
||||||
dragging = true
|
dragging = true
|
||||||
updateNodePosition({ id: node.id, diff: { x: dx, y: dy } })
|
updateNodePosition({ id, diff: { x: dx, y: dy } })
|
||||||
emits.nodeDrag({ event: event.sourceEvent, node, connectedEdges: getConnectedEdges([node], edges) })
|
emits.nodeDrag({ event: event.sourceEvent, node, connectedEdges: getConnectedEdges([node], edges) })
|
||||||
},
|
},
|
||||||
onStop(event) {
|
onStop(event) {
|
||||||
dragging = false
|
dragging = false
|
||||||
|
|
||||||
updateNodePosition({ id: node.id })
|
|
||||||
|
|
||||||
emits.nodeDragStop({ event: event.sourceEvent, node, connectedEdges: getConnectedEdges([node], edges) })
|
emits.nodeDragStop({ event: event.sourceEvent, node, connectedEdges: getConnectedEdges([node], edges) })
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
onBeforeMount(() => {
|
onBeforeMount(() => {
|
||||||
updateNodePosition({ id: node.id, diff: { x: 0, y: 0 } })
|
updateNodePosition({ id, diff: { x: 0, y: 0 } })
|
||||||
})
|
})
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
const observer = useResizeObserver(nodeElement, () =>
|
const observer = useResizeObserver(nodeElement, () =>
|
||||||
updateNodeDimensions([{ id: node.id, nodeElement: nodeElement.value, forceUpdate: true }]),
|
updateNodeDimensions([{ id, nodeElement: nodeElement.value, forceUpdate: true }]),
|
||||||
)
|
)
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
[() => node.type, () => node.sourcePosition, () => node.targetPosition],
|
[() => node.type, () => node.sourcePosition, () => node.targetPosition],
|
||||||
() => {
|
() => {
|
||||||
updateNodeDimensions([{ id: node.id, nodeElement: nodeElement.value }])
|
updateNodeDimensions([{ id, nodeElement: nodeElement.value }])
|
||||||
},
|
},
|
||||||
{ flush: 'post' },
|
{ flush: 'post' },
|
||||||
)
|
)
|
||||||
|
|
||||||
onBeforeUnmount(() => observer.stop())
|
onBeforeUnmount(() => observer.stop())
|
||||||
|
|
||||||
updateNodeDimensions([{ id: node.id, nodeElement: nodeElement.value, forceUpdate: true }])
|
updateNodeDimensions([{ id, nodeElement: nodeElement.value, forceUpdate: true }])
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
[() => node.position, () => parentNode?.computedPosition, () => node.selected, () => parentNode?.selected],
|
[() => node.position, () => parentNode?.computedPosition, () => node.selected, () => parentNode?.selected],
|
||||||
@@ -233,7 +231,7 @@ export default {
|
|||||||
:is-valid-target-pos="node.isValidTargetPos"
|
:is-valid-target-pos="node.isValidTargetPos"
|
||||||
:is-valid-source-pos="node.isValidSourcePos"
|
:is-valid-source-pos="node.isValidSourcePos"
|
||||||
:parent-node="node.parentNode"
|
:parent-node="node.parentNode"
|
||||||
:dragging="!!node.dragging"
|
:dragging="dragging"
|
||||||
:z-index="node.computedPosition.z"
|
:z-index="node.computedPosition.z"
|
||||||
:target-position="node.targetPosition"
|
:target-position="node.targetPosition"
|
||||||
:source-position="node.sourcePosition"
|
:source-position="node.sourcePosition"
|
||||||
|
|||||||
@@ -61,9 +61,7 @@ export default {
|
|||||||
:id="node.id"
|
:id="node.id"
|
||||||
:key="node.id"
|
:key="node.id"
|
||||||
:type="getType(node)"
|
:type="getType(node)"
|
||||||
:name="getType(node) ? node.type ?? 'default' : 'default'"
|
:name="node.type || 'default'"
|
||||||
:node="node"
|
|
||||||
:parent-node="node.parentNode ? getNode(node.parentNode) : undefined"
|
|
||||||
:draggable="draggable(node.draggable)"
|
:draggable="draggable(node.draggable)"
|
||||||
:selectable="selectable(node.selectable)"
|
:selectable="selectable(node.selectable)"
|
||||||
:connectable="connectable(node.connectable)"
|
:connectable="connectable(node.connectable)"
|
||||||
|
|||||||
Reference in New Issue
Block a user