1111var Lib = require ( '../../lib' ) ;
1212var isUnifiedHover = require ( './helpers' ) . isUnifiedHover ;
1313var layoutAttributes = require ( './layout_attributes' ) ;
14+ var handleHoverModeDefaults = require ( './hovermode_defaults' ) ;
1415
1516module . exports = function supplyLayoutDefaults ( layoutIn , layoutOut , fullData ) {
1617 function coerce ( attr , dflt ) {
1718 return Lib . coerce ( layoutIn , layoutOut , layoutAttributes , attr , dflt ) ;
1819 }
1920
20- var clickmode = coerce ( 'clickmode' ) ;
21-
22- var dragMode = coerce ( 'dragmode' ) ;
23- if ( dragMode === 'select' ) coerce ( 'selectdirection' ) ;
24-
25- var hovermodeDflt ;
26- if ( layoutOut . _has ( 'cartesian' ) ) {
27- if ( clickmode . indexOf ( 'select' ) > - 1 ) {
28- hovermodeDflt = 'closest' ;
29- } else {
30- // flag for 'horizontal' plots:
31- // determines the state of the mode bar 'compare' hovermode button
32- layoutOut . _isHoriz = isHoriz ( fullData , layoutOut ) ;
33- hovermodeDflt = layoutOut . _isHoriz ? 'y' : 'x' ;
34- }
35- } else hovermodeDflt = 'closest' ;
36-
37- var hoverMode = coerce ( 'hovermode' , hovermodeDflt ) ;
21+ var hoverMode = handleHoverModeDefaults ( layoutIn , layoutOut , fullData ) ;
3822 if ( hoverMode ) {
3923 coerce ( 'hoverdistance' ) ;
4024 coerce ( 'spikedistance' , isUnifiedHover ( hoverMode ) ? - 1 : undefined ) ;
4125 }
4226
27+ var dragMode = coerce ( 'dragmode' ) ;
28+ if ( dragMode === 'select' ) coerce ( 'selectdirection' ) ;
29+
4330 // if only mapbox or geo subplots is present on graph,
4431 // reset 'zoom' dragmode to 'pan' until 'zoom' is implemented,
4532 // so that the correct modebar button is active
@@ -54,20 +41,3 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
5441 layoutOut . dragmode = 'pan' ;
5542 }
5643} ;
57-
58- function isHoriz ( fullData , fullLayout ) {
59- var stackOpts = fullLayout . _scatterStackOpts || { } ;
60-
61- for ( var i = 0 ; i < fullData . length ; i ++ ) {
62- var trace = fullData [ i ] ;
63- var subplot = trace . xaxis + trace . yaxis ;
64- var subplotStackOpts = stackOpts [ subplot ] || { } ;
65- var groupOpts = subplotStackOpts [ trace . stackgroup ] || { } ;
66-
67- if ( trace . orientation !== 'h' && groupOpts . orientation !== 'h' ) {
68- return false ;
69- }
70- }
71-
72- return true ;
73- }
0 commit comments