@@ -10,6 +10,7 @@ import {
1010 INodeComponent ,
1111 IRectNodeComponent ,
1212 IThumbNodeComponent ,
13+ ControlAndEndPointNodeType ,
1314} from '../interfaces/element' ;
1415import { Theme } from '../interfaces/theme' ;
1516import { setSelectNode } from '../reactivity' ;
@@ -21,6 +22,7 @@ import { ThumbConnectionController } from './thumb-connection-controller';
2122import { onQuadraticCalculateControlPoints } from './utils/calculate-quadratic-control-points' ;
2223import { pointOnRect } from './utils/intersect-line' ;
2324import { intersectionCircleLine } from './utils/vector-math' ;
25+ import { onGetConnectionToThumbOffset } from './utils/calculate-cubic-control-points' ;
2426
2527export class LineConnection < T extends BaseNodeInfo > extends Connection < T > {
2628 startPointElement : IThumbNodeComponent < T > | undefined ;
@@ -472,17 +474,42 @@ export const getLinePoints = <T extends BaseNodeInfo>(
472474 let height = 0 ;
473475 if (
474476 ! nodeComponent ?. endNode ?. isThumb &&
475- nodeComponent . endNodeThumb ?. thumbType === ThumbType . EndConnectorCenter
477+ ( nodeComponent . endNodeThumb ?. thumbType ===
478+ ThumbType . EndConnectorCenter ||
479+ nodeComponent . endNodeThumb ?. thumbType === ThumbType . EndConnectorLeft )
476480 ) {
477481 // Temp solution for connecting to left side of thumb when end node has a thumb of
478482 // type EndConnectorCenter
479- xleft =
480- nodeComponent . endNode . x - bbox . x + startOffsetX - spacingAABB - 16 ;
481- yleft =
482- nodeComponent . endNode . y -
483- bbox . y -
484- 10 +
485- ( nodeComponent . endNode . height ?? 0 ) / 2 ;
483+
484+ // const { offsetX: startOffsetX, offsetY: startOffsetY } =
485+ // onGetConnectionToThumbOffset(
486+ // ControlAndEndPointNodeType.start,
487+ // nodeComponent?.startNodeThumb?.thumbType ?? ThumbType.None
488+ // );
489+
490+ const end = nodeComponent . onCalculateControlPoints (
491+ nodeComponent . endNode ,
492+ ControlAndEndPointNodeType . end ,
493+ nodeComponent . endNodeThumb ?. thumbType ??
494+ ( nodeComponent . isAnnotationConnection
495+ ? ThumbType . Center
496+ : ThumbType . None ) ,
497+ nodeComponent . endNodeThumb ,
498+ nodeComponent . endNodeThumb ?. thumbIndex ,
499+ nodeComponent . startNode ,
500+ nodeComponent . endNodeThumb ?. thumbControlPointDistance ,
501+ nodeComponent . startNodeThumb
502+ ) ;
503+
504+ const { offsetX : endOffsetX , offsetY : endOffsetY } =
505+ onGetConnectionToThumbOffset (
506+ ControlAndEndPointNodeType . end ,
507+ nodeComponent ?. endNodeThumb ?. thumbType ?? ThumbType . None
508+ ) ;
509+ xleft = end . x - bbox . x + endOffsetX + startOffsetX - spacingAABB ; //nodeComponent.endNode.x - bbox.x + endOffsetX - spacingAABB; // - 16;
510+ yleft = end . y - bbox . y - endOffsetY + startOffsetY - spacingAABB ; //nodeComponent.endNode.y - bbox.y - endOffsetY;
511+ // 10 +
512+ // (nodeComponent.endNode.height ?? 0) / 2;
486513 width = 24 ;
487514 height = 24 ;
488515 } else {
0 commit comments