@@ -159,27 +159,32 @@ module.exports = function plot(gd, calcData) {
159159
160160 var hoverItems = [ ] ;
161161
162- // For each related links, create a hoverItem
163- for ( var i = 0 ; i < d . flow . links . length ; i ++ ) {
164- var link = d . flow . links [ i ] ;
165- if ( gd . _fullLayout . hovermode === 'closest' && d . link . pointNumber !== link . pointNumber ) continue ;
166- link . fullData = link . trace ;
167- obj = d . link . trace . link ;
168- var hoverCenterX ;
169- var hoverCenterY ;
162+ function hoverCenterPosition ( link ) {
163+ var hoverCenterX , hoverCenterY ;
170164 if ( link . circular ) {
171165 hoverCenterX = ( link . circularPathData . leftInnerExtent + link . circularPathData . rightInnerExtent ) / 2 + d . parent . translateX ;
172166 hoverCenterY = link . circularPathData . verticalFullExtent + d . parent . translateY ;
173167 } else {
174168 hoverCenterX = ( link . source . x1 + link . target . x0 ) / 2 + d . parent . translateX ;
175169 hoverCenterY = ( link . y0 + link . y1 ) / 2 + d . parent . translateY ;
176170 }
171+ return [ hoverCenterX , hoverCenterY ] ;
172+ }
177173
174+ // For each related links, create a hoverItem
175+ var anchorIndex = 0 ;
176+ for ( var i = 0 ; i < d . flow . links . length ; i ++ ) {
177+ var link = d . flow . links [ i ] ;
178+ if ( gd . _fullLayout . hovermode === 'closest' && d . link . pointNumber !== link . pointNumber ) continue ;
179+ if ( d . link . pointNumber === link . pointNumber ) anchorIndex = i ;
180+ link . fullData = link . trace ;
181+ obj = d . link . trace . link ;
182+ var hoverCenter = hoverCenterPosition ( link ) ;
178183 var hovertemplateLabels = { valueLabel : d3 . format ( d . valueFormat ) ( link . value ) + d . valueSuffix } ;
179184
180185 hoverItems . push ( {
181- x : hoverCenterX ,
182- y : hoverCenterY ,
186+ x : hoverCenter [ 0 ] ,
187+ y : hoverCenter [ 1 ] ,
183188 name : hovertemplateLabels . valueLabel ,
184189 text : [
185190 link . label || '' ,
@@ -192,7 +197,7 @@ module.exports = function plot(gd, calcData) {
192197 fontFamily : castHoverOption ( obj , 'font.family' ) ,
193198 fontSize : castHoverOption ( obj , 'font.size' ) ,
194199 fontColor : castHoverOption ( obj , 'font.color' ) ,
195- idealAlign : d3 . event . x < hoverCenterX ? 'right' : 'left' ,
200+ idealAlign : d3 . event . x < hoverCenter [ 0 ] ? 'right' : 'left' ,
196201
197202 hovertemplate : obj . hovertemplate ,
198203 hovertemplateLabels : hovertemplateLabels ,
@@ -203,7 +208,8 @@ module.exports = function plot(gd, calcData) {
203208 var tooltips = Fx . multiHovers ( hoverItems , {
204209 container : fullLayout . _hoverlayer . node ( ) ,
205210 outerContainer : fullLayout . _paper . node ( ) ,
206- gd : gd
211+ gd : gd ,
212+ anchorIndex : anchorIndex
207213 } ) ;
208214
209215 tooltips . each ( function ( ) {
0 commit comments