!function(t,e,a){"undefined"!=typeof module&&module.exports?module.exports=a():"function"==typeof define&&define.amd?define(a):e.h337=a()}(0,this,function(){var t={defaultRadius:40,defaultRenderer:"canvas2d",defaultGradient:{.25:"rgb(0,0,255)",.55:"rgb(0,255,0)",.85:"yellow",1:"rgb(255,0,0)"},defaultMaxOpacity:1,defaultMinOpacity:0,defaultBlur:.85,defaultXField:"x",defaultYField:"y",defaultValueField:"value",plugins:{}},e=function(){var e=function(t){this._coordinator={},this._data=[],this._radi=[],this._min=10,this._max=1,this._xField=t.xField||t.defaultXField,this._yField=t.yField||t.defaultYField,this._valueField=t.valueField||t.defaultValueField,this._absolute=t.absolute||!1,t.radius&&(this._cfgRadius=t.radius)},a=t.defaultRadius;return e.prototype={_organiseData:function(t,e){var i=t[this._xField],n=t[this._yField],r=this._radi,s=this._data,h=this._max,o=this._min,d=t[this._valueField]||1,l=t.radius||this._cfgRadius||a;s[i]||(s[i]=[],r[i]=[]),s[i][n]?this._absolute?s[i][n]=Math.max(s[i][n],d):s[i][n]+=d:(s[i][n]=d,r[i][n]=l);var u=s[i][n];return u>h?(e?this.setDataMax(u):this._max=u,!1):u0)for(var t=arguments[0],e=t.length;e--;)this.addData.call(this,t[e]);else{var a=this._organiseData(arguments[0],!0);a&&(0===this._data.length&&(this._min=this._max=a.value),this._coordinator.emit("renderpartial",{min:this._min,max:this._max,data:[a]}))}return this},setData:function(t){var e=t.data,a=e.length;this._data=[],this._radi=[];for(var i=0;i0&&(this._drawAlpha(t),this._colorize())},renderAll:function(t){this._clear(),t.data.length>0&&(this._drawAlpha(function(t){for(var e=[],a=t.min,i=t.max,n=t.radi,r=(t=t.data,Object.keys(t)),s=r.length;s--;)for(var h=r[s],o=Object.keys(t[h]),d=o.length;d--;){var l=o[d];e.push({x:h,y:l,value:t[h][l],radius:n[h][l]})}return{min:a,max:i,data:e}}(t)),this._colorize())},_updateGradient:function(e){this._palette=t(e)},updateConfig:function(t){t.gradient&&this._updateGradient(t),this._setStyles(t)},setDimensions:function(t,e){this._width=t,this._height=e,this.canvas.width=this.edgeCanvas.width=this.faceCanvas.width=t,this.canvas.height=this.edgeCanvas.height=this.faceCanvas.height=e},_clear:function(){this.faceCtx.clearRect(0,0,this._width,this._height),this.edgeCtx.clearRect(0,0,this._width,this._height),this.ctx.clearRect(0,0,this._width,this._height)},_setStyles:function(t){this._blur=0==t.blur?0:t.blur||t.defaultBlur,this._radius=0==t.radius?0:t.radius||t.defaultRadius,t.backgroundColor&&(this.canvas.style.backgroundColor=t.backgroundColor),this._width=this.canvas.width=this.edgeCanvas.width=this.faceCanvas.width=t.width||this._width,this._height=this.canvas.height=this.edgeCanvas.height=this.faceCanvas.height=t.height||this._height,this._opacity=255*(t.opacity||0),this._maxOpacity=255*(t.maxOpacity||t.defaultMaxOpacity),this._minOpacity=255*(t.minOpacity||t.defaultMinOpacity),this._useGradientOpacity=!!t.useGradientOpacity,this._absolute=1==t.absolute},_drawAlpha:function(t){for(var i=this._min=t.min,n=this._max=t.max,r=(t=t.data||[]).length,s=1-this._blur;r--;){var h=t[r],o=h.x,d=h.y,l=h.radius,u=Math.min(h.value,n),c=o-l,_=d-l,f=this.faceCtx,g=this.edgeCtx;this._templates[l]||(this._templates[l]={intensities:[],silhouette:a(l,s)});var m=this._templates[l].silhouette,p=(u-i)/(n-i);if(g.globalAlpha=p<.01?.01:p,this._absolute&&this._useGradientOpacity||g.drawImage(m,c,_),this._absolute){var v=Math.round(255*p);this._templates[l].intensities[v]?m=this._templates[l].intensities[v]:this._templates[l].intensities[v]=m=e(l,s,v),f.globalCompositeOperation="lighten",f.drawImage(m,c,_)}cthis._renderBoundaries[2]&&(this._renderBoundaries[2]=c+2*l),_+2*l>this._renderBoundaries[3]&&(this._renderBoundaries[3]=_+2*l)}},_colorize:function(){var t=this._renderBoundaries[0],e=this._renderBoundaries[1],a=this._renderBoundaries[2]-t,i=this._renderBoundaries[3]-e,n=this._width,r=this._height,s=this._opacity,h=this._maxOpacity,o=this._minOpacity,d=this._useGradientOpacity;t<0&&(t=0),e<0&&(e=0),t+a>n&&(a=n-t),e+i>r&&(i=r-e);var l,u=this.edgeCtx.getImageData(t,e,a,i),c=u.data,_=c.length,f=this._palette,g=this._blur,m=this._radius;if(this._absolute){var p;if(g>0){var v=document.createElement("canvas");v.width=this.faceCanvas.width,v.height=this.faceCanvas.height;var x=v.getContext("2d");x.fillStyle="rgba(0,0,0,1)",x.fillRect(0,0,this.faceCanvas.width,this.faceCanvas.height),x.globalCompositeOperation="source-over",x.filter="blur("+m*(1-g)*g+"px)",x.drawImage(this.faceCanvas,0,0),p=x.getImageData(t,e,a,i)}else p=this.faceCtx.getImageData(t,e,a,i);l=p.data}for(var y=3;y<_;y+=4){var C,D=c[y],w=4*(this._absolute?l[y-3]:D);w&&(C=s>0?s:D>0},getDataURL:function(){return this.canvas.toDataURL()}},i}(),i=function(){var e=!1;return"canvas2d"===t.defaultRenderer&&(e=a),e}(),n=function(){for(var t={},e=arguments.length,a=0;a