@@ -71,6 +71,12 @@ module.exports = function(gd, cdmodule, transitionOpts, makeOnCompleteCallback)
7171 }
7272} ;
7373
74+ function getKey ( pt ) {
75+ return helpers . isHierarchyRoot ( pt ) ?
76+ '' : // don't use the dummyId
77+ helpers . getPtId ( pt ) ;
78+ }
79+
7480function plotOne ( gd , cd , element , transitionOpts ) {
7581 var fullLayout = gd . _fullLayout ;
7682 var cd0 = cd [ 0 ] ;
@@ -131,13 +137,13 @@ function plotOne(gd, cd, element, transitionOpts) {
131137 var nextOfPrevEntry = null ;
132138 var getPrev = function ( pt , onPathbar ) {
133139 return onPathbar ?
134- prevLookupPathbar [ helpers . getPtId ( pt ) ] :
135- prevLookupSlices [ helpers . getPtId ( pt ) ] ;
140+ prevLookupPathbar [ getKey ( pt ) ] :
141+ prevLookupSlices [ getKey ( pt ) ] ;
136142 } ;
137143
138144 var getOrigin = function ( pt , onPathbar , refRect , size ) {
139145 if ( onPathbar ) {
140- return prevLookupPathbar [ helpers . getPtId ( hierarchy ) ] || pathbarOrigin ;
146+ return prevLookupPathbar [ getKey ( hierarchy ) ] || pathbarOrigin ;
141147 } else {
142148 var ref = prevLookupSlices [ trace . level ] || refRect ;
143149
@@ -148,13 +154,15 @@ function plotOne(gd, cd, element, transitionOpts) {
148154 return { } ;
149155 } ;
150156
157+ var isRoot = helpers . isHierarchyRoot ( entry ) ;
158+
151159 trace . _entryDepth = entry . data . depth ;
152- if ( helpers . isHierarchyRoot ( entry ) ) {
160+ if ( isRoot ) {
153161 trace . _entryDepth ++ ;
154162 }
155163
156164 // N.B. handle multiple-root special case
157- if ( cd0 . hasMultipleRoots && helpers . isHierarchyRoot ( entry ) ) {
165+ if ( cd0 . hasMultipleRoots && isRoot ) {
158166 maxDepth ++ ;
159167 }
160168 trace . _maxDepth = maxDepth ;
@@ -506,31 +514,53 @@ function plotOne(gd, cd, element, transitionOpts) {
506514 var selDescendants = gTrace . selectAll ( 'g.slice' ) ;
507515
508516 if ( ! entry ) {
509- return selDescendants . remove ( ) && selAncestors . remove ( ) ;
517+ selAncestors . remove ( ) ;
518+ selDescendants . remove ( ) ;
519+ return ;
510520 }
511521
512522 if ( hasTransition ) {
513523 // Important: do this before binding new sliceData!
514524
515525 selAncestors . each ( function ( pt ) {
516- prevLookupPathbar [ helpers . getPtId ( pt ) ] = {
526+ prevLookupPathbar [ getKey ( pt ) ] = {
517527 x0 : pt . x0 ,
518528 x1 : pt . x1 ,
519529 y0 : pt . y0 ,
520- y1 : pt . y1 ,
521- transform : pt . transform
530+ y1 : pt . y1
522531 } ;
532+
533+ if ( pt . transform ) {
534+ prevLookupPathbar [ getKey ( pt ) ] . transform = {
535+ textX : pt . transform . textX ,
536+ textY : pt . transform . textY ,
537+ targetX : pt . transform . targetX ,
538+ targetY : pt . transform . targetY ,
539+ scale : pt . transform . scale ,
540+ rotate : pt . transform . rotate
541+ } ;
542+ }
523543 } ) ;
524544
525545 selDescendants . each ( function ( pt ) {
526- prevLookupSlices [ helpers . getPtId ( pt ) ] = {
546+ prevLookupSlices [ getKey ( pt ) ] = {
527547 x0 : pt . x0 ,
528548 x1 : pt . x1 ,
529549 y0 : pt . y0 ,
530- y1 : pt . y1 ,
531- transform : pt . transform
550+ y1 : pt . y1
532551 } ;
533552
553+ if ( pt . transform ) {
554+ prevLookupSlices [ getKey ( pt ) ] . transform = {
555+ textX : pt . transform . textX ,
556+ textY : pt . transform . textY ,
557+ targetX : pt . transform . targetX ,
558+ targetY : pt . transform . targetY ,
559+ scale : pt . transform . scale ,
560+ rotate : pt . transform . rotate
561+ } ;
562+ }
563+
534564 if ( ! prevEntry && helpers . isEntry ( pt ) ) {
535565 prevEntry = pt ;
536566 }
0 commit comments