(traceIn, traceOut, layout, coerce, textposition, opts)
| 108 | } |
| 109 | |
| 110 | function handleText(traceIn, traceOut, layout, coerce, textposition, opts) { |
| 111 | opts = opts || {}; |
| 112 | var moduleHasSelected = !(opts.moduleHasSelected === false); |
| 113 | var moduleHasUnselected = !(opts.moduleHasUnselected === false); |
| 114 | var moduleHasConstrain = !(opts.moduleHasConstrain === false); |
| 115 | var moduleHasCliponaxis = !(opts.moduleHasCliponaxis === false); |
| 116 | var moduleHasTextangle = !(opts.moduleHasTextangle === false); |
| 117 | var moduleHasInsideanchor = !(opts.moduleHasInsideanchor === false); |
| 118 | var hasPathbar = !!opts.hasPathbar; |
| 119 | |
| 120 | var hasBoth = Array.isArray(textposition) || textposition === 'auto'; |
| 121 | var hasInside = hasBoth || textposition === 'inside'; |
| 122 | var hasOutside = hasBoth || textposition === 'outside'; |
| 123 | |
| 124 | if (hasInside || hasOutside) { |
| 125 | var dfltFont = coerceFont(coerce, 'textfont', layout.font); |
| 126 | |
| 127 | // Note that coercing `insidetextfont` is always needed – |
| 128 | // even if `textposition` is `outside` for each trace – since |
| 129 | // an outside label can become an inside one, for example because |
| 130 | // of a bar being stacked on top of it. |
| 131 | var insideTextFontDefault = Lib.extendFlat({}, dfltFont); |
| 132 | var isTraceTextfontColorSet = traceIn.textfont && traceIn.textfont.color; |
| 133 | var isColorInheritedFromLayoutFont = !isTraceTextfontColorSet; |
| 134 | if (isColorInheritedFromLayoutFont) { |
| 135 | delete insideTextFontDefault.color; |
| 136 | } |
| 137 | coerceFont(coerce, 'insidetextfont', insideTextFontDefault); |
| 138 | |
| 139 | if (hasPathbar) { |
| 140 | var pathbarTextFontDefault = Lib.extendFlat({}, dfltFont); |
| 141 | if (isColorInheritedFromLayoutFont) { |
| 142 | delete pathbarTextFontDefault.color; |
| 143 | } |
| 144 | coerceFont(coerce, 'pathbar.textfont', pathbarTextFontDefault); |
| 145 | } |
| 146 | |
| 147 | if (hasOutside) coerceFont(coerce, 'outsidetextfont', dfltFont); |
| 148 | |
| 149 | if (moduleHasSelected) coerce('selected.textfont.color'); |
| 150 | if (moduleHasUnselected) coerce('unselected.textfont.color'); |
| 151 | if (moduleHasConstrain) coerce('constraintext'); |
| 152 | if (moduleHasCliponaxis) coerce('cliponaxis'); |
| 153 | if (moduleHasTextangle) coerce('textangle'); |
| 154 | |
| 155 | coerce('texttemplate'); |
| 156 | coerce('texttemplatefallback'); |
| 157 | } |
| 158 | |
| 159 | if (hasInside) { |
| 160 | if (moduleHasInsideanchor) coerce('insidetextanchor'); |
| 161 | } |
| 162 | } |
| 163 | |
| 164 | module.exports = { |
| 165 | supplyDefaults: supplyDefaults, |
no test coverage detected
searching dependent graphs…