@@ -2445,6 +2445,9 @@ function diffData(gd, oldFullData, newFullData, immutable, transition, newDataRe
2445
2445
2446
2446
var flags = editTypes . traceFlags ( ) ;
2447
2447
flags . arrays = { } ;
2448
+ flags . nChanges = 0 ;
2449
+ flags . nChangesAnim = 0 ;
2450
+
2448
2451
var i , trace ;
2449
2452
2450
2453
function getTraceValObject ( parts ) {
@@ -2456,6 +2459,8 @@ function diffData(gd, oldFullData, newFullData, immutable, transition, newDataRe
2456
2459
flags : flags ,
2457
2460
immutable : immutable ,
2458
2461
transition : transition ,
2462
+ nChanges : 0 ,
2463
+ nChangesAnim : 0 ,
2459
2464
newDataRevision : newDataRevision ,
2460
2465
gd : gd
2461
2466
} ;
@@ -2475,6 +2480,10 @@ function diffData(gd, oldFullData, newFullData, immutable, transition, newDataRe
2475
2480
flags . fullReplot = true ;
2476
2481
}
2477
2482
2483
+ if ( transition && flags . nChanges && flags . nChangesAnim ) {
2484
+ flags . anim = flags . nChanges === flags . nChangesAnim ? 'all' : 'some' ;
2485
+ }
2486
+
2478
2487
return flags ;
2479
2488
}
2480
2489
@@ -2483,6 +2492,8 @@ function diffLayout(gd, oldFullLayout, newFullLayout, immutable, transition) {
2483
2492
flags . arrays = { } ;
2484
2493
flags . rangesAltered = { } ;
2485
2494
flags . autorangedAxes = { } ;
2495
+ flags . nChanges = 0 ;
2496
+ flags . nChangesAnim = 0 ;
2486
2497
2487
2498
function getLayoutValObject ( parts ) {
2488
2499
return PlotSchema . getLayoutValObject ( newFullLayout , parts ) ;
@@ -2502,6 +2513,10 @@ function diffLayout(gd, oldFullLayout, newFullLayout, immutable, transition) {
2502
2513
flags . layoutReplot = true ;
2503
2514
}
2504
2515
2516
+ if ( transition && flags . nChanges && flags . nChangesAnim ) {
2517
+ flags . anim = flags . nChanges === flags . nChangesAnim ? 'all' : 'some' ;
2518
+ }
2519
+
2505
2520
return flags ;
2506
2521
}
2507
2522
@@ -2521,14 +2536,11 @@ function getDiffFlags(oldContainer, newContainer, outerparts, opts) {
2521
2536
return ;
2522
2537
}
2523
2538
editTypes . update ( flags , valObject ) ;
2539
+ flags . nChanges ++ ;
2524
2540
2525
2541
// track animatable changes
2526
- if ( opts . transition ) {
2527
- if ( flags . anim === 'all' && ! valObject . anim ) {
2528
- flags . anim = 'some' ;
2529
- } else if ( ! flags . anim && valObject . anim ) {
2530
- flags . anim = 'all' ;
2531
- }
2542
+ if ( opts . transition && valObject . anim ) {
2543
+ flags . nChangesAnim ++ ;
2532
2544
}
2533
2545
2534
2546
// track cartesian axes with altered ranges
0 commit comments