Skip to Content
You are viewing the v12 docs of React Flow. You can find the latest version here.
ReferenceUtils

getSmoothStepPath()

Source on GitHub 

The getSmoothStepPath util returns everything you need to render a stepped path between two nodes. The borderRadius property can be used to choose how rounded the corners of those steps are.

import { Position, getSmoothStepPath } from '@xyflow/react'; const source = { x: 0, y: 20 }; const target = { x: 150, y: 100 }; const [path, labelX, labelY, offsetX, offsetY] = getSmoothStepPath({ sourceX: source.x, sourceY: source.y, sourcePosition: Position.Right, targetX: target.x, targetY: target.y, targetPosition: Position.Left, }); console.log(path); //=> "M0 20L20 20L 70,20Q 75,20 75,25L 75,95Q ..." console.log(labelX, labelY); //=> 75, 60 console.log(offsetX, offsetY); //=> 75, 40

Signature

Parameters:
NameTypeDefault
[0].sourceXnumber

The x position of the source handle.

[0].sourceYnumber

The y position of the source handle.

[0].sourcePositionPosition

The position of the source handle.

Position.Bottom
[0].targetXnumber

The x position of the target handle.

[0].targetYnumber

The y position of the target handle.

[0].targetPositionPosition

The position of the target handle.

Position.Top
[0].borderRadiusnumber5
[0].centerXnumber
[0].centerYnumber
[0].offsetnumber20
[0].stepPositionnumber

Controls where the bend occurs along the path. 0 = at source, 1 = at target, 0.5 = midpoint

0.5
Returns:
[path: string, labelX: number, labelY: number, offsetX: number, offsetY: number]

Notes

  • This function returns a tuple (aka a fixed-size array) to make it easier to work with multiple edge paths at once.
  • You can set the borderRadius property to 0 to get a step edge path.
Last updated on