@@ -1716,22 +1716,7 @@ exports.relayout = function relayout(gd, astr, val) {
1716
1716
seq . push ( subroutines . layoutReplot ) ;
1717
1717
}
1718
1718
else if ( Object . keys ( aobj ) . length ) {
1719
- var flagList = Object . keys ( flags ) . filter ( function ( k ) { return flags [ k ] ; } ) ;
1720
-
1721
- // Optimization mostly for large splom traces where
1722
- // Plots.supplyDefaults can take > 100ms
1723
- if ( flagList [ 0 ] === 'axrange' && flagList . length === 1 ) {
1724
- for ( var k in specs . rangesAltered ) {
1725
- var axName = Axes . id2name ( k ) ;
1726
- var axIn = gd . layout [ axName ] ;
1727
- var axOut = gd . _fullLayout [ axName ] ;
1728
- axOut . autorange = axIn . autorange ;
1729
- axOut . range = axIn . range . slice ( ) ;
1730
- axOut . cleanRange ( ) ;
1731
- }
1732
- } else {
1733
- Plots . supplyDefaults ( gd ) ;
1734
- }
1719
+ axRangeSupplyDefaultsByPass ( gd , flags , specs ) || Plots . supplyDefaults ( gd ) ;
1735
1720
1736
1721
if ( flags . legend ) seq . push ( subroutines . doLegend ) ;
1737
1722
if ( flags . layoutstyle ) seq . push ( subroutines . layoutStyles ) ;
@@ -1759,6 +1744,28 @@ exports.relayout = function relayout(gd, astr, val) {
1759
1744
} ) ;
1760
1745
} ;
1761
1746
1747
+ // Optimization mostly for large splom traces where
1748
+ // Plots.supplyDefaults can take > 100ms
1749
+ function axRangeSupplyDefaultsByPass ( gd , flags , specs ) {
1750
+ var k ;
1751
+
1752
+ if ( ! flags . axrange ) return false ;
1753
+
1754
+ for ( k in flags ) {
1755
+ if ( k !== 'axrange' && flags [ k ] ) return false ;
1756
+ }
1757
+
1758
+ for ( k in specs . rangesAltered ) {
1759
+ var axName = Axes . id2name ( k ) ;
1760
+ var axIn = gd . layout [ axName ] ;
1761
+ var axOut = gd . _fullLayout [ axName ] ;
1762
+ axOut . autorange = axIn . autorange ;
1763
+ axOut . range = axIn . range . slice ( ) ;
1764
+ axOut . cleanRange ( ) ;
1765
+ }
1766
+ return true ;
1767
+ }
1768
+
1762
1769
function addAxRangeSequence ( seq , rangesAltered ) {
1763
1770
// N.B. leave as sequence of subroutines (for now) instead of
1764
1771
// subroutine of its own so that finalDraw always gets
@@ -2182,15 +2189,13 @@ exports.update = function update(gd, traceUpdate, layoutUpdate, _traces) {
2182
2189
}
2183
2190
else {
2184
2191
seq . push ( Plots . previousPromises ) ;
2185
- Plots . supplyDefaults ( gd ) ;
2192
+ axRangeSupplyDefaultsByPass ( gd , relayoutFlags , relayoutSpecs ) || Plots . supplyDefaults ( gd ) ;
2186
2193
2187
2194
if ( restyleFlags . style ) seq . push ( subroutines . doTraceStyle ) ;
2188
2195
if ( restyleFlags . colorbars ) seq . push ( subroutines . doColorBars ) ;
2189
2196
if ( relayoutFlags . legend ) seq . push ( subroutines . doLegend ) ;
2190
2197
if ( relayoutFlags . layoutstyle ) seq . push ( subroutines . layoutStyles ) ;
2191
- if ( relayoutFlags . axrange ) {
2192
- addAxRangeSequence ( seq , relayoutSpecs . rangesAltered ) ;
2193
- }
2198
+ if ( relayoutFlags . axrange ) addAxRangeSequence ( seq , relayoutSpecs . rangesAltered ) ;
2194
2199
if ( relayoutFlags . ticks ) seq . push ( subroutines . doTicksRelayout ) ;
2195
2200
if ( relayoutFlags . modebar ) seq . push ( subroutines . doModeBar ) ;
2196
2201
if ( relayoutFlags . camera ) seq . push ( subroutines . doCamera ) ;
0 commit comments