@@ -67,11 +67,12 @@ export const isGraphNode = <Data = ElementData>(element: MaybeElement): element
67
67
68
68
export const isRect = ( obj : any ) : obj is Rect => ! ! obj . width && ! ! obj . height && ! ! obj . x && ! ! obj . y
69
69
70
- export function parseNode ( node : Node , defaults ?: Partial < GraphNode > ) : GraphNode {
71
- let defaultValues = defaults
70
+ export function parseNode ( node : Node , defaults : Partial < GraphNode > = { } ) : GraphNode {
71
+ let initialState = defaults
72
+
72
73
if ( ! isGraphNode ( node ) ) {
73
- defaultValues = {
74
- type : node . type ?? 'default' ,
74
+ initialState = {
75
+ type : node . type ?? defaults . type ?? 'default' ,
75
76
dimensions : markRaw ( {
76
77
width : 0 ,
77
78
height : 0 ,
@@ -99,31 +100,31 @@ export function parseNode(node: Node, defaults?: Partial<GraphNode>): GraphNode
99
100
}
100
101
101
102
return {
102
- ...defaultValues ,
103
+ ...initialState ,
103
104
...( node as GraphNode ) ,
104
105
id : node . id . toString ( ) ,
105
106
}
106
107
}
107
108
108
- export function parseEdge ( edge : Edge , defaults ? : Partial < GraphEdge > ) : GraphEdge {
109
- const events = isDef ( edge . events ) ? edge . events : defaults ? .events && isDef ( defaults ? .events ) ? defaults ? .events : { }
110
- const data = isDef ( edge . data ) ? edge . data : defaults ? .data && isDef ( defaults ? .data ) ? defaults ? .data : { }
109
+ export function parseEdge ( edge : Edge , defaults : Partial < GraphEdge > = { } ) : GraphEdge {
110
+ const events = isDef ( edge . events ) ? edge . events : defaults . events && isDef ( defaults . events ) ? defaults . events : { }
111
+ const data = isDef ( edge . data ) ? edge . data : defaults . data && isDef ( defaults . data ) ? defaults . data : { }
111
112
112
113
defaults = ! isGraphEdge ( edge )
113
114
? ( {
114
115
...defaults ,
115
- sourceHandle : ( edge . sourceHandle ? edge . sourceHandle . toString ( ) : undefined ) || defaults ? .sourceHandle ,
116
- targetHandle : ( edge . targetHandle ? edge . targetHandle . toString ( ) : undefined ) || defaults ? .targetHandle ,
117
- type : edge . type ?? defaults ? .type ?? 'default' ,
118
- source : edge . source . toString ( ) || defaults ? .source ,
119
- target : edge . target . toString ( ) || defaults ? .target ,
120
- updatable : edge . updatable ?? defaults ? .updatable ,
121
- selectable : edge . selectable ?? defaults ? .selectable ,
122
- focusable : edge . focusable ?? defaults ? .focusable ,
116
+ sourceHandle : ( edge . sourceHandle ? edge . sourceHandle . toString ( ) : undefined ) || defaults . sourceHandle ,
117
+ targetHandle : ( edge . targetHandle ? edge . targetHandle . toString ( ) : undefined ) || defaults . targetHandle ,
118
+ type : edge . type ?? defaults . type ?? 'default' ,
119
+ source : edge . source . toString ( ) || defaults . source ,
120
+ target : edge . target . toString ( ) || defaults . target ,
121
+ updatable : edge . updatable ?? defaults . updatable ,
122
+ selectable : edge . selectable ?? defaults . selectable ,
123
+ focusable : edge . focusable ?? defaults . focusable ,
123
124
data,
124
125
events : markRaw ( events ) ,
125
- label : ( edge . label && ! isString ( edge . label ) ? markRaw ( edge . label ) : edge . label ) || defaults ? .label ,
126
- interactionWidth : edge . interactionWidth || defaults ? .interactionWidth ,
126
+ label : ( edge . label && ! isString ( edge . label ) ? markRaw ( edge . label ) : edge . label ) || defaults . label ,
127
+ interactionWidth : edge . interactionWidth || defaults . interactionWidth ,
127
128
} as GraphEdge )
128
129
: defaults
129
130
@@ -166,6 +167,7 @@ export function addEdge(edgeParams: Edge | Connection, elements: Elements, defau
166
167
}
167
168
168
169
let edge
170
+
169
171
if ( isEdge ( edgeParams ) ) {
170
172
edge = { ...edgeParams }
171
173
} else {
@@ -174,9 +176,13 @@ export function addEdge(edgeParams: Edge | Connection, elements: Elements, defau
174
176
id : getEdgeId ( edgeParams ) ,
175
177
} as Edge
176
178
}
179
+
177
180
edge = parseEdge ( edge , defaults )
181
+
178
182
if ( connectionExists ( edge , elements ) ) return elements
183
+
179
184
elements . push ( edge )
185
+
180
186
return elements
181
187
}
182
188
0 commit comments