"use client"; import { BaseEdge, getSmoothStepPath, type EdgeProps } from "@xyflow/react"; import { buildTraceFlowCorridorPath } from "./traceFlowEdgeLayout"; export type TraceFlowEdgeData = { offset?: number; pathMode?: "smooth" | "corridor"; corridorY?: number; corridorEntryOffset?: number; corridorExitOffset?: number; corridorBranchOffset?: number; }; export const TraceFlowEdge = ({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, style, markerEnd, data, }: EdgeProps) => { const edgeData = data as TraceFlowEdgeData | undefined; const offset = edgeData?.offset ?? 0; const path = edgeData?.pathMode === "corridor" && edgeData.corridorY != null ? buildTraceFlowCorridorPath( sourceX, sourceY, targetX, targetY, edgeData.corridorY, edgeData.corridorEntryOffset, edgeData.corridorExitOffset, edgeData.corridorBranchOffset, ) : getSmoothStepPath({ sourceX, sourceY, sourcePosition, targetX, targetY, targetPosition, borderRadius: 8, offset, })[0]; return ; }; export const traceFlowEdgeTypes = { traceFlow: TraceFlowEdge, };