diff --git a/src/Toolkit.ts b/src/Toolkit.ts index 499a1ec..c3de168 100644 --- a/src/Toolkit.ts +++ b/src/Toolkit.ts @@ -45,8 +45,18 @@ export class Toolkit { public static generateCurvePath(firstPoint: PointModel, lastPoint: PointModel, curvy: number = 0): string { var isHorizontal = Math.abs(firstPoint.x - lastPoint.x) > Math.abs(firstPoint.y - lastPoint.y); - var curvyX = isHorizontal ? curvy : 0; - var curvyY = isHorizontal ? 0 : curvy; + + var xOrY = isHorizontal ? "x" : "y"; + + // make sure that smoothening works + // without disrupting the line direction + let curvyness = curvy; + if (firstPoint[xOrY] > firstPoint[xOrY]) { + curvyness = -curvy; + } + + var curvyX = isHorizontal ? curvyness : 0; + var curvyY = isHorizontal ? 0 : curvyness; return `M${firstPoint.x},${firstPoint.y} C ${firstPoint.x + curvyX},${firstPoint.y + curvyY} ${lastPoint.x - curvyX},${lastPoint.y - curvyY} ${lastPoint.x},${lastPoint.y}`; diff --git a/src/defaults/widgets/DefaultLinkWidget.tsx b/src/defaults/widgets/DefaultLinkWidget.tsx index 78d03cd..38a9c31 100644 --- a/src/defaults/widgets/DefaultLinkWidget.tsx +++ b/src/defaults/widgets/DefaultLinkWidget.tsx @@ -318,13 +318,6 @@ export class DefaultLinkWidget extends BaseWidget pointRight[xOrY]) { - pointLeft = points[1]; - pointRight = points[0]; - } - paths.push( this.generateLink( Toolkit.generateCurvePath(pointLeft, pointRight, this.props.link.curvyness),