@@ -12,13 +12,13 @@ var Lib = require('../../lib');
1212
1313// look for either subplot or xaxis and yaxis attributes
1414// does not handle splom case
15- exports . getSubplot = function getSubplot ( trace ) {
15+ exports . getSubplot = function ( trace ) {
1616 return trace . subplot || ( trace . xaxis + trace . yaxis ) || trace . geo ;
1717} ;
1818
1919// is trace in given list of subplots?
2020// does handle splom case
21- exports . isTraceInSubplots = function isTraceInSubplots ( trace , subplots ) {
21+ exports . isTraceInSubplots = function ( trace , subplots ) {
2222 if ( trace . type === 'splom' ) {
2323 var xaxes = trace . xaxes || [ ] ;
2424 var yaxes = trace . yaxes || [ ] ;
@@ -36,28 +36,28 @@ exports.isTraceInSubplots = function isTraceInSubplots(trace, subplots) {
3636} ;
3737
3838// convenience functions for mapping all relevant axes
39- exports . flat = function flat ( subplots , v ) {
39+ exports . flat = function ( subplots , v ) {
4040 var out = new Array ( subplots . length ) ;
4141 for ( var i = 0 ; i < subplots . length ; i ++ ) {
4242 out [ i ] = v ;
4343 }
4444 return out ;
4545} ;
4646
47- exports . p2c = function p2c ( axArray , v ) {
47+ exports . p2c = function ( axArray , v ) {
4848 var out = new Array ( axArray . length ) ;
4949 for ( var i = 0 ; i < axArray . length ; i ++ ) {
5050 out [ i ] = axArray [ i ] . p2c ( v ) ;
5151 }
5252 return out ;
5353} ;
5454
55- exports . getDistanceFunction = function getDistanceFunction ( mode , dx , dy , dxy ) {
55+ exports . getDistanceFunction = function ( mode , dx , dy , dxy ) {
5656 if ( mode === 'closest' ) return dxy || exports . quadrature ( dx , dy ) ;
5757 return mode . charAt ( 0 ) === 'x' ? dx : dy ;
5858} ;
5959
60- exports . getClosest = function getClosest ( cd , distfn , pointData ) {
60+ exports . getClosest = function ( cd , distfn , pointData ) {
6161 // do we already have a point number? (array mode only)
6262 if ( pointData . index !== false ) {
6363 if ( pointData . index >= 0 && pointData . index < cd . length ) {
@@ -87,11 +87,11 @@ exports.getClosest = function getClosest(cd, distfn, pointData) {
8787 * @param {number } v1: signed difference between the current position and the right edge
8888 * @param {number } passVal: the value to return on success
8989 */
90- exports . inbox = function inbox ( v0 , v1 , passVal ) {
90+ exports . inbox = function ( v0 , v1 , passVal ) {
9191 return ( v0 * v1 < 0 || v0 === 0 ) ? passVal : Infinity ;
9292} ;
9393
94- exports . quadrature = function quadrature ( dx , dy ) {
94+ exports . quadrature = function ( dx , dy ) {
9595 return function ( di ) {
9696 var x = dx ( di ) ;
9797 var y = dy ( di ) ;
@@ -114,7 +114,7 @@ exports.quadrature = function quadrature(dx, dy) {
114114 * @param {object } cd
115115 * @return {object }
116116 */
117- exports . makeEventData = function makeEventData ( pt , trace , cd ) {
117+ exports . makeEventData = function ( pt , trace , cd ) {
118118 // hover uses 'index', select uses 'pointNumber'
119119 var pointNumber = 'index' in pt ? pt . index : pt . pointNumber ;
120120
@@ -238,3 +238,23 @@ function getPointData(val, pointNumber) {
238238 return val [ pointNumber ] ;
239239 }
240240}
241+
242+ var xyHoverMode = {
243+ x : true ,
244+ y : true
245+ } ;
246+
247+ var unifiedHoverMode = {
248+ 'x unified' : true ,
249+ 'y unified' : true
250+ } ;
251+
252+ exports . isUnifiedHover = function ( hovermode ) {
253+ if ( typeof hovermode !== 'string' ) return false ;
254+ return ! ! unifiedHoverMode [ hovermode ] ;
255+ } ;
256+
257+ exports . isXYhover = function ( hovermode ) {
258+ if ( typeof hovermode !== 'string' ) return false ;
259+ return ! ! xyHoverMode [ hovermode ] ;
260+ } ;
0 commit comments