1010 d3_style_setProperty . call ( this , name , value + "" , priority ) ;
1111 } ;
1212}
13- d3 = { version : "2.7.3 " } ; // semver
13+ d3 = { version : "2.7.4 " } ; // semver
1414var d3_array = d3_arraySlice ; // conversion for NodeLists
1515
1616function d3_arrayCopy ( pseudoarray ) {
@@ -489,7 +489,7 @@ d3.dispatch = function() {
489489 var dispatch = new d3_dispatch ( ) ,
490490 i = - 1 ,
491491 n = arguments . length ;
492- while ( ++ i < n ) dispatch [ arguments [ i ] ] = d3_dispatch_event ( ) ;
492+ while ( ++ i < n ) dispatch [ arguments [ i ] ] = d3_dispatch_event ( dispatch ) ;
493493 return dispatch ;
494494} ;
495495
@@ -507,22 +507,23 @@ d3_dispatch.prototype.on = function(type, listener) {
507507
508508 return arguments . length < 2
509509 ? this [ type ] . on ( name )
510- : ( this [ type ] . on ( name , listener ) , this ) ;
510+ : this [ type ] . on ( name , listener ) ;
511511} ;
512512
513- function d3_dispatch_event ( ) {
513+ function d3_dispatch_event ( dispatch ) {
514514 var listeners = [ ] ,
515515 listenerByName = { } ;
516516
517- function dispatch ( ) {
517+ function event ( ) {
518518 var z = listeners , // defensive reference
519519 i = - 1 ,
520520 n = z . length ,
521521 l ;
522522 while ( ++ i < n ) if ( l = z [ i ] . on ) l . apply ( this , arguments ) ;
523+ return dispatch ;
523524 }
524525
525- dispatch . on = function ( name , listener ) {
526+ event . on = function ( name , listener ) {
526527 var l , i ;
527528
528529 // return the current listener, if any
@@ -543,7 +544,7 @@ function d3_dispatch_event() {
543544 return dispatch ;
544545 } ;
545546
546- return dispatch ;
547+ return event ;
547548} ;
548549// TODO align
549550d3 . format = function ( specifier ) {
@@ -894,7 +895,54 @@ d3.interpolateString = function(a, b) {
894895} ;
895896
896897d3 . interpolateTransform = function ( a , b ) {
897- return d3 . interpolateString ( d3 . transform ( a ) + "" , d3 . transform ( b ) + "" ) ;
898+ var s = [ ] , // string constants and placeholders
899+ q = [ ] , // number interpolators
900+ n ,
901+ A = d3 . transform ( a ) ,
902+ B = d3 . transform ( b ) ,
903+ ta = A . translate ,
904+ tb = B . translate ,
905+ ra = A . rotate ,
906+ rb = B . rotate ,
907+ wa = A . skew ,
908+ wb = B . skew ,
909+ ka = A . scale ,
910+ kb = B . scale ;
911+
912+ if ( ta [ 0 ] != tb [ 0 ] || ta [ 1 ] != tb [ 1 ] ) {
913+ s . push ( "translate(" , null , "," , null , ")" ) ;
914+ q . push ( { i : 1 , x : d3 . interpolateNumber ( ta [ 0 ] , tb [ 0 ] ) } , { i : 3 , x : d3 . interpolateNumber ( ta [ 1 ] , tb [ 1 ] ) } ) ;
915+ } else if ( tb [ 0 ] || tb [ 1 ] ) {
916+ s . push ( "translate(" + tb + ")" ) ;
917+ } else {
918+ s . push ( "" ) ;
919+ }
920+
921+ if ( ra != rb ) {
922+ q . push ( { i : s . push ( s . pop ( ) + "rotate(" , null , ")" ) - 2 , x : d3 . interpolateNumber ( ra , rb ) } ) ;
923+ } else if ( rb ) {
924+ s . push ( s . pop ( ) + "rotate(" + rb + ")" ) ;
925+ }
926+
927+ if ( wa != wb ) {
928+ q . push ( { i : s . push ( s . pop ( ) + "skewX(" , null , ")" ) - 2 , x : d3 . interpolateNumber ( wa , wb ) } ) ;
929+ } else if ( wb ) {
930+ s . push ( s . pop ( ) + "skewX(" + wb + ")" ) ;
931+ }
932+
933+ if ( ka [ 0 ] != kb [ 0 ] || ka [ 1 ] != kb [ 1 ] ) {
934+ n = s . push ( s . pop ( ) + "scale(" , null , "," , null , ")" ) ;
935+ q . push ( { i : n - 4 , x : d3 . interpolateNumber ( ka [ 0 ] , kb [ 0 ] ) } , { i : n - 2 , x : d3 . interpolateNumber ( ka [ 1 ] , kb [ 1 ] ) } ) ;
936+ } else if ( kb [ 0 ] != 1 || kb [ 1 ] != 1 ) {
937+ s . push ( s . pop ( ) + "scale(" + kb + ")" ) ;
938+ }
939+
940+ n = q . length ;
941+ return function ( t ) {
942+ var i = - 1 , o ;
943+ while ( ++ i < n ) s [ ( o = q [ i ] ) . i ] = o . x ( t ) ;
944+ return s . join ( "" ) ;
945+ } ;
898946} ;
899947
900948d3 . interpolateRgb = function ( a , b ) {
@@ -2458,7 +2506,6 @@ function d3_scale_linearNice(dx) {
24582506 } ;
24592507}
24602508
2461- // TODO Dates? Ugh.
24622509function d3_scale_linearTickRange ( domain , m ) {
24632510 var extent = d3_scaleExtent ( domain ) ,
24642511 span = extent [ 1 ] - extent [ 0 ] ,
0 commit comments