@@ -30,17 +30,17 @@ module.exports = function drawLabel(gd, index, options, shapeGroup) {
3030 const isMultiAxisX = Array . isArray ( options . xref ) ;
3131 const isMultiAxisY = Array . isArray ( options . yref ) ;
3232
33- // For multi-axis shapes, derived variables are meaningless
34- // Skip them and let texttemplatefallback handle those cases.
35- const derivedX = [ 'dx' , 'width' , 'xcenter' , 'slope' , 'length' ] ;
36- const derivedY = [ 'dy' , 'height' , 'ycenter' , 'slope' , 'length' ] ;
37-
3833 for ( var key in shapeLabelTexttemplateVars ) {
39- if ( isMultiAxisX && derivedX . includes ( key ) ) continue ;
40- if ( isMultiAxisY && derivedY . includes ( key ) ) continue ;
34+ // For multi-axis shapes, skip variables that require single-axis calculations
35+ // and let texttemplatefallback handle those cases.
36+ var isFunction = typeof shapeLabelTexttemplateVars [ key ] === 'function' ;
37+ var isValidForX = ! isMultiAxisX || shapeLabelTexttemplateVars . simpleXVariables . includes ( key ) ;
38+ var isValidForY = ! isMultiAxisY || shapeLabelTexttemplateVars . simpleYVariables . includes ( key ) ;
4139
42- var val = shapeLabelTexttemplateVars [ key ] ( options , _xa , _ya ) ;
43- if ( val !== undefined ) templateValues [ key ] = val ;
40+ if ( isFunction && isValidForX && isValidForY ) {
41+ var val = shapeLabelTexttemplateVars [ key ] ( options , _xa , _ya ) ;
42+ if ( val !== undefined ) templateValues [ key ] = val ;
43+ }
4444 }
4545 }
4646 text = Lib . texttemplateStringForShapes ( {
0 commit comments