@@ -2466,6 +2466,8 @@ function diffData(gd, oldFullData, newFullData, immutable) {
2466
2466
function diffLayout ( gd , oldFullLayout , newFullLayout , immutable ) {
2467
2467
var flags = editTypes . layoutFlags ( ) ;
2468
2468
flags . arrays = { } ;
2469
+ flags . rangesAltered = { } ;
2470
+ flags . autorangedAxes = { } ;
2469
2471
2470
2472
function getLayoutValObject ( parts ) {
2471
2473
return PlotSchema . getLayoutValObject ( newFullLayout , parts ) ;
@@ -2503,6 +2505,11 @@ function getDiffFlags(oldContainer, newContainer, outerparts, opts) {
2503
2505
return ;
2504
2506
}
2505
2507
editTypes . update ( flags , valObject ) ;
2508
+
2509
+ // track cartesian axes with altered ranges
2510
+ if ( AX_RANGE_RE . test ( astr ) || AX_AUTORANGE_RE . test ( astr ) ) {
2511
+ flags . rangesAltered [ outerparts [ 0 ] ] = 1 ;
2512
+ }
2506
2513
}
2507
2514
2508
2515
function valObjectCanBeDataArray ( valObject ) {
@@ -2515,6 +2522,13 @@ function getDiffFlags(oldContainer, newContainer, outerparts, opts) {
2515
2522
2516
2523
var oldVal = oldContainer [ key ] ;
2517
2524
var newVal = newContainer [ key ] ;
2525
+ var parts = outerparts . concat ( key ) ;
2526
+ astr = parts . join ( '.' ) ;
2527
+
2528
+ // track auto-ranged cartesian axes, changed or not
2529
+ if ( AX_AUTORANGE_RE . test ( astr ) && newVal === true ) {
2530
+ flags . autorangedAxes [ outerparts [ 0 ] ] = 1 ;
2531
+ }
2518
2532
2519
2533
if ( key . charAt ( 0 ) === '_' || typeof oldVal === 'function' || oldVal === newVal ) continue ;
2520
2534
@@ -2530,7 +2544,6 @@ function getDiffFlags(oldContainer, newContainer, outerparts, opts) {
2530
2544
if ( key === 'range' && newContainer . autorange ) continue ;
2531
2545
if ( ( key === 'zmin' || key === 'zmax' ) && newContainer . type === 'contourcarpet' ) continue ;
2532
2546
2533
- var parts = outerparts . concat ( key ) ;
2534
2547
valObject = getValObject ( parts ) ;
2535
2548
2536
2549
// in case type changed, we may not even *have* a valObject.
0 commit comments