refactor(core,nodes,edges): deep reactive nodes and edges

Signed-off-by: braks <78412429+bcakmakoglu@users.noreply.github.com>
This commit is contained in:
braks
2022-12-09 20:40:50 +01:00
committed by Braks
parent a4cf9c0b3b
commit a8f679c36b
3 changed files with 23 additions and 26 deletions
+10 -14
View File
@@ -307,13 +307,11 @@ export function useActions(state: State, getters: ComputedGetters): Actions {
const storedEdge = getters.getEdge.value(edge.id)
res.push(
shallowReactive({
...parseEdge(edge, Object.assign({}, storedEdge, state.defaultEdgeOptions)),
sourceNode,
targetNode,
}),
)
res.push({
...parseEdge(edge, Object.assign({}, storedEdge, state.defaultEdgeOptions)),
sourceNode,
targetNode,
})
return res
}, [])
@@ -358,13 +356,11 @@ export function useActions(state: State, getters: ComputedGetters): Actions {
if (missingTarget || missingSource) return acc
acc.push(
createAdditionChange<GraphEdge>(
shallowReactive({
...edge,
sourceNode,
targetNode,
}),
),
createAdditionChange<GraphEdge>({
...edge,
sourceNode,
targetNode,
}),
)
}
+9 -6
View File
@@ -78,10 +78,10 @@ export const parseNode = (node: Node, nodeExtent: CoordinateExtent, defaults?: P
width: 0,
height: 0,
}),
handleBounds: reactive({
handleBounds: {
source: [],
target: [],
}),
},
computedPosition: markRaw({
z: 0,
...node.position,
@@ -90,8 +90,8 @@ export const parseNode = (node: Node, nodeExtent: CoordinateExtent, defaults?: P
selectable: undefined,
connectable: undefined,
...defaults,
data: reactive(node.data || {}),
events: shallowReactive(node.events || {}),
data: isDef(node.data) ? node.data : {},
events: markRaw(isDef(node.events) ? node.events : {}),
}
}
@@ -103,6 +103,9 @@ export const parseNode = (node: Node, nodeExtent: CoordinateExtent, defaults?: P
}
export const parseEdge = (edge: Edge, defaults?: Partial<GraphEdge>): GraphEdge => {
const events = isDef(edge.events) ? edge.events : defaults?.events && isDef(defaults?.events) ? defaults?.events : {}
const data = isDef(edge.data) ? edge.data : defaults?.data && isDef(defaults?.data) ? defaults?.data : {}
defaults = !isGraphEdge(edge)
? ({
...defaults,
@@ -118,8 +121,8 @@ export const parseEdge = (edge: Edge, defaults?: Partial<GraphEdge>): GraphEdge
targetY: 0 || defaults?.targetY,
updatable: edge.updatable ?? defaults?.updatable,
selectable: edge.selectable ?? defaults?.selectable,
data: reactive(edge.data || defaults?.data || {}),
events: shallowReactive(edge.events || defaults?.events || {}),
data,
events: markRaw(events),
label: (edge.label && !isString(edge.label) ? markRaw(edge.label) : edge.label) || defaults?.label,
interactionWidth: edge.interactionWidth || defaults?.interactionWidth,
} as GraphEdge)
+4 -6
View File
@@ -58,12 +58,10 @@ export const createGraphNodes = (
const parentNodes: Record<string, true> = {}
const graphNodes = nodes.map((node) => {
const parsed = shallowReactive(
parseNode(node, extent, {
...getNode(node.id),
parentNode: node.parentNode,
}),
)
const parsed = parseNode(node, extent, {
...getNode(node.id),
parentNode: node.parentNode,
})
if (node.parentNode) {
parentNodes[node.parentNode] = true