@@ -810,8 +810,7 @@ function hoverDataKey(d) {
810
810
811
811
var EXTRA_STRING_REGEX = / < e x t r a > ( [ \s \S ] * ) < \/ e x t r a > / ;
812
812
813
- function createHoverText ( allHoverData , opts , gd ) {
814
- var hoverData = allHoverData . filter ( function ( data ) { return data . hoverinfo !== 'none' ; } ) ;
813
+ function createHoverText ( hoverData , opts , gd ) {
815
814
var fullLayout = gd . _fullLayout ;
816
815
var hovermode = opts . hovermode ;
817
816
var rotateLabels = opts . rotateLabels ;
@@ -1027,9 +1026,9 @@ function createHoverText(allHoverData, opts, gd) {
1027
1026
if ( helpers . isUnifiedHover ( hovermode ) ) {
1028
1027
// Delete leftover hover labels from other hovermodes
1029
1028
container . selectAll ( 'g.hovertext' ) . remove ( ) ;
1030
-
1029
+ var groupedHoverData = hoverData . filter ( function ( data ) { return data . hoverinfo !== 'none' ; } ) ;
1031
1030
// Return early if nothing is hovered on
1032
- if ( hoverData . length === 0 ) return ;
1031
+ if ( groupedHoverData . length === 0 ) return ;
1033
1032
1034
1033
// mock legend
1035
1034
var mockLayoutIn = {
@@ -1051,8 +1050,8 @@ function createHoverText(allHoverData, opts, gd) {
1051
1050
1052
1051
// prepare items for the legend
1053
1052
mockLegend . entries = [ ] ;
1054
- for ( var j = 0 ; j < hoverData . length ; j ++ ) {
1055
- var pt = hoverData [ j ] ;
1053
+ for ( var j = 0 ; j < groupedHoverData . length ; j ++ ) {
1054
+ var pt = groupedHoverData [ j ] ;
1056
1055
if ( pt . hoverinfo === 'none' ) continue ;
1057
1056
1058
1057
var texts = getHoverLabelText ( pt , true , hovermode , fullLayout , t0 ) ;
@@ -1093,7 +1092,7 @@ function createHoverText(allHoverData, opts, gd) {
1093
1092
var tbb = legendContainer . node ( ) . getBoundingClientRect ( ) ;
1094
1093
var tWidth = tbb . width + 2 * HOVERTEXTPAD ;
1095
1094
var tHeight = tbb . height + 2 * HOVERTEXTPAD ;
1096
- var winningPoint = hoverData [ 0 ] ;
1095
+ var winningPoint = groupedHoverData [ 0 ] ;
1097
1096
var avgX = ( winningPoint . x0 + winningPoint . x1 ) / 2 ;
1098
1097
var avgY = ( winningPoint . y0 + winningPoint . y1 ) / 2 ;
1099
1098
// When a scatter (or e.g. heatmap) point wins, it's OK for the hovelabel to occlude the bar and other points.
@@ -1108,11 +1107,11 @@ function createHoverText(allHoverData, opts, gd) {
1108
1107
lyTop = avgY - HOVERTEXTPAD ;
1109
1108
lyBottom = avgY + HOVERTEXTPAD ;
1110
1109
} else {
1111
- lyTop = Math . min . apply ( null , hoverData . map ( function ( c ) { return Math . min ( c . y0 , c . y1 ) ; } ) ) ;
1112
- lyBottom = Math . max . apply ( null , hoverData . map ( function ( c ) { return Math . max ( c . y0 , c . y1 ) ; } ) ) ;
1110
+ lyTop = Math . min . apply ( null , groupedHoverData . map ( function ( c ) { return Math . min ( c . y0 , c . y1 ) ; } ) ) ;
1111
+ lyBottom = Math . max . apply ( null , groupedHoverData . map ( function ( c ) { return Math . max ( c . y0 , c . y1 ) ; } ) ) ;
1113
1112
}
1114
1113
} else {
1115
- lyTop = lyBottom = Lib . mean ( hoverData . map ( function ( c ) { return ( c . y0 + c . y1 ) / 2 ; } ) ) - tHeight / 2 ;
1114
+ lyTop = lyBottom = Lib . mean ( groupedHoverData . map ( function ( c ) { return ( c . y0 + c . y1 ) / 2 ; } ) ) - tHeight / 2 ;
1116
1115
}
1117
1116
1118
1117
var lxRight , lxLeft ;
@@ -1121,11 +1120,11 @@ function createHoverText(allHoverData, opts, gd) {
1121
1120
lxRight = avgX + HOVERTEXTPAD ;
1122
1121
lxLeft = avgX - HOVERTEXTPAD ;
1123
1122
} else {
1124
- lxRight = Math . max . apply ( null , hoverData . map ( function ( c ) { return Math . max ( c . x0 , c . x1 ) ; } ) ) ;
1125
- lxLeft = Math . min . apply ( null , hoverData . map ( function ( c ) { return Math . min ( c . x0 , c . x1 ) ; } ) ) ;
1123
+ lxRight = Math . max . apply ( null , groupedHoverData . map ( function ( c ) { return Math . max ( c . x0 , c . x1 ) ; } ) ) ;
1124
+ lxLeft = Math . min . apply ( null , groupedHoverData . map ( function ( c ) { return Math . min ( c . x0 , c . x1 ) ; } ) ) ;
1126
1125
}
1127
1126
} else {
1128
- lxRight = lxLeft = Lib . mean ( hoverData . map ( function ( c ) { return ( c . x0 + c . x1 ) / 2 ; } ) ) - tWidth / 2 ;
1127
+ lxRight = lxLeft = Lib . mean ( groupedHoverData . map ( function ( c ) { return ( c . x0 + c . x1 ) / 2 ; } ) ) - tWidth / 2 ;
1129
1128
}
1130
1129
1131
1130
var xOffset = xa . _offset ;
0 commit comments