@@ -13,17 +13,17 @@ var Color = require('../../components/color');
13
13
var Registry = require ( '../../registry' ) ;
14
14
15
15
var handleXYDefaults = require ( '../scatter/xy_defaults' ) ;
16
- var handleStyleDefaults = require ( '../bar /style_defaults' ) ;
16
+ var handleStyleDefaults = require ( './style_defaults' ) ;
17
17
var getAxisGroup = require ( '../../plots/cartesian/axis_ids' ) . getAxisGroup ;
18
18
var attributes = require ( './attributes' ) ;
19
19
20
+ var coerceFont = Lib . coerceFont ;
21
+
20
22
function supplyDefaults ( traceIn , traceOut , defaultColor , layout ) {
21
23
function coerce ( attr , dflt ) {
22
24
return Lib . coerce ( traceIn , traceOut , attributes , attr , dflt ) ;
23
25
}
24
26
25
- var coerceFont = Lib . coerceFont ;
26
-
27
27
var len = handleXYDefaults ( traceIn , traceOut , layout , coerce ) ;
28
28
if ( ! len ) {
29
29
traceOut . visible = false ;
@@ -39,34 +39,7 @@ function supplyDefaults(traceIn, traceOut, defaultColor, layout) {
39
39
coerce ( 'hovertext' ) ;
40
40
coerce ( 'hovertemplate' ) ;
41
41
42
- var textPosition = coerce ( 'textposition' ) ;
43
-
44
- var hasBoth = Array . isArray ( textPosition ) || textPosition === 'auto' ;
45
- var hasInside = hasBoth || textPosition === 'inside' ;
46
- var hasOutside = hasBoth || textPosition === 'outside' ;
47
-
48
- if ( hasInside || hasOutside ) {
49
- var textFont = coerceFont ( coerce , 'textfont' , layout . font ) ;
50
-
51
- // Note that coercing `insidetextfont` is always needed –
52
- // even if `textposition` is `outside` for each trace – since
53
- // an outside label can become an inside one, for example because
54
- // of a bar being stacked on top of it.
55
- var insideTextFontDefault = Lib . extendFlat ( { } , textFont ) ;
56
- var isTraceTextfontColorSet = traceIn . textfont && traceIn . textfont . color ;
57
- var isColorInheritedFromLayoutFont = ! isTraceTextfontColorSet ;
58
- if ( isColorInheritedFromLayoutFont ) {
59
- delete insideTextFontDefault . color ;
60
- }
61
- coerceFont ( coerce , 'insidetextfont' , insideTextFontDefault ) ;
62
-
63
- if ( hasOutside ) coerceFont ( coerce , 'outsidetextfont' , textFont ) ;
64
-
65
- coerce ( 'constraintext' ) ;
66
- coerce ( 'selected.textfont.color' ) ;
67
- coerce ( 'unselected.textfont.color' ) ;
68
- coerce ( 'cliponaxis' ) ;
69
- }
42
+ handleText ( traceIn , traceOut , layout , coerce , true ) ;
70
43
71
44
handleStyleDefaults ( traceIn , traceOut , coerce , defaultColor , layout ) ;
72
45
@@ -126,20 +99,55 @@ function crossTraceDefaults(fullData, fullLayout) {
126
99
return Lib . coerce ( traceOut . _input , traceOut , attributes , attr ) ;
127
100
}
128
101
129
- for ( var i = 0 ; i < fullData . length ; i ++ ) {
130
- traceOut = fullData [ i ] ;
102
+ if ( fullLayout . barmode === 'group' ) {
103
+ for ( var i = 0 ; i < fullData . length ; i ++ ) {
104
+ traceOut = fullData [ i ] ;
131
105
132
- if ( traceOut . type === 'bar' ) {
133
- traceIn = traceOut . _input ;
134
- if ( fullLayout . barmode === 'group' ) {
106
+ if ( traceOut . type === 'bar' ) {
107
+ traceIn = traceOut . _input ;
135
108
handleGroupingDefaults ( traceIn , traceOut , fullLayout , coerce ) ;
136
109
}
137
110
}
138
111
}
139
112
}
140
113
114
+ function handleText ( traceIn , traceOut , layout , coerce , moduleHasSelUnselected ) {
115
+ var textPosition = coerce ( 'textposition' ) ;
116
+ var hasBoth = Array . isArray ( textPosition ) || textPosition === 'auto' ;
117
+ var hasInside = hasBoth || textPosition === 'inside' ;
118
+ var hasOutside = hasBoth || textPosition === 'outside' ;
119
+
120
+ if ( hasInside || hasOutside ) {
121
+ var textFont = coerceFont ( coerce , 'textfont' , layout . font ) ;
122
+
123
+ // Note that coercing `insidetextfont` is always needed –
124
+ // even if `textposition` is `outside` for each trace – since
125
+ // an outside label can become an inside one, for example because
126
+ // of a bar being stacked on top of it.
127
+ var insideTextFontDefault = Lib . extendFlat ( { } , textFont ) ;
128
+ var isTraceTextfontColorSet = traceIn . textfont && traceIn . textfont . color ;
129
+ var isColorInheritedFromLayoutFont = ! isTraceTextfontColorSet ;
130
+ if ( isColorInheritedFromLayoutFont ) {
131
+ delete insideTextFontDefault . color ;
132
+ }
133
+ coerceFont ( coerce , 'insidetextfont' , insideTextFontDefault ) ;
134
+
135
+ if ( hasOutside ) coerceFont ( coerce , 'outsidetextfont' , textFont ) ;
136
+
137
+ coerce ( 'constraintext' ) ;
138
+
139
+ if ( moduleHasSelUnselected ) {
140
+ coerce ( 'selected.textfont.color' ) ;
141
+ coerce ( 'unselected.textfont.color' ) ;
142
+ }
143
+
144
+ coerce ( 'cliponaxis' ) ;
145
+ }
146
+ }
147
+
141
148
module . exports = {
142
149
supplyDefaults : supplyDefaults ,
143
150
crossTraceDefaults : crossTraceDefaults ,
144
- handleGroupingDefaults : handleGroupingDefaults
151
+ handleGroupingDefaults : handleGroupingDefaults ,
152
+ handleText : handleText
145
153
} ;
0 commit comments