Фикс стрелок
This commit is contained in:
+19
-12
@@ -129,18 +129,25 @@ function toRfNodes(doc: DiagramDocument | null): Node[] {
|
||||
}
|
||||
|
||||
function toRfEdges(doc: DiagramDocument | null): Edge[] {
|
||||
return (doc?.edges ?? []).map((edge) => ({
|
||||
id: edge.id,
|
||||
source: edge.source,
|
||||
target: edge.target,
|
||||
sourceHandle: edge.sourceHandle,
|
||||
targetHandle: edge.targetHandle,
|
||||
type: edge.type ?? DEFAULT_EDGE_TYPE,
|
||||
markerEnd: DEFAULT_MARKER_END,
|
||||
label: edge.label,
|
||||
zIndex: edge.zIndex,
|
||||
data: edge.data,
|
||||
}));
|
||||
const nodeIds = new Set((doc?.nodes ?? []).map((node) => node.id));
|
||||
// Defends against documents saved by an older/buggy version, or edited by
|
||||
// hand — an edge pointing at a node id that no longer exists renders as a
|
||||
// degenerate path (xyflow falls back to position (0, 0) for the missing
|
||||
// endpoint), which is exactly the "arrows in the corner" bug.
|
||||
return (doc?.edges ?? [])
|
||||
.filter((edge) => nodeIds.has(edge.source) && nodeIds.has(edge.target))
|
||||
.map((edge) => ({
|
||||
id: edge.id,
|
||||
source: edge.source,
|
||||
target: edge.target,
|
||||
sourceHandle: edge.sourceHandle,
|
||||
targetHandle: edge.targetHandle,
|
||||
type: edge.type ?? DEFAULT_EDGE_TYPE,
|
||||
markerEnd: DEFAULT_MARKER_END,
|
||||
label: edge.label,
|
||||
zIndex: edge.zIndex,
|
||||
data: edge.data,
|
||||
}));
|
||||
}
|
||||
|
||||
function isEditableTarget(target: EventTarget | null): boolean {
|
||||
|
||||
Reference in New Issue
Block a user