regression(nodes,edges): removing nodes/edges breaks renderer
This commit is contained in:
@@ -1,20 +1,20 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { useHandle, useVueFlow } from '../../composables'
|
import { useHandle, useVueFlow } from '../../composables'
|
||||||
import { ConnectionMode, Position } from '../../types'
|
import { ConnectionMode, GraphEdge, Position } from '../../types'
|
||||||
import { getEdgePositions, getHandle, getMarkerId } from '../../utils'
|
import { getEdgePositions, getHandle, getMarkerId } from '../../utils'
|
||||||
import EdgeAnchor from './EdgeAnchor.vue'
|
import EdgeAnchor from './EdgeAnchor.vue'
|
||||||
|
|
||||||
interface EdgeWrapper {
|
interface EdgeWrapper {
|
||||||
id: string
|
id: string
|
||||||
name: string
|
name: string
|
||||||
|
edge: GraphEdge
|
||||||
selectable?: boolean
|
selectable?: boolean
|
||||||
updatable?: boolean
|
updatable?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
const props = defineProps<EdgeWrapper>()
|
const props = defineProps<EdgeWrapper>()
|
||||||
const { store } = useVueFlow()
|
const { store } = useVueFlow()
|
||||||
const edge = computed(() => store.getEdge(props.id)!)
|
const edge = useVModel(props, 'edge')
|
||||||
if (!edge.value) throw new Error(`Edge with ${props.id} not found!`)
|
|
||||||
|
|
||||||
const updating = ref(false)
|
const updating = ref(false)
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { DraggableEventListener, DraggableCore } from '@braks/revue-draggable/src/index'
|
import { DraggableEventListener, DraggableCore } from '@braks/revue-draggable/src/index'
|
||||||
import { useVueFlow } from '../../composables'
|
import { useVueFlow } from '../../composables'
|
||||||
import { SnapGrid } from '../../types'
|
import { GraphNode, SnapGrid } from '../../types'
|
||||||
import { NodeId } from '../../context'
|
import { NodeId } from '../../context'
|
||||||
import { getXYZPos } from '../../utils'
|
import { getXYZPos } from '../../utils'
|
||||||
|
|
||||||
interface NodeWrapperProps {
|
interface NodeWrapperProps {
|
||||||
id: string
|
id: string
|
||||||
name: string
|
name: string
|
||||||
|
node: GraphNode
|
||||||
draggable: boolean
|
draggable: boolean
|
||||||
selectable: boolean
|
selectable: boolean
|
||||||
connectable: boolean
|
connectable: boolean
|
||||||
@@ -16,8 +17,7 @@ interface NodeWrapperProps {
|
|||||||
|
|
||||||
const props = defineProps<NodeWrapperProps>()
|
const props = defineProps<NodeWrapperProps>()
|
||||||
const { store } = useVueFlow()
|
const { store } = useVueFlow()
|
||||||
const node = computed(() => store.getNode(props.id)!)
|
const node = useVModel(props, 'node')
|
||||||
if (!node.value) throw new Error(`[vueflow]: Node with ${props.id} not found!`)
|
|
||||||
provide(NodeId, props.id)
|
provide(NodeId, props.id)
|
||||||
|
|
||||||
const nodeElement = templateRef<HTMLDivElement>('node-element', null)
|
const nodeElement = templateRef<HTMLDivElement>('node-element', null)
|
||||||
|
|||||||
@@ -75,20 +75,19 @@ export default {
|
|||||||
>
|
>
|
||||||
<MarkerDefinitions v-if="group.isMaxLevel" :default-color="store.defaultMarkerColor" />
|
<MarkerDefinitions v-if="group.isMaxLevel" :default-color="store.defaultMarkerColor" />
|
||||||
<g>
|
<g>
|
||||||
<template v-if="store.getEdges.length">
|
<EdgeWrapper
|
||||||
<EdgeWrapper
|
v-for="edge of group.edges"
|
||||||
v-for="edge of group.edges"
|
:id="edge.id"
|
||||||
:id="edge.id"
|
:key="edge.id"
|
||||||
:key="edge.id"
|
:edge="edge"
|
||||||
:name="names[edge.type] || 'default'"
|
:name="names[edge.type] || 'default'"
|
||||||
:selectable="typeof edge.selectable === 'undefined' ? store.elementsSelectable : edge.selectable"
|
:selectable="typeof edge.selectable === 'undefined' ? store.elementsSelectable : edge.selectable"
|
||||||
:updatable="typeof edge.updatable === 'undefined' ? store.edgesUpdatable : edge.updatable"
|
:updatable="typeof edge.updatable === 'undefined' ? store.edgesUpdatable : edge.updatable"
|
||||||
>
|
>
|
||||||
<template #default="props">
|
<template #default="props">
|
||||||
<component :is="getType(edge.type)" v-bind="props" />
|
<component :is="getType(edge.type)" v-bind="props" />
|
||||||
</template>
|
</template>
|
||||||
</EdgeWrapper>
|
</EdgeWrapper>
|
||||||
</template>
|
|
||||||
<ConnectionLine v-if="connectionLineVisible && sourceNode" :source-node="sourceNode">
|
<ConnectionLine v-if="connectionLineVisible && sourceNode" :source-node="sourceNode">
|
||||||
<slot name="connection-line" />
|
<slot name="connection-line" />
|
||||||
</ConnectionLine>
|
</ConnectionLine>
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ export default {
|
|||||||
v-for="node of store.getNodes"
|
v-for="node of store.getNodes"
|
||||||
:id="node.id"
|
:id="node.id"
|
||||||
:key="`vue-flow__node-${node.id}`"
|
:key="`vue-flow__node-${node.id}`"
|
||||||
|
:node="node"
|
||||||
:name="names[node.type] || 'default'"
|
:name="names[node.type] || 'default'"
|
||||||
:draggable="typeof node.draggable === 'undefined' ? store.nodesDraggable : !!node.draggable"
|
:draggable="typeof node.draggable === 'undefined' ? store.nodesDraggable : !!node.draggable"
|
||||||
:selectable="typeof node.selectable === 'undefined' ? store.elementsSelectable : !!node.selectable"
|
:selectable="typeof node.selectable === 'undefined' ? store.elementsSelectable : !!node.selectable"
|
||||||
|
|||||||
Reference in New Issue
Block a user