@@ -299,16 +299,6 @@ function plotOne(gd, cd, element, transitionOpts) {
299299        var  y1  =  pt . y1 ; 
300300        var  textBB  =  pt . textBB ; 
301301
302-         if ( x0  ===  x1 )  { 
303-             x0  -=  TEXTPAD ; 
304-             x1  +=  TEXTPAD ; 
305-         } 
306- 
307-         if ( y0  ===  y1 )  { 
308-             y0  -=  TEXTPAD ; 
309-             y1  +=  TEXTPAD ; 
310-         } 
311- 
312302        var  hasFlag  =  function ( f )  {  return  trace . textposition . indexOf ( f )  !==  - 1 ;  } ; 
313303
314304        var  hasBottom  =  hasFlag ( 'bottom' ) ; 
@@ -321,23 +311,18 @@ function plotOne(gd, cd, element, transitionOpts) {
321311        var  hasRight  =  hasFlag ( 'right' ) ; 
322312        var  hasLeft  =  hasFlag ( 'left' )  ||  opts . onPathbar ; 
323313
324-         var  offsetDir  = 
325-             hasLeft  ? 'left'  :
326-             hasRight  ? 'right'  : 'center' ; 
327- 
328-         if ( opts . onPathbar  ||  ! opts . isHeader )  { 
329-             x0  +=  hasLeft  ? TEXTPAD  : 0 ; 
330-             x1  -=  hasRight  ? TEXTPAD  : 0 ; 
331-         } 
314+         var  leftToRight  = 
315+             hasLeft  ? - 1  :
316+             hasRight  ? 1  : 0 ; 
332317
333318        var  pad  =  trace . marker . pad ; 
334319        if ( opts . isHeader )  { 
335320            x0  +=  pad . l  -  TEXTPAD ; 
336321            x1  -=  pad . r  -  TEXTPAD ; 
337322            if ( x0  >=  x1 )  { 
338323                var  mid  =  ( x0  +  x1 )  /  2 ; 
339-                 x0  =  mid   -   TEXTPAD ; 
340-                 x1  =  mid   +   TEXTPAD ; 
324+                 x0  =  mid ; 
325+                 x1  =  mid ; 
341326            } 
342327
343328            // limit the drawing area for headers 
@@ -356,33 +341,29 @@ function plotOne(gd, cd, element, transitionOpts) {
356341            isHorizontal : false , 
357342            constrained : true , 
358343            angle : 0 , 
359-             anchor : anchor 
344+             anchor : anchor , 
345+             leftToRight : leftToRight 
360346        } ) ; 
361347        transform . fontSize  =  opts . fontSize ; 
362348
363-         if ( offsetDir  !==  'center' )  { 
364-             var  deltaX  =  ( x1  -  x0 )  /  2  -  transform . scale  *  ( textBB . right  -  textBB . left )  /  2 ; 
365-             if ( opts . isHeader )  deltaX  -=  TEXTPAD ; 
366- 
367-             if ( offsetDir  ===  'left' )  transform . targetX  -=  deltaX ; 
368-             else  if ( offsetDir  ===  'right' )  transform . targetX  +=  deltaX ; 
369-         } 
370- 
371-         transform . targetX  =  viewMapX ( transform . targetX  -  transform . anchorX  *  transform . scale ) ; 
372-         transform . targetY  =  viewMapY ( transform . targetY  -  transform . anchorY  *  transform . scale ) ; 
373-         transform . anchorX  =  0 ; 
374-         transform . anchorY  =  0 ; 
349+         transform . targetX  =  viewMapX ( transform . targetX ) ; 
350+         transform . targetY  =  viewMapY ( transform . targetY ) ; 
375351
376352        if ( isNaN ( transform . targetX )  ||  isNaN ( transform . targetY ) )  { 
377353            return  { } ; 
378354        } 
379355
380-         recordMinTextSize ( trace . type ,  transform ,  fullLayout ) ; 
356+         if ( x0  !==  x1  &&  y0  !==  y1 )  { 
357+             recordMinTextSize ( trace . type ,  transform ,  fullLayout ) ; 
358+         } 
359+ 
381360        return  { 
382361            scale : transform . scale , 
383362            rotate : transform . rotate , 
384363            textX : transform . textX , 
385364            textY : transform . textY , 
365+             anchorX : transform . anchorX , 
366+             anchorY : transform . anchorY , 
386367            targetX : transform . targetX , 
387368            targetY : transform . targetY 
388369        } ; 
@@ -495,13 +476,18 @@ function plotOne(gd, cd, element, transitionOpts) {
495476        } 
496477
497478        var  transform  =  pt . transform ; 
498-         recordMinTextSize ( trace . type ,  transform ,  fullLayout ) ; 
479+         if ( pt . x0  !==  pt . x1  &&  pt . y0  !==  pt . y1 )  { 
480+             recordMinTextSize ( trace . type ,  transform ,  fullLayout ) ; 
481+         } 
482+ 
499483        return  d3 . interpolate ( prev ,  { 
500484            transform : { 
501485                scale : transform . scale , 
502486                rotate : transform . rotate , 
503487                textX : transform . textX , 
504488                textY : transform . textY , 
489+                 anchorX : transform . anchorX , 
490+                 anchorY : transform . anchorY , 
505491                targetX : transform . targetX , 
506492                targetY : transform . targetY 
507493            } 
@@ -534,11 +520,16 @@ function plotOne(gd, cd, element, transitionOpts) {
534520
535521    var  strTransform  =  function ( d )  { 
536522        var  transform  =  d . transform ; 
537-         recordMinTextSize ( trace . type ,  transform ,  fullLayout ) ; 
523+ 
524+         if ( d . x0  !==  d . x1  &&  d . y0  !==  d . y1 )  { 
525+             recordMinTextSize ( trace . type ,  transform ,  fullLayout ) ; 
526+         } 
538527
539528        return  Lib . getTextTransform ( { 
540529            textX : transform . textX , 
541530            textY : transform . textY , 
531+             anchorX : transform . anchorX , 
532+             anchorY : transform . anchorY , 
542533            targetX : transform . targetX , 
543534            targetY : transform . targetY , 
544535            scale : transform . scale , 
@@ -561,6 +552,8 @@ function plotOne(gd, cd, element, transitionOpts) {
561552                prevLookupPathbar [ getKey ( pt ) ] . transform  =  { 
562553                    textX : pt . transform . textX , 
563554                    textY : pt . transform . textY , 
555+                     anchorX : pt . transform . anchorX , 
556+                     anchorY : pt . transform . anchorY , 
564557                    targetX : pt . transform . targetX , 
565558                    targetY : pt . transform . targetY , 
566559                    scale : pt . transform . scale , 
@@ -581,6 +574,8 @@ function plotOne(gd, cd, element, transitionOpts) {
581574                prevLookupSlices [ getKey ( pt ) ] . transform  =  { 
582575                    textX : pt . transform . textX , 
583576                    textY : pt . transform . textY , 
577+                     anchorX : pt . transform . anchorX , 
578+                     anchorY : pt . transform . anchorY , 
584579                    targetX : pt . transform . targetX , 
585580                    targetY : pt . transform . targetY , 
586581                    scale : pt . transform . scale , 
0 commit comments