11d3 = function ( ) {
22 var d3 = {
3- version : "3.1.9 "
3+ version : "3.1.10 "
44 } ;
55 if ( ! Date . now ) Date . now = function ( ) {
66 return + new Date ( ) ;
@@ -1628,14 +1628,32 @@ d3 = function() {
16281628 function d3_identity ( d ) {
16291629 return d ;
16301630 }
1631- d3 . xhr = function ( url , mimeType , callback ) {
1632- var xhr = { } , dispatch = d3 . dispatch ( "progress" , "load" , "error" ) , headers = { } , response = d3_identity , request = new ( d3_window . XDomainRequest && / ^ ( h t t p ( s ) ? : ) ? \/ \/ / . test ( url ) ? XDomainRequest : XMLHttpRequest ) ( ) ;
1631+ d3 . xhr = d3_xhrType ( d3_identity ) ;
1632+ function d3_xhrType ( response ) {
1633+ return function ( url , mimeType , callback ) {
1634+ if ( arguments . length === 2 && typeof mimeType === "function" ) callback = mimeType ,
1635+ mimeType = null ;
1636+ return d3_xhr ( url , mimeType , response , callback ) ;
1637+ } ;
1638+ }
1639+ function d3_xhr ( url , mimeType , response , callback ) {
1640+ var xhr = { } , dispatch = d3 . dispatch ( "progress" , "load" , "error" ) , headers = { } , request = new ( d3_window . XDomainRequest && / ^ ( h t t p ( s ) ? : ) ? \/ \/ / . test ( url ) ? XDomainRequest : XMLHttpRequest ) ( ) ;
16331641 "onload" in request ? request . onload = request . onerror = respond : request . onreadystatechange = function ( ) {
16341642 request . readyState > 3 && respond ( ) ;
16351643 } ;
16361644 function respond ( ) {
1637- var s = request . status ;
1638- ! s && request . responseText || s >= 200 && s < 300 || s === 304 ? dispatch . load . call ( xhr , response . call ( xhr , request ) ) : dispatch . error . call ( xhr , request ) ;
1645+ var status = request . status , result ;
1646+ if ( ! status && request . responseText || status >= 200 && status < 300 || status === 304 ) {
1647+ try {
1648+ result = response . call ( xhr , request ) ;
1649+ } catch ( e ) {
1650+ dispatch . error . call ( xhr , e ) ;
1651+ return ;
1652+ }
1653+ dispatch . load . call ( xhr , result ) ;
1654+ } else {
1655+ dispatch . error . call ( xhr , request ) ;
1656+ }
16391657 }
16401658 request . onprogress = function ( event ) {
16411659 var o = d3 . event ;
@@ -1683,10 +1701,8 @@ d3 = function() {
16831701 return xhr ;
16841702 } ;
16851703 d3 . rebind ( xhr , dispatch , "on" ) ;
1686- if ( arguments . length === 2 && typeof mimeType === "function" ) callback = mimeType ,
1687- mimeType = null ;
16881704 return callback == null ? xhr : xhr . get ( d3_xhr_fixCallback ( callback ) ) ;
1689- } ;
1705+ }
16901706 function d3_xhr_fixCallback ( callback ) {
16911707 return callback . length === 1 ? function ( error , request ) {
16921708 callback ( error == null ? request : null ) ;
@@ -1796,36 +1812,28 @@ d3 = function() {
17961812 }
17971813 d3 . csv = d3_dsv ( "," , "text/csv" ) ;
17981814 d3 . tsv = d3_dsv ( " " , "text/tab-separated-values" ) ;
1799- var d3_timer_id = 0 , d3_timer_byId = { } , d3_timer_queue = null , d3_timer_interval , d3_timer_timeout ;
1815+ var d3_timer_queueHead , d3_timer_queueTail , d3_timer_interval , d3_timer_timeout ;
18001816 d3 . timer = function ( callback , delay , then ) {
18011817 if ( arguments . length < 3 ) {
18021818 if ( arguments . length < 2 ) delay = 0 ; else if ( ! isFinite ( delay ) ) return ;
18031819 then = Date . now ( ) ;
18041820 }
1805- var timer = d3_timer_byId [ callback . id ] ;
1806- if ( timer && timer . callback === callback ) {
1807- timer . then = then ;
1808- timer . delay = delay ;
1809- } else d3_timer_byId [ callback . id = ++ d3_timer_id ] = d3_timer_queue = {
1821+ var time = then + delay ;
1822+ var timer = {
18101823 callback : callback ,
1811- then : then ,
1812- delay : delay ,
1813- next : d3_timer_queue
1824+ time : time ,
1825+ next : null
18141826 } ;
1827+ if ( d3_timer_queueTail ) d3_timer_queueTail . next = timer ; else d3_timer_queueHead = timer ;
1828+ d3_timer_queueTail = timer ;
18151829 if ( ! d3_timer_interval ) {
18161830 d3_timer_timeout = clearTimeout ( d3_timer_timeout ) ;
18171831 d3_timer_interval = 1 ;
18181832 d3_timer_frame ( d3_timer_step ) ;
18191833 }
18201834 } ;
18211835 function d3_timer_step ( ) {
1822- var elapsed , now = Date . now ( ) , t1 = d3_timer_queue ;
1823- while ( t1 ) {
1824- elapsed = now - t1 . then ;
1825- if ( elapsed >= t1 . delay ) t1 . flush = t1 . callback ( elapsed ) ;
1826- t1 = t1 . next ;
1827- }
1828- var delay = d3_timer_flush ( ) - now ;
1836+ var now = d3_timer_mark ( ) , delay = d3_timer_sweep ( ) - now ;
18291837 if ( delay > 24 ) {
18301838 if ( isFinite ( delay ) ) {
18311839 clearTimeout ( d3_timer_timeout ) ;
@@ -1838,26 +1846,29 @@ d3 = function() {
18381846 }
18391847 }
18401848 d3 . timer . flush = function ( ) {
1841- var elapsed , now = Date . now ( ) , t1 = d3_timer_queue ;
1842- while ( t1 ) {
1843- elapsed = now - t1 . then ;
1844- if ( ! t1 . delay ) t1 . flush = t1 . callback ( elapsed ) ;
1845- t1 = t1 . next ;
1846- }
1847- d3_timer_flush ( ) ;
1849+ d3_timer_mark ( ) ;
1850+ d3_timer_sweep ( ) ;
18481851 } ;
1849- function d3_timer_flush ( ) {
1850- var t0 = null , t1 = d3_timer_queue , then = Infinity ;
1852+ function d3_timer_mark ( ) {
1853+ var now = Date . now ( ) , timer = d3_timer_queueHead ;
1854+ while ( timer ) {
1855+ if ( now >= timer . time ) timer . flush = timer . callback ( now - timer . time ) ;
1856+ timer = timer . next ;
1857+ }
1858+ return now ;
1859+ }
1860+ function d3_timer_sweep ( ) {
1861+ var t0 , t1 = d3_timer_queueHead , time = Infinity ;
18511862 while ( t1 ) {
18521863 if ( t1 . flush ) {
1853- delete d3_timer_byId [ t1 . callback . id ] ;
1854- t1 = t0 ? t0 . next = t1 . next : d3_timer_queue = t1 . next ;
1864+ t1 = t0 ? t0 . next = t1 . next : d3_timer_queueHead = t1 . next ;
18551865 } else {
1856- then = Math . min ( then , t1 . then + t1 . delay ) ;
1866+ if ( t1 . time < time ) time = t1 . time ;
18571867 t1 = ( t0 = t1 ) . next ;
18581868 }
18591869 }
1860- return then ;
1870+ d3_timer_queueTail = t0 ;
1871+ return time ;
18611872 }
18621873 var d3_timer_frame = d3_window . requestAnimationFrame || d3_window . webkitRequestAnimationFrame || d3_window . mozRequestAnimationFrame || d3_window . oRequestAnimationFrame || d3_window . msRequestAnimationFrame || function ( callback ) {
18631874 setTimeout ( callback , 17 ) ;
@@ -2777,7 +2788,7 @@ d3 = function() {
27772788 function insidePolygon ( p ) {
27782789 var wn = 0 , n = polygon . length , y = p [ 1 ] ;
27792790 for ( var i = 0 ; i < n ; ++ i ) {
2780- for ( var j = 1 , v = polygon [ i ] , m = v . length , a = v [ 0 ] ; j < m ; ++ j ) {
2791+ for ( var j = 1 , v = polygon [ i ] , m = v . length , a = v [ 0 ] , b ; j < m ; ++ j ) {
27812792 b = v [ j ] ;
27822793 if ( a [ 1 ] <= y ) {
27832794 if ( b [ 1 ] > y && isLeft ( a , b , p ) > 0 ) ++ wn ;
@@ -8550,31 +8561,25 @@ d3 = function() {
85508561 d3 . time . scale . utc = function ( ) {
85518562 return d3_time_scale ( d3 . scale . linear ( ) , d3_time_scaleUTCMethods , d3_time_scaleUTCFormat ) ;
85528563 } ;
8553- d3 . text = function ( ) {
8554- return d3 . xhr . apply ( d3 , arguments ) . response ( d3_text ) ;
8555- } ;
8556- function d3_text ( request ) {
8564+ d3 . text = d3_xhrType ( function ( request ) {
85578565 return request . responseText ;
8558- }
8566+ } ) ;
85598567 d3 . json = function ( url , callback ) {
8560- return d3 . xhr ( url , "application/json" , callback ) . response ( d3_json ) ;
8568+ return d3_xhr ( url , "application/json" , d3_json , callback ) ;
85618569 } ;
85628570 function d3_json ( request ) {
85638571 return JSON . parse ( request . responseText ) ;
85648572 }
85658573 d3 . html = function ( url , callback ) {
8566- return d3 . xhr ( url , "text/html" , callback ) . response ( d3_html ) ;
8574+ return d3_xhr ( url , "text/html" , d3_html , callback ) ;
85678575 } ;
85688576 function d3_html ( request ) {
85698577 var range = d3_document . createRange ( ) ;
85708578 range . selectNode ( d3_document . body ) ;
85718579 return range . createContextualFragment ( request . responseText ) ;
85728580 }
8573- d3 . xml = function ( ) {
8574- return d3 . xhr . apply ( d3 , arguments ) . response ( d3_xml ) ;
8575- } ;
8576- function d3_xml ( request ) {
8581+ d3 . xml = d3_xhrType ( function ( request ) {
85778582 return request . responseXML ;
8578- }
8583+ } ) ;
85798584 return d3 ;
85808585} ( ) ;
0 commit comments