@@ -159,27 +159,32 @@ module.exports = function plot(gd, calcData) {
159
159
160
160
var hoverItems = [ ] ;
161
161
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 ;
170
164
if ( link . circular ) {
171
165
hoverCenterX = ( link . circularPathData . leftInnerExtent + link . circularPathData . rightInnerExtent ) / 2 + d . parent . translateX ;
172
166
hoverCenterY = link . circularPathData . verticalFullExtent + d . parent . translateY ;
173
167
} else {
174
168
hoverCenterX = ( link . source . x1 + link . target . x0 ) / 2 + d . parent . translateX ;
175
169
hoverCenterY = ( link . y0 + link . y1 ) / 2 + d . parent . translateY ;
176
170
}
171
+ return [ hoverCenterX , hoverCenterY ] ;
172
+ }
177
173
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 ) ;
178
183
var hovertemplateLabels = { valueLabel : d3 . format ( d . valueFormat ) ( link . value ) + d . valueSuffix } ;
179
184
180
185
hoverItems . push ( {
181
- x : hoverCenterX ,
182
- y : hoverCenterY ,
186
+ x : hoverCenter [ 0 ] ,
187
+ y : hoverCenter [ 1 ] ,
183
188
name : hovertemplateLabels . valueLabel ,
184
189
text : [
185
190
link . label || '' ,
@@ -192,7 +197,7 @@ module.exports = function plot(gd, calcData) {
192
197
fontFamily : castHoverOption ( obj , 'font.family' ) ,
193
198
fontSize : castHoverOption ( obj , 'font.size' ) ,
194
199
fontColor : castHoverOption ( obj , 'font.color' ) ,
195
- idealAlign : d3 . event . x < hoverCenterX ? 'right' : 'left' ,
200
+ idealAlign : d3 . event . x < hoverCenter [ 0 ] ? 'right' : 'left' ,
196
201
197
202
hovertemplate : obj . hovertemplate ,
198
203
hovertemplateLabels : hovertemplateLabels ,
@@ -203,7 +208,8 @@ module.exports = function plot(gd, calcData) {
203
208
var tooltips = Fx . multiHovers ( hoverItems , {
204
209
container : fullLayout . _hoverlayer . node ( ) ,
205
210
outerContainer : fullLayout . _paper . node ( ) ,
206
- gd : gd
211
+ gd : gd ,
212
+ anchorIndex : anchorIndex
207
213
} ) ;
208
214
209
215
tooltips . each ( function ( ) {
0 commit comments