UNPKG

highcharts

Version:
45 lines (42 loc) 17.7 kB
/* Highcharts JS v9.0.1 (2021-02-15) Marker clusters module for Highcharts (c) 2010-2021 Wojciech Chmiel License: www.highcharts.com/license */ (function(n){"object"===typeof module&&module.exports?(n["default"]=n,module.exports=n):"function"===typeof define&&define.amd?define("highcharts/modules/marker-clusters",["highcharts"],function(w){n(w);n.Highcharts=w;return n}):n("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(n){function w(n,w,G,H){n.hasOwnProperty(w)||(n[w]=H.apply(null,G))}n=n?n._modules:{};w(n,"Extensions/MarkerClusters.js",[n["Core/Animation/AnimationUtilities.js"],n["Core/Chart/Chart.js"],n["Core/Options.js"], n["Core/Color/Palette.js"],n["Core/Series/Point.js"],n["Core/Series/Series.js"],n["Core/Series/SeriesRegistry.js"],n["Core/Renderer/SVG/SVGRenderer.js"],n["Core/Utilities.js"],n["Core/Axis/Axis.js"]],function(n,w,G,H,P,J,K,aa,m,ba){function I(a){var b=a.length,e=0,f=0,c;for(c=0;c<b;c++)e+=a[c].x,f+=a[c].y;return{x:e/b,y:f/b}}function Q(a,b){var e=[];e.length=b;a.clusters.forEach(function(a){a.data.forEach(function(a){e[a.dataIndex]=a})});a.noise.forEach(function(a){e[a.data[0].dataIndex]=a.data[0]}); return e}function R(a,b,e,f,c){a.point&&(f&&a.point.graphic&&(a.point.graphic.show(),a.point.graphic.attr({opacity:b}).animate({opacity:1},e)),c&&a.point.dataLabel&&(a.point.dataLabel.show(),a.point.dataLabel.attr({opacity:b}).animate({opacity:1},e)))}function S(a,b,e){a.point&&(b&&a.point.graphic&&a.point.graphic.hide(),e&&a.point.dataLabel&&a.point.dataLabel.hide())}function ca(a){a&&T(a,function(a){a.point&&a.point.destroy&&a.point.destroy()})}function L(a,b,e,f){R(a,f,e,!0,!0);b.forEach(function(a){a.point&& a.point.destroy&&a.point.destroy()})}var U=n.animObject;n=G.defaultOptions;K=K.seriesTypes;var z=m.addEvent,A=m.defined,V=m.error,W=m.isArray,M=m.isFunction,N=m.isObject,D=m.isNumber,O=m.merge,T=m.objectEach,X=m.relativeLength,E=m.syncTimeout;"";m=K.scatter;var Y=J.prototype.generatePoints,Z=0,F=[],B={enabled:!1,allowOverlap:!0,animation:{duration:500},drillToCluster:!0,minimumClusterSize:2,layoutAlgorithm:{gridSize:50,distance:40,kmeansThreshold:100},marker:{symbol:"cluster",radius:15,lineWidth:0, lineColor:H.backgroundColor},dataLabels:{enabled:!0,format:"{point.clusterPointsAmount}",verticalAlign:"middle",align:"center",style:{color:"contrast"},inside:!0}};(n.plotOptions||{}).series=O((n.plotOptions||{}).series,{cluster:B,tooltip:{clusterFormat:"<span>Clustered points: {point.clusterPointsAmount}</span><br/>"}});aa.prototype.symbols.cluster=function(a,b,e,f){e/=2;f/=2;var c=this.arc(a+e,b+f,e-4,f-4,{start:.5*Math.PI,end:2.5*Math.PI,open:!1});var k=this.arc(a+e,b+f,e-3,f-3,{start:.5*Math.PI, end:2.5*Math.PI,innerR:e-2,open:!1});return this.arc(a+e,b+f,e-1,f-1,{start:.5*Math.PI,end:2.5*Math.PI,innerR:e,open:!1}).concat(k,c)};m.prototype.animateClusterPoint=function(a){var b=this.xAxis,e=this.yAxis,f=this.chart,c=U((this.options.cluster||{}).animation),k=c.duration||500,h=(this.markerClusterInfo||{}).pointsState,p=(h||{}).newState,v=(h||{}).oldState,g=[],l=h=0,r=0,t=!1,u=!1;if(v&&p){var d=p[a.stateId];l=b.toPixels(d.x)-f.plotLeft;r=e.toPixels(d.y)-f.plotTop;if(1===d.parentsId.length){a= (p||{})[a.stateId].parentsId[0];var q=v[a];d.point&&d.point.graphic&&q&&q.point&&q.point.plotX&&q.point.plotY&&q.point.plotX!==d.point.plotX&&q.point.plotY!==d.point.plotY&&(a=d.point.graphic.getBBox(),h=d.point.graphic&&d.point.graphic.isImg?0:a.width/2,d.point.graphic.attr({x:q.point.plotX-h,y:q.point.plotY-h}),d.point.graphic.animate({x:l-(d.point.graphic.radius||0),y:r-(d.point.graphic.radius||0)},c,function(){u=!0;q.point&&q.point.destroy&&q.point.destroy()}),d.point.dataLabel&&d.point.dataLabel.alignAttr&& q.point.dataLabel&&q.point.dataLabel.alignAttr&&(d.point.dataLabel.attr({x:q.point.dataLabel.alignAttr.x,y:q.point.dataLabel.alignAttr.y}),d.point.dataLabel.animate({x:d.point.dataLabel.alignAttr.x,y:d.point.dataLabel.alignAttr.y},c)))}else 0===d.parentsId.length?(S(d,!0,!0),E(function(){R(d,.1,c,!0,!0)},k/2)):(S(d,!0,!0),d.parentsId.forEach(function(a){v&&v[a]&&(q=v[a],g.push(q),q.point&&q.point.graphic&&(t=!0,q.point.graphic.show(),q.point.graphic.animate({x:l-(q.point.graphic.radius||0),y:r-(q.point.graphic.radius|| 0),opacity:.4},c,function(){u=!0;L(d,g,c,.7)}),q.point.dataLabel&&-9999!==q.point.dataLabel.y&&d.point&&d.point.dataLabel&&d.point.dataLabel.alignAttr&&(q.point.dataLabel.show(),q.point.dataLabel.animate({x:d.point.dataLabel.alignAttr.x,y:d.point.dataLabel.alignAttr.y,opacity:.4},c))))}),E(function(){u||L(d,g,c,.85)},k),t||E(function(){L(d,g,c,.1)},k/2))}};m.prototype.getGridOffset=function(){var a=this.chart,b=this.xAxis,e=this.yAxis;b=this.dataMinX&&this.dataMaxX?b.reversed?b.toPixels(this.dataMaxX): b.toPixels(this.dataMinX):a.plotLeft;a=this.dataMinY&&this.dataMaxY?e.reversed?e.toPixels(this.dataMinY):e.toPixels(this.dataMaxY):a.plotTop;return{plotLeft:b,plotTop:a}};m.prototype.getScaledGridSize=function(a){var b=this.xAxis,e=!0,f=1,c=1;a=a.processedGridSize||B.layoutAlgorithm.gridSize;this.gridValueSize||(this.gridValueSize=Math.abs(b.toValue(a)-b.toValue(0)));b=b.toPixels(this.gridValueSize)-b.toPixels(0);for(b=+(a/b).toFixed(14);e&&1!==b;){var k=Math.pow(2,f);.75<b&&1.25>b?e=!1:b>=1/k&&b< 1/k*2?(e=!1,c=k):b<=k&&b>k/2&&(e=!1,c=1/k);f++}return a/c/b};m.prototype.getRealExtremes=function(){var a=this.chart,b=this.xAxis,e=this.yAxis;var f=b?b.toValue(a.plotLeft):0;b=b?b.toValue(a.plotLeft+a.plotWidth):0;var c=e?e.toValue(a.plotTop):0;a=e?e.toValue(a.plotTop+a.plotHeight):0;f>b&&(f=[f,b],b=f[0],f=f[1]);c>a&&(c=[c,a],a=c[0],c=c[1]);return{minX:f,maxX:b,minY:c,maxY:a}};m.prototype.onDrillToCluster=function(a){(a.point||a.target).firePointEvent("drillToCluster",a,function(a){var b=a.point|| a.target,f=b.series.xAxis,c=b.series.yAxis,k=b.series.chart;if((b.series.options.cluster||{}).drillToCluster&&b.clusteredData){var h=b.clusteredData.map(function(a){return a.x}).sort(function(a,b){return a-b});var p=b.clusteredData.map(function(a){return a.y}).sort(function(a,b){return a-b});b=h[0];var v=h[h.length-1];h=p[0];var g=p[p.length-1];p=Math.abs(.1*(v-b));var l=Math.abs(.1*(g-h));k.pointer.zoomX=!0;k.pointer.zoomY=!0;b>v&&(v=[v,b],b=v[0],v=v[1]);h>g&&(g=[g,h],h=g[0],g=g[1]);k.zoom({originalEvent:a, xAxis:[{axis:f,min:b-p,max:v+p}],yAxis:[{axis:c,min:h-l,max:g+l}]})}})};m.prototype.getClusterDistancesFromPoint=function(a,b,e){var f=this.xAxis,c=this.yAxis,k=[],h;for(h=0;h<a.length;h++){var p=Math.sqrt(Math.pow(f.toPixels(b)-f.toPixels(a[h].posX),2)+Math.pow(c.toPixels(e)-c.toPixels(a[h].posY),2));k.push({clusterIndex:h,distance:p})}return k.sort(function(a,b){return a.distance-b.distance})};m.prototype.getPointsState=function(a,b,e){b=b?Q(b,e):[];e=Q(a,e);var f={},c;F=[];a.clusters.forEach(function(a){f[a.stateId]= {x:a.x,y:a.y,id:a.stateId,point:a.point,parentsId:[]}});a.noise.forEach(function(a){f[a.stateId]={x:a.x,y:a.y,id:a.stateId,point:a.point,parentsId:[]}});for(c=0;c<e.length;c++){a=e[c];var k=b[c];a&&k&&a.parentStateId&&k.parentStateId&&f[a.parentStateId]&&-1===f[a.parentStateId].parentsId.indexOf(k.parentStateId)&&(f[a.parentStateId].parentsId.push(k.parentStateId),-1===F.indexOf(k.parentStateId)&&F.push(k.parentStateId))}return f};m.prototype.markerClusterAlgorithms={grid:function(a,b,e,f){var c= this.xAxis,k=this.yAxis,h={},p=this.getGridOffset(),v;f=this.getScaledGridSize(f);for(v=0;v<a.length;v++){var g=c.toPixels(a[v])-p.plotLeft;var l=k.toPixels(b[v])-p.plotTop;g=Math.floor(g/f);l=Math.floor(l/f);l=l+"-"+g;h[l]||(h[l]=[]);h[l].push({dataIndex:e[v],x:a[v],y:b[v]})}return h},kmeans:function(a,b,e,f){var c=[],k=[],h={},p=f.processedDistance||B.layoutAlgorithm.distance,v=f.iterations,g=0,l=!0,r=0,t=0;var u=[];var d;f.processedGridSize=f.processedDistance;r=this.markerClusterAlgorithms?this.markerClusterAlgorithms.grid.call(this, a,b,e,f):{};for(d in r)1<r[d].length&&(u=I(r[d]),c.push({posX:u.x,posY:u.y,oldX:0,oldY:0,startPointsLen:r[d].length,points:[]}));for(;l;){c.map(function(a){a.points.length=0;return a});for(l=k.length=0;l<a.length;l++)r=a[l],t=b[l],u=this.getClusterDistancesFromPoint(c,r,t),u.length&&u[0].distance<p?c[u[0].clusterIndex].points.push({x:r,y:t,dataIndex:e[l]}):k.push({x:r,y:t,dataIndex:e[l]});for(d=0;d<c.length;d++)1===c[d].points.length&&(u=this.getClusterDistancesFromPoint(c,c[d].points[0].x,c[d].points[0].y), u[1].distance<p&&(c[u[1].clusterIndex].points.push(c[d].points[0]),c[u[0].clusterIndex].points.length=0));l=!1;for(d=0;d<c.length;d++)if(u=I(c[d].points),c[d].oldX=c[d].posX,c[d].oldY=c[d].posY,c[d].posX=u.x,c[d].posY=u.y,c[d].posX>c[d].oldX+1||c[d].posX<c[d].oldX-1||c[d].posY>c[d].oldY+1||c[d].posY<c[d].oldY-1)l=!0;v&&(l=g<v-1);g++}c.forEach(function(a,b){h["cluster"+b]=a.points});k.forEach(function(a,b){h["noise"+b]=[a]});return h},optimizedKmeans:function(a,b,e,f){var c=this.xAxis,k=this.yAxis, h=f.processedDistance||B.layoutAlgorithm.gridSize,p={},v=this.getRealExtremes(),g=(this.options.cluster||{}).marker,l,r,t;!this.markerClusterInfo||this.initMaxX&&this.initMaxX<v.maxX||this.initMinX&&this.initMinX>v.minX||this.initMaxY&&this.initMaxY<v.maxY||this.initMinY&&this.initMinY>v.minY?(this.initMaxX=v.maxX,this.initMinX=v.minX,this.initMaxY=v.maxY,this.initMinY=v.minY,p=this.markerClusterAlgorithms?this.markerClusterAlgorithms.kmeans.call(this,a,b,e,f):{},this.baseClusters=null):(this.baseClusters|| (this.baseClusters={clusters:this.markerClusterInfo.clusters,noise:this.markerClusterInfo.noise}),this.baseClusters.clusters.forEach(function(a){a.pointsOutside=[];a.pointsInside=[];a.data.forEach(function(b){r=Math.sqrt(Math.pow(c.toPixels(b.x)-c.toPixels(a.x),2)+Math.pow(k.toPixels(b.y)-k.toPixels(a.y),2));t=a.clusterZone&&a.clusterZone.marker&&a.clusterZone.marker.radius?a.clusterZone.marker.radius:g&&g.radius?g.radius:B.marker.radius;l=0<=h-t?h-t:t;r>t+l&&A(a.pointsOutside)?a.pointsOutside.push(b): A(a.pointsInside)&&a.pointsInside.push(b)});a.pointsInside.length&&(p[a.id]=a.pointsInside);a.pointsOutside.forEach(function(b,f){p[a.id+"_noise"+f]=[b]})}),this.baseClusters.noise.forEach(function(a){p[a.id]=a.data}));return p}};m.prototype.preventClusterCollisions=function(a){var b=this.xAxis,e=this.yAxis,f=a.key.split("-").map(parseFloat),c=f[0],k=f[1],h=a.gridSize,p=a.groupedData,v=a.defaultRadius,g=a.clusterRadius,l=k*h,r=c*h,t=b.toPixels(a.x),u=e.toPixels(a.y);f=[];var d=0,q=0,n=(this.options.cluster|| {}).marker,m=(this.options.cluster||{}).zones,w=this.getGridOffset(),z,D,y,E,F,G,H;t-=w.plotLeft;u-=w.plotTop;for(y=1;5>y;y++){var C=y%2?-1:1;var x=3>y?-1:1;C=Math.floor((t+C*g)/h);x=Math.floor((u+x*g)/h);C=[x+"-"+C,x+"-"+k,c+"-"+C];for(x=0;x<C.length;x++)-1===f.indexOf(C[x])&&C[x]!==a.key&&f.push(C[x])}f.forEach(function(a){if(p[a]){p[a].posX||(G=I(p[a]),p[a].posX=G.x,p[a].posY=G.y);z=b.toPixels(p[a].posX||0)-w.plotLeft;D=e.toPixels(p[a].posY||0)-w.plotTop;var f=a.split("-").map(parseFloat);F=f[0]; E=f[1];if(m)for(d=p[a].length,y=0;y<m.length;y++)d>=m[y].from&&d<=m[y].to&&(q=A((m[y].marker||{}).radius)?m[y].marker.radius||0:n&&n.radius?n.radius:B.marker.radius);1<p[a].length&&0===q&&n&&n.radius?q=n.radius:1===p[a].length&&(q=v);H=g+q;q=0;E!==k&&Math.abs(t-z)<H&&(t=0>E-k?l+g:l+h-g);F!==c&&Math.abs(u-D)<H&&(u=0>F-c?r+g:r+h-g)}});f=b.toValue(t+w.plotLeft);x=e.toValue(u+w.plotTop);p[a.key].posX=f;p[a.key].posY=x;return{x:f,y:x}};m.prototype.isValidGroupedDataObject=function(a){var b=!1,e;if(!N(a))return!1; T(a,function(a){b=!0;if(W(a)&&a.length)for(e=0;e<a.length;e++){if(!N(a[e])||!a[e].x||!a[e].y){b=!1;break}}else b=!1});return b};m.prototype.getClusteredData=function(a,b){var e=[],f=[],c=[],k=[],h=[],p=0,v=Math.max(2,b.minimumClusterSize||2),g,l;if(M(b.layoutAlgorithm.type)&&!this.isValidGroupedDataObject(a))return V("Highcharts marker-clusters module: The custom algorithm result is not valid!",!1,this.chart),!1;for(l in a)if(a[l].length>=v){var r=a[l];var t=Math.random().toString(36).substring(2, 7)+"-"+Z++;var u=r.length;if(b.zones)for(g=0;g<b.zones.length;g++)if(u>=b.zones[g].from&&u<=b.zones[g].to){var d=b.zones[g];d.zoneIndex=g;var q=b.zones[g].marker;var n=b.zones[g].className}var m=I(r);"grid"!==b.layoutAlgorithm.type||b.allowOverlap?m={x:m.x,y:m.y}:(g=this.options.marker||{},m=this.preventClusterCollisions({x:m.x,y:m.y,key:l,groupedData:a,gridSize:this.getScaledGridSize(b.layoutAlgorithm),defaultRadius:g.radius||3+(g.lineWidth||0),clusterRadius:q&&q.radius?q.radius:(b.marker||{}).radius|| B.marker.radius}));for(g=0;g<u;g++)r[g].parentStateId=t;c.push({x:m.x,y:m.y,id:l,stateId:t,index:p,data:r,clusterZone:d,clusterZoneClassName:n});e.push(m.x);f.push(m.y);h.push({options:{formatPrefix:"cluster",dataLabels:b.dataLabels,marker:O(b.marker,{states:b.states},q||{})}});if(this.options.data&&this.options.data.length)for(g=0;g<u;g++)N(this.options.data[r[g].dataIndex])&&(r[g].options=this.options.data[r[g].dataIndex]);p++;q=null}else for(g=0;g<a[l].length;g++)r=a[l][g],t=Math.random().toString(36).substring(2, 7)+"-"+Z++,u=((this.options||{}).data||[])[r.dataIndex],e.push(r.x),f.push(r.y),r.parentStateId=t,k.push({x:r.x,y:r.y,id:l,stateId:t,index:p,data:a[l]}),t=u&&"object"===typeof u&&!W(u)?O(u,{x:r.x,y:r.y}):{userOptions:u,x:r.x,y:r.y},h.push({options:t}),p++;return{clusters:c,noise:k,groupedXData:e,groupedYData:f,groupMap:h}};m.prototype.destroyClusteredData=function(){(this.markerClusterSeriesData||[]).forEach(function(a){a&&a.destroy&&a.destroy()});this.markerClusterSeriesData=null};m.prototype.hideClusteredData= function(){var a=this.markerClusterSeriesData,b=((this.markerClusterInfo||{}).pointsState||{}).oldState||{},e=F.map(function(a){return(b[a].point||{}).id||""});(a||[]).forEach(function(a){a&&-1!==e.indexOf(a.id)?(a.graphic&&a.graphic.hide(),a.dataLabel&&a.dataLabel.hide()):a&&a.destroy&&a.destroy()})};m.prototype.generatePoints=function(){var a=this,b=a.chart,e=a.xAxis,f=a.yAxis,c=a.options.cluster,k=a.getRealExtremes(),h=[],p=[],m=[],g,l,r,t;if(c&&c.enabled&&a.xData&&a.xData.length&&a.yData&&a.yData.length&& !b.polar){var u=c.layoutAlgorithm.type;var d=c.layoutAlgorithm;d.processedGridSize=X(d.gridSize||B.layoutAlgorithm.gridSize,b.plotWidth);d.processedDistance=X(d.distance||B.layoutAlgorithm.distance,b.plotWidth);b=d.kmeansThreshold||B.layoutAlgorithm.kmeansThreshold;e=Math.abs(e.toValue(d.processedGridSize/2)-e.toValue(0));f=Math.abs(f.toValue(d.processedGridSize/2)-f.toValue(0));for(t=0;t<a.xData.length;t++){if(!a.dataMaxX)if(A(q)&&A(g)&&A(n)&&A(l))D(a.yData[t])&&D(n)&&D(l)&&(q=Math.max(a.xData[t], q),g=Math.min(a.xData[t],g),n=Math.max(a.yData[t]||n,n),l=Math.min(a.yData[t]||l,l));else{var q=g=a.xData[t];var n=l=a.yData[t]}a.xData[t]>=k.minX-e&&a.xData[t]<=k.maxX+e&&(a.yData[t]||k.minY)>=k.minY-f&&(a.yData[t]||k.maxY)<=k.maxY+f&&(h.push(a.xData[t]),p.push(a.yData[t]),m.push(t))}A(q)&&A(g)&&D(n)&&D(l)&&(a.dataMaxX=q,a.dataMinX=g,a.dataMaxY=n,a.dataMinY=l);k=M(u)?u:a.markerClusterAlgorithms?u&&a.markerClusterAlgorithms[u]?a.markerClusterAlgorithms[u]:h.length<b?a.markerClusterAlgorithms.kmeans: a.markerClusterAlgorithms.grid:function(){return!1};d=(h=k.call(this,h,p,m,d))?a.getClusteredData(h,c):h;c.animation&&a.markerClusterInfo&&a.markerClusterInfo.pointsState&&a.markerClusterInfo.pointsState.oldState?(ca(a.markerClusterInfo.pointsState.oldState),h=a.markerClusterInfo.pointsState.newState):h={};p=a.xData.length;m=a.markerClusterInfo;d&&(a.processedXData=d.groupedXData,a.processedYData=d.groupedYData,a.hasGroupedData=!0,a.markerClusterInfo=d,a.groupMap=d.groupMap);Y.apply(this);d&&a.markerClusterInfo&& ((a.markerClusterInfo.clusters||[]).forEach(function(b){r=a.points[b.index];r.isCluster=!0;r.clusteredData=b.data;r.clusterPointsAmount=b.data.length;b.point=r;z(r,"click",a.onDrillToCluster)}),(a.markerClusterInfo.noise||[]).forEach(function(b){b.point=a.points[b.index]}),c.animation&&a.markerClusterInfo&&(a.markerClusterInfo.pointsState={oldState:h,newState:a.getPointsState(d,m,p)}),c.animation?this.hideClusteredData():this.destroyClusteredData(),this.markerClusterSeriesData=this.hasGroupedData? this.points:null)}else Y.apply(this)};z(w,"render",function(){(this.series||[]).forEach(function(a){if(a.markerClusterInfo){var b=((a.markerClusterInfo||{}).pointsState||{}).oldState;(a.options.cluster||{}).animation&&a.markerClusterInfo&&0===a.chart.pointer.pinchDown.length&&"pan"!==(a.xAxis.eventArgs||{}).trigger&&b&&Object.keys(b).length&&(a.markerClusterInfo.clusters.forEach(function(b){a.animateClusterPoint(b)}),a.markerClusterInfo.noise.forEach(function(b){a.animateClusterPoint(b)}))}})});z(P, "update",function(){if(this.dataGroup)return V("Highcharts marker-clusters module: Running `Point.update` when point belongs to clustered series is not supported.",!1,this.series.chart),!1});z(J,"destroy",m.prototype.destroyClusteredData);z(J,"afterRender",function(){var a=(this.options.cluster||{}).drillToCluster;this.markerClusterInfo&&this.markerClusterInfo.clusters&&this.markerClusterInfo.clusters.forEach(function(b){b.point&&b.point.graphic&&(b.point.graphic.addClass("highcharts-cluster-point"), a&&b.point&&(b.point.graphic.css({cursor:"pointer"}),b.point.dataLabel&&b.point.dataLabel.css({cursor:"pointer"})),A(b.clusterZone)&&b.point.graphic.addClass(b.clusterZoneClassName||"highcharts-cluster-zone-"+b.clusterZone.zoneIndex))})});z(P,"drillToCluster",function(a){var b=(((a.point||a.target).series.options.cluster||{}).events||{}).drillToCluster;M(b)&&b.call(this,a)});z(ba,"setExtremes",function(){var a=this.chart,b=0,e;a.series.forEach(function(a){a.markerClusterInfo&&(e=U((a.options.cluster|| {}).animation),b=e.duration||0)});E(function(){a.tooltip&&a.tooltip.destroy()},b)})});w(n,"masters/modules/marker-clusters.src.js",[],function(){})}); //# sourceMappingURL=marker-clusters.js.map