@@ -600,16 +600,29 @@ module.exports = function setConvert(ax, fullLayout) {
600600 var rangebreaksIn = ax . rangebreaks || [ ] ;
601601 var bnds , b0 , b1 , vb , vDate ;
602602
603+
604+ if ( ! rangebreaksIn . _cachedPatterns ) {
605+ rangebreaksIn . _cachedPatterns = rangebreaksIn . map ( function ( brk ) {
606+ return brk . enabled && brk . bounds ? Lib . simpleMap ( brk . bounds , brk . pattern ?
607+ cleanNumber :
608+ ax . d2c // case of pattern: ''
609+ ) : null ;
610+ } ) ;
611+ }
612+ if ( ! rangebreaksIn . _cachedValues ) {
613+ rangebreaksIn . _cachedValues = rangebreaksIn . map ( function ( brk ) {
614+ return brk . enabled && brk . values ? Lib . simpleMap ( brk . values , ax . d2c ) . sort ( Lib . sorterAsc ) : null ;
615+ } ) ;
616+ }
617+
618+
603619 for ( var i = 0 ; i < rangebreaksIn . length ; i ++ ) {
604620 var brk = rangebreaksIn [ i ] ;
605621
606622 if ( brk . enabled ) {
607623 if ( brk . bounds ) {
608624 var pattern = brk . pattern ;
609- bnds = Lib . simpleMap ( brk . bounds , pattern ?
610- cleanNumber :
611- ax . d2c // case of pattern: ''
612- ) ;
625+ bnds = rangebreaksIn . _cachedPatterns [ i ] ;
613626 b0 = bnds [ 0 ] ;
614627 b1 = bnds [ 1 ] ;
615628
@@ -653,7 +666,7 @@ module.exports = function setConvert(ax, fullLayout) {
653666
654667 if ( vb >= b0 && vb < b1 ) return BADNUM ;
655668 } else {
656- var vals = Lib . simpleMap ( brk . values , ax . d2c ) . sort ( Lib . sorterAsc ) ;
669+ var vals = rangebreaksIn . _cachedValues [ i ] ;
657670 for ( var j = 0 ; j < vals . length ; j ++ ) {
658671 b0 = vals [ j ] ;
659672 b1 = b0 + brk . dvalue ;
0 commit comments