var dpl={};(function(){function t(t,e,a){return(a||Object.keys(e)).forEach(function(a){t[a]=function(){var r=e[a].apply(t,arguments);return r===e?t:r}}),t.on=function(){return e.on.apply(e,arguments),t},t}function e(e){var a={top:40,bottom:60,left:40,right:40},r=d3.dispatch("resize","render"),n="*",l=dpl.set(),c=l.scale;return t(l,r,["resize","render"]),l.g=e=d3.select(e),l.all=function(){return e.selectAll(n)},l.margin=function(t){return 0==arguments.length?a:(["left","top","right","bottom"].forEach(function(e,r){"number"==typeof t?a[e]=t:null!=t[e]?a[e]=t[e]:null!=t[r]&&(a[e]=t[r])}),l.resize(),l)},l.on("resize.frame",function(){var t=e.attr("height")||e.property("offsetHeight")||2e3,r=e.attr("width")||e.property("offsetWidth"),n=[a.top,t-a.top-a.bottom],c=[a.left,r-(a.right+a.left)];return l.scale("w").range([0,r]),l.scale("h").range([0,t]),l.scale("cw").range(c),l.scale("bw").range(c),l.scale("pw").range(c).domain(c),l.scale("ch").range(n),l.scale("bh").range(n),l.scale("ph").range(n).domain(n),l}),l.on("resize.autorange",function(){var t=c("cw").range(),e=c("ch").range();l.scale().forEach(function(a){var r=l.scale(a),n=r.rangeBands?function(t){return r.rangeBands(t,r.padding||.1)}:function(t){return r.range(t)};"x"==a[0]&&n(t),"y"==a[0]&&n([e[1],e[0]])})}),l.on("render.frame",function(t,e){l.resize();var a=l.all();(t||e)&&(a=a.transition().duration(t).delay(e)),a.call(dpl.render)}),l.add=function(t,a){return e.selectAll(".__newdata__").data(t,a).enter()},c("x"),c("y"),c("y2"),l.resize(),l}dpl.rebind=t,dpl.set=function(){function e(t,e,a){return 0==arguments.length?Object.keys(l):1==arguments.length?l[t]||(l[t]=d3.scale.linear()):(l[t]=e||l[t],a&&Object.keys(a).forEach(function(e){l[t][e]=a[e]}),n)}function a(t,a){return a=a||t,function(r){var n=e(t);return n(void 0!=r[a]?r[a]:void 0!=r[t]?r[t]:r)}}function r(t,e){return function(r){return Math.abs(a(t,e)(r)-a(t)(0))}}var n={},l={};return n.rebind=function(e){return t(n,e)},n.scale=e,["range","domain"].forEach(function(t){n[t]=function(a,r){var l=e(a);return 1==arguments.length?l[t]():(l[t](d3.functor(r)(l[t]())||l[t]()),n)}}),n.project=a,n.interval=r,n.axis=dpl.axis,n.render=dpl.render,n},dpl.axis=function(e){function a(t){var a=dpl.frame(t);if(n.scale(a.scale(e)),r){var l=a.scale(r).range();n.tickSize(Math.abs(l[1]-l[0])*("bottom"==n.orient()||"left"==n.orient()?-1:1))}return n(t)}var r,n=d3.svg.axis();return t(a,n),a.scale=function(t){return 0==arguments.length?e:(e=t,a)},a.tickScale=function(t){return 0==arguments.length?r:(r=t,a)},a},dpl.frame=function(t){return t.select&&(t=t[0][0]),"svg"!=t.tagName&&t.nearestViewportElement&&(t=t.nearestViewportElement),t.frame||(t.frame=e(t))},dpl.render=function(t){t.each&&t.each(function(){if(this.nearestViewportElement){var t=this.nearestViewportElement.frame,e=d3.select(this),a=e.datum(),r=d3.transition(e);if(a&&(a.attr&&e.attr(a.attr),a.style&&e.attr(a.style),"function"==typeof a.render&&a.render.call(e.datum(),r),"ignore"!=e.attr("data-scale"))){var n=e.attr("data-scale-x")||"x",l=e.attr("data-scale-y")||"y";if("chart"==e.attr("data-scale")&&(n="cw",l="ch"),"box"==e.attr("data-scale")&&(n="bw",l="bh"),"g"==this.tagName||"text"==this.tagName){var c=void 0!=a.x?t.project(n,"x")(a):0,i=void 0!=a.y?t.project(l,"y")(a):0;(c||i)&&r.attr("transform","translate("+c+","+i+")rotate("+(a.rotate||0)+")")}else if("path"==this.tagName)a[0]&&void 0!=a[0].y1?r.attr("d",d3.svg.area().x(t.project(n,"x")).y(t.project(l,"y1")).y0(t.project(l,"y0"))):r.attr("d",d3.svg.line().x(t.project(n,"x")).y(t.project(l,"y")).interpolate(e.attr("data-interpolate")||"linear"));else if("circle"==this.tagName)void 0!=a.x&&r.attr("cx",t.project(n,"x")),void 0!=a.y&&r.attr("cy",t.project(l,"y"));else if("rect"==this.tagName||"svg"==this.tagName){if(void 0==a.x&&void 0==a.x0)return;if(t.scale(n).rangeBands)r.attr("x",t.scale(n)(void 0!=a.x?a.x:a.x0)),r.attr("width",t.scale(n).rangeBand);else{var d=a.x0||a.x||0,o=void 0!=a.x1?a.x1:d+(a.width||a.x),s=void 0!=a.width?a.width:Math.abs(o-d);r.attr("x",t.scale(n)(d)),r.attr("width",t.interval(n)(s))}if(t.scale(l).rangeBands)r.attr("y",t.scale(l)(void 0!=a.y?a.y:a.y0)),r.attr("height",t.scale(l).rangeBand);else{var u=a.y0||0,f=void 0!=a.y1?a.y1:u+(a.height||a.y),x=void 0!=a.height?a.height:Math.abs(f-u);r.attr("y",t.scale(l)(f)),r.attr("height",t.interval(l)(x))}}else void 0!=a.x&&r.attr("x",t.project(n,"x")),void 0!=a.y&&r.attr("y",t.project(l,"y"))}}})},dpl.fitScale=function(t,e){return function(a){if(!a.empty()){var r,n,l=dpl.frame(a);if(l.scale(t).rangeBand)r=[],n=function(t,e){-1==r.indexOf(e[t])&&r.push(e[t])};else{r=[+1/0,-1/0];var c=function(t){isNaN(t)||(r[0]=Math.min(r[0],t),r[1]=Math.max(r[1],t))};n=function(t,e){e&&(e.length||(e=[e]),e.forEach(function(e){c(e[t]),c(e[t+"0"]),c(e[t+"1"]),c(e[t+"2"])}))}}return a.each(function(e){var a=d3.select(this),r=a.attr("data-scale-x"),l=a.attr("data-scale-y");(r==t||!r&&"x"==t)&&n("x",e),(l==t||!l&&"y"==t)&&n("y",e)}),e&&(r=d3.functor(e)(r)),1/0!=r[0]&&r[1]!=-1/0&&l.scale(t).domain(r),l}}};var a={chart:{x:.5,y:0,attr:{dy:"-1em","data-scale-x":"cw","data-scale-y":"ch"},style:{"text-anchor":"middle"}},x:{x:.5,y:1,attr:{dy:"0.7em","data-scale-x":"cw","data-scale-y":"bh"},style:{"text-anchor":"middle"}},y:{x:0,y:.5,rotate:-90,attr:{dy:"-0.5em","data-scale-x":"bw","data-scale-y":"ch"},style:{"text-anchor":"middle"}},y2:{x:1,y:.5,attr:{dy:"-0.5em","data-scale-x":"bw","data-scale-y":"ch"},rotate:90,style:{"text-anchor":"middle"}},y_top:{x:0,y:0,attr:{dy:"-0.7em","data-scale-x":"cw","data-scale-y":"ch"},style:{"text-anchor":"end"}},y_inside:{x:0,y:0,attr:{dy:"1em",dx:"-0.5em","data-scale":"chart"},rotate:-90,style:{"text-anchor":"end"}},y2_inside:{x:1,y:0,attr:{dy:"-0.5em",dx:"-0.5em","data-scale":"chart"},rotate:-90,style:{"text-anchor":"end"}},x_inside:{x:1,y:1,attr:{dy:"-0.5em","data-scale":"chart"},style:{"text-anchor":"end"}},y2_top:{x:1,y:0,attr:{dy:"-0.7em","data-scale-x":"cw","data-scale-y":"ch"},style:{"text-anchor":"start"}},center:{x:.5,y:.5,attr:{"data-scale-x":"cw","data-scale-y":"ch"},style:{"text-anchor":"middle"}}};Object.keys(a).forEach(function(t){a[t].id=t}),dpl.setTitle=function(t,e){return function(r){r.each(function(r,n){d3.select(this).selectAll(".title."+t).data([a[t]]).call(function(e){e.enter().append("text").attr("class","title "+t)}).text(d3.functor(e)(r,n)).call(dpl.render)})}},dpl.def||(dpl.def={}),dpl.def.axis={x:function(){return{scale:"x",tickScale:"ch",y:1,orient:"bottom",attr:{"data-scale-x":"cw","data-scale-y":"ch"}}},y:function(){return{scale:"y",tickScale:"cw",x:0,orient:"left",attr:{"data-scale-x":"cw","data-scale-y":"ch"}}},y2:function(){return{scale:"y2",x:1,orient:"right",attr:{"data-scale-x":"cw","data-scale-y":"ch"}}}},dpl.showAxes=function(t){return t=[].concat(t).map(function(t){var e=dpl.def.axis[t]();return e.render=dpl.axis(t).orient(e.orient).tickScale(e.tickScale),e}).filter(function(t){return t}),function(e){e.each(function(){d3.select(this).selectAll(".axis").data(t).call(function(t){t.exit().remove()}).enter().append("g").attr("class",function(t){return"axis "+t.scale})})}},dpl.legend=function(t){var e=5,a="dr",r=function(r){if(r&&r.each){var n={},l=t.selectAll(".legend-container").data([!0]).call(function(t){t.enter().append("g").classed("legend-container",!0)}),c=l.selectAll(".legend-box").data([!0]),i=l.selectAll(".legend-items").data([!0]);c.enter().append("rect").classed("legend-box",!0),i.enter().append("g").classed("legend-items",!0),r.each(function(){var t=d3.select(this);t.attr("data-legend")&&(n[t.attr("data-legend")]={pos:t.attr("data-legend-pos"),by:this.getBBox().y,bh:this.getBBox().height,color:void 0!=t.attr("data-legend-color")?t.attr("data-legend-color"):"none"!=t.style("fill")?t.style("fill"):t.style("stroke")})}),n=d3.entries(n).sort(function(t,e){return t.value.pos-e.value.pos||t.value.by-e.value.by||t.value.bh-e.value.bh}),i.selectAll("text").data(n,function(t){return t.key}).call(function(t){t.enter().append("text")}).call(function(t){t.exit().remove()}).attr("y",function(t,e){return e+"em"}).attr("x","1em").text(function(t){return t.key}),i.selectAll("circle").data(n,function(t){return t.key}).call(function(t){t.enter().append("circle")}).call(function(t){t.exit().remove()}).attr("cy",function(t,e){return e-.25+"em"}).attr("cx",0).attr("r","0.4em").style("fill",function(t){return t.value.color});var d=i[0][0].getBBox(),o=d.x-e,s=d.y-e,u=d.height+2*e,f=d.width+2*e;c.attr("x",o).attr("y",s).attr("height",u).attr("width",f),s=a[0]&&"u"==a[0]?-u-s:-s,o=a[1]&&"l"==a[1]?-f-o:-o,l.attr("transform","translate("+o+","+s+")")}};return r.padding=function(t){return 0==arguments.length?t:(e=t,r)},r.orient=function(t){return 0==arguments.length?t:(a=t,r)},r},dpl.bbox=function(t){var e=[1/0,-1/0],a=[1/0,-1/0];return t.each(function(){var t=this.bbox;t&&(e[0]=Min(e[0],t.x),e[1]=Max(e[1],t.x+t.width),a[0]=Min(a[0],t.y),a[1]=Max(a[1],t.y+t.width))}),{x:e,y:a}},dpl.subplot=function(t,e,a,r){var n=t.g.selectAll(".subplot").data(d3.range(e*a));return n.enter().append("svg").call(dpl.chart()).attr("class",function(t,e){return"subplot subplot"+e}),n.exit().remove(),sublots[0][r].frame},dpl.lineEdit=function(){function t(t){function a(e,a){console.log(e,a),e.x=l.scale("x").invert(d3.event.x),e.x=Math.max(e.x,t.datum()[a-1]?t.datum()[a-1].x:l.domain("x")[0]),e.x=Math.min(e.x,t.datum()[a+1]?t.datum()[a+1].x:l.domain("x")[1]),e.y=l.scale("y").invert(d3.event.y),c.call(dpl.render),d3.select(this).call(dpl.render)}function r(){i.selectAll("circle").data(Object).call(function(t){t.exit().remove()}).call(function(t){t.enter().append("circle").attr("r",d).call(e).on("mousedown.selected",function(t){n=t,r()})}).classed("selected",function(t){return t===n})}var n,l=dpl.chart(t),c=t.append("path"),i=t.append("g"),d=10;e.origin(function(t){var e={x:l.project("x")(t),y:l.project("y")(t)};return e}).on("drag.lineEdit",a),r()}var e=d3.behavior.drag();return dpl.rebind(t,e,[]),t.radius=function(e){return 0==arguments.length?radius:(radius=e,circles.selectAll("circle").attr("r",radius),t)},t.datum=function(){return datum},t},dpl.pathbox=function(t,e){var a=[],r=[];return void 0==e&&(e=2),t.forEach(function(n,l){var c,i;c=t[l-1]?{x:(n.x+t[l-1].x)/2,y:(n.y+t[l-1].y)/2}:{x:n.x,y:n.y},i=t[l+1]?{x:(t[l+1].x+n.x)/2,y:(t[l+1].y+n.y)/2}:{x:n.x,y:n.y},a.push([c,c,i,i,c]),c=t[l-1]?c.x+e:n.x-(t[l+1].x-n.x)/2+e,i=t[l+1]?i.x-e:n.x+(n.x-t[l-1].x)/2-e,r.push([{x:c,y:n.y},{x:c,y:0},{x:i,y:0},{x:i,y:n.y},{x:c,y:n.y}])}),{line:a,box:r}};var r=0,n=function(t){return[.9*t[0],1.1*t[1]]};dpl.chart=function(t){t.select||(t=d3.select(t));var e=dpl.frame(t);if(e.graph)return e;["back","cliparea","graph","overlay"].forEach(function(a){e[a]=t.append("g").classed(a,!0)}),e.showAxes=function(){return e.back.call(dpl.showAxes.apply(e,arguments)),e},e.setTitle=function(){return e.overlay.call(dpl.setTitle.apply(e,arguments)),e},e.fitScale=function(t,a){return e.all().call(dpl.fitScale(t,a)),e};var a=e.overlay.append("g").classed("legend",!0).datum({x:.05,y:.05}).attr("data-scale","chart");return r++,e.cliparea.append("clipPath").attr("id","graphClip"+r).append("rect").classed("graphClip",!0).attr("data-scale-x","cw").attr("data-scale-y","ch").datum({x0:0,x1:1,y0:1,y1:0}),e.graph.attr("clip-path","url(#graphClip"+r+")"),e.enter=function(t,a){var r=e.graph.selectAll(".__newdata__").data(t).enter();return 1==arguments.length?r:(d3.functor(a)(r),e)},e.axis=function(t,a){var t=e.back.select(".axis."+t).datum();return 1==arguments.length?t.render:(t.render=d3.functor(a)(t.render)||t.render,e)},e.tickFormat=function(t,a){return e.axis(t).tickFormat(a),e},e.on("resize.autofit",function(){var t=e.graph.selectAll(":not(.exiting)");t.call(dpl.fitScale("x")),t.call(dpl.fitScale("y",n)),t.call(dpl.fitScale("y2",n))}),e.on("resize.cliparea",function(){e.cliparea.selectAll("rect").call(dpl.render)}),e.legend=dpl.legend(a),e.on("render.autolegend",function(){var t=e.graph.selectAll("[data-legend]");return t.empty()?a.selectAll("*").remove():(t.call(e.legend),a.call(dpl.render),void 0)}),e.on("render.autobbox",function(t,a){var r=e.back[0][0].getBBox();e.scale("bw").range([r.x,r.x+r.width]),e.scale("bh").range([r.y,r.y+r.height]),e.overlay.selectAll("*").transition().duration(t).delay(a).call(dpl.render)}),e.add=e.enter,e.showAxes(["x","y"]),e},"undefined"!=typeof module&&(module.exports=dpl)})();