11d3 = function ( ) {
22 var d3 = {
3- version : "3.2.7 "
3+ version : "3.2.8 "
44 } ;
55 if ( ! Date . now ) Date . now = function ( ) {
66 return + new Date ( ) ;
@@ -131,8 +131,8 @@ d3 = function() {
131131 return array ;
132132 } ;
133133 d3 . permute = function ( array , indexes ) {
134- var permutes = [ ] , i = - 1 , n = indexes . length ;
135- while ( ++ i < n ) permutes [ i ] = array [ indexes [ i ] ] ;
134+ var i = indexes . length , permutes = new Array ( i ) ;
135+ while ( i -- ) permutes [ i ] = array [ indexes [ i ] ] ;
136136 return permutes ;
137137 } ;
138138 d3 . zip = function ( ) {
@@ -204,7 +204,9 @@ d3 = function() {
204204 }
205205 d3 . map = function ( object ) {
206206 var map = new d3_Map ( ) ;
207- for ( var key in object ) map . set ( key , object [ key ] ) ;
207+ if ( object instanceof d3_Map ) object . forEach ( function ( key , value ) {
208+ map . set ( key , value ) ;
209+ } ) ; else for ( var key in object ) map . set ( key , object [ key ] ) ;
208210 return map ;
209211 } ;
210212 function d3_Map ( ) { }
@@ -320,7 +322,7 @@ d3 = function() {
320322 } ;
321323 d3 . set = function ( array ) {
322324 var set = new d3_Set ( ) ;
323- if ( array ) for ( var i = 0 ; i < array . length ; i ++ ) set . add ( array [ i ] ) ;
325+ if ( array ) for ( var i = 0 , n = array . length ; i < n ; ++ i ) set . add ( array [ i ] ) ;
324326 return set ;
325327 } ;
326328 function d3_Set ( ) { }
@@ -374,8 +376,8 @@ d3 = function() {
374376 var d3_vendorPrefixes = [ "webkit" , "ms" , "moz" , "Moz" , "o" , "O" ] ;
375377 var d3_array = d3_arraySlice ;
376378 function d3_arrayCopy ( pseudoarray ) {
377- var i = - 1 , n = pseudoarray . length , array = [ ] ;
378- while ( ++ i < n ) array . push ( pseudoarray [ i ] ) ;
379+ var i = pseudoarray . length , array = new Array ( i ) ;
380+ while ( i -- ) array [ i ] = pseudoarray [ i ] ;
379381 return array ;
380382 }
381383 function d3_arraySlice ( pseudoarray ) {
@@ -855,7 +857,7 @@ d3 = function() {
855857 function d3_selection_sortComparator ( comparator ) {
856858 if ( ! arguments . length ) comparator = d3 . ascending ;
857859 return function ( a , b ) {
858- return ! a - ! b || comparator ( a . __data__ , b . __data__ ) ;
860+ return a && b ? comparator ( a . __data__ , b . __data__ ) : ! a - ! b ;
859861 } ;
860862 }
861863 d3_selectionPrototype . each = function ( callback ) {
@@ -1152,9 +1154,9 @@ d3 = function() {
11521154 return d3 . rebind ( drag , event , "on" ) ;
11531155 } ;
11541156 d3 . behavior . zoom = function ( ) {
1155- var translate = [ 0 , 0 ] , translate0 , scale = 1 , scaleExtent = d3_behavior_zoomInfinity , mousedown = "mousedown.zoom" , mousemove = "mousemove.zoom" , mouseup = "mouseup.zoom" , event = d3_eventDispatch ( zoom , "zoom" ) , x0 , x1 , y0 , y1 , touchtime ;
1157+ var translate = [ 0 , 0 ] , translate0 , scale = 1 , scaleExtent = d3_behavior_zoomInfinity , mousedown = "mousedown.zoom" , mousemove = "mousemove.zoom" , mouseup = "mouseup.zoom" , touchstart = "touchstart.zoom" , touchmove = "touchmove.zoom" , touchend = "touchend.zoom" , touchtime , event = d3_eventDispatch ( zoom , "zoom" ) , x0 , x1 , y0 , y1 ;
11561158 function zoom ( ) {
1157- this . on ( mousedown , mousedowned ) . on ( d3_behavior_zoomWheel + ".zoom" , mousewheeled ) . on ( mousemove , mousewheelreset ) . on ( "dblclick.zoom" , dblclicked ) . on ( " touchstart.zoom" , touchstarted ) ;
1159+ this . on ( mousedown , mousedowned ) . on ( d3_behavior_zoomWheel + ".zoom" , mousewheeled ) . on ( mousemove , mousewheelreset ) . on ( "dblclick.zoom" , dblclicked ) . on ( touchstart , touchstarted ) ;
11581160 }
11591161 zoom . translate = function ( x ) {
11601162 if ( ! arguments . length ) return translate ;
@@ -1232,27 +1234,37 @@ d3 = function() {
12321234 }
12331235 }
12341236 function touchstarted ( ) {
1235- var target = this , event_ = event . of ( target , arguments ) , touches = d3 . touches ( target ) , locations = { } , distance0 = 0 , scale0 = scale , now = Date . now ( ) , name = "zoom-" + d3 . event . changedTouches [ 0 ] . identifier , touchmove = "touchmove." + name , touchend = "touchend." + name , w = d3 . select ( d3_window ) . on ( touchmove , moved ) . on ( touchend , ended ) , t = d3 . select ( target ) . on ( mousedown , null ) , dragRestore = d3_event_dragSuppress ( ) ;
1236- touches . forEach ( function ( t ) {
1237- locations [ t . identifier ] = location ( t ) ;
1238- } ) ;
1239- if ( touches . length === 1 ) {
1240- if ( now - touchtime < 500 ) {
1241- var p = touches [ 0 ] , l = location ( touches [ 0 ] ) ;
1242- scaleTo ( scale * 2 ) ;
1243- translateTo ( p , l ) ;
1244- d3_eventPreventDefault ( ) ;
1245- dispatch ( event_ ) ;
1237+ var target = this , event_ = event . of ( target , arguments ) , locations0 , distance0 = 0 , scale0 , w = d3 . select ( d3_window ) . on ( touchmove , moved ) . on ( touchend , ended ) , t = d3 . select ( target ) . on ( mousedown , null ) . on ( touchstart , started ) , dragRestore = d3_event_dragSuppress ( ) ;
1238+ started ( ) ;
1239+ function relocate ( ) {
1240+ var touches = d3 . touches ( target ) ;
1241+ scale0 = scale ;
1242+ locations0 = { } ;
1243+ touches . forEach ( function ( t ) {
1244+ locations0 [ t . identifier ] = location ( t ) ;
1245+ } ) ;
1246+ return touches ;
1247+ }
1248+ function started ( ) {
1249+ var now = Date . now ( ) , touches = relocate ( ) ;
1250+ if ( touches . length === 1 ) {
1251+ if ( now - touchtime < 500 ) {
1252+ var p = touches [ 0 ] , l = locations0 [ p . identifier ] ;
1253+ scaleTo ( scale * 2 ) ;
1254+ translateTo ( p , l ) ;
1255+ d3_eventPreventDefault ( ) ;
1256+ dispatch ( event_ ) ;
1257+ }
1258+ touchtime = now ;
1259+ } else if ( touches . length > 1 ) {
1260+ var p = touches [ 0 ] , q = touches [ 1 ] , dx = p [ 0 ] - q [ 0 ] , dy = p [ 1 ] - q [ 1 ] ;
1261+ distance0 = dx * dx + dy * dy ;
12461262 }
1247- touchtime = now ;
1248- } else if ( touches . length > 1 ) {
1249- var p = touches [ 0 ] , q = touches [ 1 ] , dx = p [ 0 ] - q [ 0 ] , dy = p [ 1 ] - q [ 1 ] ;
1250- distance0 = dx * dx + dy * dy ;
12511263 }
12521264 function moved ( ) {
1253- var touches = d3 . touches ( target ) , p0 = touches [ 0 ] , l0 = locations [ p0 . identifier ] ;
1265+ var touches = d3 . touches ( target ) , p0 = touches [ 0 ] , l0 = locations0 [ p0 . identifier ] ;
12541266 if ( p1 = touches [ 1 ] ) {
1255- var p1 , l1 = locations [ p1 . identifier ] , scale1 = d3 . event . scale ;
1267+ var p1 , l1 = locations0 [ p1 . identifier ] , scale1 = d3 . event . scale ;
12561268 if ( scale1 == null ) {
12571269 var distance1 = ( distance1 = p1 [ 0 ] - p0 [ 0 ] ) * distance1 + ( distance1 = p1 [ 1 ] - p0 [ 1 ] ) * distance1 ;
12581270 scale1 = distance0 && Math . sqrt ( distance1 / distance0 ) ;
@@ -1266,9 +1278,13 @@ d3 = function() {
12661278 dispatch ( event_ ) ;
12671279 }
12681280 function ended ( ) {
1269- w . on ( touchmove , null ) . on ( touchend , null ) ;
1270- t . on ( mousedown , mousedowned ) ;
1271- dragRestore ( ) ;
1281+ if ( d3 . event . touches . length ) {
1282+ relocate ( ) ;
1283+ } else {
1284+ w . on ( touchmove , null ) . on ( touchend , null ) ;
1285+ t . on ( mousedown , mousedowned ) . on ( touchstart , touchstarted ) ;
1286+ dragRestore ( ) ;
1287+ }
12721288 }
12731289 }
12741290 function mousewheeled ( ) {
@@ -6843,9 +6859,8 @@ d3 = function() {
68436859 return scale ;
68446860 } ;
68456861 scale . ticks = function ( ) {
6846- var extent = d3_scaleExtent ( domain ) , ticks = [ ] ;
6847- if ( extent . every ( isFinite ) ) {
6848- var u = extent [ 0 ] , v = extent [ 1 ] , i = Math . floor ( log ( u ) ) , j = Math . ceil ( log ( v ) ) , n = base % 1 ? 2 : base ;
6862+ var extent = d3_scaleExtent ( domain ) , ticks = [ ] , u = extent [ 0 ] , v = extent [ 1 ] , i = Math . floor ( log ( u ) ) , j = Math . ceil ( log ( v ) ) , n = base % 1 ? 2 : base ;
6863+ if ( isFinite ( j - i ) ) {
68496864 if ( positive ) {
68506865 for ( ; i < j ; i ++ ) for ( var k = 1 ; k < n ; k ++ ) ticks . push ( pow ( i ) * k ) ;
68516866 ticks . push ( pow ( i ) ) ;
0 commit comments