refactor(nodes): remove node and parent node props from wrapper

This commit is contained in:
Braks
2022-05-27 23:36:01 +02:00
parent 1e506dc151
commit 80878a228c
2 changed files with 11 additions and 15 deletions
@@ -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)"