diff --git a/packages/tldraw/src/lib/shapes/arrow/arrowLabel.ts b/packages/tldraw/src/lib/shapes/arrow/arrowLabel.ts index e2e871bb4..edef80479 100644 --- a/packages/tldraw/src/lib/shapes/arrow/arrowLabel.ts +++ b/packages/tldraw/src/lib/shapes/arrow/arrowLabel.ts @@ -268,14 +268,16 @@ export function getArrowLabelPosition(editor: Editor, shape: TLArrowShape) { const debugGeom: Geometry2d[] = [] const info = editor.getArrowInfo(shape)! + const hasStartBinding = shape.props.start.type === 'binding' + const hasEndBinding = shape.props.end.type === 'binding' const hasStartArrowhead = info.start.arrowhead !== 'none' const hasEndArrowhead = info.end.arrowhead !== 'none' if (info.isStraight) { const range = getStraightArrowLabelRange(editor, shape, info) let clampedPosition = clamp( shape.props.labelPosition, - hasStartArrowhead ? range.start : 0, - hasEndArrowhead ? range.end : 1 + hasStartArrowhead || hasStartBinding ? range.start : 0, + hasEndArrowhead || hasEndBinding ? range.end : 1 ) // This makes the position snap in the middle. clampedPosition = clampedPosition >= 0.48 && clampedPosition <= 0.52 ? 0.5 : clampedPosition @@ -285,8 +287,8 @@ export function getArrowLabelPosition(editor: Editor, shape: TLArrowShape) { if (range.dbg) debugGeom.push(...range.dbg) let clampedPosition = clamp( shape.props.labelPosition, - hasStartArrowhead ? range.start : 0, - hasEndArrowhead ? range.end : 1 + hasStartArrowhead || hasStartBinding ? range.start : 0, + hasEndArrowhead || hasEndBinding ? range.end : 1 ) // This makes the position snap in the middle. clampedPosition = clampedPosition >= 0.48 && clampedPosition <= 0.52 ? 0.5 : clampedPosition