11
11
var Lib = require ( '../../lib' ) ;
12
12
var isUnifiedHover = require ( './helpers' ) . isUnifiedHover ;
13
13
var layoutAttributes = require ( './layout_attributes' ) ;
14
+ var handleHoverModeDefaults = require ( './hovermode_defaults' ) ;
14
15
15
16
module . exports = function supplyLayoutDefaults ( layoutIn , layoutOut , fullData ) {
16
17
function coerce ( attr , dflt ) {
17
18
return Lib . coerce ( layoutIn , layoutOut , layoutAttributes , attr , dflt ) ;
18
19
}
19
20
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 ) ;
38
22
if ( hoverMode ) {
39
23
coerce ( 'hoverdistance' ) ;
40
24
coerce ( 'spikedistance' , isUnifiedHover ( hoverMode ) ? - 1 : undefined ) ;
41
25
}
42
26
27
+ var dragMode = coerce ( 'dragmode' ) ;
28
+ if ( dragMode === 'select' ) coerce ( 'selectdirection' ) ;
29
+
43
30
// if only mapbox or geo subplots is present on graph,
44
31
// reset 'zoom' dragmode to 'pan' until 'zoom' is implemented,
45
32
// so that the correct modebar button is active
@@ -54,20 +41,3 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
54
41
layoutOut . dragmode = 'pan' ;
55
42
}
56
43
} ;
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