diff --git a/Makefile b/Makefile index 158d7f2d..7470a28a 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,7 @@ SRC_FILES = \ src/start.js \ src/array.js \ src/blend.js \ + src/call.js \ src/range.js \ src/ns.js \ src/dispatch.js \ diff --git a/d3.js b/d3.js index 6099a323..f8e2ce09 100644 --- a/d3.js +++ b/d3.js @@ -8,13 +8,19 @@ if (!Object.create) Object.create = function(o) { }; (function(_) { var d3 = _.d3 = {}; - d3.version = "0.1.0"; // semver + d3.version = "0.1.1"; // semver function d3_array(psuedoarray) { return Array.prototype.slice.call(psuedoarray); } function d3_blend(arrays) { return Array.prototype.concat.apply([], arrays); } +function d3_call(callback, var_args) { + var_args = d3_array(arguments); + var_args[0] = this; + callback.apply(this, var_args); + return this; +} /** * @param {number} start * @param {number=} stop @@ -1155,6 +1161,35 @@ function d3_selection(groups) { ? styleFunction : styleConstant)); }; + groups.property = function(name, value) { + name = d3.ns.qualify(name); + + // If no value is specified, return the first value. + if (arguments.length < 2) { + return first(function() { + return this[name]; + }); + } + + function propertyNull() { + delete this[name]; + } + + function propertyConstant() { + this[name] = value; + } + + function propertyFunction() { + var x = value.apply(this, arguments); + if (x == null) delete this[name]; + else this[name] = x; + } + + return groups.each(value == null + ? propertyNull : (typeof value == "function" + ? propertyFunction : propertyConstant)); + }; + groups.text = function(value) { // If no value is specified, return the first value. @@ -1252,6 +1287,8 @@ function d3_selection(groups) { return d3_transition(groups, name); }; + groups.call = d3_call; + return groups; } @@ -1414,6 +1451,8 @@ function d3_transition(groups, name) { return transition; }; + transition.call = d3_call; + return transition.delay(0).duration(250); } var d3_timer_queue = null, diff --git a/d3.min.js b/d3.min.js index 85bb701f..96a1a793 100644 --- a/d3.min.js +++ b/d3.min.js @@ -1,41 +1,42 @@ -if(!Date.now)Date.now=function(){return+new Date};if(!Object.create)Object.create=function(I){function E(){}E.prototype=I;return new E}; -(function(I){function E(){var a={},c=[];a.add=function(e){for(var f=0;f360)h-=360;else if(h<0)h+=360;if(h<60)return d+(b-d)*h/60;if(h<180)return b;if(h<240)return d+ -(b-d)*(240-h)/60;return d}var d,b;a%=360;if(a<0)a+=360;c=c<0?0:c>1?1:c;e=e<0?0:e>1?1:e;b=e<=0.5?e*(1+c):e+c-e*c;d=2*e-b;return{r:Math.round(f(a+120)*255),g:Math.round(f(a)*255),b:Math.round(f(a-120)*255)}}function L(a){var c=parseFloat(a);return a.charAt(a.length-1)=="%"?Math.round(c*2.55):c}function z(a){function c(d){for(var b=[],h,i,g,n,o=0,j=a.length;o=1)q=1;else{k=false;if(q<0)return;if(!h[p]){h[p]=1;b.start.dispatch.apply(this, -arguments)}}var v=o(q),m;for(m in d)d[m].call(this,v,p);if(q==1){h[p]=2;b.end.dispatch.apply(this,arguments)}}});return k}var f={},d={},b=l.dispatch("start","end"),h=[],i=[],g=[],n,o=l.ease("cubic-in-out");f.delay=function(j){var k=Infinity,p=-1;if(typeof j=="function")a.each(function(){var q=i[++p]=+j.apply(this,arguments);if(qn)n=p})}else{n=+j;a.each(function(){g[++k]=n})}return f};f.ease=function(j){o=typeof j=="string"?l.ease(j):j;return f};f.attrTween=function(j,k){function p(r,t){s[++A]=k.call(this,r,t,this.getAttribute(j))}function q(r,t){s[++A]=k.call(this,r,t,this.getAttributeNS(j.space,j.local))}function v(r,t){this.setAttribute(j,s[t](r))}function m(r,t){this.setAttributeNS(j.space,j.local,s[t](r))}var s=[],A=-1;j=l.ns.qualify(j);a.each(j.local?q:p);d["attr."+j]=j.local?m:v;return f};f.attr=function(j, -k){return f.attrTween(j,T(k))};f.styleTween=function(j,k,p){var q=[],v=-1;a.each(function(m,s){q[++v]=k.call(this,m,s,window.getComputedStyle(this,null).getPropertyValue(j))});d["style."+j]=function(m,s){this.style.setProperty(j,q[s](m),p)};return f};f.style=function(j,k,p){return f.styleTween(j,T(k),p)};f.select=function(j){var k;j=M(a.select(j),c).ease(o);k=-1;j.delay(function(){return i[++k]});k=-1;j.duration(function(){return g[++k]});return j};f.selectAll=function(j){var k;j=M(a.selectAll(j), -c).ease(o);k=-1;j.delay(function(p,q){return i[q?k:++k]});k=-1;j.duration(function(p,q){return g[q?k:++k]});return j};f.each=function(j,k){b[j].add(k);return f};return f.delay(0).duration(250)}function aa(a,c){for(var e=Date.now(),f=false,d=e+c,b=D;b;){if(b.callback==a){b.then=e;b.delay=c;f=true}else{var h=b.then+b.delay;if(he.delay)e.flush=e.callback(a);e=e.next}a=null;for(c=D;c;)c=c.flush?a?a.next=c.next:D=c.next:(a=c).next;a||(G=clearInterval(G))}function T(a){return typeof a=="function"?function(c,e,f){return l.interpolate(f,a.call(this,c,e))}:function(c,e,f){return l.interpolate(f,a)}}var l=I.d3={};l.version="0.1.0";l.range=function(a,c,e){if(arguments.length==1){c=a;a=0}if(e==null)e=1;if((c-a)/e==Infinity)throw Error("infinite range");var f=[],d=-1,b;if(e<0)for(;(b=a+e*++d)> -c;)f.push(b);else for(;(b=a+e*++d)=0?i.substring(g):(g=i.length,""),o=[];g>0;)o.push(i.substring(g-=3,g+3));i=o.reverse().join(",")+n}g=i.length;if(g=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/,ea=J(2),fa=J(3),ga={linear:function(){return U}, -poly:J,quad:function(){return ea},cubic:function(){return fa},sin:function(){return V},exp:function(){return W},circle:function(){return X},elastic:function(a,c){var e;if(arguments.length<2)c=0.45;if(arguments.length<1){a=1;e=c/4}else e=c/(2*Math.PI)*Math.asin(1/a);return function(f){return 1+a*Math.pow(2,10*-f)*Math.sin(-(f+e)*2*Math.PI/c)}},back:function(a){a||(a=1.70158);return function(c){return c*c*((a+1)*c-a)}},bounce:function(){return Y}},ha={"in":function(a){return a},out:Q,"in-out":R,"out-int":function(a){return R(Q(a))}}; -l.ease=function(a){var c=a.indexOf("-"),e=c>=0?a.substring(0,c):a;c=c>=0?a.substring(c+1):"in";return ha[c](ga[e].apply(null,Array.prototype.slice.call(arguments,1)))};l.event=null;l.interpolate=function(a,c){if(typeof c=="number")return l.interpolateNumber(+a,c);if(typeof c=="string")return c in B||/^(#|rgb\(|hsl\()/.test(c)?l.interpolateRgb(String(a),c):l.interpolateString(String(a),c);if(c instanceof Array)return l.interpolateArray(a,c);return l.interpolateObject(a,c)};l.interpolateNumber=function(a, -c){c-=a;return function(e){return a+c*e}};l.interpolateString=function(a,c){var e,f,d=0,b=[],h=[],i,g;for(f=0;e=O.exec(c);++f){e.index&&b.push(c.substring(d,e.index));h.push({i:b.length,x:e[0]});b.push(null);d=O.lastIndex}d360)h-=360;else if(h<0)h+=360;if(h<60)return d+(b-d)*h/60;if(h<180)return b;if(h<240)return d+(b-d)*(240-h)/60;return d}var d,b;a%=360;if(a<0)a+=360;c=c<0?0:c>1?1:c;e=e<0?0:e>1?1:e;b=e<=0.5?e*(1+c):e+c-e*c;d=2*e-b;return{r:Math.round(f(a+120)*255),g:Math.round(f(a)*255),b:Math.round(f(a-120)*255)}}function L(a){var c=parseFloat(a);return a.charAt(a.length-1)=="%"?Math.round(c*2.55):c}function z(a){function c(d){for(var b=[],h,i,g,m,o=0,j=a.length;o=1)q=1;else{l=false;if(q<0)return;if(!h[p]){h[p]=1;b.start.dispatch.apply(this,arguments)}}var v=o(q),n;for(n in d)d[n].call(this,v,p);if(q==1){h[p]=2;b.end.dispatch.apply(this, +arguments)}}});return l}var f={},d={},b=k.dispatch("start","end"),h=[],i=[],g=[],m,o=k.ease("cubic-in-out");f.delay=function(j){var l=Infinity,p=-1;if(typeof j=="function")a.each(function(){var q=i[++p]=+j.apply(this,arguments);if(qm)m=p})}else{m=+j;a.each(function(){g[++l]=m})}return f};f.ease=function(j){o=typeof j== +"string"?k.ease(j):j;return f};f.attrTween=function(j,l){function p(r,t){s[++A]=l.call(this,r,t,this.getAttribute(j))}function q(r,t){s[++A]=l.call(this,r,t,this.getAttributeNS(j.space,j.local))}function v(r,t){this.setAttribute(j,s[t](r))}function n(r,t){this.setAttributeNS(j.space,j.local,s[t](r))}var s=[],A=-1;j=k.ns.qualify(j);a.each(j.local?q:p);d["attr."+j]=j.local?n:v;return f};f.attr=function(j,l){return f.attrTween(j,U(l))};f.styleTween=function(j,l,p){var q=[],v=-1;a.each(function(n,s){q[++v]= +l.call(this,n,s,window.getComputedStyle(this,null).getPropertyValue(j))});d["style."+j]=function(n,s){this.style.setProperty(j,q[s](n),p)};return f};f.style=function(j,l,p){return f.styleTween(j,U(l),p)};f.select=function(j){var l;j=M(a.select(j),c).ease(o);l=-1;j.delay(function(){return i[++l]});l=-1;j.duration(function(){return g[++l]});return j};f.selectAll=function(j){var l;j=M(a.selectAll(j),c).ease(o);l=-1;j.delay(function(p,q){return i[q?l:++l]});l=-1;j.duration(function(p,q){return g[q?l: +++l]});return j};f.each=function(j,l){b[j].add(l);return f};f.call=Q;return f.delay(0).duration(250)}function ca(a,c){for(var e=Date.now(),f=false,d=e+c,b=E;b;){if(b.callback==a){b.then=e;b.delay=c;f=true}else{var h=b.then+b.delay;if(he.delay)e.flush=e.callback(a);e=e.next}a=null;for(c= +E;c;)c=c.flush?a?a.next=c.next:E=c.next:(a=c).next;a||(G=clearInterval(G))}function U(a){return typeof a=="function"?function(c,e,f){return k.interpolate(f,a.call(this,c,e))}:function(c,e,f){return k.interpolate(f,a)}}var k=I.d3={};k.version="0.1.1";k.range=function(a,c,e){if(arguments.length==1){c=a;a=0}if(e==null)e=1;if((c-a)/e==Infinity)throw Error("infinite range");var f=[],d=-1,b;if(e<0)for(;(b=a+e*++d)>c;)f.push(b);else for(;(b=a+e*++d)=0?i.substring(g):(g=i.length,""),o=[];g>0;)o.push(i.substring(g-=3,g+3));i=o.reverse().join(",")+m}g=i.length;if(g=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/,ga=J(2),ha=J(3),ia={linear:function(){return W},poly:J,quad:function(){return ga},cubic:function(){return ha},sin:function(){return X},exp:function(){return Y}, +circle:function(){return Z},elastic:function(a,c){var e;if(arguments.length<2)c=0.45;if(arguments.length<1){a=1;e=c/4}else e=c/(2*Math.PI)*Math.asin(1/a);return function(f){return 1+a*Math.pow(2,10*-f)*Math.sin(-(f+e)*2*Math.PI/c)}},back:function(a){a||(a=1.70158);return function(c){return c*c*((a+1)*c-a)}},bounce:function(){return $}},ja={"in":function(a){return a},out:R,"in-out":S,"out-int":function(a){return S(R(a))}};k.ease=function(a){var c=a.indexOf("-"),e=c>=0?a.substring(0,c):a;c=c>=0?a.substring(c+ +1):"in";return ja[c](ia[e].apply(null,Array.prototype.slice.call(arguments,1)))};k.event=null;k.interpolate=function(a,c){if(typeof c=="number")return k.interpolateNumber(+a,c);if(typeof c=="string")return c in C||/^(#|rgb\(|hsl\()/.test(c)?k.interpolateRgb(String(a),c):k.interpolateString(String(a),c);if(c instanceof Array)return k.interpolateArray(a,c);return k.interpolateObject(a,c)};k.interpolateNumber=function(a,c){c-=a;return function(e){return a+c*e}};k.interpolateString=function(a,c){var e, +f,d=0,b=[],h=[],i,g;for(f=0;e=O.exec(c);++f){e.index&&b.push(c.substring(d,e.index));h.push({i:b.length,x:e[0]});b.push(null);d=O.lastIndex}d