@@ -73,13 +73,9 @@ export default function Cursor({ primary }) {
7373 if ( axis . position === 'left' ) {
7474 x1 = siblingRange [ 0 ] ;
7575 x2 = siblingRange [ 1 ] ;
76- alignPctX = - 100 ;
77- alignPctY = - 50 ;
7876 } else {
7977 x1 = siblingRange [ 1 ] ;
8078 x2 = siblingRange [ 0 ] ;
81- alignPctX = 0 ;
82- alignPctY = - 50 ;
8379 }
8480 } else {
8581 x = axis . scale ( latestValue ) ;
@@ -88,12 +84,62 @@ export default function Cursor({ primary }) {
8884 if ( axis . position === 'top' ) {
8985 y1 = siblingRange [ 0 ] ;
9086 y2 = siblingRange [ 1 ] ;
91- alignPctX = - 500 ;
92- alignPctY = - 100 ;
9387 } else {
9488 y1 = siblingRange [ 1 ] ;
9589 y2 = siblingRange [ 0 ] ;
96- alignPctX = - 50 ;
90+ }
91+ }
92+
93+ const lineStartX = Math . min ( x1 , x2 ) ;
94+ const lineStartY = Math . min ( y1 , y2 ) ;
95+ const lineEndX = Math . max ( x1 , x2 ) ;
96+ const lineEndY = Math . max ( y1 , y2 ) ;
97+ const lineHeight = Math . max ( lineEndY - lineStartY , 0 ) ;
98+ const lineWidth = Math . max ( lineEndX - lineStartX , 0 ) ;
99+
100+ let bubbleX ;
101+ let bubbleY ;
102+
103+ // Bubble placement
104+ if ( axis . vertical ) {
105+ if ( axis . position === 'left' ) {
106+ if ( ! axis . RTL ) {
107+ bubbleX = lineStartX ;
108+ } else {
109+ bubbleX = lineEndX ;
110+ }
111+ } else {
112+ if ( ! axis . RTL ) {
113+ bubbleX = lineEndX ;
114+ } else {
115+ bubbleX = lineStartX ;
116+ }
117+ }
118+
119+ bubbleY = lineStartY + lineHeight / 2 ;
120+ } else {
121+ bubbleX = lineStartX + lineWidth / 2 ;
122+
123+ if ( axis . position === 'top' ) {
124+ bubbleY = lineStartY ;
125+ } else {
126+ bubbleY = lineEndY ;
127+ }
128+ }
129+
130+ // Bubble anchoring
131+ if ( axis . vertical ) {
132+ alignPctY = - 50 ;
133+ if ( axis . position === 'left' ) {
134+ alignPctX = - 100 ;
135+ } else {
136+ alignPctX = 0 ;
137+ }
138+ } else {
139+ alignPctX = - 50 ;
140+ if ( axis . position === 'top' ) {
141+ alignPctY = - 100 ;
142+ } else {
97143 alignPctY = 0 ;
98144 }
99145 }
@@ -118,26 +164,10 @@ export default function Cursor({ primary }) {
118164 : ''
119165 ) ;
120166
121- const lineStartX = Math . min ( x1 , x2 ) ;
122- const lineStartY = Math . min ( y1 , y2 ) ;
123- const lineEndX = Math . max ( x1 , x2 ) ;
124- const lineEndY = Math . max ( y1 , y2 ) ;
125- const bubbleX =
126- axis . vertical && axis . RTL
127- ? lineEndX
128- : x1 + ( ! axis . vertical ? ( x2 - x1 ) / 2 : 0 ) + ( ! axis . vertical ? 1 : 0 ) ;
129- const bubbleY =
130- ! axis . vertical && axis . RTL
131- ? lineStartY
132- : y1 + ( axis . vertical ? ( y2 - y1 ) / 2 : 0 ) + ( axis . vertical ? 1 : 0 ) ;
133-
134167 // if (!axis.vertical) {
135168 // console.log({ bubbleX, bubbleY });
136169 // }
137170
138- const lineHeight = Math . max ( lineEndY - lineStartY , 0 ) ;
139- const lineWidth = Math . max ( lineEndX - lineStartX , 0 ) ;
140-
141171 let animateCoords ;
142172 if ( previousShowRef . current === resolvedShow ) {
143173 animateCoords = true ;
0 commit comments