{"version":3,"sources":["webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/ascending.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/bisector.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/descending.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/number.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/bisect.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/blur.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/fsum.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/array.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/ticks.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/merge.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/range.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/shuffle.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/math.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/noop.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/stream.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/area.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/bounds.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/cartesian.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/centroid.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/constant.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/compose.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/rotation.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/circle.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/clip/buffer.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/pointEqual.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/clip/rejoin.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/polygonContains.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/clip/index.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/clip/antimeridian.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/clip/circle.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/clip/line.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/clip/rectangle.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/clip/extent.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/length.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/distance.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/contains.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/graticule.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/interpolate.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/path/area.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/identity.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/path/bounds.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/path/centroid.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/path/context.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/path/measure.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/path/string.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/path/index.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/transform.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/fit.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/resample.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/index.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/conic.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/conicEqualArea.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/albers.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/albersUsa.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/azimuthal.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/mercator.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/conicConformal.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/equirectangular.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/conicEquidistant.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/equalEarth.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/gnomonic.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/identity.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/naturalEarth1.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/orthographic.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/stereographic.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/transverseMercator.js","webpack:///../../../../../src/.internal/charts/map/MapSeries.ts","webpack:///../../../../../src/.internal/charts/map/MapObject.ts","webpack:///../../../../../src/.internal/charts/map/MapImage.ts","webpack:///../../../../../src/.internal/charts/map/MapUtils.ts","webpack:///../../../../../src/.internal/charts/map/MapPolygon.ts","webpack:///../../../../../src/.internal/charts/map/MapPolygonSeries.ts","webpack:///../../../../../../src/.internal/charts/map/projections/Projection.ts","webpack:///../../../../../src/.internal/charts/map/SmallMap.ts","webpack:///../../../../../src/.internal/charts/map/Geo.ts","webpack:///../../../../../src/.internal/charts/map/MapLineObject.ts","webpack:///../../../../../src/.internal/charts/map/MapImageSeries.ts","webpack:///../../../../../src/.internal/charts/map/MapLine.ts","webpack:///../../../../../src/.internal/charts/map/MapLineSeries.ts","webpack:///../../../../../src/.internal/charts/map/Graticule.ts","webpack:///../../../../../src/.internal/charts/map/GraticuleSeries.ts","webpack:///../../../../../src/.internal/charts/types/MapChart.ts","webpack:///../../../../../src/.internal/charts/map/MapSpline.ts","webpack:///../../../../../src/.internal/charts/map/MapArc.ts","webpack:///../../../../../src/.internal/charts/map/MapSplineSeries.ts","webpack:///../../../../../src/.internal/charts/map/MapArcSeries.ts","webpack:///../../../../../src/.internal/charts/map/ZoomControl.ts","webpack:///../../../../../../src/.internal/charts/map/projections/Mercator.ts","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/math.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/aitoff.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/august.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/baker.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/hammer.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/newton.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/mollweide.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/boggs.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/sinusoidal.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/bromley.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/collignon.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/craig.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/craster.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/cylindricalEqualArea.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/eckert1.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/eckert2.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/eckert3.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/eckert4.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/eckert5.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/eckert6.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/eisenlohr.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/fahey.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/foucaut.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/gingery.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/ginzburgPolyconic.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/ginzburg4.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/ginzburg5.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/ginzburg6.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/ginzburg8.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/ginzburg9.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/gringorten.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/elliptic.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/guyou.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/healpix.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/hill.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/sinuMollweide.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/homolosine.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/kavrayskiy7.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/lagrange.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/larrivee.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/laskowski.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/littrow.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/miller.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/mtFlatPolarParabolic.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/mtFlatPolarQuartic.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/mtFlatPolarSinusoidal.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/naturalEarth2.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/nellHammer.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/nicolosi.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/patterson.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/polyconic.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/polyhedral/octahedron.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/polyhedral/collignon.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/rectangularPolyconic.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/robinson.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/times.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/vanDerGrinten.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/vanDerGrinten2.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/vanDerGrinten3.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/vanDerGrinten4.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/wagner4.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/wagner6.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/wiechel.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/winkel3.js","webpack:///../../../../../../src/.internal/charts/map/projections/Miller.ts","webpack:///../../../../../../src/.internal/charts/map/projections/Eckert6.ts","webpack:///../../../../../../src/.internal/charts/map/projections/Orthographic.ts","webpack:///../../../../../../src/.internal/charts/map/projections/Stereographic.ts","webpack:///../../../../../../src/.internal/charts/map/projections/Albers.ts","webpack:///../../../../../../src/.internal/charts/map/projections/AlbersUSA.ts","webpack:///../../../../../../src/.internal/charts/map/projections/NaturalEarth1.ts","webpack:///../../../../../../src/.internal/charts/map/projections/AzimuthalEqualArea.ts","webpack:///../../../../../../src/.internal/charts/map/projections/EqualEarth.ts","webpack:///./maps.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/tinyqueue/index.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/polylabel/polylabel.js"],"names":["ascending","a","b","NaN","bisector","f","compare1","compare2","delta","left","x","lo","arguments","length","undefined","hi","mid","d","zero","center","i","right","number","ascendingBisect","Blur2","blurf","radius","blur","T","S","start","stop","step","data","rx","ry","RangeError","values","width","height","Math","floor","blurx","blury","temp","slice","blurh","blurv","w","h","y","n","radius0","sum","s","j","min","max","bluri","t","s0","s1","Adder","_classCallCheck","this","_partials","Float64Array","_n","_createClass","key","value","p","abs","array","Array","prototype","map","sqrt","merge__regeneratorRuntime","exports","Op","Object","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","obj","defineProperty","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","state","method","arg","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","type","done","fn","call","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","forEach","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","resolve","reject","invoke","result","merge__typeof","__await","then","unwrapped","error","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","object","reverse","pop","skipTempReset","prev","charAt","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","merge__marked","flatten","merge__createForOfIteratorHelper","o","allowArrayLike","it","isArray","minLen","merge__arrayLikeToArray","toString","from","test","merge__unsupportedIterableToArray","F","e","_e","normalCompletion","didErr","_e2","arr","len","arr2","arrays","_iterator","_step","_context","t1","merge","range","ceil","random","epsilon","epsilon2","pi","PI","halfPi","quarterPi","tau","degrees","radians","atan","atan2","cos","exp","hypot","log","pow","sin","sign","tan","acos","asin","haversin","noop","streamGeometry","geometry","stream","streamGeometryType","streamObjectType","Feature","FeatureCollection","features","Sphere","sphere","Point","coordinates","point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","lambda00","phi00","lambda0","cosPhi0","sinPhi0","src_stream","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","add","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","k","u","v","phi0","lambda1","phi1","lambda2","p0","deltaSum","ranges","src_area","spherical","cartesian","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","l","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","linePoint","normal","inflection","phii","lambdai","antimeridian","angle","rangeCompare","rangeContains","W0","W1","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","x0","y0","z0","src_bounds","feature","merged","deltaMax","Infinity","sort","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","z","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cx","cy","cz","m","centroid","src_constant","compose","invert","rotationIdentity","round","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","src_rotation","rotate","forward","circleStream","direction","t0","cosRadius","sinRadius","circleRadius","src_circle","ring","constant","precision","circle","c","apply","r","_","buffer","line","lines","rejoin","concat","shift","pointEqual","Intersection","points","other","segments","compareIntersection","startInside","interpolate","subject","clip","segment","p1","link","current","isSubject","longitude","polygonContains","polygon","winding","point0","sinPhi1","cosPhi1","point1","absDelta","arc","intersection","phiArc","src_clip","pointVisible","clipLine","sink","ringBuffer","clipBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","clipRejoin","pointLine","clean","ringSegments","filter","validSegment","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","to","clip_circle","cr","smallRadius","notHemisphere","visible","intersect","two","n1","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","A","uu","t2","q","polar","q1","code","c0","v0","v00","point2","clip_line","x1","y1","ax","ay","dx","dy","clipMax","clipMin","clipRectangle","a1","corner","comparePoint","ca","cb","x__","y__","v__","x_","y_","v_","first","activeStream","bufferStream","clipStream","a0","b0","b1","polygonInside","cleanInside","lengthSum","clip_extent","cache","cacheStream","extent","lengthStream","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","src_length","src_distance","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","distance","ao","bo","ab","ringRadians","pointRadians","contains","graticuleX","graticuleY","graticule","X","Y","DX","DY","outline","extentMajor","extentMinor","stepMajor","stepMinor","graticule10","x00","y00","src_interpolate","cy0","sy0","cy1","sy1","kx0","ky0","kx1","ky1","B","src_identity","area","bounds","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","_radius","pointRadius","_line","_point","closePath","moveTo","lineTo","lengthRing","PathString","_string","_circle","join","src_path","projection","projectionStream","contextStream","path","pathArea","measure","pathMeasure","pathBounds","pathCentroid","identity","src_transform","methods","transformer","TransformStream","fit","fitBounds","clipExtent","scale","translate","geoStream","fitExtent","fitSize","size","fitWidth","fitHeight","maxDepth","cosMinDistance","resample","project","delta2","resampleLineTo","depth","d2","phi2","x2","y2","dx2","dy2","dz","a00","b00","c00","resampleStream","ringPoint","resampleNone","transformRadians","scaleTranslateRotate","sx","sy","alpha","transform","scaleTranslate","cosAlpha","sinAlpha","ai","bi","ci","fi","projectionMutator","projectAt","projectResample","projectTransform","projectRotateTransform","theta","preclip","clipAntimeridian","postclip","recenter","transformRotate","clipAngle","clipCircle","reflectX","reflectY","conicProjection","parallels","conicEqualAreaRaw","cylindricalEqualAreaRaw","r0","r0y","conicEqualArea","albers","projection_albersUsa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","albersUsa","streams","multiplex","azimuthalRaw","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEqualArea","azimuthalEquidistantRaw","azimuthalEquidistant","mercatorRaw","mercator","mercatorProjection","reclip","tany","conicConformalRaw","fy","conicConformal","equirectangularRaw","projection_equirectangular","conicEquidistantRaw","g","gy","nx","conicEquidistant","A1","A2","A3","A4","M","equalEarthRaw","l2","l6","equalEarth","gnomonicRaw","gnomonic","projection_identity","sa","tx","ty","kx","ky","naturalEarth1Raw","phi4","naturalEarth1","orthographicRaw","orthographic","stereographicRaw","stereographic","transverseMercatorRaw","transverseMercator","MapSeries_MapSeriesDataItem","_super","MapSeriesDataItem","_this","className","applyTheme","tslib_es6","setValue","properties","setProperty","_east","_west","_south","_north","updateExtremes","getFeature","west","south","north","east","changed","utils_Math","component","invalidateDataItems","Series","MapSeries_MapSeries","MapSeries","isMeasured","nonScalingStroke","dataFields","ignoreBounds","tooltip","showInViewport","createDataItem","checkInclude","includes","excludes","id","indexOf","getPropertyValue","setPropertyValue","invalidateData","processIncExc","chart","handleObjectAdded","event","mapObject","newValue","parent","series","strokeWidth","_geodata","geodata","reverseGeodata","processReverseGeodata","madeFromGeoData","splice","disposeData","_dataSources","getDataSource","removeDispose","events","on","loadData","setDataSourceEvents","getFeatures","validateDataItems","dataItems","each","dataItem","Type","_mapObjects","dispatch","_northDefined","_southDefined","_westDefined","_eastDefined","processConfig","config","name_1","window","JSON","parse","asIs","field","updateTooltipBounds","topParent","setBounds","maxWidth","maxHeight","Registry","registeredClasses","MapObject_MapObject","MapObject","layout","clickable","validate","itemReaderText","readerTitle","showTooltip","res","showTooltipOn","has","handleTooltipMove","addDisposer","ev","isHidden","setDataItem","applyAccessibility","Container","MapImage_MapImage","MapImage","latitude","geoPoint","validatePosition","d3Projection","d3Path","__disabled","multiPolygonToGeo","multiPolygon","utils_Array","surface","hole","geoArea","multiPointToGeo","multiLineToGeo","multiLine","pointToGeo","multiGeoToPoint","geoPoints","geoToPoint","multiGeoLineToMultiLine","multiGeoLine","multiGeoPolygonToMultipolygon","multiGeoPolygon","geoPolygon","getCircle","getBackground","stepLong","stepLat","ln","ll","lt","MapPolygon_MapPolygon","MapPolygon","createChild","shouldClone","applyOnClones","interfaceColors","InterfaceColorSet","fill","getFor","stroke","strokeOpacity","tooltipPosition","invalidate","pathGenerator","calculateVisualCenter","biggestArea","biggestPolygon","polylabel_default","_visualLongitude","_visualLatitude","measureElement","_adapterO","pixelWidth","pixelHeight","copyFrom","source","getTooltipX","convert","visualLongitude","visualLatitude","getTooltipY","MapPolygonSeries_MapPolygonSeriesDataItem","MapPolygonSeriesDataItem","_mapPolygon","mapPolygon_1","mapPolygons","addSprite","_disposers","Disposer","removeValue","_polygon","_multiPolygon","_geoPolygon","_multiGeoPolygon","MapPolygonSeries_MapPolygonSeries","MapPolygonSeries","clear","validateData","useGeodata","geoJSON","console","id_1","this_1","geodataNames","include","exclude","dataObject","Utils","mapPolygon","sortPolygonsBy","sortBy_1","reversed_1","sortPolygonsReversed","valA","valB","dirA","dirB","boxArea","dataContext","index","zIndex","propertyFields","_mapPolygons","polygonTemplate","List","template","focusable","getPolygonById","Iterator","_dataItem","Projection_Projection","Projection","_d3Projection","_d3Path","invalidateProjection","unproject","deltaLongitude","deltaLatitude","unrotate","intermediatePoint","pointA","pointB","position","multiDistance","positionToPoint","positionToGeoPoint","intermediatePointA","intermediatePointB","pa","pb","totalDistance","currentDistance","positionA","positionB","positionAB","SmallMap_SmallMap","SmallMap","_chart","align","valign","percentHeight","percentWidth","margin","background","fillOpacity","moveToPosition","updateMapSize","seriesContainer","rectangle","Rectangle","Color","verticalCenter","horizontalCenter","_series","handleSeriesAdded","handleSeriesRemoved","newSeries","clone","dataUsers","interactionsEnabled","hidden","rectPoint","spritePoint","seriesPointToGeo","zoomToGeoPoint","zoomLevel","get","set","updateRectangle","pixelX","pixelY","scaleRatio","bbox","group","node","getBBox","afterDraw","maskRectangle","hasKey","getKey","normalizePoint","wrapAngleTo180","latitude180","normalizeMultiline","multiline","Geo_geoToPoint","MapLineObject_MapLineObject","MapLineObject","adjustRotation","mapLine","shortestDistance","MapImageSeries_MapImageSeriesDataItem","MapImageSeriesDataItem","_mapImage","mapImage_1","mapImages","_geoPoint","multiPoint","MapImageSeries_MapImageSeries","MapImageSeries","multiGeoPoint","_parseDataFrom","mapImage","isDisposed","moveValue","_mapImages","validateDataElement","getImageById","MapLine_MapLine","MapLine","_imageListeners","createLine","Polyline","images","handleImagesToConnect","isReady","imagesToConnect","image","img","uid","disposer","property","_b","_c","convertedPoints","convertedSegmentPoints","slen","_arrow","lineObjects","handleGlobalScale","_lineObjects","handleLineObjectAdded","mapLineObject","arrow","triangle","Triangle","Percent","MapLineSeries_MapLineSeriesDataItem","MapLineSeriesDataItem","_mapLine","mapLine_1","mapLines","_multiLine","_multiGeoLine","_geoLine","geoLine","MapLineSeries_MapLineSeries","MapLineSeries","_mapLines","lineTemplate","getLineById","Graticule_Graticule","Graticule","GraticuleSeries_GraticuleSeriesDataItem","GraticuleSeriesDataItem","GraticuleSeries_GraticuleSeries","GraticuleSeries","longitudeStep","latitudeStep","singleSprite","disableType","hiddenInLegend","graticule_graticule","lineStrings","lineString","MapChart_MapChartDataItem","MapChartDataItem","SerialChart","MapChart_MapChart","MapChart","zoomDuration","zoomEasing","Ease","minZoomLevel","maxZoomLevel","_prevZoomGeoPoint","maxPanOut","homeZoomLevel","zoomStep","centerMapOnZoomOut","padding","backgroundSeries","minWidth","minHeight","once","handleAllInited","inert","resizable","handleMapTransform","handleDoubleHit","handleDrag","dragWhileResize","adapter","target","previousWidth","previousHeight","updateCenterGeoPoint","chartContainer","inited","_mapAnimation","allInited_1","dataInvalid","updateScaleRatio","_zoomGeoPointReal","chartContainerBg","dragStart","interactions","downPointers","getIndex","dragStop","handleMapDown","inertia","inertias","Interaction","body","hasFocused","Keyboard","getEventKey","_zoomControl","thumb","isFocused","pan","mouseWheelBehavior","interaction","handlePanDown","handlePanUp","panSprite","Circle","handlePanMove","opacity","panBehavior","svgPoint","pointer","htmlContainer","svgContainer","_downPointOrig","_downDeltaLongitude","_downDeltaLatitude","isResized","areTransformed","dln","dlt","dlg","downGeoLocal","local","geoLocal","goHome","disposer_1","updateZoomGeoPoint","seriesPoint","innerWidth","pixelPaddingLeft","innerHeight","pixelPaddingTop","maxLeft","maxRight","maxTop","maxBottom","seriesMaxLeft","seriesMaxRight","seriesMaxTop","seriesMaxBottom","seriesWidth","seriesHeight","_centerGeoPoint","ww","hh","minX","maxX","minY","maxY","zoomGeoPoint","applyInternalDefaults","language","role","cssScale","svgPointToGeo","zoomIn","handleWheel","mouseOptions","sensitivity","zoomOut","_mouseWheelDisposer","dispose","wheelable","draggable","_backgroundSeries","foundGraticule","deltaLong","deltaLat","initialScale","invalidateDataUsers","_fitWidth","_fitHeight","hScale","vScale","geoPointToSVG","geoPointToSeries","dataUser","duration","hasData_1","mapPoint","animate","zoomToMapObject","dataItem_1","polygonPoint","zoomToRectangle","level","splitLongitude","newLong","_prevZoomLevel","readerAlert","locale","_smallMap","smallMap","zoomControl","plusButton","exportable","minusButton","createSeries","rotateMap","raiseCriticalError","createClassInstance","configOrder","homeGeoPoint","centerGeoPoint","setPaper","paper","hideOverflow","color","setLegend","legend","setTapToActivate","isTouchProtected","handleTapToActivate","handleTapToActivateDeactivation","asFunction","hasLicense","Options","commercialLicense","licenses","match","MapSpline_MapSpline","MapSpline","Polyspline","tensionX","tensionY","MapArc_MapArc","MapArc","Polyarc","MapSplineSeries_MapSplineSeriesDataItem","MapSplineSeriesDataItem","MapSplineSeries_MapSplineSeries","MapSplineSeries","MapArcSeries_MapArcSeriesDataItem","MapArcSeriesDataItem","MapArcSeries_MapArcSeries","MapArcSeries","ZoomControl_ZoomControl","ZoomControl","Button","label","text","slider","handleBackgroundClick","updateThumbSize","handleThumbDrag","readerLive","fixLayout","marginTop","marginBottom","toFront","toBack","sprite","maxPower","LN2","minPower","power","updateThumb","isKey","stepCount","isDown","createBackground","RoundedRectangle","Mercator_Mercator","Mercator","sqrt1_2","SQRT1_2","sqrt2","sqrtPi","sinh","cosh","aitoffRaw","cosy","sincia","sinci","sinx","sinx_2","cosx_2","siny","sin_2y","sin2y","cos2y","sin2x_2","fx","dxdx","dxdy","dydx","dydy","augustRaw","tanPhi","sin3Eta","eta","xi","arcosh","arsinh","cosEta","coshXi","sqrt8","bakerRaw","cosPhi_2","tanPhi_2","hammerQuarticAuthalicRaw","solve","f0","f1","steps","mollweideBromleyTheta","cp","cpsinPhi","mollweideBromleyRaw","mollweideRaw","boggsRaw","sinusoidalRaw","collignonRaw","sqrt3","crasterRaw","eckert1Raw","eckert2Raw","eckert3Raw","eckert4Raw","eckert5Raw","eckert6Raw","eckert6","eisenlohrK","eisenlohrRaw","_0","_1","cos1","v2","vm1v","vp1v","deltatDeltaLambda","deltatDeltaPhi","deltacDeltat","deltacDeltaLambda","deltacDeltaPhi","deltavDeltaLambda","deltavDeltaPhi","deltaxDeltaLambda","deltaxDeltaPhi","deltayDeltaLambda","deltayDeltaPhi","denominator","faheyK","faheyRaw","foucautRaw","cosk","ginzburgPolyconic","xB","yB","m2","dAlphadLambda","xB2","dxBdPhi","dyBdPhi","dmdPhi","mcosAlpha","msinAlpha","dAlphadPhi","ginzburgPolyconicRaw","ginzburg8Raw","lambda4","gringortenRaw","sLambda","sPhi","r2","p2","a2","secPhi","drdPhi","dp2dPhi","mu","nu","zeta","g2","zetaMug","f2","df","gringortenHexadecant","gringortenHexadecantInvert","ellipticJ","twon","tanh","ellipticF","dPhi","guyouRaw","k_","K","psi","at","y_1","guyouComplexAtan","sinhPsi","cscPhi","cotPhi2","cotLambda2","ellipticFi","ellipticJi","tn","guyouComplexDivide","sinuMollweidePhi","sinuMollweideY","sinuMollweideRaw","homolosineRaw","kavrayskiy7Raw","pi_sqrt2","larriveeRaw","sqrtcosPhi","sinPhi_2","sinLambda_6","cosLambda_6","df0dPhi","df0dLambda","df1dPhi","df1dLambda","denom","laskowskiRaw","lambdaPhi","littrowRaw","y2_1","x2_y2_1","millerRaw","miller","sqrt6","sqrt7","mtFlatPolarParabolicRaw","mtFlatPolarQuarticRaw","sinTheta_2","mtFlatPolarSinusoidalRaw","naturalEarth2Raw","phi6","nellHammerRaw","nicolosiRaw","b2","b2d2","d2b2","N","x2y2","pi2","pattersonK1","pattersonK2","pattersonK3","pattersonK4","pattersonC1","pattersonC2","pattersonC3","pattersonC4","pattersonRaw","yc","polyconicRaw","octahedron","face","collignonK","robinsonRaw","i0","di","bx","by","timesRaw","vanDerGrintenRaw","sinTheta","cosTheta","G","P","P2","P2_A2","G_P2","Q","x2_y2","c3","m1","theta1","vanDerGrinten2Raw","vanDerGrinten3Raw","vanDerGrinten4Raw","B2","C","C2","BC","B_C2","B_3C","D","D2","C_","B_C","F_","sqrtF","wagner6Raw","wiechelRaw","sin1_Phi","cosLambda","sinLambda","winkel3Raw","cosphi","sinphi","sin_2phi","sin2phi","cos2phi","sinlambda","coslambda_2","sinlambda_2","sin2lambda_2","E","dxdlambda","dxdphi","dydlambda","dydphi","dlambda","dphi","Miller_Miller","Miller","Eckert6_Eckert6","Eckert6","Orthographic_Orthographic","Orthographic","Stereographic_Stereographic","Stereographic","Albers_Albers","Albers","AlbersUSA_AlbersUsa","AlbersUsa","NaturalEarth1_NaturalEarth1","NaturalEarth1","AzimuthalEqualArea_AzimuthalEqualArea","AzimuthalEqualArea","EqualEarth_EqualEarth","EqualEarth","am4maps","maps_namespaceObject","TinyQueue","compare","defaultCompare","_down","item","_up","top","bottom","pos","halfLength","best","Queue","__webpack_require__","polylabel","debug","cellSize","degeneratePoleOfInaccessibility","cellQueue","compareMax","Cell","bestCell","getCentroidCell","bboxCell","numProbes","cell","poleOfInaccessibility","inside","minDistSq","getSegDistSq","pointToPolygonDist","SQRT2","px","py","default","module"],"mappings":"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","file":"maps.js","sourcesContent":["export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/ascending.js","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/bisector.js","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/descending.js","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/number.js","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/bisect.js","export function blur(values, r) {\n if (!((r = +r) >= 0)) throw new RangeError(\"invalid r\");\n let length = values.length;\n if (!((length = Math.floor(length)) >= 0)) throw new RangeError(\"invalid length\");\n if (!length || !r) return values;\n const blur = blurf(r);\n const temp = values.slice();\n blur(values, temp, 0, length, 1);\n blur(temp, values, 0, length, 1);\n blur(values, temp, 0, length, 1);\n return values;\n}\n\nexport const blur2 = Blur2(blurf);\n\nexport const blurImage = Blur2(blurfImage);\n\nfunction Blur2(blur) {\n return function(data, rx, ry = rx) {\n if (!((rx = +rx) >= 0)) throw new RangeError(\"invalid rx\");\n if (!((ry = +ry) >= 0)) throw new RangeError(\"invalid ry\");\n let {data: values, width, height} = data;\n if (!((width = Math.floor(width)) >= 0)) throw new RangeError(\"invalid width\");\n if (!((height = Math.floor(height !== undefined ? height : values.length / width)) >= 0)) throw new RangeError(\"invalid height\");\n if (!width || !height || (!rx && !ry)) return data;\n const blurx = rx && blur(rx);\n const blury = ry && blur(ry);\n const temp = values.slice();\n if (blurx && blury) {\n blurh(blurx, temp, values, width, height);\n blurh(blurx, values, temp, width, height);\n blurh(blurx, temp, values, width, height);\n blurv(blury, values, temp, width, height);\n blurv(blury, temp, values, width, height);\n blurv(blury, values, temp, width, height);\n } else if (blurx) {\n blurh(blurx, values, temp, width, height);\n blurh(blurx, temp, values, width, height);\n blurh(blurx, values, temp, width, height);\n } else if (blury) {\n blurv(blury, values, temp, width, height);\n blurv(blury, temp, values, width, height);\n blurv(blury, values, temp, width, height);\n }\n return data;\n };\n}\n\nfunction blurh(blur, T, S, w, h) {\n for (let y = 0, n = w * h; y < n;) {\n blur(T, S, y, y += w, 1);\n }\n}\n\nfunction blurv(blur, T, S, w, h) {\n for (let x = 0, n = w * h; x < w; ++x) {\n blur(T, S, x, x + n, w);\n }\n}\n\nfunction blurfImage(radius) {\n const blur = blurf(radius);\n return (T, S, start, stop, step) => {\n start <<= 2, stop <<= 2, step <<= 2;\n blur(T, S, start + 0, stop + 0, step);\n blur(T, S, start + 1, stop + 1, step);\n blur(T, S, start + 2, stop + 2, step);\n blur(T, S, start + 3, stop + 3, step);\n };\n}\n\n// Given a target array T, a source array S, sets each value T[i] to the average\n// of {S[i - r], …, S[i], …, S[i + r]}, where r = ⌊radius⌋, start <= i < stop,\n// for each i, i + step, i + 2 * step, etc., and where S[j] is clamped between\n// S[start] (inclusive) and S[stop] (exclusive). If the given radius is not an\n// integer, S[i - r - 1] and S[i + r + 1] are added to the sum, each weighted\n// according to r - ⌊radius⌋.\nfunction blurf(radius) {\n const radius0 = Math.floor(radius);\n if (radius0 === radius) return bluri(radius);\n const t = radius - radius0;\n const w = 2 * radius + 1;\n return (T, S, start, stop, step) => { // stop must be aligned!\n if (!((stop -= step) >= start)) return; // inclusive stop\n let sum = radius0 * S[start];\n const s0 = step * radius0;\n const s1 = s0 + step;\n for (let i = start, j = start + s0; i < j; i += step) {\n sum += S[Math.min(stop, i)];\n }\n for (let i = start, j = stop; i <= j; i += step) {\n sum += S[Math.min(stop, i + s0)];\n T[i] = (sum + t * (S[Math.max(start, i - s1)] + S[Math.min(stop, i + s1)])) / w;\n sum -= S[Math.max(start, i - s0)];\n }\n };\n}\n\n// Like blurf, but optimized for integer radius.\nfunction bluri(radius) {\n const w = 2 * radius + 1;\n return (T, S, start, stop, step) => { // stop must be aligned!\n if (!((stop -= step) >= start)) return; // inclusive stop\n let sum = radius * S[start];\n const s = step * radius;\n for (let i = start, j = start + s; i < j; i += step) {\n sum += S[Math.min(stop, i)];\n }\n for (let i = start, j = stop; i <= j; i += step) {\n sum += S[Math.min(stop, i + s)];\n T[i] = sum / w;\n sum -= S[Math.max(start, i - s)];\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/blur.js","// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n, x, y, lo, hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\n\nexport function fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/fsum.js","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/array.js","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function ticks(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n if (r0 * step < start) ++r0;\n if (r1 * step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) * step;\n } else {\n step = -step;\n let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n if (r0 / step < start) ++r0;\n if (r1 / step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/ticks.js","function* flatten(arrays) {\n for (const array of arrays) {\n yield* array;\n }\n}\n\nexport default function merge(arrays) {\n return Array.from(flatten(arrays));\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/merge.js","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/range.js","export default shuffler(Math.random);\n\nexport function shuffler(random) {\n return function shuffle(array, i0 = 0, i1 = array.length) {\n let m = i1 - (i0 = +i0);\n while (m) {\n const i = random() * m-- | 0, t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n return array;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-array/src/shuffle.js","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/math.js","export default function noop() {}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/noop.js","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/stream.js","import {Adder} from \"d3-array\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = new Adder();\n\n// hello?\n\nvar areaSum = new Adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum = new Adder();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum = new Adder();\n stream(object, areaStream);\n return areaSum * 2;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/area.js","import {Adder} from \"d3-array\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum,\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum = new Adder();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/bounds.js","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/cartesian.js","import {Adder} from \"d3-array\";\nimport {asin, atan2, cos, degrees, epsilon, epsilon2, hypot, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = hypot(cx, cy, cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2.add(v * cx);\n Y2.add(v * cy);\n Z2.add(v * cz);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 = 0;\n X2 = new Adder();\n Y2 = new Adder();\n Z2 = new Adder();\n stream(object, centroidStream);\n\n var x = +X2,\n y = +Y2,\n z = +Z2,\n m = hypot(x, y, z);\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = hypot(x, y, z);\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / m) * degrees];\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/centroid.js","export default function(x) {\n return function() {\n return x;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/constant.js","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/compose.js","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/rotation.js","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/circle.js","import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/clip/buffer.js","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/pointEqual.js","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/clip/rejoin.js","import {Adder} from \"d3-array\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nfunction longitude(point) {\n return abs(point[0]) <= pi ? point[0] : sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n var sum = new Adder();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon2) ^ (winding & 1);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/polygonContains.js","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/clip/index.js","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/clip/antimeridian.js","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n point1[2] = 1;\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/clip/circle.js","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/clip/line.js","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/clip/rectangle.js","import clipRectangle from \"./rectangle.js\";\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/clip/extent.js","import {Adder} from \"d3-array\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum,\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum = new Adder();\n stream(object, lengthStream);\n return +lengthSum;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/length.js","import length from \"./length.js\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/distance.js","import {default as polygonContains} from \"./polygonContains.js\";\nimport {default as distance} from \"./distance.js\";\nimport {epsilon2, radians} from \"./math.js\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = distance(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = distance(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/contains.js","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/graticule.js","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math.js\";\n\nexport default function(a, b) {\n var x0 = a[0] * radians,\n y0 = a[1] * radians,\n x1 = b[0] * radians,\n y1 = b[1] * radians,\n cy0 = cos(y0),\n sy0 = sin(y0),\n cy1 = cos(y1),\n sy1 = sin(y1),\n kx0 = cy0 * cos(x0),\n ky0 = cy0 * sin(x0),\n kx1 = cy1 * cos(x1),\n ky1 = cy1 * sin(x1),\n d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n k = sin(d);\n\n var interpolate = d ? function(t) {\n var B = sin(t *= d) / k,\n A = sin(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n atan2(y, x) * degrees,\n atan2(z, sqrt(x * x + y * y)) * degrees\n ];\n } : function() {\n return [x0 * degrees, y0 * degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/interpolate.js","import {Adder} from \"d3-array\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = new Adder(),\n areaRingSum = new Adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum = new Adder();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum = new Adder();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/path/area.js","export default x => x;\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/identity.js","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/path/bounds.js","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/path/centroid.js","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/path/context.js","import {Adder} from \"d3-array\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = new Adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum = new Adder();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/path/measure.js","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/path/string.js","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/path/index.js","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/transform.js","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/fit.js","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/resample.js","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx; y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx; y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate angle\n sx = 1, // reflectX\n sy = 1, // reflectX\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/index.js","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/conic.js","import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y,\n l = atan2(x, abs(r0y)) * sign(r0y);\n if (r0y * n < 0)\n l -= pi * sign(x) * sign(r0y);\n return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/conicEqualArea.js","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/cylindricalEqualArea.js","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/albers.js","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/albersUsa.js","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n if (k === Infinity) return [2, 0];\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/azimuthal.js","import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/azimuthalEqualArea.js","import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/azimuthalEquidistant.js","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/mercator.js","import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),\n l = atan2(x, abs(fy)) * sign(fy);\n if (fy * n < 0)\n l -= pi * sign(x) * sign(fy);\n return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/conicConformal.js","import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/equirectangular.js","import {abs, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y,\n l = atan2(x, abs(gy)) * sign(gy);\n if (gy * n < 0)\n l -= pi * sign(x) * sign(gy);\n return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/conicEquidistant.js","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/equalEarth.js","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/gnomonic.js","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport {cos, degrees, radians, sin} from \"../math.js\";\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n alpha = 0, ca, sa, // angle\n x0 = null, y0, x1, y1, // clip extent\n kx = 1, ky = 1,\n transform = transformer({\n point: function(x, y) {\n var p = projection([x, y])\n this.stream.point(p[0], p[1]);\n }\n }),\n postclip = identity,\n cache,\n cacheStream;\n\n function reset() {\n kx = k * sx;\n ky = k * sy;\n cache = cacheStream = null;\n return projection;\n }\n\n function projection (p) {\n var x = p[0] * kx, y = p[1] * ky;\n if (alpha) {\n var t = y * ca - x * sa;\n x = x * ca + y * sa;\n y = t;\n } \n return [x + tx, y + ty];\n }\n projection.invert = function(p) {\n var x = p[0] - tx, y = p[1] - ty;\n if (alpha) {\n var t = y * ca + x * sa;\n x = x * ca - y * sa;\n y = t;\n }\n return [x / kx, y / ky];\n };\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n };\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n projection.scale = function(_) {\n return arguments.length ? (k = +_, reset()) : k;\n };\n projection.translate = function(_) {\n return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n }\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n };\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n };\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n };\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n return projection;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/identity.js","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/naturalEarth1.js","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/orthographic.js","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/stereographic.js","import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo/src/projection/transverseMercator.js","/**\r\n * Map series module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Series, SeriesDataItem, ISeriesProperties, ISeriesDataFields, ISeriesAdapters, ISeriesEvents } from \"../series/Series\";\r\nimport { MapChart } from \"../types/MapChart\";\r\nimport { MapObject } from \"./MapObject\";\r\nimport { IListEvents } from \"../../core/utils/List\";\r\nimport { IGeoPoint } from \"../../core/defs/IGeoPoint\";\r\nimport { DataSource } from \"../../core/data/DataSource\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport { ListTemplate } from \"../../core/utils/List\";\r\nimport * as d3geo from \"d3-geo\";\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[MapSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class MapSeriesDataItem extends SeriesDataItem {\r\n\r\n\t/**\r\n\t * South-most latitude.\r\n\t */\r\n\tprotected _south: number;\r\n\r\n\t/**\r\n\t * North-most latitude.\r\n\t */\r\n\tprotected _north: number;\r\n\r\n\t/**\r\n\t * East-most longitude.\r\n\t */\r\n\tprotected _east: number;\r\n\r\n\t/**\r\n\t * West-most longitude.\r\n\t */\r\n\tprotected _west: number;\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for.\r\n\t */\r\n\tpublic _component!: MapSeries;\r\n\r\n\t/**\r\n\t * Shortcut to either [[MapLine]], [[MapImage]], or [[MapPolygon]].\r\n\t */\r\n\tpublic mapObject: MapObject;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"MapSeriesDataItem\";\r\n\t\tthis.values.value = {};\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Numeric value of the data item.\r\n\t *\r\n\t * Value may be used in heat-map calculations.\r\n\t *\r\n\t * @param value Value\r\n\t */\r\n\tpublic set value(value: number) {\r\n\t\tthis.setValue(\"value\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Value\r\n\t */\r\n\tpublic get value(): number {\r\n\t\treturn this.values.value.value;\r\n\t}\r\n\r\n\t/**\r\n\t * When `zoomToMapObject()` is called the map will either calculate suitable\r\n\t * zoom level itself or use object's `zoomLevel` if set.\r\n\t *\r\n\t * @param value Zoom level\r\n\t */\r\n\tpublic set zoomLevel(value: number) {\r\n\t\tthis.setProperty(\"zoomLevel\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Zoom level\r\n\t */\r\n\tpublic get zoomLevel(): number {\r\n\t\treturn this.properties[\"zoomLevel\"];\r\n\t}\r\n\r\n\t/**\r\n\t * When `zoomToMapObject()` is called the map will either calculate suitable\r\n\t * center position itself or use object's `zoomGeoPoint` if set.\r\n\t *\r\n\t * @param value Zoom geo point\r\n\t */\r\n\tpublic set zoomGeoPoint(value: IGeoPoint) {\r\n\t\tthis.setProperty(\"zoomGeoPoint\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Zoom geo point\r\n\t */\r\n\tpublic get zoomGeoPoint(): IGeoPoint {\r\n\t\treturn this.properties[\"zoomGeoPoint\"];\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Longitude of the East-most point of the element.\r\n\t */\r\n\tpublic get east(): number {\r\n\t\treturn this._east;\r\n\t}\r\n\r\n\t/**\r\n\t * Longitude of the West-most point of the element.\r\n\t */\r\n\tpublic get west(): number {\r\n\t\treturn this._west;\r\n\t}\r\n\r\n\t/**\r\n\t * Latitude of the South-most point of the element.\r\n\t */\r\n\tpublic get south(): number {\r\n\t\treturn this._south;\r\n\t}\r\n\r\n\t/**\r\n\t * Latitude of the North-most point of the element.\r\n\t */\r\n\tpublic get north(): number {\r\n\t\treturn this._north;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the item's bounding coordinates: coordinates of the East, West,\r\n\t * North, and South-most points.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateExtremes(): void {\r\n\t\tlet geometry = this.getFeature().geometry;\r\n\t\tif (geometry) {\r\n\r\n\t\t\tlet bounds = d3geo.geoBounds(geometry);\r\n\r\n\t\t\tlet west = bounds[0][0];\r\n\t\t\tlet south = bounds[0][1];\r\n\r\n\t\t\tlet north = bounds[1][1];\r\n\t\t\tlet east = bounds[1][0];\r\n\r\n\t\t\tlet changed = false;\r\n\t\t\tif (north != this.north) {\r\n\t\t\t\tthis._north = $math.round(north, 6);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (south != this.south) {\r\n\t\t\t\tthis._south = $math.round(south, 6);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (east != this.east) {\r\n\t\t\t\tthis._east = $math.round(east, 6);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (west != this.west) {\r\n\t\t\t\tthis._west = $math.round(west, 6);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\r\n\t\t\t// solves single russia prob\r\n\t\t\tif (this._east < this._west) {\r\n\t\t\t\tthis._east = 180;\r\n\t\t\t\tthis._west = -180;\r\n\t\t\t}\r\n\r\n\t\t\tif (changed) {\r\n\t\t\t\tthis.component.invalidateDataItems();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getFeature(): any {\r\n\t\treturn {};\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * [GEOJSONGeometry description]\r\n *\r\n * @todo Description\r\n */\r\nexport type GEOJSONGeometry = \"Point\" | \"LineString\" | \"Polygon\" | \"MultiPoint\" | \"MultiLineString\" | \"MultiPolygon\";\r\n\r\n/**\r\n * Defines data fields for [[MapSeries]].\r\n *\r\n * @todo Alllow any number of values?\r\n */\r\nexport interface IMapSeriesDataFields extends ISeriesDataFields {\r\n\r\n\t/**\r\n\t * A field name in data for a numeric value of the map object.\r\n\t */\r\n\tvalue?: string;\r\n\r\n\t/**\r\n\t * A field name in data for a `zoomLevel` of the map object.\r\n\t */\r\n\tzoomLevel?: string;\r\n\r\n\t/**\r\n\t * A field name in data for a `zoomGeoPoint` of the map object.\r\n\t */\r\n\tzoomGeoPoint?: string;\r\n\r\n}\r\n\r\n/**\r\n * Defines properties for [[MapSeries]].\r\n */\r\nexport interface IMapSeriesProperties extends ISeriesProperties {\r\n\r\n\t/**\r\n\t * A flag telling if the series should get data from `geodata` or not\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tuseGeodata?: boolean;\r\n\r\n\t/**\r\n\t * A list of object ids to include from the series.\r\n\t */\r\n\tinclude?: string[];\r\n\r\n\t/**\r\n\t * A list of object ids to exclude from the series.\r\n\t */\r\n\texclude?: string[];\r\n\r\n\t/**\r\n\t * Should this series be included when calculating bounds of the map?\r\n\t *\r\n\t * This affects initial zoom as well as limits for zoom/pan.\r\n\t *\r\n\t * By default, `MapPolygonSeries` included (true), while `MapImageSeries` and\r\n\t * `MapLineSeries` are not (`false`).\r\n\t */\r\n\tignoreBounds?: boolean;\r\n\r\n\t/**\r\n\t * Indicates whether GeoJSON geodata supplied to the chart uses\r\n\t * ESRI (clockwise) or non-ESRI (counter-clockwise) order of the polygon\r\n\t * coordinates.\r\n\t *\r\n\t * `MapChart` supports only ESRI standard, so if your custom maps appears\r\n\t * garbled, try setting `reverseGeodata = true`.\r\n\t * \r\n\t * @default false\r\n\t * @since 4.10.11\r\n\t */\r\n\treverseGeodata?: boolean;\r\n}\r\n\r\n/**\r\n * Defines events for [[MapSeries]].\r\n */\r\nexport interface IMapSeriesEvents extends ISeriesEvents {\r\n\tgeoBoundsChanged: {};\r\n}\r\n\r\n/**\r\n * Defines adapters for [[MapSeries]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IMapSeriesAdapters extends ISeriesAdapters, IMapSeriesProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * A base class for series of map objects.\r\n *\r\n * @see {@link IMapSeriesEvents} for a list of available Events\r\n * @see {@link IMapSeriesAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class MapSeries extends Series {\r\n\r\n\t/**\r\n\t * Defines available data fields.\r\n\t */\r\n\tpublic _dataFields: IMapSeriesDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IMapSeriesProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IMapSeriesAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IMapSeriesEvents;\r\n\r\n\t/**\r\n\t * Defines the type of data item.\r\n\t */\r\n\tpublic _dataItem: MapSeriesDataItem;\r\n\r\n\t/**\r\n\t * The longitude of the East-most point in the series. (out of all elements)\r\n\t */\r\n\tprotected _east: number;\r\n\r\n\t/**\r\n\t * The longitude of the West-most point in the series. (out of all elements)\r\n\t */\r\n\tprotected _west: number;\r\n\r\n\t/**\r\n\t * The latitude of the South-most point in the series. (out of all elements)\r\n\t */\r\n\tprotected _south: number;\r\n\r\n\t/**\r\n\t * The latitude of the North-most point in the series. (out of all elements)\r\n\t */\r\n\tprotected _north: number;\r\n\r\n\tprotected _eastDefined: number;\r\n\r\n\tprotected _westDefined: number;\r\n\r\n\tprotected _southDefined: number;\r\n\r\n\tprotected _northDefined: number;\r\n\r\n\t/**\r\n\t * A chart series belongs to.\r\n\t */\r\n\tpublic _chart: MapChart;\r\n\r\n\t/**\r\n\t * Map data in GeoJSON format.\r\n\t *\r\n\t * @see {@link http://geojson.org/} GeoJSON official specification\r\n\t */\r\n\tprotected _geodata: Object;\r\n\r\n\r\n\tprotected _mapObjects: ListTemplate;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"MapSeries\";\r\n\r\n\t\t// Set defaults\r\n\t\tthis.isMeasured = false;\r\n\t\tthis.nonScalingStroke = true;\r\n\r\n\t\t// Set data fields\r\n\t\tthis.dataFields.value = \"value\";\r\n\r\n\t\tthis.ignoreBounds = false;\r\n\r\n\t\tif (this.tooltip) {\r\n\t\t\tthis.tooltip.showInViewport = true;\r\n\t\t}\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty DataItem of the type appropriate for this object.\r\n\t *\r\n\t * @see {@link DataItem}\r\n\t * @return Data Item\r\n\t */\r\n\tprotected createDataItem(): this[\"_dataItem\"] {\r\n\t\treturn new MapSeriesDataItem();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Checks whether object should be included in series.\r\n\t *\r\n\t * @param includes A list of explicitly included ids\r\n\t * @param excludes A list of explicitly excluded ids\r\n\t * @param id Id of the object\r\n\t * @return Include?\r\n\t */\r\n\tprotected checkInclude(includes: string[], excludes: string[], id: string): boolean {\r\n\t\tif (includes) {\r\n\t\t\tif (includes.length == 0) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (includes.indexOf(id) == -1) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (excludes && excludes.length > 0) {\r\n\t\t\tif (excludes.indexOf(id) != -1) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Should the map extract all the data about element from the GeoJSON?\r\n\t *\r\n\t * This is especially relevant for [[MapPolygonSeries]]. If not set to `true`\r\n\t * polygon series will need to contain geographical data in itself in order\r\n\t * to be drawn.\r\n\t *\r\n\t * If this is set to `true`, series will try to extract data for its objects\r\n\t * from either chart-level `geodata` or from series' `geodata` which holds\r\n\t * map infor in GeoJSON format.\r\n\t *\r\n\t * @default false\r\n\t * @param value Use GeoJSON data?\r\n\t */\r\n\tpublic set useGeodata(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"useGeodata\", value)) {\r\n\t\t\tthis.invalidateData();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Use GeoJSON data?\r\n\t */\r\n\tpublic get useGeodata(): boolean {\r\n\t\treturn this.getPropertyValue(\"useGeodata\");\r\n\t}\r\n\r\n\t/**\r\n\t * A list of object ids that should be explictly included in the series.\r\n\t *\r\n\t * If this is not set, the series will automatically include all of the\r\n\t * objects, available in the GeoJSON map. (minus the ones listed in\r\n\t * `exclude`)\r\n\t *\r\n\t * If you need to display only specific objects, use `include`. E.g.:\r\n\t *\r\n\t * `include = [\"FR\", \"ES\", \"DE\"];`\r\n\t *\r\n\t * The above will show only France, Spain, and Germany out of the whole map.\r\n\t *\r\n\t * @param value Included objects\r\n\t */\r\n\tpublic set include(value: string[]) {\r\n\t\tif (this.setPropertyValue(\"include\", value)) {\r\n\t\t\tthis.processIncExc();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected processIncExc() {\r\n\t\t//this.data = [];\r\n\t\tthis.invalidateData();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Included objects\r\n\t */\r\n\tpublic get include(): string[] {\r\n\t\treturn this.getPropertyValue(\"include\");\r\n\t}\r\n\r\n\t/**\r\n\t * Should this series be included when calculating bounds of the map?\r\n\t *\r\n\t * This affects initial zoom as well as limits for zoom/pan.\r\n\t *\r\n\t * By default, `MapPolygonSeries` included (true), while `MapImageSeries` and\r\n\t * `MapLineSeries` are not (`false`).\r\n\t *\r\n\t * @since 4.3.0\r\n\t * @param value Ignore bounds?\r\n\t */\r\n\tpublic set ignoreBounds(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"ignoreBounds\", value)) {\r\n\t\t\tif (this.chart) {\r\n\t\t\t\tthis.chart.updateExtremes();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Ignore bounds?\r\n\t */\r\n\tpublic get ignoreBounds(): boolean {\r\n\t\treturn this.getPropertyValue(\"ignoreBounds\");\r\n\t}\r\n\r\n\t/**\r\n\t * A list of object ids that should be excluded from the series.\r\n\t *\r\n\t * E.g. you want to include all of the areas from a GeoJSON map, except\r\n\t * Antarctica.\r\n\t *\r\n\t * You'd leave `include` empty, and set `exclude = [\"AQ\"]`.\r\n\t *\r\n\t * @param value Excluded ids\r\n\t */\r\n\tpublic set exclude(value: string[]) {\r\n\t\tif (this.setPropertyValue(\"exclude\", value)) {\r\n\t\t\tthis.processIncExc();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Excluded ids\r\n\t */\r\n\tpublic get exclude(): string[] {\r\n\t\treturn this.getPropertyValue(\"exclude\");\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates a newly added object.\r\n\t *\r\n\t * @param event [description]\r\n\t */\r\n\tprotected handleObjectAdded(event: IListEvents[\"inserted\"]) {\r\n\t\tlet mapObject: MapObject = event.newValue;\r\n\t\tmapObject.parent = this;\r\n\t\tmapObject.series = this;\r\n\t\tmapObject.strokeWidth = mapObject.strokeWidth;\r\n\t}\r\n\r\n\t/**\r\n\t * Map data in GeoJSON format.\r\n\t *\r\n\t * The series supports the following GeoJSON objects: `Point`, `LineString`,\r\n\t * `Polygon`, `MultiPoint`, `MultiLineString`, and `MultiPolygon`.\r\n\t *\r\n\t * @see {@link http://geojson.org/} Official GeoJSON format specification\r\n\t * @param geoJSON GeoJSON data\r\n\t */\r\n\tpublic set geodata(geodata: Object) {\r\n\t\tif (geodata != this._geodata) {\r\n\t\t\tthis._geodata = geodata;\r\n\t\t\tif (this.reverseGeodata) {\r\n\t\t\t\tthis.chart.processReverseGeodata(this._geodata);\r\n\t\t\t}\r\n\t\t\tfor (let i = this.data.length - 1; i >= 0; i--) {\r\n\t\t\t\tif (this.data[i].madeFromGeoData == true) {\r\n\t\t\t\t\tthis.data.splice(i, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.disposeData();\r\n\t\t\tthis.invalidateData();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return GeoJSON data\r\n\t */\r\n\tpublic get geodata(): Object {\r\n\t\treturn this._geodata;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether GeoJSON geodata supplied to the chart uses\r\n\t * ESRI (clockwise) or non-ESRI (counter-clockwise) order of the polygon\r\n\t * coordinates.\r\n\t *\r\n\t * `MapChart` supports only ESRI standard, so if your custom maps appears\r\n\t * garbled, try setting `reverseGeodata = true`.\r\n\t * \r\n\t * @default false\r\n\t * @since 4.10.11\r\n\t * @param value Reverse the order of geodata coordinates?\r\n\t */\r\n\tpublic set reverseGeodata(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"reverseGeodata\", value) && this._geodata) {\r\n\t\t\tthis.chart.processReverseGeodata(this._geodata);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @returns Reverse the order of geodata coordinates?\r\n\t */\r\n\tpublic get reverseGeodata(): boolean {\r\n\t\treturn this.getPropertyValue(\"reverseGeodata\");\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a [[DataSource]] to be used for loading Component's data.\r\n\t *\r\n\t * @param value Data source\r\n\t */\r\n\tpublic set geodataSource(value: DataSource) {\r\n\t\tif (this._dataSources[\"geodata\"]) {\r\n\t\t\tthis.removeDispose(this._dataSources[\"geodata\"]);\r\n\t\t}\r\n\t\tthis._dataSources[\"geodata\"] = value;\r\n\t\tthis._dataSources[\"geodata\"].component = this;\r\n\t\tthis.events.on(\"inited\", () => {\r\n\t\t\tthis.loadData(\"geodata\")\r\n\t\t}, undefined, false);\r\n\t\tthis.setDataSourceEvents(value, \"geodata\");\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Returns a [[DataSource]] specifically for loading Component's data.\r\n\t *\r\n\t * @return Data source\r\n\t */\r\n\tpublic get geodataSource(): DataSource {\r\n\t\tif (!this._dataSources[\"geodata\"]) {\r\n\t\t\tthis.getDataSource(\"geodata\");\r\n\t\t}\r\n\t\treturn this._dataSources[\"geodata\"];\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic getFeatures(): { \"type\": \"Feature\", geometry: { type: \"Point\" | \"MultiLineString\" | \"MultiPolygon\", coordinates: [number, number] | Array> | Array>> } }[] {\r\n\t\treturn;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic validateDataItems() {\r\n\t\tsuper.validateDataItems();\r\n\t\tthis.updateExtremes();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic updateExtremes() {\r\n\t\tlet north: number;\r\n\t\tlet south: number;\r\n\t\tlet east: number;\r\n\t\tlet west: number;\r\n\r\n\t\tthis.dataItems.each((dataItem) => {\r\n\t\t\tif (dataItem.north > north || !$type.isNumber(north)) {\r\n\t\t\t\tnorth = dataItem.north;\r\n\t\t\t}\r\n\r\n\t\t\tif (dataItem.south < south || !$type.isNumber(south)) {\r\n\t\t\t\tsouth = dataItem.south;\r\n\t\t\t}\r\n\r\n\t\t\tif (dataItem.west < west || !$type.isNumber(west)) {\r\n\t\t\t\twest = dataItem.west;\r\n\t\t\t}\r\n\r\n\t\t\tif (dataItem.east > east || !$type.isNumber(east)) {\r\n\t\t\t\teast = dataItem.east;\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tif (this._mapObjects) {\r\n\t\t\tthis._mapObjects.each((mapObject) => {\r\n\t\t\t\tif (mapObject.north > north || !$type.isNumber(north)) {\r\n\t\t\t\t\tnorth = mapObject.north;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (mapObject.south < south || !$type.isNumber(south)) {\r\n\t\t\t\t\tsouth = mapObject.south;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (mapObject.west < west || !$type.isNumber(west)) {\r\n\t\t\t\t\twest = mapObject.west;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (mapObject.east > east || !$type.isNumber(east)) {\r\n\t\t\t\t\teast = mapObject.east;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\r\n\t\tif (this.north != north || this.east != east || this.south != south || this.west != west) {\r\n\t\t\tthis._north = north;\r\n\t\t\tthis._east = east;\r\n\t\t\tthis._west = west;\r\n\t\t\tthis._south = south;\r\n\r\n\t\t\tthis.dispatch(\"geoBoundsChanged\");\r\n\t\t\tif (!this.ignoreBounds) {\r\n\t\t\t\tthis.chart.updateExtremes();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * North-most latitude of the series.\r\n\t *\r\n\t * By default, this holds auto-calculated latitude of the extremity.\r\n\t *\r\n\t * It can be overridden manually.\r\n\t *\r\n\t * @param value Latitude\r\n\t */\r\n\tpublic set north(value: number) {\r\n\t\tthis._northDefined = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Latitude\r\n\t */\r\n\tpublic get north(): number {\r\n\t\tif ($type.isNumber(this._northDefined)) {\r\n\t\t\treturn this._northDefined;\r\n\t\t}\r\n\t\treturn this._north;\r\n\t}\r\n\r\n\t/**\r\n\t * South-most latitude of the series.\r\n\t *\r\n\t * By default, this holds auto-calculated latitude of the extremity.\r\n\t *\r\n\t * It can be overridden manually.\r\n\t *\r\n\t * @param value Latitude\r\n\t */\r\n\tpublic set south(value: number) {\r\n\t\tthis._southDefined = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Latitude\r\n\t */\r\n\tpublic get south(): number {\r\n\t\tif ($type.isNumber(this._southDefined)) {\r\n\t\t\treturn this._southDefined;\r\n\t\t}\r\n\t\treturn this._south;\r\n\t}\r\n\r\n\t/**\r\n\t * West-most longitude of the series.\r\n\t *\r\n\t * By default, this holds auto-calculated longitude of the extremity.\r\n\t *\r\n\t * It can be overridden manually.\r\n\t *\r\n\t * @param value Longitude\r\n\t */\r\n\tpublic set west(value: number) {\r\n\t\tthis._westDefined = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Longitude\r\n\t */\r\n\tpublic get west(): number {\r\n\t\tif ($type.isNumber(this._westDefined)) {\r\n\t\t\treturn this._westDefined;\r\n\t\t}\r\n\t\treturn this._west;\r\n\t}\r\n\r\n\t/**\r\n\t * East-most longitude of the series.\r\n\t *\r\n\t * By default, this holds auto-calculated longitude of the extremity.\r\n\t *\r\n\t * It can be overridden manually.\r\n\t *\r\n\t * @param value Longitude\r\n\t */\r\n\tpublic set east(value: number) {\r\n\t\tthis._eastDefined = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Longitude\r\n\t */\r\n\tpublic get east(): number {\r\n\t\tif ($type.isNumber(this._eastDefined)) {\r\n\t\t\treturn this._eastDefined;\r\n\t\t}\r\n\t\treturn this._east;\r\n\t}\r\n\r\n\t/**\r\n\t * Processes JSON-based config before it is applied to the object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config\r\n\t */\r\n\tpublic processConfig(config?: { [index: string]: any }): void {\r\n\r\n\t\tif ($type.hasValue(config[\"geodata\"]) && $type.isString(config[\"geodata\"])) {\r\n\t\t\tconst name = config[\"geodata\"];\r\n\t\t\t// Check if there's a map loaded by such name\r\n\t\t\tif ($type.hasValue((window)[\"am4geodata_\" + config[\"geodata\"]])) {\r\n\t\t\t\tconfig[\"geodata\"] = (window)[\"am4geodata_\" + config[\"geodata\"]];\r\n\t\t\t}\r\n\t\t\t// Nope. Let's try maybe we got JSON as string?\r\n\t\t\telse {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconfig[\"geodata\"] = JSON.parse(config[\"geodata\"]);\r\n\t\t\t\t}\r\n\t\t\t\tcatch (e) {\r\n\t\t\t\t\t// No go again. Error out.\r\n\t\t\t\t\tthrow Error(\"MapChart error: Geodata `\" + name + \"` is not loaded or is incorrect.\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsuper.processConfig(config);\r\n\t}\r\n\r\n\t/**\r\n\t * Adds `projection` to \"as is\" fields.\r\n\t *\r\n\t * @param field Field name\r\n\t * @return Assign as is?\r\n\t */\r\n\tprotected asIs(field: string): boolean {\r\n\t\treturn field == \"geodata\" || super.asIs(field);\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic updateTooltipBounds() {\r\n\t\tif (this.tooltip && this.topParent) {\r\n\t\t\tthis.tooltip.setBounds({ x: 10, y: 10, width: this.topParent.maxWidth - 20, height: this.topParent.maxHeight - 20 });\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"MapSeries\"] = MapSeries;\r\nregistry.registeredClasses[\"MapSeriesDataItem\"] = MapSeriesDataItem;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/map/MapSeries.ts","/**\r\n * Map object module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container, IContainerProperties, IContainerAdapters, IContainerEvents } from \"../../core/Container\";\r\nimport { MapSeries, MapSeriesDataItem } from \"./MapSeries\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { IGeoPoint } from \"../../core/defs/IGeoPoint\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as d3geo from \"d3-geo\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines propeties for [[MapObject]].\r\n */\r\nexport interface IMapObjectProperties extends IContainerProperties {\r\n\r\n\t/**\r\n\t * A custom zoom level to use when `zoomToMapObject()` is called on this\r\n\t * map object.\r\n\t */\r\n\tzoomLevel?: number;\r\n\r\n\t/**\r\n\t * A custom point to use when `zoomToMapObject()` is called on this map\r\n\t * object.\r\n\t */\r\n\tzoomGeoPoint?: IGeoPoint;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[MapObject]].\r\n */\r\nexport interface IMapObjectEvents extends IContainerEvents {\r\n\tgeoBoundsChanged: {}\r\n}\r\n\r\n/**\r\n * Defines adapters for [[MapObject]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IMapObjectAdapters extends IContainerAdapters, IMapObjectProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * A base class for all map objects: lines, images, etc.\r\n *\r\n * @see {@link IMapObjectEvents} for a list of available events\r\n * @see {@link IMapObjectAdapters} for a list of available Adapters\r\n */\r\nexport class MapObject extends Container {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IMapObjectProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IMapObjectAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IMapObjectEvents;\r\n\r\n\t/**\r\n\t * A map series this object belongs to.\r\n\t */\r\n\tpublic series: MapSeries;\r\n\r\n\tpublic _dataItem: MapSeriesDataItem;\r\n\r\n\r\n\t/**\r\n\t * Longitude of the East-most point of the element.\r\n\t */\r\n\tprotected _east: number;\r\n\r\n\t/**\r\n\t * Longitude of the West-most point of the element.\r\n\t */\r\n\tprotected _west: number;\r\n\r\n\t/**\r\n\t * Latitude of the South-most point of the element.\r\n\t */\r\n\tprotected _south: number;\r\n\r\n\t/**\r\n\t * Latitude of the North-most point of the element.\r\n\t */\r\n\tprotected _north: number;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"MapObject\";\r\n\r\n\t\t// Set defaults\r\n\t\tthis.isMeasured = false;\r\n\t\tthis.layout = \"none\";\r\n\t\tthis.clickable = true;\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)validates this object, forcing it to redraw.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validate(): void {\r\n\t\tif (this.series && this.series.itemReaderText) {\r\n\t\t\tthis.readerTitle = this.series.itemReaderText;\r\n\t\t}\r\n\t\tsuper.validate();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Updates the item's bounding coordinates: coordinates of the East, West,\r\n\t * North, and South-most points.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateExtremes(): void {\r\n\t\tlet feature = this.getFeature();\r\n\t\tif (feature) {\r\n\t\t\tlet geometry = feature.geometry;\r\n\r\n\t\t\tif (geometry) {\t\t\t\t\r\n\t\t\t\tlet bounds = d3geo.geoBounds(geometry);\r\n\r\n\t\t\t\tlet west = bounds[0][0];\r\n\t\t\t\tlet south = bounds[0][1];\r\n\r\n\t\t\t\tlet north = bounds[1][1];\r\n\t\t\t\tlet east = bounds[1][0];\r\n\r\n\t\t\t\tlet changed = false;\r\n\t\t\t\tif (north != this.north) {\r\n\t\t\t\t\tthis._north = $math.round(north, 8);\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (south != this.south) {\r\n\t\t\t\t\tthis._south = $math.round(south);\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (east != this.east) {\r\n\t\t\t\t\tthis._east = $math.round(east);\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (west != this.west) {\r\n\t\t\t\t\tthis._west = $math.round(west);\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (changed) {\r\n\t\t\t\t\tthis.dispatch(\"geoBoundsChanged\");\r\n\t\t\t\t\tif(this.series){\r\n\t\t\t\t\t\tthis.series.invalidateDataItems();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic getFeature(): any {\r\n\t\treturn {};\r\n\t}\r\n\r\n\t/**\r\n\t * Longitude of the East-most point of the element.\r\n\t */\r\n\tpublic get east(): number {\r\n\t\tif ($type.isNumber(this._east)) {\r\n\t\t\treturn this._east;\r\n\t\t}\r\n\t\telse if (this.dataItem) {\r\n\t\t\treturn this.dataItem.east;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Longitude of the West-most point of the element.\r\n\t */\r\n\tpublic get west(): number {\r\n\t\tif ($type.isNumber(this._west)) {\r\n\t\t\treturn this._west;\r\n\t\t}\r\n\t\telse if (this.dataItem) {\r\n\t\t\treturn this.dataItem.west;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Latitude of the South-most point of the element.\r\n\t */\r\n\tpublic get south(): number {\r\n\t\tif ($type.isNumber(this._south)) {\r\n\t\t\treturn this._south;\r\n\t\t}\r\n\t\telse if (this.dataItem) {\r\n\t\t\treturn this.dataItem.south;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Latitude of the North-most point of the element.\r\n\t */\r\n\tpublic get north(): number {\r\n\t\tif ($type.isNumber(this._north)) {\r\n\t\t\treturn this._north;\r\n\t\t}\r\n\t\telse if (this.dataItem) {\r\n\t\t\treturn this.dataItem.north;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Shows the element's [[Tooltip]].\r\n\t *\r\n\t * A tooltip will be populated using text templates in either `tooltipHTML` or\r\n\t * `tooltipText` as well as data in `tooltipDataItem`.\r\n\t *\r\n\t * @see {@link Tooltip}\r\n\t * @param optional point (sprite-related) to which tooltip must point.\r\n\t * @return returns true if the tooltip was shown and false if it wasn't (no text was found)\r\n\t */\r\n\tpublic showTooltip(point?: IPoint): boolean {\r\n\t\tconst res = super.showTooltip(point);\r\n\t\tif (res && this.showTooltipOn == \"always\" && !this.series.chart.events.has(\"mappositionchanged\", this.handleTooltipMove, this)) {\r\n\t\t\tthis.addDisposer(this.series.chart.events.on(\"mappositionchanged\", this.handleTooltipMove, this));\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\r\n\tprotected handleTooltipMove(ev: any): void {\r\n\t\tif(!this.tooltip.isHidden){\r\n\t\t\tthis.showTooltip();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a [[DataItem]].\r\n\t * @param dataItem DataItem\r\n\t */\r\n\tprotected setDataItem(dataItem: MapSeriesDataItem) {\r\n\t\tsuper.setDataItem(dataItem);\r\n\t\tthis.applyAccessibility();\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"MapObject\"] = MapObject;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/map/MapObject.ts","/**\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { MapObject, IMapObjectProperties, IMapObjectAdapters, IMapObjectEvents } from \"./MapObject\";\r\nimport { MapImageSeriesDataItem, MapImageSeries } from \"./MapImageSeries\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[MapImage]].\r\n */\r\nexport interface IMapImageProperties extends IMapObjectProperties {\r\n\r\n\t/**\r\n\t * Latitude of the image location.\r\n\t */\r\n\tlatitude?: number;\r\n\r\n\t/**\r\n\t * Longitude of the mage location.\r\n\t */\r\n\tlongitude?: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[MapImage]].\r\n */\r\nexport interface IMapImageEvents extends IMapObjectEvents { }\r\n\r\n/**\r\n * Defines adapters for [[MapImage]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IMapImageAdapters extends IMapObjectAdapters, IMapImageProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Used to place an image on the map.\r\n *\r\n * @see {@link IMapImageEvents} for a list of available events\r\n * @see {@link IMapImageAdapters} for a list of available Adapters\r\n */\r\nexport class MapImage extends MapObject {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IMapImageProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IMapImageAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IMapImageEvents;\r\n\r\n\t/**\r\n\t * A related data item.\r\n\t */\r\n\tpublic _dataItem: MapImageSeriesDataItem;\r\n\r\n\t/**\r\n\t * A map series this object belongs to.\r\n\t */\r\n\tpublic series: MapImageSeries;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.className = \"MapImage\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Latitude image is placed at.\r\n\t *\r\n\t * @param value Latitude\r\n\t */\r\n\tpublic set latitude(value: number) {\r\n\t\tthis.setPropertyValue(\"latitude\", value, false, true);\r\n\t\tthis.updateExtremes();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Latitude\r\n\t */\r\n\tpublic get latitude(): number {\r\n\t\tlet latitude = this.getPropertyValue(\"latitude\");\r\n\t\t\r\n\t\tif(!$type.isNumber(latitude) && this.dataItem && this.dataItem.geoPoint){\r\n\t\t\tlatitude = this.dataItem.geoPoint.latitude;\r\n\t\t}\t\t\r\n\t\treturn latitude;\t\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Longitude image is placed on.\r\n\t *\r\n\t * @param value Longitude\r\n\t */\r\n\tpublic set longitude(value: number) {\r\n\t\tthis.setPropertyValue(\"longitude\", value, false, true);\r\n\t\tthis.updateExtremes();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Longitude\r\n\t */\r\n\tpublic get longitude(): number {\r\n\t\tlet longitude = this.getPropertyValue(\"longitude\");\r\n\t\tif(!$type.isNumber(longitude) && this.dataItem && this.dataItem.geoPoint){\r\n\t\t\tlongitude = this.dataItem.geoPoint.longitude;\r\n\t\t}\t\t\r\n\t\treturn longitude;\r\n\t}\r\n\r\n\t/**\r\n\t * Repositions the image to it's current position.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validatePosition(): void {\r\n\t\tif ($type.isNumber(this.latitude) && $type.isNumber(this.longitude)) {\r\n\t\t\t//this.moveTo(this.series.chart.projection.convert({ latitude: this.latitude, longitude: this.longitude }));\r\n\t\t\tlet p = this.series.chart.projection.d3Projection([this.longitude, this.latitude]);\r\n\r\n\t\t\tlet visible: any = this.series.chart.projection.d3Path({ type: 'Point', coordinates: [this.longitude, this.latitude] });\r\n\r\n\t\t\tif (!visible) {\r\n\t\t\t\tthis.__disabled = true;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.__disabled = false;\r\n\t\t\t}\r\n\r\n\t\t\tthis.moveTo({ x: p[0], y: p[1] });\r\n\t\t}\r\n\t\tsuper.validatePosition();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic getFeature(): { \"type\": \"Feature\", geometry: { type: \"Point\", coordinates: [number, number] } } {\r\n\t\treturn { \"type\": \"Feature\", geometry: { type: \"Point\", coordinates: [this.longitude, this.latitude] } };\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"MapImage\"] = MapImage;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/map/MapImage.ts","/**\r\n * A collection of Map-related utility functions.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { IGeoPoint } from \"../../core/defs/IGeoPoint\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as d3geo from \"d3-geo\";\r\n\r\n/**\r\n * Converts a multi-part polygon in X/Y coordinates to a geo-multipolygon in\r\n * geo-points (lat/long).\r\n *\r\n * @param multiPolygon Source multi-polygon\r\n * @return Geo-multipolygon\r\n */\r\n\r\nexport function multiPolygonToGeo(multiPolygon: Array<[Array<[number, number]>, Array<[number, number]>]>): Array>> {\r\n\treturn $array.map(multiPolygon, (polygon) => {\r\n\t\tlet surface: Array<[number, number]> = polygon[0];\r\n\t\tlet hole: Array<[number, number]> = polygon[1];\r\n\r\n\t\t//let holePoints: Array = [];\r\n\r\n\t\tconst geoArea = [];\r\n\r\n\t\tif (surface) {\r\n\t\t\tgeoArea.push(multiPointToGeo(surface));\r\n\t\t}\r\n\r\n\t\tif (hole) {\r\n\t\t\tgeoArea.push(multiPointToGeo(hole));\r\n\t\t}\r\n\r\n\t\treturn geoArea;\r\n\t});\r\n}\r\n\r\n/**\r\n * Converts a multiline in X/Y coordinates to a geo-multiline in geo-points\r\n * (lat/long).\r\n *\r\n * @param multiLine Source multiline\r\n * @return Geo-multiline\r\n */\r\nexport function multiLineToGeo(multiLine: Array>): Array> {\r\n\treturn $array.map(multiLine, (multiLine) => {\r\n\t\treturn multiPointToGeo(multiLine);\r\n\t});\r\n}\r\n\r\n/**\r\n * Converts multiple X/Y points into a lat/long geo-points.\r\n *\r\n * @param points Source points\r\n * @return Geo-points\r\n */\r\nexport function multiPointToGeo(points: Array<[number, number]>): Array {\r\n\treturn $array.map(points, (point) => {\r\n\t\treturn pointToGeo(point);\r\n\t});\r\n}\r\n\r\n\r\n/**\r\n * Converts multiple X/Y points into a lat/long geo-points.\r\n *\r\n * @param points Source points\r\n * @return Geo-points\r\n */\r\nexport function multiGeoToPoint(geoPoints: Array): Array<[number, number]> {\r\n\treturn $array.map(geoPoints, geoToPoint);\r\n}\r\n\r\n\r\n/**\r\n * Converts X/Y point into a lat/long geo-point.\r\n *\r\n * @param point Source point\r\n * @return Geo-point\r\n */\r\nexport function pointToGeo(point: [number, number]): IGeoPoint {\r\n\treturn { longitude: point[0], latitude: point[1] }\r\n}\r\n\r\n/**\r\n * Converts lat/long geo-point into a X/Y point.\r\n *\r\n * @param point Source geo-point\r\n * @return X/Y point\r\n */\r\nexport function geoToPoint(geoPoint: IGeoPoint): [number, number] {\r\n\treturn [geoPoint.longitude, geoPoint.latitude];\r\n}\r\n\r\n\r\n/**\r\n * Converts geo line (collection of lat/long coordinates) to screen line (x/y).\r\n *\r\n * @param multiGeoLine Source geo line\r\n * @return Screen line\r\n */\r\nexport function multiGeoLineToMultiLine(multiGeoLine: Array>): Array> {\r\n\treturn $array.map(multiGeoLine, (segment) => {\r\n\t\treturn $array.map(segment, geoToPoint);\r\n\t});\r\n}\r\n\r\n/**\r\n * Converts a geo polygon (collection of lat/long coordinates) to screen\r\n * polygon (x/y).\r\n *\r\n * @param multiGeoPolygon Source polygon\r\n * @return Screen polygon\r\n */\r\nexport function multiGeoPolygonToMultipolygon(multiGeoPolygon: Array<[Array, Array]>): Array>> {\r\n\treturn $array.map(multiGeoPolygon, (geoPolygon) => {\r\n\t\tlet surface = geoPolygon[0];\r\n\t\tlet hole = geoPolygon[1];\r\n\r\n\t\tconst multiPolygon = [];\r\n\r\n\t\tif (surface) {\r\n\t\t\tmultiPolygon.push(multiGeoToPoint(surface));\r\n\t\t}\r\n\r\n\t\tif (hole) {\r\n\t\t\tmultiPolygon.push(multiGeoToPoint(hole));\r\n\t\t}\r\n\r\n\t\treturn multiPolygon;\r\n\t});\r\n}\r\n\r\n/**\r\n * Returns a set of geographical coordinates for the circle with a center\r\n * at specific lat/long coordinates and radius (in degrees).\r\n *\r\n * @since 4.3.0\r\n * @param longitude Center longitude\r\n * @param latitude Center latitude\r\n * @param radius Radius (degrees)\r\n * @return Circle coordinates\r\n */\r\nexport function getCircle(longitude: number, latitude: number, radius: number): Array>> {\r\n\treturn [d3geo.geoCircle().center([longitude, latitude]).radius(radius)().coordinates as Array>];\r\n}\r\n\r\n/**\r\n * Returns a set of screen coordinates that represents a \"background\" area\r\n * between provided extremities.\r\n *\r\n * @since 4.3.0\r\n * @param north North latitude\r\n * @param east East longitude\r\n * @param south South latitude\r\n * @param west West longitude\r\n * @return Polygon\r\n */\r\nexport function getBackground(north: number, east: number, south: number, west: number): Array>> {\r\n\r\n\tlet multiPolygon: Array>> = [];\r\n\r\n\tif(west == -180){\r\n\t\twest = -179.9999;\r\n\t}\r\n\tif(south == -90){\r\n\t\tsouth = -89.9999;\r\n\t}\r\n\tif(north == 90){\r\n\t\tnorth = 89.9999;\r\n\t}\r\n\tif(east == 180){\r\n\t\teast = 179.9999;\r\n\t}\r\n\r\n\r\n\tlet stepLong = Math.min(90, (east - west) / Math.ceil((east - west) / 90));\r\n\tlet stepLat = (north - south) / Math.ceil((north - south) / 90);\r\n\r\n\tfor (let ln = west; ln < east; ln = ln + stepLong) {\r\n\t\tlet surface: Array<[number, number]> = [];\r\n\t\tmultiPolygon.push([surface]);\r\n\r\n\t\tif(ln + stepLong > east){\r\n\t\t\tstepLong = east - ln;\r\n\t\t}\r\n\r\n\t\tfor (let ll = ln; ll <= ln + stepLong; ll = ll + 5) {\r\n\t\t\tsurface.push([ll, north]);\r\n\t\t}\r\n\r\n\t\tfor (let lt = north; lt >= south; lt = lt - stepLat) {\r\n\t\t\tsurface.push([ln + stepLong, lt]);\r\n\t\t}\r\n\r\n\t\tfor (let ll = ln + stepLong; ll >= ln; ll = ll - 5) {\r\n\t\t\tsurface.push([ll, south]);\r\n\t\t}\r\n\r\n\t\tfor (let lt = south; lt <= north; lt = lt + stepLat) {\r\n\t\t\tsurface.push([ln, lt]);\r\n\t\t}\r\n\r\n\r\n\t}\r\n\r\n\treturn multiPolygon;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/map/MapUtils.ts","/**\r\n * Map polygon module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { MapObject, IMapObjectProperties, IMapObjectAdapters, IMapObjectEvents } from \"./MapObject\";\r\nimport { MapPolygonSeriesDataItem, MapPolygonSeries } from \"./MapPolygonSeries\";\r\nimport { IGeoPoint } from \"../../core/defs/IGeoPoint\";\r\nimport { Polygon } from \"../../core/elements/Polygon\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport $polylabel from \"polylabel\";\r\nimport * as $mapUtils from \"./MapUtils\";\r\nimport * as d3geo from \"d3-geo\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[MapPolygon]].\r\n */\r\nexport interface IMapPolygonProperties extends IMapObjectProperties {\r\n\r\n\t/**\r\n\t * Set of geographical coordinates for the polygon.\r\n\t */\r\n\tmultiGeoPolygon?: Array<[Array, Array]>;\r\n\r\n\t/**\r\n\t * Set of screen coordinates for the polygon.\r\n\t */\r\n\tmultiPolygon?: Array>>;\r\n\r\n\t/**\r\n\t * Latitude of the visual center of the polygon.\r\n\t */\r\n\tvisualLatitude?: number;\r\n\r\n\t/**\r\n\t * Longitude of the visual center of the polygon.\r\n\t */\r\n\tvisualLongitude?: number;\r\n\r\n\t/**\r\n\t * When polygon's sides are plotted, they are bent according to the used\r\n\t * projection, to depict the shortest distance how it would go on the actual\r\n\t * land.\r\n\t *\r\n\t * `precision` introduces a setting which can control when such bending\r\n\t * occurs.\r\n\t *\r\n\t * If the distance (in degrees) between two points of polygon's side is less\r\n\t * than `precision`, no bending will take place and the line will be straight.\r\n\t *\r\n\t * Set to large number (e.g. 10000) for perfectly straight lines on all\r\n\t * polygon's sides.\r\n\t *\r\n\t * @since 4.9.1\r\n\t * @default 0.5\r\n\t */\r\n\tprecision?: number;\r\n}\r\n\r\n/**\r\n * Defines events for [[MapPolygon]].\r\n */\r\nexport interface IMapPolygonEvents extends IMapObjectEvents { }\r\n\r\n/**\r\n * Defines adapters for [[MapPolygon]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IMapPolygonAdapters extends IMapObjectAdapters, IMapPolygonProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Used to draw a polygon on the map.\r\n *\r\n * @see {@link IMapPolygonEvents} for a list of available events\r\n * @see {@link IMapPolygonAdapters} for a list of available Adapters\r\n */\r\nexport class MapPolygon extends MapObject {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IMapPolygonProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IMapPolygonAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IMapPolygonEvents;\r\n\r\n\t/**\r\n\t * A visual polygon element.\r\n\t */\r\n\tpublic polygon: Polygon;\r\n\r\n\t/**\r\n\t * A related data item.\r\n\t */\r\n\tpublic _dataItem: MapPolygonSeriesDataItem;\r\n\r\n\t/**\r\n\t * A map series this object belongs to.\r\n\t */\r\n\tpublic series: MapPolygonSeries;\r\n\r\n\t/**\r\n\t * Latitude of the visual center of the polygon.\r\n\t */\r\n\tprotected _visualLatitude: number;\r\n\r\n\t/**\r\n\t * Longitude of the visual center of the polygon.\r\n\t */\r\n\tprotected _visualLongitude: number;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.className = \"MapPolygon\";\r\n\r\n\t\tthis.polygon = this.createChild(Polygon);\r\n\t\tthis.polygon.shouldClone = false;\r\n\t\tthis.polygon.applyOnClones = true;\r\n\t\tthis.setPropertyValue(\"precision\", 0.5);\r\n\r\n\t\tlet interfaceColors = new InterfaceColorSet();\r\n\r\n\t\tthis.fill = interfaceColors.getFor(\"secondaryButton\");\r\n\t\tthis.stroke = interfaceColors.getFor(\"secondaryButtonStroke\");\r\n\t\tthis.strokeOpacity = 1;\r\n\r\n\t\tthis.tooltipPosition = \"pointer\";\r\n\r\n\t\tthis.nonScalingStroke = true;\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic getFeature(): { \"type\": \"Feature\", geometry: { type: \"MultiPolygon\", coordinates: Array>> } } {\r\n\t\tif (this.multiPolygon && this.multiPolygon.length > 0) {\r\n\t\t\treturn { \"type\": \"Feature\", geometry: { type: \"MultiPolygon\", coordinates: this.multiPolygon } };\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Set of coordinates for the polygon.\r\n\t *\r\n\t * @param multiGeoPolygon Polygon coordinates\r\n\t */\r\n\tpublic set multiGeoPolygon(multiGeoPolygon: Array<[Array, Array]>) {\r\n\t\tthis.setPropertyValue(\"multiGeoPolygon\", multiGeoPolygon, true);\r\n\t\tthis.multiPolygon = $mapUtils.multiGeoPolygonToMultipolygon(multiGeoPolygon);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Polygon coordinates\r\n\t */\r\n\tpublic get multiGeoPolygon(): Array<[Array, Array]> {\r\n\t\tlet multiGeoPolygon = this.getPropertyValue(\"multiGeoPolygon\");\r\n\t\tif (!multiGeoPolygon && this.dataItem) {\r\n\t\t\tmultiGeoPolygon = this.dataItem.multiGeoPolygon;\r\n\t\t}\r\n\t\treturn multiGeoPolygon;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * A collection of X/Y coordinates for a multi-part polygon. E.g.:\r\n\t *\r\n\t * ```JSON\r\n\t * [\r\n\t * // Part 1\r\n\t * [\r\n\t * [\r\n\t * [ 100, 150 ],\r\n\t * [ 120, 200 ],\r\n\t * [ 150, 220 ],\r\n\t * [ 170, 240 ],\r\n\t * [ 100, 150 ]\r\n\t * ]\r\n\t * ],\r\n\t *\r\n\t * // Part 2\r\n\t * [\r\n\t * [\r\n\t * [ 300, 350 ],\r\n\t * [ 320, 400 ],\r\n\t * [ 350, 420 ],\r\n\t * [ 370, 440 ],\r\n\t * [ 300, 350 ]\r\n\t * ]\r\n\t * ]\r\n\t * ]\r\n\t * ```\r\n\t *\r\n\t * @param multiPolygon Coordinates\r\n\t */\r\n\tpublic set multiPolygon(multiPolygon: Array>>) {\r\n\t\tif (this.setPropertyValue(\"multiPolygon\", multiPolygon)) {\r\n\t\t\tthis.updateExtremes();\r\n\t\t\tthis.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Coordinates\r\n\t */\r\n\tpublic get multiPolygon(): Array>> {\r\n\t\tlet multiPolygon = this.getPropertyValue(\"multiPolygon\");\r\n\t\tif (!multiPolygon && this.dataItem) {\r\n\t\t\tmultiPolygon = this.dataItem.multiPolygon;\r\n\t\t}\r\n\t\treturn multiPolygon;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * (Re)validates the polygon, effectively redrawing it.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validate(): void {\r\n\t\tif (this.series) {\r\n\t\t\tlet projection = this.series.chart.projection;\r\n\r\n\t\t\tlet pathGenerator = projection.d3Path;\r\n\r\n\t\t\tif (this.multiPolygon) {\r\n\r\n\t\t\t\tif (this.series) {\r\n\t\t\t\t\tlet feature = { type: \"MultiPolygon\", coordinates: this.multiPolygon };\r\n\r\n\t\t\t\t\tprojection.d3Projection.precision(this.precision);\r\n\t\t\t\t\tthis.polygon.path = pathGenerator(feature);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.series.calculateVisualCenter) {\r\n\t\t\t\t\tlet biggestArea = 0;\r\n\t\t\t\t\tlet biggestPolygon = this.multiPolygon[0];\r\n\r\n\t\t\t\t\tif (this.multiPolygon.length > 1) {\r\n\t\t\t\t\t\tfor (let i = 0; i < this.multiPolygon.length; i++) {\r\n\t\t\t\t\t\t\tlet polygon = this.multiPolygon[i];\r\n\t\t\t\t\t\t\tlet area = d3geo.geoArea({ type: \"Polygon\", coordinates: polygon });\r\n\r\n\t\t\t\t\t\t\tif (area > biggestArea) {\r\n\t\t\t\t\t\t\t\tbiggestPolygon = polygon;\r\n\t\t\t\t\t\t\t\tbiggestArea = area;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet center = $polylabel(biggestPolygon);\r\n\r\n\t\t\t\t\tthis._visualLongitude = center[0];\r\n\t\t\t\t\tthis._visualLatitude = center[1];\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis._visualLongitude = this.longitude;\r\n\t\t\t\t\tthis._visualLatitude = this.latitude;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsuper.validate();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic measureElement(): void {\r\n\t\t// Overriding, just to avoid extra measure\r\n\t}\r\n\r\n\t/**\r\n\t * Latitude of the geometrical center of the polygon.\r\n\t *\r\n\t * @readonly\r\n\t * @return Center latitude\r\n\t */\r\n\tpublic get latitude(): number {\r\n\t\treturn this.north + (this.south - this.north) / 2;\r\n\t}\r\n\r\n\t/**\r\n\t * Longitude of the geometrical center of the polygon.\r\n\t *\r\n\t * @readonly\r\n\t * @return Center longitude\r\n\t */\r\n\tpublic get longitude(): number {\r\n\t\treturn this.east + (this.west - this.east) / 2;\r\n\t}\r\n\r\n\t/**\r\n\t * Latitude of the visual center of the polygon.\r\n\t *\r\n\t * It may (and probably won't) coincide with geometrical center.\r\n\t *\r\n\t * @since 4.3.0\r\n\t * @param value Latitude\r\n\t */\r\n\tpublic set visualLatitude(value: number) {\r\n\t\tthis.setPropertyValue(\"visualLatitude\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Latitude\r\n\t */\r\n\tpublic get visualLatitude(): number {\r\n\t\tlet latitude = this.getPropertyValue(\"visualLatitude\");\r\n\t\tif ($type.isNumber(latitude)) {\r\n\t\t\treturn (latitude);\r\n\t\t}\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn this._visualLatitude;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\r\n\t\t\t\t\"visualLatitude\",\r\n\t\t\t\tthis._visualLatitude\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Longitude of the visual center of the polygon.\r\n\t *\r\n\t * It may (and probably won't) coincide with geometrical center.\r\n\t *\r\n\t * @since 4.3.0\r\n\t * @param value Longitude\r\n\t */\r\n\tpublic set visualLongitude(value: number) {\r\n\t\tthis.setPropertyValue(\"visualLongitude\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Longitude\r\n\t */\r\n\tpublic get visualLongitude(): number {\r\n\t\tlet longitude = this.getPropertyValue(\"visualLongitude\");\r\n\t\tif ($type.isNumber(longitude)) {\r\n\t\t\treturn (longitude);\r\n\t\t}\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn this._visualLongitude;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\r\n\t\t\t\t\"visualLongitude\",\r\n\t\t\t\tthis._visualLongitude\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Not 100% sure about this, as if we add something to MapPolygon this\r\n\t * won't be true, but otherwise we will get all 0 and the tooltip won't\r\n\t * be positioned properly\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Element's width in pixels.\r\n\t *\r\n\t * @readonly\r\n\t * @return Width (px)\r\n\t */\r\n\tpublic get pixelWidth(): number {\r\n\t\treturn this.polygon.pixelWidth;\r\n\t}\r\n\r\n\t/**\r\n\t * Element's height in pixels.\r\n\t *\r\n\t * @readonly\r\n\t * @return Width (px)\r\n\t */\r\n\tpublic get pixelHeight(): number {\r\n\t\treturn this.polygon.pixelHeight;\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all properties from another instance of [[MapPolygon]].\r\n\t *\r\n\t * @param source Source series\r\n\t */\r\n\tpublic copyFrom(source: this) {\r\n\t\tsuper.copyFrom(source);\r\n\t\tthis.polygon.copyFrom(source.polygon);\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic updateExtremes() {\r\n\t\tsuper.updateExtremes();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t * used to sorth polygons from big to small\r\n\t */\r\n\tpublic get boxArea() {\r\n\t\treturn (this.north - this.south) * (this.east - this.west);\r\n\t}\r\n\r\n\t/**\r\n\t * X coordinate for the slice tooltip.\r\n\t *\r\n\t * @ignore\r\n\t * @return X\r\n\t */\r\n\tpublic getTooltipX(): number {\r\n\t\treturn this.series.chart.projection.convert({ longitude: this.visualLongitude, latitude: this.visualLatitude }).x;\r\n\t}\r\n\r\n\t/**\r\n\t * Y coordinate for the slice tooltip.\r\n\t *\r\n\t * @ignore\r\n\t * @return Y\r\n\t */\r\n\tpublic getTooltipY(): number {\r\n\t\treturn this.series.chart.projection.convert({ longitude: this.visualLongitude, latitude: this.visualLatitude }).y\r\n\t}\r\n\r\n\t/**\r\n\t * When polygon's sides are plotted, they are bent according to the used\r\n\t * projection.\r\n\t *\r\n\t * `precision` introduces a setting which can control when such bending\r\n\t * occurs.\r\n\t *\r\n\t * If the distance (in degrees) between two points of polygon's side is less\r\n\t * than `precision`, no bending will take place and the line will be straight.\r\n\t *\r\n\t * Set to large number (e.g. 10000) for perfectly straight lines on all\r\n\t * polygon's sides.\r\n\t *\r\n\t * @since 4.9.1\r\n\t * @default 0.5\r\n\t * @param value Precision\r\n\t */\r\n\tpublic set precision(value: number) {\r\n\t\tthis.setPropertyValue(\"precision\", value, true);\r\n\t}\r\n\r\n\tpublic get precision(): number {\r\n\t\treturn this.getPropertyValue(\"precision\");\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"MapPolygon\"] = MapPolygon;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/map/MapPolygon.ts","/**\r\n * Map polygon series module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { MapSeries, MapSeriesDataItem, GEOJSONGeometry, IMapSeriesProperties, IMapSeriesDataFields, IMapSeriesAdapters, IMapSeriesEvents } from \"./MapSeries\";\r\nimport { MapChart } from \"../types/MapChart\";\r\nimport { MapPolygon } from \"./MapPolygon\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { IMapPolygonDataObject } from \"../types/MapChart\";\r\nimport { IGeoPoint } from \"../../core/defs/IGeoPoint\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $mapUtils from \"./MapUtils\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport { Disposer } from \"../../core/utils/Disposer\";\r\nimport { Ordering } from \"../../core/utils/Order\";\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[MapPolygonSeries]]\r\n * @see {@link DataItem}\r\n */\r\nexport class MapPolygonSeriesDataItem extends MapSeriesDataItem {\r\n\r\n\t/**\r\n\t * A [[MapPolygon]] element related to this data item.\r\n\t */\r\n\tprotected _mapPolygon: MapPolygon;\r\n\r\n\t/**\r\n\t * A collection of X/Y coordinates for a single polygon.\r\n\t */\r\n\tprotected _polygon: Array>;\r\n\r\n\t/**\r\n\t * A collection of X/Y coordinates for a multi-part polygon.\r\n\t */\r\n\tprotected _multiPolygon: Array>>;\r\n\r\n\t/**\r\n\t * A collection of lat/long coordinates for a single polygon.\r\n\t */\r\n\tprotected _geoPolygon: [Array, Array];\r\n\r\n\t/**\r\n\t * A collection of lat/long coordinates for a multi-part polygon.\r\n\t */\r\n\tprotected _multiGeoPolygon: Array<[Array, Array]>;\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for\r\n\t */\r\n\tpublic _component!: MapPolygonSeries;\r\n\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"MapPolygonSeriesDataItem\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic getFeature(): { \"type\": \"Feature\", geometry: { type: \"MultiPolygon\", coordinates: Array>> } } {\r\n\t\tif (this.multiPolygon && this.multiPolygon.length > 0) {\r\n\t\t\treturn { \"type\": \"Feature\", geometry: { type: \"MultiPolygon\", coordinates: this.multiPolygon } };\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A [[MapPolygon]] element related to this data item.\r\n\t *\r\n\t * @readonly\r\n\t * @return Element\r\n\t */\r\n\tpublic get mapPolygon(): MapPolygon {\r\n\t\tif (!this._mapPolygon) {\r\n\t\t\tlet mapPolygon = this.component.mapPolygons.create();\r\n\t\t\tthis._mapPolygon = mapPolygon;\r\n\t\t\tthis.addSprite(mapPolygon);\r\n\r\n\t\t\tthis._disposers.push(new Disposer(() => {\r\n\t\t\t\tif (this.component) {\r\n\t\t\t\t\tthis.component.mapPolygons.removeValue(mapPolygon);\r\n\t\t\t\t}\r\n\t\t\t}));\r\n\r\n\t\t\tthis.mapObject = mapPolygon;\r\n\t\t}\r\n\t\treturn this._mapPolygon;\r\n\t}\r\n\r\n\t/**\r\n\t * A collection of X/Y coordinates for a single polygon. E.g.:\r\n\t *\r\n\t * ```JSON\r\n\t * [\r\n\t * [\r\n\t * [ 100, 150 ],\r\n\t * [ 120, 200 ],\r\n\t * [ 150, 200 ],\r\n\t * [ 170, 240 ],\r\n\t * [ 100, 150 ]\r\n\t * ]\r\n\t * ]\r\n\t * ```\r\n\t *\r\n\t * @param polygon Coordinates\r\n\t */\r\n\tpublic set polygon(polygon: Array>) {\r\n\t\tthis._polygon = polygon;\r\n\t\tthis.multiPolygon = [polygon];\r\n\t}\r\n\r\n\t/**\r\n\t * @return Coordinates\r\n\t */\r\n\tpublic get polygon(): Array> {\r\n\t\treturn this._polygon;\r\n\t}\r\n\r\n\t/**\r\n\t * A collection of X/Y coordinates for a multi-part polygon. E.g.:\r\n\t *\r\n\t * ```JSON\r\n\t * [\r\n\t * // Part 1\r\n\t * [\r\n\t * [\r\n\t * [ 100, 150 ],\r\n\t * [ 120, 200 ],\r\n\t * [ 150, 220 ],\r\n\t * [ 170, 240 ],\r\n\t * [ 100, 150 ]\r\n\t * ]\r\n\t * ],\r\n\t *\r\n\t * // Part 2\r\n\t * [\r\n\t * [\r\n\t * [ 300, 350 ],\r\n\t * [ 320, 400 ],\r\n\t * [ 350, 420 ],\r\n\t * [ 370, 440 ],\r\n\t * [ 300, 350 ]\r\n\t * ]\r\n\t * ]\r\n\t * ]\r\n\t * ```\r\n\t *\r\n\t * @param multiPolygon Coordinates\r\n\t */\r\n\tpublic set multiPolygon(multiPolygon: Array>>) {\r\n\t\tthis._multiPolygon = multiPolygon;\r\n\t\tthis.updateExtremes();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Coordinates\r\n\t */\r\n\tpublic get multiPolygon(): Array>> {\r\n\t\treturn this._multiPolygon;\r\n\t}\r\n\r\n\t/**\r\n\t * A collection of lat/long coordinates for a single polygon. E.g.:\r\n\t *\r\n\t * ```JSON\r\n\t * [\r\n\t * [\r\n\t * { latitude: -10.0, longitude: -10.0 },\r\n\t * { latitude: 10.0, longitude: -10.0 },\r\n\t * { latitude: 10.0, longitude: 10.0 },\r\n\t * { latitude: -10.0, longitude: -10.0 }\r\n\t * ]\r\n\t * ]\r\n\t * ```\r\n\t *\r\n\t * @see {@link https://tools.ietf.org/html/rfc7946#section-3.1.6} GeoJSON Polygon reference\r\n\t * @param geoPolygon Coordinates\r\n\t */\r\n\tpublic set geoPolygon(geoPolygon: [Array, Array]) {\r\n\t\tthis._geoPolygon = geoPolygon;\r\n\t\tthis.multiGeoPolygon = [geoPolygon];\r\n\t}\r\n\r\n\t/**\r\n\t * @return Coordinates\r\n\t */\r\n\tpublic get geoPolygon(): [Array, Array] {\r\n\t\treturn this._geoPolygon;\r\n\t}\r\n\r\n\t/**\r\n\t * A collection of lat/long coordinates for a multi-part polygon. E.g.:\r\n\t *\r\n\t * ```JSON\r\n\t * [\r\n\t * [\r\n\t * [\r\n\t * { longitude: 180.0, latitude: 40.0 },\r\n\t * { longitude: 180.0, latitude: 50.0 },\r\n\t * { longitude: 170.0, latitude: 50.0 },\r\n\t * { longitude: 170.0, latitude: 40.0 },\r\n\t * { longitude: 180.0, latitude: 40.0 }\r\n\t * ]\r\n\t * ],\r\n\t * [\r\n\t * [\r\n\t * { longitude: -170.0, latitude: 40.0 },\r\n\t * { longitude: -170.0, latitude: 50.0 },\r\n\t * { longitude: -180.0, latitude: 50.0 },\r\n\t * { longitude: -180.0, latitude: 40.0 },\r\n\t * { longitude: -170.0, latitude: 40.0 }\r\n\t * ]\r\n\t * ]\r\n\t * ]\r\n\t * ```\r\n\t *\r\n\t * @see {@link https://tools.ietf.org/html/rfc7946#section-3.1.7} GeoJSON MultiPolygon reference\r\n\t * @param multiGeoPolygon Coordinates\r\n\t */\r\n\tpublic set multiGeoPolygon(multiGeoPolygon: Array<[Array, Array]>) {\r\n\t\tthis._multiGeoPolygon = multiGeoPolygon;\r\n\t\tthis.multiPolygon = $mapUtils.multiGeoPolygonToMultipolygon(multiGeoPolygon);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Coordinates\r\n\t */\r\n\tpublic get multiGeoPolygon(): Array<[Array, Array]> {\r\n\t\treturn this._multiGeoPolygon;\r\n\t}\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines data fields for [[MapPolygonSeries]].\r\n */\r\nexport interface IMapPolygonSeriesDataFields extends IMapSeriesDataFields {\r\n\r\n\t/**\r\n\t * Field name that holds polygon pixels.\r\n\t */\r\n\tpolygon?: string;\r\n\r\n\t/**\r\n\t * Field name that holds multi-polygon pixels.\r\n\t */\r\n\tmultiPolygon?: string;\r\n\r\n\t/**\r\n\t * Field name that holds polygon data in Geo coordinates.\r\n\t */\r\n\tgeoPolygon?: string;\r\n\r\n\t/**\r\n\t * Field name that holds poly-polygon data in Geo coordinates.\r\n\t */\r\n\tmultiGeoPolygon?: string;\r\n\r\n}\r\n\r\n/**\r\n * Defines properties for [[MapPolygonSeries]].\r\n */\r\nexport interface IMapPolygonSeriesProperties extends IMapSeriesProperties {\r\n\r\n\t/**\r\n\t * How to order polygons in actual SVG document. Affects selection order\r\n\t * using TAB key.\r\n\t *\r\n\t * @since 4.9.36\r\n\t */\r\n\tsortPolygonsBy: \"area\" | \"name\" | \"longitude\" | \"latitude\" | \"id\" | \"none\";\r\n\r\n\t/**\r\n\t * If `sortPolygonsBy` is set to something other than `\"none\"`, polygons\r\n\t * will be sorted by the given parameter, using natural sort direction.\r\n\t *\r\n\t * Setting `sortPolygonsReversed = true` will reverse this direction.\r\n\t *\r\n\t * @since 4.9.36\r\n\t */\r\n\tsortPolygonsReversed: boolean;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[MapPolygonSeries]].\r\n */\r\nexport interface IMapPolygonSeriesEvents extends IMapSeriesEvents { }\r\n\r\n/**\r\n * Defines adapters for [[MapPolygonSeries]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IMapPolygonSeriesAdapters extends IMapSeriesAdapters, IMapPolygonSeriesProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * A series of map polygon elements.\r\n *\r\n * @see {@link IMapPolygonSeriesEvents} for a list of available Events\r\n * @see {@link IMapPolygonSeriesAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class MapPolygonSeries extends MapSeries {\r\n\r\n\t/**\r\n\t * Defines available data fields.\r\n\t */\r\n\tpublic _dataFields: IMapPolygonSeriesDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IMapPolygonSeriesProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IMapPolygonSeriesAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IMapPolygonSeriesEvents;\r\n\r\n\t/**\r\n\t * Defines the type of data item.\r\n\t */\r\n\tpublic _dataItem: MapPolygonSeriesDataItem;\r\n\r\n\t/**\r\n\t * A related chart/map object, this element is drawn on.\r\n\t */\r\n\tpublic chart: MapChart;\r\n\r\n\t/**\r\n\t * A list of map polygons in the series.\r\n\t */\r\n\tprotected _mapPolygons: ListTemplate;\r\n\r\n\t/**\r\n\t * Indicates if series should automatically calculate visual center of the\r\n\t * polygons (accessible via `visualLongitude` and `visualLatitude` properties\r\n\t * of the [[MapPolygon]]).\r\n\t *\r\n\t * @default false\r\n\t * @since 4.3.0\r\n\t */\r\n\tpublic calculateVisualCenter: boolean = false;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\r\n\t\tthis.className = \"MapPolygonSeries\";\r\n\r\n\t\t// Set data fields\r\n\t\tthis.dataFields.multiPolygon = \"multiPolygon\";\r\n\t\tthis.dataFields.polygon = \"polygon\";\r\n\r\n\t\tthis.dataFields.geoPolygon = \"geoPolygon\";\r\n\t\tthis.dataFields.multiGeoPolygon = \"multiGeoPolygon\";\r\n\r\n\t\tthis.setPropertyValue(\"sortPolygonsBy\", \"area\");\r\n\t\tthis.setPropertyValue(\"sortPolygonsReversed\", false);\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty DataItem of the type appropriate for this object.\r\n\t *\r\n\t * @see {@link DataItem}\r\n\t * @return Data Item\r\n\t */\r\n\tprotected createDataItem(): this[\"_dataItem\"] {\r\n\t\treturn new MapPolygonSeriesDataItem();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected processIncExc() {\r\n\t\tthis.mapPolygons.clear();\r\n\t\tsuper.processIncExc();\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)validates series data, effectively causing the whole series to be\r\n\t * redrawn.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateData(): void {\r\n\t\t// process geoJSON and created map objects\r\n\t\tif (this.useGeodata || this.geodata) {\r\n\t\t\tlet geoJSON: any = !this._dataSources[\"geodata\"] ? this.chart.geodata : undefined;\r\n\r\n\t\t\tif (this.geodata) {\r\n\t\t\t\tgeoJSON = this.geodata;\r\n\t\t\t}\r\n\r\n\t\t\tif (geoJSON) {\r\n\r\n\t\t\t\tlet features: any[];\r\n\r\n\t\t\t\tif (geoJSON.type == \"FeatureCollection\") {\r\n\t\t\t\t\tfeatures = geoJSON.features;\r\n\t\t\t\t}\r\n\t\t\t\telse if (geoJSON.type == \"Feature\") {\r\n\t\t\t\t\tfeatures = [geoJSON];\r\n\t\t\t\t}\r\n\t\t\t\telse if ([\"Point\", \"LineString\", \"Polygon\", \"MultiPoint\", \"MultiLineString\", \"MultiPolygon\"].indexOf(geoJSON.type) != -1) {\r\n\t\t\t\t\tfeatures = [{ geometry: geoJSON }];\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tconsole.log(\"nothing found in geoJSON\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (features) {\r\n\t\t\t\t\tfor (let i = 0, len = features.length; i < len; i++) {\r\n\t\t\t\t\t\tlet feature: any = features[i];\r\n\t\t\t\t\t\tlet geometry: any = feature.geometry;\r\n\r\n\t\t\t\t\t\tif (geometry) {\r\n\t\t\t\t\t\t\tlet type: GEOJSONGeometry = geometry.type;\r\n\t\t\t\t\t\t\tlet id: string = feature.id;\r\n\r\n\t\t\t\t\t\t\tif (this.chart.geodataNames && this.chart.geodataNames[id]) {\r\n\t\t\t\t\t\t\t\tfeature.properties.name = this.chart.geodataNames[id];\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (type == \"Polygon\" || type == \"MultiPolygon\") {\r\n\r\n\t\t\t\t\t\t\t\tif (!this.checkInclude(this.include, this.exclude, id)) {\r\n\t\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tlet coordinates: any[] = geometry.coordinates;\r\n\r\n\t\t\t\t\t\t\t\tif (coordinates) {\r\n\t\t\t\t\t\t\t\t\t// make the same as MultiPolygon\r\n\t\t\t\t\t\t\t\t\tif (type == \"Polygon\") {\r\n\t\t\t\t\t\t\t\t\t\tcoordinates = [coordinates];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t// find data object in user-provided data\r\n\t\t\t\t\t\t\t\tlet dataObject: IMapPolygonDataObject = $array.find(this.data, (value, i) => {\r\n\t\t\t\t\t\t\t\t\treturn value.id == id;\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\r\n\t\t\t\t\t\t\t\t// create one if not found\r\n\t\t\t\t\t\t\t\tif (!dataObject) {\r\n\t\t\t\t\t\t\t\t\tdataObject = { multiPolygon: coordinates, id: id, madeFromGeoData: true };\r\n\t\t\t\t\t\t\t\t\tthis.data.push(dataObject);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t// in case found\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t// if user-provided object doesn't have points data provided in any way:\r\n\t\t\t\t\t\t\t\t\tif (!dataObject.multiPolygon) {\r\n\t\t\t\t\t\t\t\t\t\tdataObject.multiPolygon = coordinates;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t// copy properties data to datacontext\r\n\t\t\t\t\t\t\t\t$utils.softCopyProperties(feature.properties, dataObject);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsuper.validateData();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * (Re)validates the series\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validate() {\r\n\t\tsuper.validate();\r\n\r\n\t\tthis.dataItems.each((dataItem) => {\r\n\t\t\t$utils.used(dataItem.mapPolygon);\r\n\t\t});\r\n\r\n\t\tif (this.sortPolygonsBy != \"none\") {\r\n\r\n\t\t\tconst sortBy = this.sortPolygonsBy;\r\n\t\t\tconst reversed = this.sortPolygonsReversed;\r\n\t\t\tthis.mapPolygons.sort((a, b) => {\r\n\t\t\t\tlet valA: number | string = \"\";\r\n\t\t\t\tlet valB: number | string = \"\";\r\n\t\t\t\tlet dirA: Ordering = -1;\r\n\t\t\t\tlet dirB: Ordering = 1;\r\n\r\n\t\t\t\tswitch (sortBy) {\r\n\t\t\t\t\tcase \"area\":\r\n\t\t\t\t\t\tvalA = a.boxArea;\r\n\t\t\t\t\t\tvalB = b.boxArea;\r\n\t\t\t\t\t\tdirA = -1;\r\n\t\t\t\t\t\tdirB = 1;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\tvalA = (a).dataItem.dataContext.name || \"\";\r\n\t\t\t\t\t\tvalB = (b).dataItem.dataContext.name || \"\";\r\n\t\t\t\t\t\tdirA = 1;\r\n\t\t\t\t\t\tdirB = -1;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"id\":\r\n\t\t\t\t\t\tvalA = (a).dataItem.dataContext.id || \"\";\r\n\t\t\t\t\t\tvalB = (b).dataItem.dataContext.id || \"\";\r\n\t\t\t\t\t\tdirA = 1;\r\n\t\t\t\t\t\tdirB = -1;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"latitude\":\r\n\t\t\t\t\t\tvalA = reversed ? a.south : a.north;\r\n\t\t\t\t\t\tvalB = reversed ? b.south : b.north;\r\n\t\t\t\t\t\tdirA = -1;\r\n\t\t\t\t\t\tdirB = 1;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"longitude\":\r\n\t\t\t\t\t\tvalA = reversed ? a.east : a.west;\r\n\t\t\t\t\t\tvalB = reversed ? b.east : b.west;\r\n\t\t\t\t\t\tdirA = 1;\r\n\t\t\t\t\t\tdirB = -1;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (valA < valB) {\r\n\t\t\t\t\treturn reversed ? dirB : dirA;\r\n\t\t\t\t}\r\n\t\t\t\tif (valA > valB) {\r\n\t\t\t\t\treturn reversed ? dirA : dirB;\r\n\t\t\t\t}\r\n\t\t\t\treturn 0;\r\n\t\t\t});\r\n\r\n\t\t\tthis.mapPolygons.each((mapPolygon, index) => {\r\n\t\t\t\tmapPolygon.validate();\r\n\t\t\t\t// makes small go first to avoid hover problems with IE\r\n\t\t\t\tif (!mapPolygon.zIndex && !mapPolygon.propertyFields.zIndex) {\r\n\t\t\t\t\tmapPolygon.zIndex = 1000000 - index;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * List of polygon elements in the series.\r\n\t *\r\n\t * @return Polygon list\r\n\t */\r\n\tpublic get mapPolygons(): ListTemplate {\r\n\r\n\t\tif (!this._mapPolygons) {\r\n\t\t\tlet polygonTemplate: MapPolygon = new MapPolygon();\r\n\r\n\t\t\tlet mapPolygons: ListTemplate = new ListTemplate(polygonTemplate);\r\n\t\t\tthis._disposers.push(new ListDisposer(mapPolygons));\r\n\t\t\tthis._disposers.push(mapPolygons.template);\r\n\t\t\tmapPolygons.template.focusable = true;\r\n\t\t\tmapPolygons.events.on(\"inserted\", this.handleObjectAdded, this, false);\r\n\t\t\tthis._mapPolygons = mapPolygons;\r\n\t\t\tthis._mapObjects = mapPolygons;\r\n\t\t}\r\n\r\n\t\treturn this._mapPolygons;\r\n\t}\r\n\r\n\t/**\r\n\t * returns MapPolygon by id in geoJSON file\r\n\t * @param polygon id\r\n\t * @return {MapPolygon}\r\n\t */\r\n\tpublic getPolygonById(id: string): MapPolygon {\r\n\t\treturn $iter.find(this.mapPolygons.iterator(), (mapPolygon) => {\r\n\t\t\tlet dataContext: any = mapPolygon.dataItem.dataContext;\r\n\t\t\treturn dataContext.id == id;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all properties from another instance of [[Series]].\r\n\t *\r\n\t * @param source Source series\r\n\t */\r\n\tpublic copyFrom(source: this) {\r\n\t\tthis.mapPolygons.template.copyFrom(source.mapPolygons.template);\r\n\t\tsuper.copyFrom(source);\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic getFeatures(): { \"type\": \"Feature\", geometry: { type: \"MultiPolygon\", coordinates: Array>> } }[] {\r\n\r\n\t\tlet features: { \"type\": \"Feature\", geometry: { type: \"MultiPolygon\", coordinates: Array>> } }[] = [];\r\n\r\n\t\tthis.dataItems.each((dataItem) => {\r\n\t\t\tlet feature = dataItem.getFeature();\r\n\t\t\tif (feature) {\r\n\t\t\t\tfeatures.push(feature);\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tthis.mapPolygons.each((mapPolygon) => {\r\n\t\t\tif (this.dataItems.indexOf(mapPolygon._dataItem) == -1) {\r\n\t\t\t\tlet feature = mapPolygon.getFeature();\r\n\t\t\t\tif (feature) {\r\n\t\t\t\t\tfeatures.push(feature);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t\treturn features;\r\n\t}\r\n\r\n\t/**\r\n\t * How to order polygons in actual SVG document. Affects selection order\r\n\t * using TAB key.\r\n\t *\r\n\t * Available options: `\"area\"` (default), `\"name\"`, `\"longitude\"`,\r\n\t * `\"latitude\"`, `\"id\"`, and `\"none\"`.\r\n\t *\r\n\t * @default area\r\n\t * @since 4.9.36\r\n\t * @param value How to sort map polygons\r\n\t */\r\n\tpublic set sortPolygonsBy(value: \"area\" | \"name\" | \"longitude\" | \"latitude\" | \"id\" | \"none\") {\r\n\t\tif (this.setPropertyValue(\"sortPolygonsBy\", value)) {\r\n\t\t\tthis.invalidateData();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return How to sort map polygons\r\n\t */\r\n\tpublic get sortPolygonsBy(): \"area\" | \"name\" | \"longitude\" | \"latitude\" | \"id\" | \"none\" {\r\n\t\treturn this.getPropertyValue(\"sortPolygonsBy\");\r\n\t}\r\n\r\n\t/**\r\n\t * If `sortPolygonsBy` is set to something other than `\"none\"`, polygons\r\n\t * will be sorted by the given parameter, using natural sort direction.\r\n\t *\r\n\t * Setting `sortPolygonsReversed = true` will reverse this direction.\r\n\t *\r\n\t * @default false\r\n\t * @since 4.9.36\r\n\t * @param value Reverse polygon sort direction\r\n\t */\r\n\tpublic set sortPolygonsReversed(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"sortPolygonsReversed\", value)) {\r\n\t\t\tthis.invalidateData();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Reverse polygon sort direction\r\n\t */\r\n\tpublic get sortPolygonsReversed(): boolean {\r\n\t\treturn this.getPropertyValue(\"sortPolygonsReversed\");\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"MapPolygonSeries\"] = MapPolygonSeries;\r\nregistry.registeredClasses[\"MapPolygonSeriesDataItem\"] = MapPolygonSeriesDataItem;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/map/MapPolygonSeries.ts","/**\r\n * This module contains funcitonality related to geographical projections\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { IGeoPoint } from \"../../../core/defs/IGeoPoint\";\r\n//import { IGeoRectangle } from \"../../../core/defs/IGeoRectangle\";\r\nimport { IPoint, IOrientationPoint } from \"../../../core/defs/IPoint\";\r\nimport { registry } from \"../../../core/Registry\";\r\nimport * as $math from \"../../../core/utils/Math\";\r\nimport * as d3geo from \"d3-geo\";\r\nimport { MapChart } from \"../../types/MapChart\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * This is a base class for a geographical projection.\r\n */\r\nexport class Projection {\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected _d3Projection: d3geo.GeoProjection;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected _d3Path: d3geo.GeoPath;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic chart: MapChart;\r\n\r\n\r\n\tconstructor() {\r\n\t\tthis.d3Projection = d3geo.geoEquirectangular();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * d3 projection\r\n\t */\r\n\tpublic set d3Projection(projection: d3geo.GeoProjection) {\r\n\t\tthis._d3Projection = projection;\r\n\t\tprojection.precision(0.1);\r\n\t\tthis._d3Path = d3geo.geoPath().projection(projection);\r\n\r\n\t\tif (this.chart) {\r\n\t\t\tthis.chart.invalidateProjection();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * d3 projection\r\n\t */\r\n\tpublic get d3Projection(): d3geo.GeoProjection {\r\n\t\treturn this._d3Projection;\r\n\t}\r\n\r\n\t/**\r\n\t * d3 path generator method\r\n\t * @ignore\r\n\t */\r\n\tpublic get d3Path(): d3geo.GeoPath {\r\n\t\treturn this._d3Path;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic get scale(): number {\r\n\t\treturn this.d3Projection.scale() / 100;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a geographical point (lat/long) to a screen point (x/y)\r\n\t * @param geoPoint Geo point (lat/long)\r\n\t * @return Screen point (x/y)\r\n\t */\r\n\tpublic convert(geoPoint: IGeoPoint): IPoint {\r\n\t\t/*\r\n\t\tgeoPoint = $geo.normalizePoint(geoPoint);\r\n\t\tgeoPoint = this.rotate(geoPoint, this.deltaLongitude, this.deltaLatitude, this.deltaGama);\r\n\t\tlet pointInRadians: IPoint = this.project(geoPoint.longitude * $math.RADIANS, geoPoint.latitude * $math.RADIANS);\r\n\t\treturn {\r\n\t\t\tx: $math.round(pointInRadians.x * $math.DEGREES - this.centerPoint.x, 4) * this.scale,\r\n\t\t\ty: $math.round(-pointInRadians.y * $math.DEGREES - this.centerPoint.y, 4) * this.scale\r\n\t\t};*/\r\n\r\n\t\tlet p = this.d3Projection([geoPoint.longitude, geoPoint.latitude]);\r\n\t\tif (p) {\r\n\t\t\treturn { x: p[0], y: p[1] };\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a screen point (x/y) to a geographical point (lat/long)\r\n\t * @param point Screen point (x/y)\r\n\t * @return Geo point (lat/long)\r\n\t */\r\n\tpublic invert(point: IPoint): IGeoPoint {\r\n\t\t/*\r\n\t\tlet pointInRadians: IGeoPoint = this.unproject((point.x / this.scale + this.centerPoint.x) * $math.RADIANS, (-point.y / this.scale - this.centerPoint.y) * $math.RADIANS);\r\n\r\n\t\tlet geoPoint = { longitude: pointInRadians.longitude * $math.DEGREES, latitude: pointInRadians.latitude * $math.DEGREES };\r\n\r\n\t\tgeoPoint = this.unrotate(geoPoint, this.deltaLongitude, this.deltaLatitude, this.deltaGama);\r\n\t\t*/\r\n\t\tlet p = this.d3Projection.invert([point.x, point.y]);\r\n\t\tif (p) {\r\n\t\t\treturn { longitude: p[0], latitude: p[1] };\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns X/Y coordinates.\r\n\t * Individual projections will override this method to apply their own\r\n\t * projection logic.\r\n\t * @deprecated\r\n\t * @param lambda [description]\r\n\t * @param phi [description]\r\n\t * @return X/Y coordinates\r\n\t * @todo Needs description\r\n\t */\r\n\tpublic project(lambda: number, phi: number): IPoint {\r\n\t\treturn this.convert({ longitude: lambda * $math.DEGREES, latitude: phi * $math.DEGREES });\r\n\t}\r\n\r\n\t/**\r\n\t * Returns geographical coordinates (lat/long).\r\n\t * Individual projections will override this method to apply their own\r\n\t * projection logic.\r\n\t * @deprecated\r\n\t * @param x X coordinate\r\n\t * @param y Y coordinate\r\n\t * @return Geographical point\r\n\t * @todo Needs description\r\n\t */\r\n\tpublic unproject(x: number, y: number): IGeoPoint {\r\n\t\treturn this.invert({ x: x, y: y });\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t * @deprecated\r\n\t */\r\n\tpublic rotate(geoPoint: IGeoPoint, deltaLongitude: number, deltaLatitude: number, deltaGamma?: number): IGeoPoint {\r\n\r\n\t\tlet deltaLambda = deltaLongitude * $math.RADIANS;\r\n\t\tlet deltaPhi = deltaLatitude * $math.RADIANS;\r\n\t\tdeltaGamma = deltaGamma * $math.RADIANS;\r\n\r\n\t\tlet lambda = geoPoint.longitude * $math.RADIANS + deltaLambda;\r\n\t\tlet phi = geoPoint.latitude * $math.RADIANS;\r\n\r\n\t\tlet cosDeltaPhi = Math.cos(deltaPhi);\r\n\t\tlet sinDeltaPhi = Math.sin(deltaPhi);\r\n\t\tlet cosDeltaGamma = Math.cos(deltaGamma);\r\n\t\tlet sinDeltaGamma = Math.sin(deltaGamma);\r\n\r\n\t\tlet cosPhi = Math.cos(phi);\r\n\r\n\t\tlet x = Math.cos(lambda) * cosPhi;\r\n\t\tlet y = Math.sin(lambda) * cosPhi;\r\n\t\tlet z = Math.sin(phi);\r\n\t\tlet k = z * cosDeltaPhi + x * sinDeltaPhi;\r\n\r\n\t\treturn { longitude: $math.DEGREES * Math.atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi), latitude: $math.DEGREES * Math.asin(k * cosDeltaGamma + y * sinDeltaGamma) };\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t * @deprecated\r\n\t */\r\n\tpublic unrotate(geoPoint: IGeoPoint, deltaLongitude: number, deltaLatitude: number, deltaGamma?: number): IGeoPoint {\r\n\r\n\t\tlet deltaLambda = deltaLongitude * $math.RADIANS;\r\n\t\tlet deltaPhi = deltaLatitude * $math.RADIANS;\r\n\t\tdeltaGamma = deltaGamma * $math.RADIANS;\r\n\r\n\t\tlet lambda = geoPoint.longitude * $math.RADIANS - deltaLambda;\r\n\t\tlet phi = geoPoint.latitude * $math.RADIANS;\r\n\r\n\t\tlet cosDeltaPhi = Math.cos(deltaPhi);\r\n\t\tlet sinDeltaPhi = Math.sin(deltaPhi);\r\n\t\tlet cosDeltaGamma = Math.cos(deltaGamma);\r\n\t\tlet sinDeltaGamma = Math.sin(deltaGamma);\r\n\r\n\t\tlet cosPhi = Math.cos(phi);\r\n\r\n\t\tlet x = Math.cos(lambda) * cosPhi;\r\n\t\tlet y = Math.sin(lambda) * cosPhi;\r\n\t\tlet z = Math.sin(phi);\r\n\t\tlet k = z * cosDeltaGamma - y * sinDeltaGamma;\r\n\r\n\t\treturn { longitude: $math.DEGREES * Math.atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi), latitude: $math.DEGREES * Math.asin(k * cosDeltaPhi - x * sinDeltaPhi) };\r\n\t}\r\n\r\n\r\n\t//@todo: move to some utils?\r\n\t//@todo: add credits to: https://www.movable-type.co.uk/scripts/latlong.html\r\n\tpublic intermediatePoint(pointA: IGeoPoint, pointB: IGeoPoint, position: number): IGeoPoint {\r\n\t\tlet p = d3geo.geoInterpolate([pointA.longitude, pointA.latitude], [pointB.longitude, pointB.latitude])(position);\r\n\t\treturn { longitude: p[0], latitude: p[1] };\r\n\t};\r\n\r\n\t// returns radians\r\n\tpublic multiDistance(multiGeoLine: Array>): number {\r\n\t\tlet distance = 0;\r\n\t\tfor (let s = 0; s < multiGeoLine.length; s++) {\r\n\t\t\tlet points: Array = multiGeoLine[s];\r\n\t\t\tif (points.length > 1) {\r\n\t\t\t\tfor (let p = 1; p < points.length; p++) {\r\n\t\t\t\t\tlet pointA = points[p - 1];\r\n\t\t\t\t\tlet pointB = points[p];\r\n\t\t\t\t\tdistance += this.distance(pointA, pointB);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn distance;\r\n\t}\r\n\r\n\t// returns radians\r\n\tpublic distance(pointA: IGeoPoint, pointB: IGeoPoint): number {\r\n\t\treturn d3geo.geoDistance([pointA.longitude, pointA.latitude], [pointB.longitude, pointB.latitude]);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Converts relative position along the line (0-1) into pixel coordinates.\r\n\t *\r\n\t * @param position Position (0-1)\r\n\t * @return Coordinates\r\n\t */\r\n\tpublic positionToPoint(multiGeoLine: Array>, position: number): IOrientationPoint {\r\n\r\n\t\tif (multiGeoLine) {\r\n\t\t\tlet intermediatePoint = this.positionToGeoPoint(multiGeoLine, position);\r\n\t\t\tlet intermediatePointA = this.positionToGeoPoint(multiGeoLine, position - 0.01);\r\n\t\t\tlet intermediatePointB = this.positionToGeoPoint(multiGeoLine, position + 0.01);\r\n\r\n\t\t\tif (intermediatePointA && intermediatePointB) {\r\n\r\n\t\t\t\tlet point = this.convert(intermediatePoint);\r\n\r\n\t\t\t\tlet pa = this.convert(intermediatePointA);\r\n\t\t\t\tlet pb = this.convert(intermediatePointB);\r\n\r\n\t\t\t\treturn { x: point.x, y: point.y, angle: $math.getAngle(pa, pb) };\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn { x: 0, y: 0, angle: 0 };\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Converts relative position along the line (0-1) into pixel coordinates.\r\n\t *\r\n\t * @param position Position (0-1)\r\n\t * @return Coordinates\r\n\t */\r\n\tpublic positionToGeoPoint(multiGeoLine: Array>, position: number): IGeoPoint {\r\n\r\n\t\tif (multiGeoLine) {\r\n\t\t\tlet totalDistance: number = this.multiDistance(multiGeoLine);\r\n\t\t\tlet currentDistance: number = 0;\r\n\r\n\t\t\tlet distanceAB: number;\r\n\t\t\tlet positionA: number = 0;\r\n\t\t\tlet positionB: number = 0;\r\n\t\t\tlet pointA: IGeoPoint;\r\n\t\t\tlet pointB: IGeoPoint;\r\n\r\n\t\t\tfor (let s = 0; s < multiGeoLine.length; s++) {\r\n\t\t\t\tlet points: Array = multiGeoLine[s];\r\n\t\t\t\tif (points.length > 1) {\r\n\t\t\t\t\tfor (let p = 1; p < points.length; p++) {\r\n\t\t\t\t\t\tpointA = points[p - 1];\r\n\t\t\t\t\t\tpointB = points[p];\r\n\r\n\t\t\t\t\t\tpositionA = currentDistance / totalDistance;\r\n\t\t\t\t\t\tdistanceAB = this.distance(pointA, pointB);\r\n\t\t\t\t\t\tcurrentDistance += distanceAB;\r\n\t\t\t\t\t\tpositionB = currentDistance / totalDistance;\r\n\r\n\t\t\t\t\t\tif (positionA <= position && positionB > position) {\r\n\t\t\t\t\t\t\ts = multiGeoLine.length;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse if (points.length == 1) {\r\n\t\t\t\t\tpointA = points[0];\r\n\t\t\t\t\tpointB = points[0];\r\n\t\t\t\t\tpositionA = 0;\r\n\t\t\t\t\tpositionB = 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (pointA && pointB) {\r\n\t\t\t\tlet positionAB: number = (position - positionA) / (positionB - positionA);\r\n\t\t\t\treturn this.intermediatePoint(pointA, pointB, positionAB);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn { longitude: 0, latitude: 0 };\r\n\t}\r\n}\r\n\r\n\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Projection\"] = Projection;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../../src/.internal/charts/map/projections/Projection.ts","/**\r\n * A module for the mini-map control.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container, IContainerProperties, IContainerAdapters, IContainerEvents } from \"../../core/Container\";\r\nimport { IRectangle } from \"../../core/defs/IRectangle\";\r\nimport { Sprite, ISpriteEvents, AMEvent } from \"../../core/Sprite\";\r\nimport { Rectangle } from \"../../core/elements/Rectangle\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport { IGeoPoint } from \"../../core/defs/IGeoPoint\";\r\nimport { MapChart } from \"../types/MapChart\";\r\nimport { MapSeries } from \"./MapSeries\";\r\nimport { List, IListEvents } from \"../../core/utils/List\";\r\nimport { MutableValueDisposer, MultiDisposer } from \"../../core/utils/Disposer\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[SmallMap]].\r\n */\r\nexport interface ISmallMapProperties extends IContainerProperties { }\r\n\r\n/**\r\n * Defines events for [[SmallMap]].\r\n */\r\nexport interface ISmallMapEvents extends IContainerEvents { }\r\n\r\n/**\r\n * Defines adapters for [[SmallMap]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ISmallMapAdapters extends IContainerAdapters, ISmallMapProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creates a \"bird's eye\" view of the whole map.\r\n *\r\n * This control creates a mini-map with the whole of the map, highlighting\r\n * the area which is in the current viewport of the map map.\r\n *\r\n * @see {@link ISmallMapEvents} for a list of available events\r\n * @see {@link ISmallMapAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class SmallMap extends Container {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ISmallMapProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ISmallMapAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ISmallMapEvents;\r\n\r\n\t/**\r\n\t * A target map.\r\n\t */\r\n\tprotected _chart: MutableValueDisposer = new MutableValueDisposer();\r\n\r\n\t/**\r\n\t * A container that holds the visual elements for the mini-map.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic seriesContainer: Container;\r\n\r\n\t/**\r\n\t * The rectangle element which highlights current viewport.\r\n\t */\r\n\tpublic rectangle: Rectangle;\r\n\r\n\t/**\r\n\t * A list of map series used to draw the mini-map.\r\n\t */\r\n\tprotected _series: List;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"SmallMap\";\r\n\r\n\t\t// Set defaults\r\n\t\tthis.align = \"left\";\r\n\t\tthis.valign = \"bottom\";\r\n\t\tthis.percentHeight = 20;\r\n\t\tthis.percentWidth = 20;\r\n\t\tthis.margin(5, 5, 5, 5);\r\n\r\n\t\tlet interfaceColors = new InterfaceColorSet();\r\n\r\n\t\t// Set background defailts\r\n\t\tthis.background.fillOpacity = 0.9;\r\n\t\tthis.background.fill = interfaceColors.getFor(\"background\");\r\n\r\n\t\t// Set up events\r\n\t\tthis.events.on(\"hit\", this.moveToPosition, this, false);\r\n\t\tthis.events.on(\"maxsizechanged\", this.updateMapSize, this, false);\r\n\r\n\t\t// Create a container\r\n\t\tthis.seriesContainer = this.createChild(Container);\r\n\t\tthis.seriesContainer.shouldClone = false;\r\n\r\n\t\t// Create an outline rectangle\r\n\t\tlet rectangle: Rectangle = this.createChild(Rectangle);\r\n\t\trectangle.shouldClone = false;\r\n\t\trectangle.stroke = interfaceColors.getFor(\"alternativeBackground\");\r\n\t\trectangle.strokeWidth = 1;\r\n\t\trectangle.strokeOpacity = 0.5;\r\n\t\trectangle.fill = color(); //\"none\";\r\n\t\trectangle.verticalCenter = \"middle\";\r\n\t\trectangle.horizontalCenter = \"middle\";\r\n\t\trectangle.isMeasured = false;\r\n\t\trectangle.visible = false;\t\t\r\n\r\n\t\tthis.rectangle = rectangle;\r\n\r\n\t\tthis._disposers.push(this._chart);\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * A list of map series used to draw the mini-map.\r\n\t *\r\n\t * @readonly\r\n\t * @return Series\r\n\t */\r\n\tpublic get series(): List {\r\n\t\tif (!this._series) {\r\n\t\t\tthis._series = new List();\r\n\t\t\tthis._series.events.on(\"inserted\", this.handleSeriesAdded, this, false);\r\n\t\t\tthis._series.events.on(\"removed\", this.handleSeriesRemoved, this, false);\r\n\t\t}\r\n\t\treturn this._series;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Decorates a new series when they are pushed into a `series` list.\r\n\t *\r\n\t * @param event Event\r\n\t */\r\n\tprotected handleSeriesAdded(event: IListEvents[\"inserted\"]) {\r\n\t\tlet series: MapSeries = event.newValue;\r\n\t\tif (this.chart.series.contains(series)) {\r\n\t\t\tlet newSeries = series.clone();\r\n\t\t\tthis._series.removeValue(series);\r\n\t\t\tthis._series.push(newSeries);\r\n\t\t\tseries = newSeries;\r\n\r\n\t\t\tthis.chart.dataUsers.push(newSeries);\r\n\t\t}\r\n\t\tseries.chart = this.chart;\r\n\t\tseries.parent = this.seriesContainer;\r\n\t\tseries.interactionsEnabled = false;\r\n\t\tseries.events.on(\"inited\", this.updateMapSize, this, false);\r\n\t\tseries.hidden = false;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Cleans up after series are removed from Scrollbar.\r\n\t *\r\n\t * @param event Event\r\n\t */\r\n\tprotected handleSeriesRemoved(event: IListEvents[\"removed\"]) {\r\n\t\t//let sourceSeries: MapSeries = event.oldValue;\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * Moves main map pan position after click on the small map.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Event\r\n\t */\r\n\tpublic moveToPosition(event: AMEvent[\"hit\"]) {\r\n\t\tlet rectPoint: IPoint = $utils.spritePointToSprite(event.spritePoint, this, this.seriesContainer);\r\n\t\tlet geoPoint: IGeoPoint = this.chart.seriesPointToGeo(rectPoint);\r\n\t\tthis.chart.zoomToGeoPoint(geoPoint, this.chart.zoomLevel, true);\r\n\t}\r\n\r\n\t/**\r\n\t * A chart/map that this control is meant for.\r\n\t *\r\n\t * @param chart Chart/map\r\n\t */\r\n\tpublic set chart(chart: MapChart) {\r\n\t\tif (this.chart != chart) {\r\n\t\t\tthis._chart.set(chart, new MultiDisposer([\r\n\t\t\t\t//chart.events.on(\"zoomlevelchanged\", this.updateRectangle, this, false),\r\n\t\t\t\tchart.events.on(\"mappositionchanged\", this.updateRectangle, this, false),\r\n\t\t\t\tchart.events.on(\"scaleratiochanged\", this.updateMapSize, this, false)\r\n\t\t\t]));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Chart/map\r\n\t */\r\n\tpublic get chart(): MapChart {\r\n\t\treturn this._chart.get();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the viewport recangle as per current map zoom/pan position.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateRectangle(): void {\r\n\t\tlet chart: MapChart = this.chart;\r\n\t\tlet zoomLevel: number = chart.zoomLevel;\r\n\t\tlet rectangle: Rectangle = this.rectangle;\r\n\r\n\t\trectangle.width = this.pixelWidth / zoomLevel;\r\n\t\trectangle.height = this.pixelHeight / zoomLevel;\r\n\r\n\t\tlet scale: number = Math.min(this.percentWidth, this.percentHeight) / 100;\r\n\r\n\t\tlet seriesContainer: Container = chart.seriesContainer;\r\n\r\n\t\trectangle.x = Math.ceil(( - seriesContainer.pixelX) * scale / zoomLevel) + this.seriesContainer.pixelX;\r\n\t\trectangle.y = Math.ceil(( - seriesContainer.pixelY) * scale / zoomLevel) + this.seriesContainer.pixelY;\r\n\r\n\t\trectangle.validate();\r\n\t}\r\n\r\n\t/**\r\n\t * Update map size so that internal elements can redraw themselves after\r\n\t * the size of the small map changes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateMapSize(): void {\r\n\t\tif (this.chart) {\r\n\t\t\tlet scale = this.chart.scaleRatio * Math.min(this.percentWidth, this.percentHeight) / 100;\r\n\t\t\tthis.seriesContainer.scale = scale;\r\n\r\n\t\t\tlet bbox: IRectangle = {\r\n\t\t\t\twidth: 0,\r\n\t\t\t\theight: 0,\r\n\t\t\t\tx: 0,\r\n\t\t\t\ty: 0\r\n\t\t\t};\r\n\r\n\t\t\ttry { // Add exception catching to tame FF\r\n\t\t\t\tbbox = this.seriesContainer.group.node.getBBox();\r\n\t\t\t} catch (err) { }\r\n\r\n\t\t\tif(bbox.width > 0){\r\n\t\t\t\tthis.rectangle.visible = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis.seriesContainer.x = this.pixelWidth / 2 - bbox.x * scale - bbox.width / 2 * scale;\r\n\t\t\tthis.seriesContainer.y = this.pixelHeight / 2 - bbox.y * scale - bbox.height / 2 * scale;\r\n\r\n\t\t\tthis.updateRectangle();\r\n\t\t\tthis.afterDraw();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Update elements after drawing the small map.\r\n\t */\r\n\tprotected afterDraw(): void {\r\n\t\tsuper.afterDraw();\r\n\t\t//this.seriesContainer.moveTo({ x: this.pixelWidth / 2, y: this.pixelHeight / 2 });\r\n\t\tthis.rectangle.maskRectangle = { x: -1, y: -1, width: Math.ceil(this.pixelWidth + 2), height: Math.ceil(this.pixelHeight + 2) };\r\n\t}\r\n\r\n\t/**\r\n\t * Processes JSON-based config before it is applied to the object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config\r\n\t */\r\n\tpublic processConfig(config?: { [index: string]: any }): void {\r\n\r\n\t\tif (config) {\r\n\r\n\t\t\t// Set up series\r\n\t\t\tif ($type.hasValue(config.series) && $type.isArray(config.series)) {\r\n\t\t\t\tfor (let i = 0, len = config.series.length; i < len; i++) {\r\n\t\t\t\t\tlet series = config.series[i];\r\n\t\t\t\t\tif ($type.hasValue(series) && $type.isString(series) && this.map.hasKey(series)) {\r\n\t\t\t\t\t\tconfig.series[i] = this.map.getKey(series);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tsuper.processConfig(config);\r\n\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"SmallMap\"] = SmallMap;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/map/SmallMap.ts","/**\r\n * A collection of GeoJSON format-related utility functions.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { IGeoPoint } from \"../../core/defs/IGeoPoint\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $array from \"../../core/utils/Array\";\r\n\r\n\r\n/**\r\n * Normalizes a geo-point.\r\n *\r\n * @ignore Exclude from docs\r\n * @param geoPoint Source geo-point\r\n * @return Normalized geo-point\r\n */\r\nexport function normalizePoint(geoPoint: IGeoPoint): IGeoPoint {\r\n\tlet longitude = wrapAngleTo180(geoPoint.longitude);\r\n\tlet latitude = Math.asin(Math.sin((geoPoint.latitude * $math.RADIANS))) * $math.DEGREES;\r\n\r\n\tlet latitude180 = wrapAngleTo180(geoPoint.latitude);\r\n\r\n\tif (Math.abs(latitude180) > 90) {\r\n\t\tlongitude = wrapAngleTo180(longitude + 180);\r\n\t}\r\n\r\n\tgeoPoint.longitude = longitude;\r\n\tgeoPoint.latitude = latitude;\r\n\r\n\treturn geoPoint;\r\n}\r\n\r\n/**\r\n * Normalizes all points of a geo-line.\r\n *\r\n * @ignore Exclude from docs\r\n * @param multiline Source geo-line\r\n * @return Normalized geo-line\r\n */\r\nexport function normalizeMultiline(multiline: Array>): Array> {\r\n\t$array.each(multiline, (segment) => {\r\n\t\t$array.each(segment, (point) => {\r\n\t\t\tnormalizePoint(point);\r\n\t\t});\r\n\t});\r\n\treturn multiline;\r\n}\r\n\r\n/**\r\n * [wrapAngleTo180 description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n * @param angle Angle\r\n * @return Angle\r\n */\r\nexport function wrapAngleTo180(angle: number): number {\r\n\tangle = angle % 360;\r\n\r\n\tif (angle > 180) {\r\n\t\tangle -= 360;\r\n\t}\r\n\tif (angle < -180) {\r\n\t\tangle += 360;\r\n\t}\r\n\r\n\treturn angle;\r\n}\r\n\r\n/**\r\n * Converts a geo point to a regular point object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param geoPoint Source geo point\r\n * @return Point\r\n */\r\nexport function geoToPoint(geoPoint: IGeoPoint): IPoint {\r\n\treturn { x: geoPoint.longitude, y: geoPoint.latitude };\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/map/Geo.ts","/**\r\n * Map line module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container, IContainerProperties, IContainerAdapters, IContainerEvents } from \"../../core/Container\";\r\nimport { MapLine } from \"./MapLine\";\r\nimport { IOrientationPoint } from \"../../core/defs/IPoint\";\r\nimport { registry } from \"../../core/Registry\";\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[MapLineObject]].\r\n */\r\nexport interface IMapLineObjectProperties extends IContainerProperties {\r\n\r\n\t/**\r\n\t * Sets object's relative position (0-1) within the line.\r\n\t *\r\n\t * `0` will place the object at the beginning of the line. `1` - at the end.\r\n\t *\r\n\t * Any intermediate number will place the object at some point within the\r\n\t * line.\r\n\t */\r\n\tposition?: number;\r\n\r\n\t/**\r\n\t * If set to `true`, the object will be automatically rotated to face the\r\n\t * direction of the line at the specific position.\r\n\t *\r\n\t * This allows creating images that has its \"front\" always facing the logical\r\n\t * direction of the line.\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tadjustRotation?: boolean;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[MapLineObject]].\r\n */\r\nexport interface IMapLineObjectEvents extends IContainerEvents { }\r\n\r\n/**\r\n * Defines adapters for [[MapLineObject]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IMapLineObjectAdapters extends IContainerAdapters, IMapLineObjectProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Draws a line on the map.\r\n *\r\n * @see {@link IMapLineObjectEvents} for a list of available events\r\n * @see {@link IMapLineObjectAdapters} for a list of available Adapters\r\n */\r\nexport class MapLineObject extends Container {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IMapLineObjectProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IMapLineObjectAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IMapLineObjectEvents;\r\n\r\n\t/**\r\n\t * A reference to the [[MapLine]] object this object is attached to.\r\n\t *\r\n\t * @todo Review if necessary (same as parent)\r\n\t */\r\n\tpublic mapLine: MapLine;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.adjustRotation = true;\r\n\t\tthis.className = \"MapLineObject\";\r\n\t\tthis.isMeasured = false;\r\n\t\tthis.layout = \"none\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)validates element's position.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validatePosition() {\r\n\r\n\t\tlet mapLine = this.mapLine;\r\n\r\n\t\tif (mapLine) {\r\n\r\n\t\t\tlet point: IOrientationPoint = mapLine.positionToPoint(this.position);\r\n\r\n\t\t\tthis.x = point.x;\r\n\t\t\tthis.y = point.y;\r\n\r\n\t\t\tif (this.adjustRotation) {\r\n\t\t\t\tthis.rotation = point.angle;\r\n\t\t\t}\r\n\r\n\t\t\tlet dataItem = this.mapLine.dataItem;\r\n\t\t\tif (dataItem) {\r\n\t\t\t\tlet series = this.mapLine.dataItem.component;\r\n\t\t\t\tthis.scale = 1 / series.scale;\r\n\t\t\t}\r\n\r\n\t\t\t// hide out of bounds\r\n\t\t\tif (mapLine.shortestDistance) {\r\n\r\n\t\t\t\tlet projection = this.mapLine.series.chart.projection;\r\n\r\n\t\t\t\tlet geoPoint = projection.positionToGeoPoint(mapLine.multiGeoLine, this.position);\r\n\r\n\t\t\t\tlet visible: any = projection.d3Path({ type: 'Point', coordinates: [geoPoint.longitude, geoPoint.latitude] });\r\n\r\n\t\t\t\tif (!visible) {\r\n\t\t\t\t\tthis.__disabled = true;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.__disabled = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tsuper.validatePosition();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets object's relative position (0-1) within the line.\r\n\t *\r\n\t * `0` will place the object at the beginning of the line. `1` - at the end.\r\n\t *\r\n\t * Any intermediate number will place the object at some point within the\r\n\t * line.\r\n\t *\r\n\t * @param value Position within the line (0-1)\r\n\t */\r\n\tpublic set position(value: number) {\r\n\t\tthis.setPropertyValue(\"position\", value, false, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Position within the line\r\n\t */\r\n\tpublic get position(): number {\r\n\t\treturn this.getPropertyValue(\"position\");\r\n\t}\r\n\r\n\t/**\r\n\t * If set to `true`, the object will be automatically rotated to face the\r\n\t * direction of the line at the specific position.\r\n\t *\r\n\t * This allows creating images that has its \"front\" always facing the logical\r\n\t * direction of the line.\r\n\t *\r\n\t * @default false\r\n\t * @param value Auto-rotate\r\n\t */\r\n\tpublic set adjustRotation(value: boolean) {\r\n\t\tthis.setPropertyValue(\"adjustRotation\", value, false, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Auto-rotate\r\n\t */\r\n\tpublic get adjustRotation(): boolean {\r\n\t\treturn this.getPropertyValue(\"adjustRotation\");\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"MapLineObject\"] = MapLineObject;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/map/MapLineObject.ts","/**\r\n * Map image series module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { MapSeries, MapSeriesDataItem, GEOJSONGeometry, IMapSeriesProperties, IMapSeriesDataFields, IMapSeriesAdapters, IMapSeriesEvents } from \"./MapSeries\";\r\nimport { MapChart } from \"../types/MapChart\";\r\nimport { MapImage } from \"./MapImage\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { IMapImageDataObject } from \"../types/MapChart\";\r\nimport { IGeoPoint } from \"../../core/defs/IGeoPoint\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $mapUtils from \"./MapUtils\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { Disposer } from \"../../core/utils/Disposer\";\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[MapImageSeries]]\r\n * @see {@link DataItem}\r\n */\r\nexport class MapImageSeriesDataItem extends MapSeriesDataItem {\r\n\r\n\t/**\r\n\t * A [[MapImage]] element related to this data item.\r\n\t */\r\n\tprotected _mapImage: MapImage;\r\n\r\n\t/**\r\n\t * [_point description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _point: [number, number];\r\n\r\n\t/**\r\n\t * Geographical coordinates image is placed at.\r\n\t */\r\n\tprotected _geoPoint: IGeoPoint;\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for\r\n\t */\r\n\tpublic _component!: MapImageSeries;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"MapImageSeriesDataItem\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic getFeature(): { \"type\": \"Feature\", geometry: { type: \"Point\", coordinates: [number, number] } } {\r\n\t\treturn { \"type\": \"Feature\", geometry: { type: \"Point\", coordinates: this.point } };\r\n\t}\r\n\r\n\t/**\r\n\t * A [[MapImage]] element related to this data item.\r\n\t *\r\n\t * @return Element\r\n\t */\r\n\tpublic get mapImage(): MapImage {\r\n\t\tif (!this._mapImage) {\r\n\t\t\tlet mapImage = this.component.mapImages.create();\r\n\t\t\tthis.addSprite(mapImage);\r\n\t\t\tthis._mapImage = mapImage;\r\n\t\t\tthis._disposers.push(mapImage);\r\n\t\t\tthis._disposers.push(new Disposer(() => {\r\n\t\t\t\tif (this.component) {\r\n\t\t\t\t\tthis.component.mapImages.removeValue(mapImage);\r\n\t\t\t\t}\r\n\t\t\t}));\r\n\t\t\tthis.mapObject = mapImage;\r\n\t\t}\r\n\t\treturn this._mapImage;\r\n\t}\r\n\r\n\t/**\r\n\t * [point description]\r\n\t *\r\n\t * @todo Description\r\n\t * @param point [description]\r\n\t */\r\n\tpublic set point(point: [number, number]) {\r\n\t\tthis._point = point;\r\n\t\tthis._geoPoint = $mapUtils.pointToGeo(point);\r\n\t\tthis.updateExtremes();\r\n\t}\r\n\r\n\t/**\r\n\t * @return [description]\r\n\t */\r\n\tpublic get point(): [number, number] {\r\n\t\treturn this._point;\r\n\t}\r\n\r\n\t/**\r\n\t * [point description]\r\n\t *\r\n\t * @todo Description\r\n\t * @param point [description]\r\n\t */\r\n\tpublic set multiPoint(multiPoint: [[number, number]]) {\r\n\t\tthis._point = multiPoint[0];\r\n\t\tthis._geoPoint = $mapUtils.pointToGeo(this._point);\r\n\t\tthis.updateExtremes();\r\n\t}\r\n\r\n\t/**\r\n\t * @return [description]\r\n\t */\r\n\tpublic get multiPoint(): [[number, number]] {\r\n\t\treturn [this._point];\r\n\t}\t\r\n\r\n\t/**\r\n\t * Geographical coordinates (lat/long) image is placed at.\r\n\t *\r\n\t * @param geoPoint Image coordinates\r\n\t */\r\n\tpublic set geoPoint(geoPoint: IGeoPoint) {\r\n\t\tthis._geoPoint = geoPoint;\r\n\t\tthis.point = [geoPoint.longitude, geoPoint.latitude];\r\n\t}\r\n\r\n\t/**\r\n\t * @return Image coordinates\r\n\t */\r\n\tpublic get geoPoint(): IGeoPoint {\r\n\t\treturn this._geoPoint;\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines data fields for [[MapImageSeries]].\r\n */\r\nexport interface IMapImageSeriesDataFields extends IMapSeriesDataFields {\r\n\r\n\t/**\r\n\t * Field name that holds image point data in pixels.\r\n\t */\r\n\tpoint?: string;\r\n\r\n\t/**\r\n\t * Field name that holds multi-image point data in pixels.\r\n\t */\r\n\tmultiPoint?: string;\r\n\r\n\t/**\r\n\t * Field name that holds image point data in Geo coordinates.\r\n\t */\r\n\tgeoPoint?: string;\r\n\r\n\t/**\r\n\t * Field name that holds multi-image point data in Geo coordinates.\r\n\t */\r\n\tmultiGeoPoint?: string;\r\n\r\n}\r\n\r\n/**\r\n * Defines properties for [[MapImageSeries]].\r\n */\r\nexport interface IMapImageSeriesProperties extends IMapSeriesProperties { }\r\n\r\n/**\r\n * Defines events for [[MapImageSeries]].\r\n */\r\nexport interface IMapImageSeriesEvents extends IMapSeriesEvents { }\r\n\r\n/**\r\n * Defines adapters for [[MapImageSeries]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IMapImageSeriesAdapters extends IMapSeriesAdapters, IMapImageSeriesProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * A series of map image (marker) elements.\r\n *\r\n * @see {@link IMapImageSeriesEvents} for a list of available Events\r\n * @see {@link IMapImageSeriesAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class MapImageSeries extends MapSeries {\r\n\r\n\t/**\r\n\t * Defines available data fields.\r\n\t */\r\n\tpublic _dataFields: IMapImageSeriesDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IMapImageSeriesProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IMapImageSeriesAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IMapImageSeriesEvents;\r\n\r\n\t/**\r\n\t * Defines the type of data item.\r\n\t */\r\n\tpublic _dataItem: MapImageSeriesDataItem;\r\n\r\n\t/**\r\n\t * A related chart/map object, this image is drawn on.\r\n\t */\r\n\tpublic chart: MapChart;\r\n\r\n\t/**\r\n\t * A list of map images in the series.\r\n\t */\r\n\tprotected _mapImages: ListTemplate;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"MapImageSeries\";\r\n\r\n\t\t// Set data fields\r\n\t\tthis.dataFields.multiPoint = \"multiPoint\";\r\n\t\tthis.dataFields.point = \"point\";\r\n\r\n\t\tthis.dataFields.geoPoint = \"geoPoint\";\r\n\t\tthis.dataFields.multiGeoPoint = \"multiGeoPoint\";\r\n\r\n\t\tthis.ignoreBounds = true;\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty DataItem of the type appropriate for this object.\r\n\t *\r\n\t * @see {@link DataItem}\r\n\t * @return Data Item\r\n\t */\r\n\tprotected createDataItem(): this[\"_dataItem\"] {\r\n\t\treturn new MapImageSeriesDataItem();\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)validates the data of the sries, effectively forcing it to redraw\r\n\t * all of its elements.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateData(): void {\r\n\t\tif (this.data.length > 0 && this._parseDataFrom == 0) {\r\n\t\t\tthis.mapImages.clear();\r\n\t\t}\r\n\r\n\t\t// process geoJSON and created map objects\r\n\t\tif (this.useGeodata) {\r\n\t\t\tif (this.useGeodata || this.geodata) {\r\n\t\t\t\tlet geoJSON: any = this.chart.geodata;\r\n\r\n\t\t\t\tlet features: any[];\r\n\r\n\t\t\t\tif (geoJSON.type == \"FeatureCollection\") {\r\n\t\t\t\t\tfeatures = geoJSON.features;\r\n\t\t\t\t}\r\n\t\t\t\telse if (geoJSON.type == \"Feature\") {\r\n\t\t\t\t\tfeatures = [geoJSON];\r\n\t\t\t\t}\r\n\t\t\t\telse if ([\"Point\", \"LineString\", \"Polygon\", \"MultiPoint\", \"MultiLineString\", \"MultiPolygon\"].indexOf(geoJSON.type) != -1) {\r\n\t\t\t\t\tfeatures = [{ geometry: geoJSON }];\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tconsole.log(\"nothing found in geoJSON\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (features) {\r\n\t\t\t\t\tfor (let i = 0, len = features.length; i < len; i++) {\r\n\r\n\t\t\t\t\t\tlet feature: any = features[i];\r\n\t\t\t\t\t\tlet geometry: any = feature.geometry;\r\n\t\t\t\t\t\tif (geometry) {\r\n\t\t\t\t\t\t\tlet type: GEOJSONGeometry = geometry.type;\r\n\t\t\t\t\t\t\tlet id: string = feature.id;\r\n\t\t\t\t\t\t\tif (type == \"Point\" || type == \"MultiPoint\") { // todo: we don't support multipoints at the moment actually\r\n\r\n\t\t\t\t\t\t\t\tif (!this.checkInclude(this.include, this.exclude, id)) {\r\n\t\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tlet coordinates: any[] = geometry.coordinates;\r\n\r\n\t\t\t\t\t\t\t\t// make the same as MultiPoint\r\n\t\t\t\t\t\t\t\tif (type == \"Point\") {\r\n\t\t\t\t\t\t\t\t\tcoordinates = [coordinates];\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tlet dataObject: IMapImageDataObject = $array.find(this.data, (value, i) => {\r\n\t\t\t\t\t\t\t\t\treturn value.id == id;\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\tif (!dataObject) {\r\n\t\t\t\t\t\t\t\t\tdataObject = { multiPoint: coordinates, id: id, madeFromGeoData:true };\r\n\t\t\t\t\t\t\t\t\tthis.data.push(dataObject);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\tif (!dataObject.multiPoint) {\r\n\t\t\t\t\t\t\t\t\t\tdataObject.multiPoint = coordinates;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t// copy properties data to datacontext\r\n\t\t\t\t\t\t\t\t$utils.softCopyProperties(feature.properties, dataObject);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsuper.validateData();\r\n\r\n\t\t// important! this should go after super.validateData\r\n\t\t// if data is parsed in chunks, images list is corrupted, fix it here\r\n\r\n\t\t$iter.each(this.dataItems.iterator(), (dataItem) => {\r\n\t\t\tlet mapImage = dataItem.mapImage;\r\n\t\t\tif (!mapImage.isDisposed()) {\r\n\t\t\t\tthis.mapImages.moveValue(mapImage);\r\n\t\t\t\tif ($type.isNumber(mapImage.latitude) && $type.isNumber(mapImage.latitude)) {\r\n\t\t\t\t\tdataItem.geoPoint = { latitude: mapImage.latitude, longitude: mapImage.longitude }\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * A list of map images in the series.\r\n\t *\r\n\t * @return Map images\r\n\t */\r\n\tpublic get mapImages(): ListTemplate {\r\n\r\n\t\tif (!this._mapImages) {\r\n\t\t\tlet template: MapImage = new MapImage();\r\n\t\t\tlet mapImages = new ListTemplate(template);\r\n\t\t\tthis._disposers.push(new ListDisposer(mapImages));\r\n\t\t\tthis._disposers.push(mapImages.template);\r\n\t\t\tmapImages.template.focusable = true;\r\n\t\t\tmapImages.events.on(\"inserted\", this.handleObjectAdded, this, false);\r\n\t\t\tthis._mapImages = mapImages;\r\n\t\t\tthis._mapObjects = mapImages;\r\n\t\t}\r\n\r\n\t\treturn this._mapImages;\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)validates data element, effectively triggering its redrawal.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic validateDataElement(dataItem: this[\"_dataItem\"]) {\r\n\t\tsuper.validateDataElement(dataItem);\r\n\t\tdataItem.mapImage.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)validates the series\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validate() {\r\n\t\tsuper.validate();\r\n\t\t$iter.each(this.mapImages.iterator(), (mapImage) => {\r\n\t\t\tmapImage.validatePosition();\r\n\t\t})\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all properties from another instance of [[Series]].\r\n\t *\r\n\t * @param source Source series\r\n\t */\r\n\tpublic copyFrom(source: this) {\r\n\t\tthis.mapImages.template.copyFrom(source.mapImages.template);\r\n\t\tsuper.copyFrom(source);\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic getFeatures(): Array<{ \"type\": \"Feature\", geometry: { type: \"Point\", coordinates: [number, number] } }> {\r\n\t\tlet features: Array<{ \"type\": \"Feature\", geometry: { type: \"Point\", coordinates: [number, number] } }> = [];\r\n\r\n\t\tthis.dataItems.each((dataItem) => {\r\n\t\t\tlet feature = dataItem.getFeature();\r\n\t\t\tif (feature) {\r\n\t\t\t\tfeatures.push(feature);\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tthis.mapImages.each((mapImage)=>{\r\n\t\t\tif (this.dataItems.indexOf(mapImage._dataItem) == -1) {\r\n\t\t\t\tlet feature = mapImage.getFeature();\r\n\t\t\t\tif (feature) {\r\n\t\t\t\t\tfeatures.push(feature);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t\treturn features;\r\n\t}\r\n\r\n\t/**\r\n\t * returns MapImage by id\r\n\t * @param image id\r\n\t * @return {MapImage}\r\n\t */\r\n\tpublic getImageById(id: string): MapImage {\r\n\t\treturn $iter.find(this.mapImages.iterator(), (mapImage) => {\r\n\t\t\tlet dataContext: any = mapImage.dataItem.dataContext;\r\n\t\t\tif(mapImage.id == id || (dataContext && dataContext.id == id)){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"MapImageSeries\"] = MapImageSeries;\r\nregistry.registeredClasses[\"MapImageSeriesDataItem\"] = MapImageSeriesDataItem;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/map/MapImageSeries.ts","/**\r\n * Map line module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { MapObject, IMapObjectProperties, IMapObjectAdapters, IMapObjectEvents } from \"./MapObject\";\r\nimport { MapLineObject } from \"./MapLineObject\";\r\nimport { MapLineSeriesDataItem, MapLineSeries } from \"./MapLineSeries\";\r\nimport { MapChart } from \"../types/MapChart\";\r\nimport { MapImage } from \"./MapImage\";\r\nimport { MapImageSeries } from \"./MapImageSeries\";\r\nimport { IOrientationPoint } from \"../../core/defs/IPoint\";\r\nimport { IGeoPoint } from \"../../core/defs/IGeoPoint\";\r\nimport { Triangle } from \"../../core/elements/Triangle\";\r\nimport { ListTemplate, IListEvents, ListDisposer } from \"../../core/utils/List\";\r\nimport { Polyline } from \"../../core/elements/Polyline\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport { IDisposer } from \"../../core/utils/Disposer\";\r\nimport * as $geo from \"./Geo\";\r\nimport * as $mapUtils from \"./MapUtils\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\n\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[MapLine]].\r\n */\r\nexport interface IMapLineProperties extends IMapObjectProperties {\r\n\r\n\t/**\r\n\t * Lat/long coordinates of all line ends and intermediate elbows.\r\n\t */\r\n\tmultiGeoLine?: Array>;\r\n\r\n\t/**\r\n\t * Lat/long coordinates of all line ends and intermediate elbows.\r\n\t */\r\n\tmultiLine?: Array>;\r\n\r\n\t/**\r\n\t * If `true` it line will be arched in the way to simulate shortest path\r\n\t * over curvature of Earth's surface, based on currently used on projection.\r\n\t */\r\n\tshortestDistance?: boolean;\r\n\r\n\t/**\r\n\t * Instead of setting longitudes/latitudes you can set an array of images which will be connected by the line\r\n\t */\r\n\timagesToConnect?: MapImage[];\r\n\r\n\t/**\r\n\t * When line is plotted, if its `shortestDistance` is set to `true` it is\r\n\t * bent according to the used projection, to depict the shortest distance how\r\n\t * it would go on the actual land.\r\n\t *\r\n\t * `precision` introduces a setting which can control when such bending\r\n\t * occurs.\r\n\t *\r\n\t * If the distance (in degrees) between line start and end points\r\n\t * is less than `precision`, no bending will take place and the line will be\r\n\t * straight.\r\n\t *\r\n\t * Set to large number (e.g. 10000) for perfectly straight line.\r\n\t *\r\n\t * @since 4.9.1\r\n\t * @default 0.1\r\n\t */\r\n\tprecision?: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[MapLine]].\r\n */\r\nexport interface IMapLineEvents extends IMapObjectEvents { }\r\n\r\n/**\r\n * Defines adapters for [[MapLine]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IMapLineAdapters extends IMapObjectAdapters, IMapLineProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Used to draw a line on the map.\r\n *\r\n * @see {@link IMapLineEvents} for a list of available events\r\n * @see {@link IMapLineAdapters} for a list of available Adapters\r\n */\r\nexport class MapLine extends MapObject {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IMapLineProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IMapLineAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IMapLineEvents;\r\n\r\n\t/**\r\n\t * A line visual element.\r\n\t */\r\n\tpublic line: Polyline;\r\n\r\n\t/**\r\n\t * A list of actual line objects.\r\n\t */\r\n\tprotected _lineObjects: ListTemplate;\r\n\r\n\t/**\r\n\t * A reference to arrow object.\r\n\t */\r\n\tprotected _arrow: MapLineObject;\r\n\r\n\t/**\r\n\t * Related data item.\r\n\t */\r\n\tpublic _dataItem: MapLineSeriesDataItem;\r\n\r\n\t/**\r\n\t * A map series this object belongs to.\r\n\t */\r\n\tpublic series: MapLineSeries;\r\n\r\n\t/**\r\n\t * Instead of setting longitudes/latitudes you can set an array of images\r\n\t * which will be connected by the line.\r\n\t */\r\n\tprotected _imagesToConnect: MapImage[];\r\n\r\n\t/**\r\n\t * A list of event disposers for images.\r\n\t */\r\n\tprotected _imageListeners: { [index: string]: IDisposer } = {};\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"MapLine\";\r\n\r\n\t\tthis.createLine();\r\n\t\tthis.line.stroke = color();\r\n\t\tthis.line.parent = this;\r\n\t\tthis.strokeOpacity = 1;\r\n\t\tthis.setPropertyValue(\"precision\", 0.1);\r\n\r\n\t\tlet interfaceColors = new InterfaceColorSet();\r\n\r\n\t\tthis.stroke = interfaceColors.getFor(\"grid\");\r\n\t\tthis.shortestDistance = true;\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected createLine() {\r\n\t\tthis.line = new Polyline();\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a position within the line (0-1) to a physical point\r\n\t * coordinates.\r\n\t *\r\n\t * 0 indicates start of the line, 0.5 - middle, while 1 indicates the end.\r\n\t *\r\n\t * @param position Position (0-1)\r\n\t * @return Coordinates\r\n\t */\r\n\tpublic positionToPoint(position: number): IOrientationPoint {\r\n\t\tif (this.shortestDistance) {\r\n\t\t\treturn this.series.chart.projection.positionToPoint(this.multiGeoLine, position);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.line) {\r\n\t\t\t\treturn this.line.positionToPoint(position);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn { x: 0, y: 0, angle: 0 };\r\n\t}\r\n\r\n\t/**\r\n\t * A collection of X/Y coordinates for a multi-segment line. E.g.:\r\n\t *\r\n\t * ```JSON\r\n\t * [\r\n\t * // Segment 1\r\n\t * [\r\n\t * { longitude: 3.121, latitude: 0.58 },\r\n\t * { longitude: -5.199, latitude: 21.223 }\r\n\t * ],\r\n\t *\r\n\t * // Segment 2\r\n\t * [\r\n\t * { longitude: -5.199, latitude: 21.223 },\r\n\t * { longitude: -12.9, latitude: 25.85 }\r\n\t * ]\r\n\t * ]\r\n\t * ```\r\n\t *\r\n\t * @see {@link https://tools.ietf.org/html/rfc7946#section-3.1.5} GeoJSON MultiLineString reference\r\n\t * @param multiGeoLine Coordinates\r\n\t */\r\n\tpublic set multiGeoLine(multiGeoLine: Array>) {\r\n\t\tif (multiGeoLine && multiGeoLine.length > 0) {\r\n\t\t\tthis.setPropertyValue(\"multiGeoLine\", $geo.normalizeMultiline(multiGeoLine), true);\r\n\r\n\t\t\tlet multiLine: Array> = $mapUtils.multiGeoLineToMultiLine(multiGeoLine);\r\n\r\n\t\t\tthis.setPropertyValue(\"multiLine\", multiLine);\r\n\r\n\t\t\tthis.updateExtremes();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Coordinates\r\n\t */\r\n\tpublic get multiGeoLine(): Array> {\r\n\t\tlet multiGeoLine = this.getPropertyValue(\"multiGeoLine\");\r\n\t\tif (!multiGeoLine && this.dataItem && this.dataItem.multiGeoLine) {\r\n\t\t\tmultiGeoLine = this.dataItem.multiGeoLine;\r\n\t\t}\r\n\r\n\t\treturn multiGeoLine;\r\n\t}\r\n\r\n\t/**\r\n\t * A collection of X/Y coordinates for a multi-segment line. E.g.:\r\n\t *\r\n\t * ```JSON\r\n\t * [\r\n\t * // Segment 1\r\n\t * [\r\n\t * [ 100, 150 ],\r\n\t * [ 120, 200 ]\r\n\t * ],\r\n\t *\r\n\t * // Segment 2\r\n\t * [\r\n\t * [ 120, 200 ],\r\n\t * [ 150, 100 ]\r\n\t * ]\r\n\t * ]\r\n\t * ```\r\n\t *\r\n\t * @param multiLine Coordinates\r\n\t */\r\n\tpublic set multiLine(multiLine: Array>) {\r\n\t\tthis.setPropertyValue(\"multiLine\", multiLine);\r\n\t\tthis.multiGeoLine = $mapUtils.multiLineToGeo(multiLine);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Coordinates\r\n\t */\r\n\tpublic get multiLine(): Array> {\r\n\r\n\t\tlet multiLine = this.getPropertyValue(\"multiLine\");\r\n\t\tif (!multiLine && this.dataItem && this.dataItem.multiLine) {\r\n\t\t\tmultiLine = this.dataItem.multiLine;\r\n\t\t}\r\n\r\n\t\treturn multiLine;\r\n\t}\r\n\r\n\t/**\r\n\t * Instead of setting longitudes/latitudes you can set an array of images\r\n\t * which will be connected by the line.\r\n\t *\r\n\t * Parameter is an array that can hold string `id`'s to of the images, or\r\n\t * references to actual [[MapImage]] objects.\r\n\t *\r\n\t * @param images Images\r\n\t */\r\n\tpublic set imagesToConnect(images: MapImage[] | string[]) {\r\n\t\tthis.setPropertyValue(\"imagesToConnect\", images, true);\r\n\t\tthis.handleImagesToConnect();\r\n\r\n\t\tif (this.series) {\r\n\t\t\tlet chart = this.series.chart;\r\n\t\t\tif (chart) {\r\n\t\t\t\tchart.series.each((series) => {\r\n\t\t\t\t\tif (series instanceof MapImageSeries) {\r\n\t\t\t\t\t\tif (!series.isReady()) {\r\n\t\t\t\t\t\t\tthis._disposers.push(series.events.on(\"ready\", this.handleImagesToConnect, this, false));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return {MapImages[]}\r\n\t */\r\n\tpublic get imagesToConnect(): MapImage[] | string[] {\r\n\t\treturn this.getPropertyValue(\"imagesToConnect\");\r\n\t}\r\n\r\n\tprotected handleImagesToConnect() {\r\n\t\tif (this.imagesToConnect) {\r\n\t\t\tlet segment: Array = [];\r\n\t\t\tlet multiGeoLine = [segment];\r\n\r\n\t\t\tfor (let image of this.imagesToConnect) {\r\n\t\t\t\tif ($type.isString(image)) {\r\n\t\t\t\t\tlet chart = this.series.chart;\r\n\t\t\t\t\tif (chart) {\r\n\t\t\t\t\t\tchart.series.each((series) => {\r\n\t\t\t\t\t\t\tif (series instanceof MapImageSeries) {\r\n\t\t\t\t\t\t\t\tlet img = series.getImageById(image)\r\n\t\t\t\t\t\t\t\tif (img) {\r\n\t\t\t\t\t\t\t\t\timage = img;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (image instanceof MapImage) {\r\n\r\n\t\t\t\t\tsegment.push({ longitude: (image).longitude, latitude: (image).latitude });\r\n\r\n\t\t\t\t\tif (!this._imageListeners[image.uid]) {\r\n\t\t\t\t\t\tlet disposer = image.events.on(\"propertychanged\", (event) => {\r\n\t\t\t\t\t\t\tif (event.property == \"longitude\" || event.property == \"latitude\") {\r\n\t\t\t\t\t\t\t\tthis.handleImagesToConnect();\r\n\t\t\t\t\t\t\t\tthis.invalidate();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, this, false);\r\n\t\t\t\t\t\tthis._imageListeners[image.uid] = disposer;\r\n\t\t\t\t\t\tthis._disposers.push(disposer);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.multiGeoLine = multiGeoLine;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)validates the line, effectively forcing it to redraw.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validate(): void {\r\n\t\tlet chart: MapChart = this.series.chart;\r\n\r\n\t\tif (this.multiLine) {\r\n\r\n\t\t\tif (!this.shortestDistance) {\r\n\r\n\t\t\t\tlet convertedPoints: Array> = [];\r\n\r\n\t\t\t\tfor (let i = 0, len = this.multiLine.length; i < len; i++) {\r\n\r\n\t\t\t\t\tlet segment: Array<[number, number]> = this.multiLine[i];\r\n\r\n\t\t\t\t\tlet convertedSegmentPoints: Array = [];\r\n\r\n\t\t\t\t\tfor (let s = 0, slen = segment.length; s < slen; s++) {\r\n\t\t\t\t\t\tlet geoPoint: [number, number] = segment[s];\r\n\t\t\t\t\t\tlet point: IPoint = this.series.chart.projection.convert({ longitude: geoPoint[0], latitude: geoPoint[1] });\r\n\t\t\t\t\t\tconvertedSegmentPoints.push(point);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconvertedPoints.push(convertedSegmentPoints);\r\n\t\t\t\t}\r\n\t\t\t\tthis.line.segments = convertedPoints;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tchart.projection.d3Projection.precision(this.precision);\r\n\t\t\t\tthis.line.path = chart.projection.d3Path(this.getFeature());\r\n\t\t\t}\r\n\r\n\t\t\tif (this._arrow) {\r\n\t\t\t\tthis._arrow.validatePosition();\r\n\t\t\t}\r\n\r\n\t\t\t$iter.each(this.lineObjects.iterator(), (x) => {\r\n\t\t\t\tx.validatePosition();\r\n\t\t\t});\r\n\r\n\t\t\tthis.handleGlobalScale();\r\n\t\t}\r\n\t\telse if (this.imagesToConnect) {\r\n\t\t\tthis.handleImagesToConnect();\r\n\t\t}\r\n\r\n\r\n\t\tsuper.validate();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic getFeature(): { \"type\": \"Feature\", geometry: { type: \"MultiLineString\", coordinates: Array> } } {\r\n\t\tif (this.multiLine && this.multiLine.length > 0 && this.multiLine[0] && this.multiLine[0].length > 0) {\r\n\t\t\treturn { \"type\": \"Feature\", geometry: { type: \"MultiLineString\", coordinates: this.multiLine } };\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic measureElement(): void {\r\n\t\t// Overriding, just to avoid extra measure\r\n\t}\r\n\r\n\t/**\r\n\t * The line should take the shortest path over the globe.\r\n\t *\r\n\t * Enabling this will make the line look differently in different\r\n\t * projections. Only `MapLine` supports this setting, `MapArc` and\r\n\t * `MapSplice` don't.\r\n\t *\r\n\t * @default true\r\n\t * @param value Real path?\r\n\t */\r\n\tpublic set shortestDistance(value: boolean) {\r\n\t\tthis.setPropertyValue(\"shortestDistance\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Real path?\r\n\t */\r\n\tpublic get shortestDistance(): boolean {\r\n\t\treturn this.getPropertyValue(\"shortestDistance\");\r\n\t}\r\n\r\n\t/**\r\n\t * List of separate line objects the line consists of.\r\n\t *\r\n\t * @readonly\r\n\t * @return List of line objects\r\n\t */\r\n\tpublic get lineObjects(): ListTemplate {\r\n\t\tif (!this._lineObjects) {\r\n\t\t\tthis._lineObjects = new ListTemplate(new MapLineObject());\r\n\t\t\tthis._lineObjects.events.on(\"inserted\", this.handleLineObjectAdded, this, false);\r\n\t\t\tthis._disposers.push(new ListDisposer(this._lineObjects));\r\n\t\t\tthis._disposers.push(this._lineObjects.template);\r\n\t\t}\r\n\r\n\t\treturn this._lineObjects;\r\n\t}\r\n\r\n\t/**\r\n\t * Decorate a [[LineObject]] when it is added to the line.\r\n\t *\r\n\t * @param event Event\r\n\t */\r\n\tprotected handleLineObjectAdded(event: IListEvents[\"inserted\"]) {\r\n\t\tlet mapLineObject: MapLineObject = event.newValue;\r\n\t\tmapLineObject.mapLine = this;\r\n\t\tmapLineObject.shouldClone = false;\r\n\t\tmapLineObject.parent = this;\r\n\t}\r\n\r\n\t/**\r\n\t * A [[MapLineObject]] to use as an option arrowhead on the line.\r\n\t *\r\n\t * Just accessing this property will create a default arrowhead on the line\r\n\t * automatically.\r\n\t *\r\n\t * @param arrow Arrow element\r\n\t */\r\n\tpublic set arrow(arrow: MapLineObject) {\r\n\t\tthis._arrow = arrow;\r\n\t\tarrow.mapLine = this;\r\n\t\tarrow.parent = this;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Arrow element\r\n\t */\r\n\tpublic get arrow(): MapLineObject {\r\n\t\tif (!this._arrow) {\r\n\t\t\tlet arrow: MapLineObject = this.createChild(MapLineObject);\r\n\t\t\tarrow.shouldClone = false;\r\n\t\t\tarrow.width = 8;\r\n\t\t\tarrow.height = 10;\r\n\t\t\tarrow.mapLine = this;\r\n\t\t\tarrow.position = 0.5;\r\n\r\n\t\t\tlet triangle = arrow.createChild(Triangle);\r\n\t\t\t//triangle.shouldClone = false;\r\n\t\t\ttriangle.fillOpacity = 1;\r\n\t\t\ttriangle.width = percent(100);\r\n\t\t\ttriangle.height = percent(100);\r\n\t\t\ttriangle.rotation = 90;\r\n\t\t\ttriangle.horizontalCenter = \"middle\";\r\n\t\t\ttriangle.verticalCenter = \"middle\";\r\n\t\t\tthis._arrow = arrow;\r\n\t\t}\r\n\t\treturn this._arrow;\r\n\t}\r\n\r\n\t/**\r\n\t * Copies line properties and other attributes, like arrow, from another\r\n\t * instance of [[MapLine]].\r\n\t *\r\n\t * @param source Source map line\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\tsuper.copyFrom(source);\r\n\t\tthis.line.copyFrom(source.line);\r\n\t\tthis.lineObjects.copyFrom(source.lineObjects);\r\n\t\tif (source._arrow) {\r\n\t\t\tthis.arrow = source.arrow.clone();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Latitude of the line center.\r\n\t *\r\n\t * @readonly\r\n\t * @return Latitude\r\n\t */\r\n\tpublic get latitude(): number {\r\n\t\treturn this.north + (this.south - this.north) / 2;\r\n\t}\r\n\r\n\t/**\r\n\t * Longitude of the line center.\r\n\t *\r\n\t * @readonly\r\n\t * @return Latitude\r\n\t */\r\n\tpublic get longitude(): number {\r\n\t\treturn this.east + (this.west - this.east) / 2;\r\n\t}\r\n\r\n\t/**\r\n\t * X coordinate for the slice tooltip.\r\n\t *\r\n\t * @ignore\r\n\t * @return X\r\n\t */\r\n\tpublic getTooltipX(): number {\r\n\t\tlet x = this.getPropertyValue(\"tooltipX\");\r\n\t\tif (!(x instanceof Percent)) {\r\n\t\t\tx = percent(50);\r\n\t\t}\r\n\t\tif (x instanceof Percent) {\r\n\t\t\treturn this.positionToPoint(x.value).x;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Y coordinate for the slice tooltip.\r\n\t *\r\n\t * @ignore\r\n\t * @return Y\r\n\t */\r\n\tpublic getTooltipY(): number {\r\n\t\tlet y = this.getPropertyValue(\"tooltipY\");\r\n\t\tif (!(y instanceof Percent)) {\r\n\t\t\ty = percent(50);\r\n\t\t}\r\n\t\tif (y instanceof Percent) {\r\n\t\t\treturn this.positionToPoint(y.value).y;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * When line is plotted, if its `shortestDistance` is set to `true` it is\r\n\t * bent according to the used projection, to depict the shortest distance how\r\n\t * it would go on the actual land.\r\n\t *\r\n\t * `precision` introduces a setting which can control when such bending\r\n\t * occurs.\r\n\t *\r\n\t * If the distance (in degrees) between line start and end points\r\n\t * is less than `precision`, no bending will take place and the line will be\r\n\t * straight.\r\n\t *\r\n\t * Set to large number (e.g. 10000) for perfectly straight line.\r\n\t *\r\n\t * @since 4.9.1\r\n\t * @default 0.1\r\n\t * @param value Precision\r\n\t */\r\n\tpublic set precision(value: number) {\r\n\t\tthis.setPropertyValue(\"precision\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Precision\r\n\t */\r\n\tpublic get precision(): number {\r\n\t\treturn this.getPropertyValue(\"precision\");\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"MapLine\"] = MapLine;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/map/MapLine.ts","/**\r\n * Map line series module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { MapSeries, MapSeriesDataItem, GEOJSONGeometry, IMapSeriesProperties, IMapSeriesDataFields, IMapSeriesAdapters, IMapSeriesEvents } from \"./MapSeries\";\r\nimport { MapChart } from \"../types/MapChart\";\r\nimport { MapLine } from \"./MapLine\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { IMapLineDataObject } from \"../types/MapChart\";\r\nimport { IGeoPoint } from \"../../core/defs/IGeoPoint\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $mapUtils from \"./MapUtils\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport { Disposer } from \"../../core/utils/Disposer\";\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[MapLineSeries]]\r\n * @see {@link DataItem}\r\n */\r\nexport class MapLineSeriesDataItem extends MapSeriesDataItem {\r\n\r\n\t/**\r\n\t * A [[MapLine]] element related to this data item.\r\n\t */\r\n\tpublic _mapLine: MapLine;\r\n\r\n\t/**\r\n\t * A collection of X/Y coordinates for a single-segment line.\r\n\t */\r\n\tprotected _line: Array<[number, number]>;\r\n\r\n\t/**\r\n\t * A collection of X/Y coordinates for a multi-segment line.\r\n\t */\r\n\tprotected _multiLine: Array>;\r\n\r\n\t/**\r\n\t * A collection of lat/long coordinates for a single-segment line.\r\n\t */\r\n\tprotected _geoLine: Array;\r\n\r\n\t/**\r\n\t * A collection of lat/long coordinates for a multi-segment line.\r\n\t */\r\n\tprotected _multiGeoLine: Array>;\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for\r\n\t */\r\n\tpublic _component!: MapLineSeries;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"MapLineSeriesDataItem\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\tpublic getFeature(): { \"type\": \"Feature\", geometry: { type: \"MultiLineString\", coordinates: Array> } } {\r\n\t\tif (this.multiLine && this.multiLine.length > 0) {\r\n\t\t\treturn { \"type\": \"Feature\", geometry: { type: \"MultiLineString\", coordinates: this.multiLine } };\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A [[MapLine]] element related to this data item.\r\n\t *\r\n\t * @readonly\r\n\t * @return Element\r\n\t */\r\n\tpublic get mapLine(): this[\"_mapLine\"] {\r\n\t\tif (!this._mapLine) {\r\n\t\t\tlet mapLine = this.component.mapLines.create();\r\n\r\n\t\t\tthis._mapLine = mapLine;\r\n\t\t\tthis.addSprite(mapLine);\r\n\r\n\t\t\tthis._disposers.push(mapLine);\r\n\t\t\tthis._disposers.push(new Disposer(() => {\r\n\t\t\t\tif (this.component) {\r\n\t\t\t\t\tthis.component.mapLines.removeValue(mapLine);\r\n\t\t\t\t}\r\n\t\t\t}));\r\n\r\n\t\t\tthis.mapObject = mapLine;\r\n\t\t}\r\n\t\treturn this._mapLine;\r\n\t}\r\n\r\n\t/**\r\n\t * A collection of X/Y coordinates for a single-segment line. E.g.:\r\n\t *\r\n\t * ```JSON\r\n\t * [\r\n\t * [ 100, 150 ],\r\n\t * [ 120, 200 ]\r\n\t * ]\r\n\t * ```\r\n\t *\r\n\t * @param line Coordinates\r\n\t */\r\n\tpublic set line(line: Array<[number, number]>) {\r\n\t\tthis._line = line;\r\n\t\tthis.multiLine = [line];\r\n\t}\r\n\r\n\t/**\r\n\t * @return Coordinates\r\n\t */\r\n\tpublic get line(): Array<[number, number]> {\r\n\t\treturn this._line;\r\n\t}\r\n\r\n\t/**\r\n\t * A collection of X/Y coordinates for a multi-segment line. E.g.:\r\n\t *\r\n\t * ```JSON\r\n\t * [\r\n\t * // Segment 1\r\n\t * [\r\n\t * [ 100, 150 ],\r\n\t * [ 120, 200 ]\r\n\t * ],\r\n\t *\r\n\t * // Segment 2\r\n\t * [\r\n\t * [ 120, 200 ],\r\n\t * [ 150, 100 ]\r\n\t * ]\r\n\t * ]\r\n\t * ```\r\n\t *\r\n\t * @param multiLine Coordinates\r\n\t */\r\n\tpublic set multiLine(multiLine: Array>) {\r\n\t\tthis._multiLine = multiLine;\r\n\t\tthis._multiGeoLine = $mapUtils.multiLineToGeo(multiLine);\r\n\t\tthis.updateExtremes();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Coordinates\r\n\t */\r\n\tpublic get multiLine(): Array> {\r\n\t\treturn this._multiLine;\r\n\t}\r\n\r\n\t/**\r\n\t * A collection of lat/long coordinates for a single-segment line. E.g.:\r\n\t *\r\n\t * ```JSON\r\n\t * [\r\n\t * { longitude: 3.121, latitude: 0.58 },\r\n\t * { longitude: -5.199, latitude: 21.223 }\r\n\t * ]\r\n\t * ```\r\n\t *\r\n\t * @see {@link https://tools.ietf.org/html/rfc7946#section-3.1.4} GeoJSON LineString reference\r\n\t * @param geoLine Coordinates\r\n\t */\r\n\tpublic set geoLine(geoLine: Array) {\r\n\t\tthis._geoLine = geoLine;\r\n\t\tthis.multiLine = $mapUtils.multiGeoLineToMultiLine([geoLine]);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Coordinates\r\n\t */\r\n\tpublic get geoLine(): Array {\r\n\t\treturn this._geoLine;\r\n\t}\r\n\r\n\t/**\r\n\t * A collection of X/Y coordinates for a multi-segment line. E.g.:\r\n\t *\r\n\t * ```JSON\r\n\t * [\r\n\t * // Segment 1\r\n\t * [\r\n\t * { longitude: 3.121, latitude: 0.58 },\r\n\t * { longitude: -5.199, latitude: 21.223 }\r\n\t * ],\r\n\t *\r\n\t * // Segment 2\r\n\t * [\r\n\t * { longitude: -5.199, latitude: 21.223 },\r\n\t * { longitude: -12.9, latitude: 25.85 }\r\n\t * ]\r\n\t * ]\r\n\t * ```\r\n\t *\r\n\t * @see {@link https://tools.ietf.org/html/rfc7946#section-3.1.5} GeoJSON MultiLineString reference\r\n\t * @param multiGeoLine Coordinates\r\n\t */\r\n\tpublic set multiGeoLine(multiGeoLine: Array>) {\r\n\t\tthis._multiGeoLine = multiGeoLine;\r\n\t\tthis.multiLine = $mapUtils.multiGeoLineToMultiLine(multiGeoLine);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Coordinates\r\n\t */\r\n\tpublic get multiGeoLine(): Array> {\r\n\t\treturn this._multiGeoLine;\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines data fields for [[MapLineSeries]].\r\n */\r\nexport interface IMapLineSeriesDataFields extends IMapSeriesDataFields {\r\n\r\n\t/**\r\n\t * Field name that holds line data in pixels.\r\n\t */\r\n\tline?: string;\r\n\r\n\t/**\r\n\t * Field name that holds multi-line data in pixels.\r\n\t */\r\n\tmultiLine?: string;\r\n\r\n\t/**\r\n\t * Field name that holds line data in Geo coordinates.\r\n\t */\r\n\tgeoLine?: string;\r\n\r\n\t/**\r\n\t * Field name that holds multi-line data in Geo coordinates.\r\n\t */\r\n\tmultiGeoLine?: string;\r\n\r\n}\r\n\r\n/**\r\n * Defines properties for [[MapLineSeries]].\r\n */\r\nexport interface IMapLineSeriesProperties extends IMapSeriesProperties { }\r\n\r\n/**\r\n * Defines events for [[MapLineSeries]].\r\n */\r\nexport interface IMapLineSeriesEvents extends IMapSeriesEvents { }\r\n\r\n/**\r\n * Defines adapters for [[MapLineSeries]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IMapLineSeriesAdapters extends IMapSeriesAdapters, IMapLineSeriesProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * A series of map line series.\r\n *\r\n * @see {@link IMapLineSeriesEvents} for a list of available Events\r\n * @see {@link IMapLineSeriesAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class MapLineSeries extends MapSeries {\r\n\r\n\t/**\r\n\t * Defines available data fields.\r\n\t */\r\n\tpublic _dataFields: IMapLineSeriesDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IMapLineSeriesProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IMapLineSeriesAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IMapLineSeriesEvents;\r\n\r\n\t/**\r\n\t * Defines the type of data item.\r\n\t */\r\n\tpublic _dataItem: MapLineSeriesDataItem;\r\n\r\n\r\n\t/**\r\n\t * A related chart/map object, this element is drawn on.\r\n\t */\r\n\tpublic chart: MapChart;\r\n\r\n\t/**\r\n\t * Defines the type of the line items in this series.\r\n\t */\r\n\tpublic _mapLine: MapLine;\r\n\r\n\t/**\r\n\t * A list of map lins in the series.\r\n\t */\r\n\tprotected _mapLines: ListTemplate;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"MapLineSeries\";\r\n\r\n\t\t// Set data fields\r\n\t\tthis.dataFields.multiLine = \"multiLine\";\r\n\t\tthis.dataFields.line = \"line\";\r\n\r\n\t\tthis.dataFields.geoLine = \"geoLine\";\r\n\t\tthis.dataFields.multiGeoLine = \"multiGeoLine\";\r\n\r\n\t\tthis.ignoreBounds = true;\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty DataItem of the type appropriate for this object.\r\n\t *\r\n\t * @see {@link DataItem}\r\n\t * @return Data Item\r\n\t */\r\n\tprotected createDataItem(): this[\"_dataItem\"] {\r\n\t\treturn new MapLineSeriesDataItem();\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)validates series data, effectively causing the whole series to be\r\n\t * redrawn.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateData(): void {\r\n\t\t// process geoJSON and created map objects\r\n\t\tif (this.useGeodata || this.geodata) {\r\n\t\t\tlet geoJSON: any = this.chart.geodata;\r\n\t\t\tif (geoJSON) {\r\n\r\n\t\t\t\tlet features: any[];\r\n\r\n\t\t\t\tif (geoJSON.type == \"FeatureCollection\") {\r\n\t\t\t\t\tfeatures = geoJSON.features;\r\n\t\t\t\t}\r\n\t\t\t\telse if (geoJSON.type == \"Feature\") {\r\n\t\t\t\t\tfeatures = [geoJSON];\r\n\t\t\t\t}\r\n\t\t\t\telse if ([\"Point\", \"LineString\", \"Polygon\", \"MultiPoint\", \"MultiLineString\", \"MultiPolygon\"].indexOf(geoJSON.type) != -1) {\r\n\t\t\t\t\tfeatures = [{ geometry: geoJSON }];\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tconsole.log(\"nothing found in geoJSON\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (features) {\r\n\t\t\t\t\tfor (let i = 0, len = features.length; i < len; i++) {\r\n\r\n\t\t\t\t\t\tlet feature: any = features[i];\r\n\t\t\t\t\t\tlet geometry: any = feature.geometry;\r\n\t\t\t\t\t\tif (geometry) {\r\n\t\t\t\t\t\t\tlet type: GEOJSONGeometry = geometry.type;\r\n\t\t\t\t\t\t\tlet id: string = feature.id;\r\n\t\t\t\t\t\t\tif (type == \"LineString\" || type == \"MultiLineString\") {\r\n\r\n\t\t\t\t\t\t\t\tif (!this.checkInclude(this.include, this.exclude, id)) {\r\n\t\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tlet coordinates: any[] = geometry.coordinates;\r\n\t\t\t\t\t\t\t\tlet dataObject: IMapLineDataObject = $array.find(this.data, (value, i) => {\r\n\t\t\t\t\t\t\t\t\treturn value.id == id;\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\tif (type == \"LineString\") {\r\n\t\t\t\t\t\t\t\t\tcoordinates = [coordinates];\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tif (!dataObject) {\r\n\t\t\t\t\t\t\t\t\tdataObject = { multiLine: coordinates, id: id, madeFromGeoData:true};\r\n\t\t\t\t\t\t\t\t\tthis.data.push(dataObject);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\tif (!dataObject.multiLine) {\r\n\t\t\t\t\t\t\t\t\t\tdataObject.multiLine = coordinates;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t// copy properties data to datacontext\r\n\t\t\t\t\t\t\t\t$utils.softCopyProperties(feature.properties, dataObject);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsuper.validateData();\r\n\t}\r\n\r\n\t/**\r\n\t * A list of lines in the series.\r\n\t *\r\n\t * @return Lines\r\n\t */\r\n\tpublic get mapLines(): ListTemplate {\r\n\r\n\t\tif (!this._mapLines) {\r\n\t\t\tlet lineTemplate: MapLine = this.createLine();\r\n\t\t\tlet mapLines = new ListTemplate(lineTemplate);\r\n\t\t\tthis._disposers.push(new ListDisposer(mapLines));\r\n\t\t\tthis._disposers.push(mapLines.template);\r\n\t\t\tmapLines.events.on(\"inserted\", this.handleObjectAdded, this, false);\r\n\t\t\tthis._mapLines = mapLines;\r\n\t\t\tthis._mapObjects = mapLines;\r\n\t\t}\r\n\r\n\t\treturn this._mapLines;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new line instance of suitable type.\r\n\t *\r\n\t * @return New line\r\n\t */\r\n\tprotected createLine(): this[\"_mapLine\"] {\r\n\t\treturn new MapLine();\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)validates the series\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validate() {\r\n\r\n\t\tthis.dataItems.each((dataItem) => {\r\n\t\t\t$utils.used(dataItem.mapLine);\r\n\t\t})\r\n\r\n\r\n\t\tsuper.validate();\r\n\t\tthis.mapLines.each((mapLine) => {\r\n\t\t\tmapLine.validate();\r\n\t\t})\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all properties from another instance of [[Series]].\r\n\t *\r\n\t * @param source Source series\r\n\t */\r\n\tpublic copyFrom(source: this) {\r\n\t\tthis.mapLines.template.copyFrom(source.mapLines.template);\r\n\t\tsuper.copyFrom(source);\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic getFeatures(): { \"type\": \"Feature\", geometry: { type: \"MultiLineString\", coordinates: Array> } }[] {\r\n\t\tlet features: { \"type\": \"Feature\", geometry: { type: \"MultiLineString\", coordinates: Array> } }[] = [];\r\n\t\tthis.dataItems.each((dataItem) => {\r\n\t\t\tlet feature = dataItem.getFeature();\r\n\t\t\tif (feature) {\r\n\t\t\t\tfeatures.push(feature);\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tthis.mapLines.each((mapLine) => {\r\n\t\t\tif (this.dataItems.indexOf(mapLine._dataItem) == -1) {\r\n\t\t\t\tlet feature = mapLine.getFeature();\r\n\t\t\t\tif (feature) {\r\n\t\t\t\t\tfeatures.push(feature);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t\treturn features;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * returns MapLine by id\r\n\t * @param line id\r\n\t * @return {MapLine}\r\n\t */\r\n\tpublic getLineById(id: string): MapLine {\r\n\t\treturn $iter.find(this.mapLines.iterator(), (mapLine) => {\r\n\t\t\tlet dataContext: any = mapLine.dataItem.dataContext;\r\n\t\t\treturn dataContext.id == id;\r\n\t\t});\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"MapLineSeries\"] = MapLineSeries;\r\nregistry.registeredClasses[\"MapLineSeriesDataItem\"] = MapLineSeriesDataItem;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/map/MapLineSeries.ts","/**\r\n * Graticule (map grid line).\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { MapLine, IMapLineProperties, IMapLineAdapters, IMapLineEvents } from \"./MapLine\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { GraticuleSeries } from \"./GraticuleSeries\";\r\nimport { Polyline } from \"../../core/elements/Polyline\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Graticule]].\r\n */\r\nexport interface IGraticuleProperties extends IMapLineProperties { }\r\n\r\n/**\r\n * Defines events for [[Graticule]].\r\n */\r\nexport interface IGraticuleEvents extends IMapLineEvents { }\r\n\r\n/**\r\n * Defines adapters for [[Graticule]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IGraticuleAdapters extends IMapLineAdapters, IGraticuleProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Graticule is a map line spanning from the poles or around the globe.\r\n *\r\n * @since 4.3.0\r\n * @see {@link IGraticuleEvents} for a list of available events\r\n * @see {@link IGraticuleAdapters} for a list of available Adapters\r\n */\r\nexport class Graticule extends MapLine {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IGraticuleProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IGraticuleAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IGraticuleEvents;\r\n\r\n\t/**\r\n\t * A visual element.\r\n\t */\r\n\tpublic line: Polyline;\r\n\r\n\t/**\r\n\t * A map series this object belongs to.\r\n\t */\r\n\tpublic series: GraticuleSeries;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"Graticule\";\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t\tthis.shortestDistance = true;\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Graticule\"] = Graticule;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/map/Graticule.ts","/**\r\n * Graticule (map grid) series functionality.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { MapLineSeries, MapLineSeriesDataItem, IMapLineSeriesProperties, IMapLineSeriesDataFields, IMapLineSeriesAdapters, IMapLineSeriesEvents } from \"./MapLineSeries\";\r\nimport { Graticule } from \"./Graticule\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as d3geo from \"d3-geo\";\r\nimport * as $array from \"../../core/utils/Array\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[GraticuleSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class GraticuleSeriesDataItem extends MapLineSeriesDataItem {\r\n\r\n\t/**\r\n\t * A [[Graticule]] element related to this data item.\r\n\t */\r\n\tpublic _mapLine: Graticule;\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for.\r\n\t */\r\n\tpublic _component!: GraticuleSeries;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"GraticuleSeriesDataItem\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines data fields for [[GraticuleSeries]].\r\n */\r\nexport interface IGraticuleSeriesDataFields extends IMapLineSeriesDataFields { }\r\n\r\n/**\r\n * Defines properties for [[GraticuleSeries]].\r\n */\r\nexport interface IGraticuleSeriesProperties extends IMapLineSeriesProperties {\r\n\t/**\r\n\t * Draw a graticule (grid) every X degrees of latitude.\r\n\t *\r\n\t * @default 10\r\n\t */\r\n\tlatitudeStep?: number;\r\n\r\n\t/**\r\n\t * Draw a graticule (grid) every X degrees of longitude.\r\n\t *\r\n\t * @default 10\r\n\t */\r\n\tlongitudeStep?: number;\r\n\r\n\t/**\r\n\t * Draw a thicker (major) graticule every X degrees of latitude.\r\n\t *\r\n\t * @default 90\r\n\t */\r\n\t// majorLatitudeStep?: number;\r\n\r\n\t/**\r\n\t * Draw a thicker (major) graticule every X degrees of longitude.\r\n\t *\r\n\t * @default 360\r\n\t */\r\n\t// majorLongitudeStep?: number;\r\n\r\n\t/**\r\n\t * Whether to cap graticules (grid) to actual span of the map (`true`), e.g.\r\n\t * where there are polygons, or draw full-world grid (`false`).\r\n\t *\r\n\t * For world maps, using `false` makes sense. For smaller maps - not so much.\r\n\t *\r\n\t * If set to `false`, the grid will be drawn from this series `east` to\r\n\t * `west`, and from `south` to `north` (default values: `east = -180`;\r\n\t * `west = 180`; `south =-90`; `north =90`).\r\n\t *\r\n\t * These can be overridden by setting `GraticuleSeries`' respective\r\n\t * properties.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tfitExtent?: boolean;\r\n\r\n\t/**\r\n\t * Whether to draw all the grid as a single element or as separate lines.\r\n\t *\r\n\t * Setting `true` (default) will result in better performance, whereas\r\n\t * `false` allows setting visual properties of each line individually.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tsingleSprite?: boolean;\r\n}\r\n\r\n/**\r\n * Defines events for [[GraticuleSeries]].\r\n */\r\nexport interface IGraticuleSeriesEvents extends IMapLineSeriesEvents { }\r\n\r\n/**\r\n * Defines adapters for [[GraticuleSeries]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IGraticuleSeriesAdapters extends IMapLineSeriesAdapters, IGraticuleSeriesProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * This class is used to create a set of graticules (map grid).\r\n *\r\n * To enable, create like you would create any regular map series:\r\n *\r\n * ```TypeScript\r\n * let graticule = chart.series.push(new am4maps.GraticuleSeries())\r\n * graticule.mapLines.template.line.stroke = am4core.color(\"#000000\");\r\n * graticule.mapLines.template.line.strokeOpacity = 0.1;\r\n * ```\r\n * ```JavaScript\r\n * var graticule = chart.series.push(new am4maps.GraticuleSeries())\r\n * graticule.mapLines.template.line.stroke = am4core.color(\"#000000\");\r\n * graticule.mapLines.template.line.strokeOpacity = 0.1;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * \"type\": \"GraticuleSeries\",\r\n * \"mapLines\": {\r\n * \"line\": {\r\n * \"stroke\": \"#000000\",\r\n * \"strokeOpacity\": 0.1\r\n * }\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @since 4.3.0\r\n * @see {@link IGraticuleSeriesEvents} for a list of available Events\r\n * @see {@link IGraticuleSeriesAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class GraticuleSeries extends MapLineSeries {\r\n\r\n\t/**\r\n\t * Defines available data fields.\r\n\t */\r\n\tpublic _dataFields: IGraticuleSeriesDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IGraticuleSeriesProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IGraticuleSeriesAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IGraticuleSeriesEvents;\r\n\r\n\t/**\r\n\t * Defines the type of data item.\r\n\t */\r\n\tpublic _dataItem: GraticuleSeriesDataItem;\r\n\r\n\t/**\r\n\t * Defines the type of the line items in this series.\r\n\t */\r\n\tpublic _mapLine: Graticule;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"GraticuleSeries\";\r\n\r\n\t\tthis.longitudeStep = 10;\r\n\r\n\t\tthis.latitudeStep = 10;\r\n\r\n\t\tthis.north = 90;\r\n\t\tthis.south = -90;\r\n\t\tthis.east = -180;\r\n\t\tthis.west = 180;\r\n\r\n\t\t//this.majorLatitudeStep = 90;\r\n\t\t//this.majorLongitudeStep = 360;\r\n\r\n\t\tthis.fitExtent = true;\r\n\r\n\t\tthis.singleSprite = true;\r\n\r\n\t\tthis.events.disableType(\"geoBoundsChanged\");\r\n\r\n\t\tthis.mapLines.template.line.strokeOpacity = 0.08;\r\n\r\n\t\tthis.ignoreBounds = false;\r\n\r\n\t\tthis.hiddenInLegend = true;\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty DataItem of the type appropriate for this object.\r\n\t *\r\n\t * @see {@link DataItem}\r\n\t * @return Data Item\r\n\t */\r\n\tprotected createDataItem(): this[\"_dataItem\"] {\r\n\t\treturn new GraticuleSeriesDataItem();\r\n\t}\r\n\r\n\tpublic validateData() {\r\n\t\tsuper.validateData();\r\n\r\n\t\tthis.mapLines.clear();\r\n\r\n\t\tlet graticule = d3geo.geoGraticule();\r\n\r\n\t\tif (graticule) {\r\n\t\t\tgraticule.stepMinor([this.longitudeStep, this.latitudeStep]);\r\n\t\t\tgraticule.stepMajor([360, 360]);\r\n\r\n\t\t\tlet chart = this.chart;\r\n\t\t\tif (this.fitExtent) {\r\n\t\t\t\tgraticule.extent([[chart.east, chart.north], [chart.west, chart.south]]);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tgraticule.extent([[this.east, this.north], [this.west, this.south]]);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.singleSprite) {\r\n\t\t\t\tlet mapLine = this.mapLines.create();\r\n\t\t\t\tmapLine.multiLine = graticule().coordinates as Array>;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet lineStrings = graticule.lines();\r\n\r\n\t\t\t\t$array.each(lineStrings, (lineString) => {\r\n\t\t\t\t\tlet mapLine = this.mapLines.create();\r\n\t\t\t\t\tmapLine.multiLine = [lineString.coordinates as Array<[number, number]>];\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new line instance of suitable type.\r\n\t *\r\n\t * @return New line\r\n\t */\r\n\tprotected createLine(): this[\"_mapLine\"] {\r\n\t\treturn new Graticule();\r\n\t}\r\n\r\n\t/**\r\n\t * Draw a graticule (grid) every X degrees of latitude.\r\n\t *\r\n\t * @default 10\r\n\t * @param value Step\r\n\t */\r\n\tpublic set latitudeStep(value: number) {\r\n\t\tif (this.setPropertyValue(\"latitudeStep\", value)) {\r\n\t\t\tthis.invalidateData();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Step\r\n\t */\r\n\tpublic get latitudeStep(): number {\r\n\t\treturn this.getPropertyValue(\"latitudeStep\");\r\n\t}\r\n\r\n\t/**\r\n\t * Draw a graticule (grid) every X degrees of longitude.\r\n\t *\r\n\t * @default 10\r\n\t * @param value Step\r\n\t */\r\n\tpublic set longitudeStep(value: number) {\r\n\t\tif (this.setPropertyValue(\"longitudeStep\", value)) {\r\n\t\t\tthis.invalidateData();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Step\r\n\t */\r\n\tpublic get longitudeStep(): number {\r\n\t\treturn this.getPropertyValue(\"longitudeStep\");\r\n\t}\r\n\r\n\t/**\r\n\t * Draw a thicker (major) graticule every X degrees of latitude.\r\n\t *\r\n\t * @default 90\r\n\t * @param value Step\r\n\t */\r\n\t// public set majorLatitudeStep(value: number) {\r\n\t// \tif (this.setPropertyValue(\"majorLatitudeStep\", value)) {\r\n\t// \t\tthis.invalidateData();\r\n\t// \t}\r\n\t// }\r\n\r\n\t/**\r\n\t * @return Step\r\n\t */\r\n\t// public get majorLatitudeStep(): number {\r\n\t// \treturn this.getPropertyValue(\"majorLatitudeStep\");\r\n\t// }\r\n\r\n\t/**\r\n\t * Draw a thicker (major) graticule every X degrees of longitude.\r\n\t *\r\n\t * @default 360\r\n\t * @param value Step\r\n\t */\r\n\t// public set majorLongitudeStep(value: number) {\r\n\t// \tif (this.setPropertyValue(\"majorLongitudeStep\", value)) {\r\n\t// \t\tthis.invalidateData();\r\n\t// \t}\r\n\t// }\r\n\r\n\t/**\r\n\t * @return Step\r\n\t */\r\n\t// public get majorLongitudeStep(): number {\r\n\t// \treturn this.getPropertyValue(\"majorLongitudeStep\");\r\n\t// }\r\n\r\n\t/**\r\n\t * Whether to cap graticules (grid) to actual span of the map (`true`), e.g.\r\n\t * where there are polygons, or draw full-world grid (`false`).\r\n\t *\r\n\t * For world maps, using `false` makes sense. For smaller maps - not so much.\r\n\t *\r\n\t * If set to `false`, the grid will be drawn from this series `east` to\r\n\t * `west`, and from `south` to `north` (default values: `east = -180`;\r\n\t * `west = 180`; `south =-90`; `north =90`).\r\n\t *\r\n\t * These can be overridden by setting `GraticuleSeries`' respective\r\n\t * properties.\r\n\t *\r\n\t * @default true\r\n\t * @param value Fit?\r\n\t */\r\n\tpublic set fitExtent(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"fitExtent\", value)) {\r\n\t\t\tthis.invalidateData();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Fit?\r\n\t */\r\n\tpublic get fitExtent(): boolean {\r\n\t\treturn this.getPropertyValue(\"fitExtent\");\r\n\t}\r\n\r\n\t/**\r\n\t * Whether to draw all the grid as a single element or as separate lines.\r\n\t *\r\n\t * Setting `true` (default) will result in better performance, whereas\r\n\t * `false` allows setting visual properties of each line individually.\r\n\t *\r\n\t * @default true\r\n\t * @param value Use single sprite?\r\n\t */\r\n\tpublic set singleSprite(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"singleSprite\", value)) {\r\n\t\t\tthis.invalidateData();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Use single sprite?\r\n\t */\r\n\tpublic get singleSprite(): boolean {\r\n\t\treturn this.getPropertyValue(\"singleSprite\");\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"GraticuleSeries\"] = GraticuleSeries;\r\nregistry.registeredClasses[\"GraticuleSeriesDataItem\"] = GraticuleSeriesDataItem;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/map/GraticuleSeries.ts","/**\r\n * Map module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { SerialChart, ISerialChartProperties, ISerialChartDataFields, ISerialChartAdapters, ISerialChartEvents, SerialChartDataItem } from \"./SerialChart\";\r\nimport { Sprite, ISpriteEvents, AMEvent } from \"../../core/Sprite\";\r\nimport { IDisposer, Disposer } from \"../../core/utils/Disposer\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { MapSeries } from \"../map/MapSeries\";\r\nimport { MapObject } from \"../map/MapObject\";\r\nimport { MapImage } from \"../map/MapImage\";\r\nimport { MapPolygon } from \"../map/MapPolygon\";\r\nimport { MapPolygonSeries } from \"../map/MapPolygonSeries\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport { IGeoPoint } from \"../../core/defs/IGeoPoint\";\r\nimport { DataSource } from \"../../core/data/DataSource\";\r\nimport { Projection } from \"../map/projections/Projection\";\r\nimport { ZoomControl } from \"../map/ZoomControl\";\r\nimport { Ordering } from \"../../core/utils/Order\";\r\nimport { Circle } from \"../../core/elements/Circle\";\r\nimport { SmallMap } from \"../map/SmallMap\";\r\nimport * as $mapUtils from \"../map/MapUtils\";\r\nimport { Animation } from \"../../core/utils/Animation\";\r\nimport { keyboard } from \"../../core/utils/Keyboard\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { options } from \"../../core/Options\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $ease from \"../../core/utils/Ease\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $geo from \"../map/Geo\";\r\nimport { Paper } from \"../../core/rendering/Paper\";\r\nimport { IListEvents } from \"../../core/utils/List\";\r\nimport { GraticuleSeries } from \"../map/GraticuleSeries\";\r\nimport { getInteraction, IInteractionEvents } from \"../../core/interaction/Interaction\";\r\nimport { Legend } from \"../Legend\";\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[MapChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class MapChartDataItem extends SerialChartDataItem {\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for.\r\n\t */\r\n\tpublic _component!: MapChart;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"MapChartDataItem\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines interface for a map polygon object.\r\n */\r\nexport interface IMapPolygonDataObject {\r\n\r\n\t/**\r\n\t * A unique id of the object.\r\n\t */\r\n\tid?: string;\r\n\r\n\t/**\r\n\t * Numeric value for heat-map scenarios.\r\n\t */\r\n\tvalue?: number;\r\n\r\n\t/**\r\n\t * Single polygon information in X/Y coordinates.\r\n\t */\r\n\tpolygon?: Array>;\r\n\r\n\t/**\r\n\t * Multi-part polygon information in X/Y coordinates.\r\n\t */\r\n\tmultiPolygon?: Array>>;\r\n\r\n\t/**\r\n\t * Single polygon information in lat/long geo-coordinates.\r\n\t */\r\n\tgeoPolygon?: Array>;\r\n\r\n\t/**\r\n\t * Multi-part polygon information in lat/long geo-coordinates.\r\n\t */\r\n\tmultiGeoPolygon?: Array>>;\r\n\r\n\t/**\r\n\t * flag indicating whether this data item was created from geo data\r\n\t */\r\n\tmadeFromGeoData?: boolean;\r\n}\r\n\r\n/**\r\n * Defines types of map line.\r\n */\r\nexport type MapLineType = \"line\" | \"arc\" | \"spline\" | \"realTrajectory\";\r\n\r\n/**\r\n * Defines interface for the map line object.\r\n */\r\nexport interface IMapLineDataObject {\r\n\r\n\t/**\r\n\t * A unique id of the object.\r\n\t */\r\n\tid?: string;\r\n\r\n\t/**\r\n\t * Numeric value for heat-map scenarios.\r\n\t */\r\n\tvalue?: number;\r\n\r\n\t/**\r\n\t * Single line information in X/Y coordinates.\r\n\t */\r\n\tline?: Array<[number, number]>;\r\n\r\n\t/**\r\n\t * Multi-part line information in X/Y coordinates.\r\n\t */\r\n\tmultiLine?: Array>;\r\n\r\n\t/**\r\n\t * Single line information in lat/long geo-coordinates.\r\n\t */\r\n\tgeoLine?: Array;\r\n\r\n\t/**\r\n\t * Multi-part line information in lat/long geo-coordinates.\r\n\t */\r\n\tmultiGeoLine?: Array>;\r\n\r\n\t/**\r\n\t * flag indicating whether this data item was created from geo data\r\n\t */\r\n\tmadeFromGeoData?: boolean;\r\n\r\n}\r\n\r\n/**\r\n * Defines interface for a map image (market) object.\r\n */\r\nexport interface IMapImageDataObject {\r\n\r\n\t/**\r\n\t * A unique id of the object.\r\n\t */\r\n\tid?: string;\r\n\r\n\t/**\r\n\t * Numeric value for heat-map scenarios.\r\n\t */\r\n\tvalue?: number;\r\n\r\n\t/**\r\n\t * Image position information in X/Y coordinates.\r\n\t */\r\n\tpoint?: [number, number];\r\n\r\n\t/**\r\n\t * Multi-image position information in X/Y coordinates.\r\n\t */\r\n\tmultiPoint?: Array<[number, number]>;\r\n\r\n\t/**\r\n\t * Image position information in lat/long geo-coordinates.\r\n\t */\r\n\tgeoPoint?: IGeoPoint;\r\n\r\n\t/**\r\n\t * Multi-image position information in lat/long geo-coordinates.\r\n\t */\r\n\tmultiGeoPoint?: Array;\r\n\r\n\r\n\t/**\r\n\t * flag indicating whether this data item was created from geo data\r\n\t */\r\n\tmadeFromGeoData?: boolean;\r\n}\r\n\r\n/**\r\n * Defines type suitable for all map objects.\r\n */\r\nexport type IMapDataObject = IMapPolygonDataObject | IMapLineDataObject;\r\n\r\n/**\r\n * Defines data fields for [[MapChart]].\r\n */\r\nexport interface IMapChartDataFields extends ISerialChartDataFields { }\r\n\r\n/**\r\n * Defines properties for [[MapChart]].\r\n */\r\nexport interface IMapChartProperties extends ISerialChartProperties {\r\n\r\n\t/**\r\n\t * Projection to be used when drawing the map.\r\n\t */\r\n\tprojection?: Projection;\r\n\r\n\t/**\r\n\t * Degrees to rotate the map around vertical axis (Y).\r\n\t *\r\n\t * E.g. if set to -160, the longitude 20 will become a new center, creating\r\n\t * a Pacific-centered map.\r\n\t */\r\n\tdeltaLongitude?: number;\r\n\r\n\t/**\r\n\t * Degrees to rotate the map around horizontal axis (X).\r\n\t *\r\n\t * E.g. setting this to -90 will put Antarctica directly in the center of\r\n\t * the map.\r\n\t *\r\n\t * @since 4.3.0\r\n\t */\r\n\tdeltaLatitude?: number;\r\n\r\n\t/**\r\n\t * Degrees to rotate the map around horizontal \"Z\" - an axis that goes from\r\n\t * the center of the globe directly to the viewer.\r\n\t *\r\n\t * @since 4.3.0\r\n\t */\r\n\tdeltaGamma?: number;\r\n\r\n\t/**\r\n\t * Maximum portion of the map's width/height to allow panning \"off screen\".\r\n\t *\r\n\t * A value of 0 (zero) will prevent any portion of the the map to be panned\r\n\t * outside the viewport.\r\n\t *\r\n\t * 0.5 will allow half of the map to be outside viewable area.\r\n\t *\r\n\t * @default 0.7\r\n\t */\r\n\tmaxPanOut?: number;\r\n\r\n\t/**\r\n\t * A map will start centered on this geographical point.\r\n\t */\r\n\thomeGeoPoint?: IGeoPoint;\r\n\r\n\t/**\r\n\t * A map will start zoomed to this level.\r\n\t */\r\n\thomeZoomLevel?: number;\r\n\r\n\t/**\r\n\t * When user zooms in or out current zoom level is multiplied or divided\r\n\t * by value of this setting.\r\n\t *\r\n\t * @default 2\r\n\t */\r\n\tzoomStep?: number;\r\n\r\n\t/**\r\n\t * Specifies what should chart do if when mouse wheel is rotated.\r\n\t */\r\n\tmouseWheelBehavior?: \"zoom\" | \"none\";\r\n\r\n\t/**\r\n\t * What \"dragging\" map does.\r\n\t *\r\n\t * Available values:\r\n\t * * `\"move\"` (default): changes position of the map.\r\n\t * * `\"rotateLat\"`: changes `deltaLatitude` (rotates the globe vertically).\r\n\t * * `\"rotateLong\"`: changes `deltaLongitude` (rotates the globe horizontally).\r\n\t * * `\"rotateLongLat\"`: changes both `deltaLongitude` and `deltaLatitude` (rotates the globe in any direction).\r\n\t *\r\n\t * @default \"move\"\r\n\t * @since 4.3.0\r\n\t */\r\n\tpanBehavior?: \"move\" | \"rotateLat\" | \"rotateLong\" | \"rotateLongLat\";\r\n\r\n\t/**\r\n\t * Specifies if the map should be centered when zooming out\r\n\t * @default true\r\n\t * @since 4.7.12\r\n\t */\r\n\tcenterMapOnZoomOut?: boolean;\r\n\r\n\t/**\r\n\t * Indicates whether GeoJSON geodata supplied to the chart uses\r\n\t * ESRI (clockwise) or non-ESRI (counter-clockwise) order of the polygon\r\n\t * coordinates.\r\n\t *\r\n\t * `MapChart` supports only ESRI standard, so if your custom maps appears\r\n\t * garbled, try setting `reverseGeodata = true`.\r\n\t * \r\n\t * @default false\r\n\t * @since 4.10.11\r\n\t */\r\n\treverseGeodata?: boolean;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[MapChart]].\r\n */\r\nexport interface IMapChartEvents extends ISerialChartEvents {\r\n\r\n\t/**\r\n\t * Invoked when map is zoomed in or out.\r\n\t */\r\n\tzoomlevelchanged: {};\r\n\r\n\t/**\r\n\t * Invoked when map is panned. (moved)\r\n\t */\r\n\tmappositionchanged: {};\r\n\r\n\t/**\r\n\t * Invoked when scale ratio is changed, e.g when the whole map area is\r\n\t * resized and the map needs to be resized to fit it, without changing\r\n\t * zoom level.\r\n\t */\r\n\tscaleratiochanged: {};\r\n\r\n}\r\n\r\n/**\r\n * Defines adapters for [[MapChart]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IMapChartAdapters extends ISerialChartAdapters, IMapChartProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creates a map.\r\n *\r\n * @see {@link IMapChartEvents} for a list of available Events\r\n * @see {@link IMapChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/map/} for documentation\r\n */\r\nexport class MapChart extends SerialChart {\r\n\r\n\t/**\r\n\t * Available data fields.\r\n\t */\r\n\tpublic _dataFields: IMapChartDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IMapChartProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IMapChartAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IMapChartEvents;\r\n\r\n\t/**\r\n\t * The East-most longitude point of the map.\r\n\t */\r\n\tpublic east: number;\r\n\r\n\t/**\r\n\t * The West-most longitude point of the map.\r\n\t */\r\n\tpublic west: number;\r\n\r\n\t/**\r\n\t * The South-most latitude point of the map.\r\n\t */\r\n\tpublic south: number;\r\n\r\n\t/**\r\n\t * The North-most latitude point of the map.\r\n\t */\r\n\tpublic north: number;\r\n\r\n\t/**\r\n\t * A ratio to be used when scaling the map shapes.\r\n\t *\r\n\t * @readonly\r\n\t */\r\n\tpublic scaleRatio: number = 1;\r\n\r\n\t/**\r\n\t * A screen point of the map's center.\r\n\t *\r\n\t * @readonly\r\n\t */\r\n\tpublic centerPoint: IPoint;\r\n\r\n\t/**\r\n\t * A screen point of the map's left.\r\n\t *\r\n\t * @readonly\r\n\t */\r\n\tpublic westPoint: IPoint;\r\n\r\n\t/**\r\n\t * A screen point of the map's right.\r\n\t *\r\n\t * @readonly\r\n\t */\r\n\tpublic eastPoint: IPoint;\r\n\r\n\t/**\r\n\t * A screen point of the map's top.\r\n\t *\r\n\t * @readonly\r\n\t */\r\n\tpublic northPoint: IPoint;\r\n\r\n\t/**\r\n\t * A screen point of the map's bottom.\r\n\t *\r\n\t * @readonly\r\n\t */\r\n\tpublic southPoint: IPoint;\r\n\r\n\t/**\r\n\t * Width of the actual map objects (px).\r\n\t */\r\n\tpublic seriesWidth: number;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic seriesMaxLeft: number;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic seriesMaxRight: number;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic seriesMaxTop: number;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic seriesMaxBottom: number;\r\n\r\n\t/**\r\n\t * Height of the actual map objects (px).\r\n\t */\r\n\tpublic seriesHeight: number;\r\n\r\n\t/**\r\n\t * Map data in GeoJSON format.\r\n\t *\r\n\t * @see {@link http://geojson.org/} GeoJSON official specification\r\n\t */\r\n\tprotected _geodata: Object;\r\n\r\n\t/**\r\n\t * Names of geodata items, such as countries, to replace by from loaded\r\n\t * geodata.\r\n\t *\r\n\t * Can be used to override built-in English names for countries.\r\n\t *\r\n\t * ```TypeScript\r\n\t * import am4geodata_lang_ES from '@amcharts4-geodata/lang/es';\r\n\t * // ...\r\n\t * map.geodataNames = am4geodata_lang_ES;\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * map.geodataNames = am4geodata_lang_ES;\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"geodataNames\": am4geodata_lang_ES\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @since 4.7.4\r\n\t */\r\n\tpublic geodataNames: { [index: string]: string };\r\n\r\n\t/**\r\n\t * A reference to a [[ZoomControl]] instance.\r\n\t */\r\n\tprotected _zoomControl: ZoomControl;\r\n\r\n\t/**\r\n\t * A reference to a [[SmallMap]] control instance.\r\n\t */\r\n\tprotected _smallMap: SmallMap;\r\n\r\n\t/**\r\n\t * [_zoomGeoPoint description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _zoomGeoPoint: IGeoPoint;\r\n\r\n\t/**\r\n\t * Default duration of zoom animations (ms).\r\n\t */\r\n\tpublic zoomDuration: number = 1000;\r\n\r\n\t/**\r\n\t * Default zooming animation easing function.\r\n\t */\r\n\tpublic zoomEasing: (value: number) => number = $ease.cubicOut;\r\n\r\n\t/**\r\n\t * Smallest available zoom level. The map will not allow to zoom out past\r\n\t * this setting.\r\n\t *\r\n\t * NOTE: Should be power of 2.\r\n\t *\r\n\t * @default 1\r\n\t */\r\n\tpublic minZoomLevel: number = 1;\r\n\r\n\t/**\r\n\t * Biggest available zoom level. The map will not allow to zoom in past\r\n\t * this setting.\r\n\t *\r\n\t * NOTE: Should be power of 2.\r\n\t *\r\n\t * @default 32\r\n\t */\r\n\tpublic maxZoomLevel: number = 32;\r\n\r\n\t/**\r\n\t * [_prevZoomLevel description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _prevZoomLevel: number;\r\n\r\n\t/**\r\n\t * [_prevZoomGeoPoint description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _prevZoomGeoPoint: IGeoPoint = { latitude: 0, longitude: 0 };\r\n\r\n\t/**\r\n\t * Defines a type of series that this chart uses.\r\n\t */\r\n\tpublic _seriesType: MapSeries;\r\n\r\n\t/**\r\n\t * A reference to currently playing animation, e.g. zooming.\r\n\t */\r\n\tprotected _mapAnimation: Animation;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected _mouseWheelDisposer: IDisposer;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic _zoomGeoPointReal: IGeoPoint;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected _centerGeoPoint: IGeoPoint;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected _fitWidth: number;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected _fitHeight: number;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\r\n\tpublic panSprite: Circle;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected _downPointOrig: IPoint;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected _downDeltaLongitude: number;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected _downDeltaLatitude: number;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected _backgroundSeries: MapPolygonSeries;\r\n\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"MapChart\";\r\n\r\n\t\t// Set default projection\r\n\t\tthis.projection = new Projection();\r\n\r\n\t\tthis.setPropertyValue(\"deltaLatitude\", 0);\r\n\t\tthis.setPropertyValue(\"deltaLongitude\", 0);\r\n\t\tthis.setPropertyValue(\"deltaGamma\", 0);\r\n\t\tthis.maxPanOut = 0.7;\r\n\t\tthis.homeZoomLevel = 1;\r\n\t\tthis.zoomStep = 2;\r\n\t\tthis.layout = \"absolute\";\r\n\r\n\t\tthis.centerMapOnZoomOut = true;\r\n\r\n\t\t// Set padding\r\n\t\tthis.padding(0, 0, 0, 0);\r\n\r\n\t\t$utils.used(this.backgroundSeries);\r\n\r\n\t\t// so that the map would render in a hidden div too\r\n\t\tthis.minWidth = 10;\r\n\t\tthis.minHeight = 10;\r\n\r\n\t\tthis.events.once(\"inited\", this.handleAllInited, this, false);\r\n\r\n\t\t// Create a container for map series\r\n\t\tlet seriesContainer = this.seriesContainer;\r\n\t\tseriesContainer.visible = false;\r\n\t\tseriesContainer.inert = true;\r\n\t\tseriesContainer.resizable = true;\r\n\t\tseriesContainer.events.on(\"transformed\", this.handleMapTransform, this, false);\r\n\t\tseriesContainer.events.on(\"doublehit\", this.handleDoubleHit, this, false);\r\n\t\tseriesContainer.events.on(\"dragged\", this.handleDrag, this, false);\r\n\t\tseriesContainer.zIndex = 0;\r\n\t\tseriesContainer.dragWhileResize = true;\r\n\t\t//seriesContainer.background.fillOpacity = 0;\r\n\r\n\t\tseriesContainer.adapter.add(\"scale\", (scale, target) => {\r\n\t\t\treturn $math.fitToRange(scale, this.minZoomLevel, this.maxZoomLevel);\r\n\t\t});\r\n\r\n\t\t// Set up events\r\n\t\t//this.events.on(\"validated\", this.updateExtremes, this);\r\n\t\t//this.events.on(\"datavalidated\", this.handleAllValidated, this, false);\r\n\t\t//this.events.on(\"datavalidated\", this.updateExtremes, this, false);\r\n\r\n\t\tthis.events.on(\"maxsizechanged\", (event) => {\r\n\t\t\tif (event.previousWidth == 0 || event.previousHeight == 0) {\r\n\t\t\t\tthis.updateExtremes();\r\n\t\t\t\tthis.updateCenterGeoPoint();\r\n\t\t\t}\r\n\t\t}, undefined, false)\r\n\r\n\t\t// Set up main chart container, e.g. set backgrounds and events to monitor\r\n\t\t// size changes, etc.\r\n\t\tlet chartContainer = this.chartContainer;\r\n\t\tchartContainer.parent = this;\r\n\t\tchartContainer.zIndex = -1;\r\n\r\n\t\tthis._disposers.push(this.events.on(\"maxsizechanged\", () => {\r\n\t\t\tif (this.inited) {\r\n\t\t\t\tif (this._mapAnimation) {\r\n\t\t\t\t\tthis._mapAnimation.stop();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet allInited = true;\r\n\t\t\t\tthis.series.each((series) => {\r\n\t\t\t\t\tseries.updateTooltipBounds();\r\n\t\t\t\t\tif (!series.inited || series.dataInvalid) {\r\n\t\t\t\t\t\tallInited = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\tif (allInited) {\r\n\t\t\t\t\tthis.updateScaleRatio();\r\n\t\t\t\t}\r\n\t\t\t\tthis.zoomToGeoPoint(this._zoomGeoPointReal, this.zoomLevel, true, 0);\r\n\t\t\t}\r\n\r\n\t\t}, undefined, false));\r\n\r\n\t\tlet chartContainerBg = chartContainer.background;\r\n\t\tchartContainerBg.fillOpacity = 0;\r\n\t\tchartContainerBg.events.on(\"down\", (e) => { this.seriesContainer.dragStart(e.target.interactions.downPointers.getIndex(0)); }, this);\r\n\t\tchartContainerBg.events.on(\"up\", (e) => { this.seriesContainer.dragStop() }, this);\r\n\t\tchartContainerBg.events.on(\"doublehit\", this.handleDoubleHit, this);\r\n\t\tchartContainerBg.focusable = true;\r\n\r\n\t\tchartContainer.events.on(\"down\", this.handleMapDown, this, false);\r\n\r\n\t\tthis.addDisposer(seriesContainer.events.on(\"down\", () => {\r\n\t\t\t// Cancel any move inertia if there is one\r\n\t\t\tconst inertia = this.seriesContainer.interactions.inertias.getKey(\"move\");\r\n\t\t\tif (inertia) {\r\n\t\t\t\tinertia.done();\r\n\t\t\t}\r\n\t\t}))\r\n\r\n\t\t// Add description to background\r\n\t\tthis.background.fillOpacity = 0;\r\n\r\n\t\t// Add keyboard events for panning\r\n\t\tthis._disposers.push(getInteraction().body.events.on(\"keyup\", (ev) => {\r\n\t\t\tif (this.topParent.hasFocused) {\r\n\t\t\t\tconst key = keyboard.getEventKey(ev.event);\r\n\t\t\t\tif (!this._zoomControl || !this._zoomControl.thumb.isFocused) {\r\n\t\t\t\t\tswitch (key) {\r\n\t\t\t\t\t\tcase \"up\":\r\n\t\t\t\t\t\t\tthis.pan({ x: 0, y: 0.1 });\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"down\":\r\n\t\t\t\t\t\t\tthis.pan({ x: 0, y: -0.1 });\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"left\":\r\n\t\t\t\t\t\t\tthis.pan({ x: 0.1, y: 0 });\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"right\":\r\n\t\t\t\t\t\t\tthis.pan({ x: -0.1, y: 0 });\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, this));\r\n\r\n\t\tthis.mouseWheelBehavior = \"zoom\";\r\n\r\n\t\tconst interaction = getInteraction();\r\n\t\tthis._disposers.push(interaction.body.events.on(\"down\", this.handlePanDown, this));\r\n\t\tthis._disposers.push(interaction.body.events.on(\"up\", this.handlePanUp, this));\r\n\t\t//this._disposers.push(interaction.body.events.on(\"track\", this.handlePanMove, this));\r\n\r\n\t\tlet panSprite = this.seriesContainer.createChild(Circle);\r\n\t\tpanSprite.radius = 10;\r\n\t\tpanSprite.inert = true;\r\n\t\tpanSprite.isMeasured = false;\r\n\t\tpanSprite.events.on(\"transformed\", this.handlePanMove, this, false);\r\n\t\tpanSprite.interactionsEnabled = false;\r\n\t\tpanSprite.opacity = 0;\r\n\t\tpanSprite.x = 0;\r\n\t\tpanSprite.y = 0;\r\n\t\tthis.panSprite = panSprite;\r\n\t\tthis.panBehavior = \"move\";\r\n\t\t/*\r\n\t\t\t\tthis.panSprite.inertiaOptions.setKey(\"move\", {\r\n\t\t\t\t\t\"time\": 100,\r\n\t\t\t\t\t\"duration\": 1000,\r\n\t\t\t\t\t\"factor\": 3,\r\n\t\t\t\t\t\"easing\": $ease.sinOut\r\n\t\t\t\t});*/\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected handlePanDown(event: IInteractionEvents[\"down\"]): void {\r\n\t\tlet svgPoint = $utils.documentPointToSvg(event.pointer.point, this.htmlContainer);\r\n\t\tif (svgPoint.x > 0 && svgPoint.y > 0 && svgPoint.x < this.svgContainer.width && svgPoint.y < this.svgContainer.height) {\r\n\t\t\t// Get local point\r\n\t\t\tthis._downPointOrig = $utils.documentPointToSprite(event.pointer.point, this.seriesContainer);\r\n\r\n\t\t\tthis.panSprite.moveTo(this._downPointOrig);\r\n\t\t\tthis.panSprite.dragStart(event.pointer);\r\n\t\t\tthis._downDeltaLongitude = this.deltaLongitude;\r\n\t\t\tthis._downDeltaLatitude = this.deltaLatitude;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected handlePanUp(event: IInteractionEvents[\"down\"]): void {\r\n\t\tif (this._downPointOrig) {\r\n\t\t\tthis.panSprite.dragStop(event.pointer, true);\r\n\t\t}\r\n\t\tthis._downPointOrig = undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected handlePanMove(): void {\r\n\r\n\t\tif (!this.seriesContainer.isResized) {\r\n\r\n\t\t\tif (getInteraction().areTransformed([this.panSprite.interactions, this.seriesContainer.interactions])) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet d3Projection = this.projection.d3Projection;\r\n\r\n\t\t\tlet panBehavior = this.panBehavior;\r\n\r\n\t\t\tif (panBehavior != \"move\" && panBehavior != \"none\" && this._downPointOrig && d3Projection.rotate) {\r\n\r\n\t\t\t\tlet rotation = d3Projection.rotate();\r\n\r\n\t\t\t\tlet dln = rotation[0];\r\n\t\t\t\tlet dlt = rotation[1];\r\n\t\t\t\tlet dlg = rotation[2];\r\n\r\n\t\t\t\td3Projection.rotate([0, 0, 0]);\r\n\r\n\t\t\t\tlet downGeoLocal = this.projection.invert(this._downPointOrig);\r\n\r\n\t\t\t\tlet local: IPoint = { x: this.panSprite.pixelX, y: this.panSprite.pixelY };\r\n\t\t\t\tlet geoLocal: IGeoPoint;\r\n\t\t\t\tif (local) {\r\n\t\t\t\t\tgeoLocal = this.projection.invert(local);\r\n\t\t\t\t}\r\n\r\n\t\t\t\td3Projection.rotate([dln, dlt, dlg]);\r\n\r\n\t\t\t\tif (geoLocal) {\r\n\t\t\t\t\tif (panBehavior == \"rotateLat\" || panBehavior == \"rotateLongLat\") {\r\n\t\t\t\t\t\tthis.deltaLatitude = this._downDeltaLatitude + geoLocal.latitude - downGeoLocal.latitude;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (panBehavior == \"rotateLong\" || panBehavior == \"rotateLongLat\") {\r\n\t\t\t\t\t\tthis.deltaLongitude = this._downDeltaLongitude + geoLocal.longitude - downGeoLocal.longitude;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected handleAllInited() {\r\n\t\tlet inited = true;\r\n\t\tthis.seriesContainer.visible = true;\r\n\t\tthis.series.each((series) => {\r\n\t\t\tif (!series.inited || series.dataInvalid) {\r\n\t\t\t\tinited = false;\r\n\t\t\t}\r\n\t\t})\r\n\t\tif (inited) {\r\n\t\t\tthis.updateCenterGeoPoint();\r\n\t\t\tthis.updateScaleRatio();\r\n\t\t\tthis.goHome(0);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// TODO verify that this is correct\r\n\t\t\tconst disposer = registry.events.once(\"exitframe\", () => {\r\n\t\t\t\tthis.removeDispose(disposer);\r\n\t\t\t\tthis.handleAllInited();\r\n\t\t\t}, this, false);\r\n\r\n\t\t\tthis.addDisposer(disposer);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic updateZoomGeoPoint() {\r\n\t\tlet seriesPoint = $utils.svgPointToSprite({ x: this.innerWidth / 2 + this.pixelPaddingLeft, y: this.innerHeight / 2 + this.pixelPaddingTop }, this.series.getIndex(0));\r\n\t\tlet geoPoint = this.projection.invert(seriesPoint);\r\n\t\tthis._zoomGeoPointReal = geoPoint;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic updateCenterGeoPoint() {\r\n\t\tlet maxLeft: number;\r\n\t\tlet maxRight: number;\r\n\t\tlet maxTop: number;\r\n\t\tlet maxBottom: number;\r\n\r\n\r\n\t\tif (this.backgroundSeries) {\r\n\t\t\tlet features = this.backgroundSeries.getFeatures();\r\n\t\t\tif (features.length > 0) {\r\n\t\t\t\tlet bounds = this.projection.d3Path.bounds(features[0].geometry);\r\n\t\t\t\tmaxLeft = bounds[0][0];\r\n\t\t\t\tmaxTop = bounds[0][1];\r\n\t\t\t\tmaxRight = bounds[1][0];\r\n\t\t\t\tmaxBottom = bounds[1][1];\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.series.each((series) => {\r\n\t\t\t\tlet bbox = series.group.node.getBBox();\r\n\r\n\t\t\t\tif (maxLeft > bbox.x || !$type.isNumber(maxLeft)) {\r\n\t\t\t\t\tmaxLeft = bbox.x;\r\n\t\t\t\t}\r\n\t\t\t\tif (maxRight < bbox.x + bbox.width || !$type.isNumber(maxRight)) {\r\n\t\t\t\t\tmaxRight = bbox.x + bbox.width;\r\n\t\t\t\t}\r\n\t\t\t\tif (maxTop > bbox.y || !$type.isNumber(maxTop)) {\r\n\t\t\t\t\tmaxTop = bbox.y;\r\n\t\t\t\t}\r\n\t\t\t\tif (maxBottom < bbox.y + bbox.height || !$type.isNumber(maxBottom)) {\r\n\t\t\t\t\tmaxBottom = bbox.y + bbox.height;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tthis.seriesMaxLeft = maxLeft;\r\n\t\tthis.seriesMaxRight = maxRight;\r\n\t\tthis.seriesMaxTop = maxTop;\r\n\t\tthis.seriesMaxBottom = maxBottom;\r\n\r\n\t\tthis.seriesWidth = maxRight - maxLeft;\r\n\t\tthis.seriesHeight = maxBottom - maxTop;\r\n\r\n\t\tif (this.seriesWidth > 0 && this.seriesHeight > 0) {\r\n\t\t\tthis.chartContainer.visible = true;\r\n\t\t\tthis._centerGeoPoint = this.projection.invert({ x: maxLeft + (maxRight - maxLeft) / 2, y: maxTop + (maxBottom - maxTop) / 2 });\r\n\r\n\t\t\tif (!this._zoomGeoPointReal || !$type.isNumber(this._zoomGeoPointReal.latitude)) {\r\n\t\t\t\tthis._zoomGeoPointReal = this._centerGeoPoint;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.chartContainer.visible = false;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Prevents map to be dragged out of the container area\r\n\t * @ignore\r\n\t */\r\n\tprotected handleDrag() {\r\n\r\n\t\tlet d = this.zoomLevel * this.scaleRatio;\r\n\r\n\t\tlet ww = this.seriesWidth * d;\r\n\t\tlet hh = this.seriesHeight * d;\r\n\r\n\t\tlet seriesContainer = this.seriesContainer;\r\n\t\tlet maxLeft = this.seriesMaxLeft * d;\r\n\t\tlet maxRight = this.seriesMaxRight * d;\r\n\t\tlet maxTop = this.seriesMaxTop * d;\r\n\t\tlet maxBottom = this.seriesMaxBottom * d;\r\n\r\n\t\tlet x = seriesContainer.pixelX;\r\n\t\tlet y = seriesContainer.pixelY;\r\n\r\n\t\tlet maxPanOut = this.maxPanOut;\r\n\r\n\t\tlet minX = Math.min(this.maxWidth * (1 - maxPanOut) - ww - maxLeft, -maxLeft);\r\n\t\tif (x < minX) {\r\n\t\t\tx = minX;\r\n\t\t}\r\n\r\n\t\tlet maxX = Math.max(this.maxWidth * maxPanOut - maxLeft, this.maxWidth - maxRight);\r\n\t\tif (x > maxX) {\r\n\t\t\tx = maxX;\r\n\t\t}\r\n\r\n\t\tlet minY = Math.min(this.maxHeight * (1 - maxPanOut) - hh - maxTop, -maxTop)\r\n\t\tif (y < minY) {\r\n\t\t\ty = minY;\r\n\t\t}\r\n\r\n\t\tlet maxY = Math.max(this.maxHeight * maxPanOut - maxTop, this.maxHeight - maxBottom);\r\n\t\tif (y > maxY) {\r\n\t\t\ty = maxY;\r\n\t\t}\r\n\r\n\t\tseriesContainer.moveTo({ x: x, y: y }, undefined, undefined, true);\r\n\r\n\t\tthis._zoomGeoPointReal = this.zoomGeoPoint;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets defaults that instantiate some objects that rely on parent, so they\r\n\t * cannot be set in constructor.\r\n\t */\r\n\tprotected applyInternalDefaults(): void {\r\n\r\n\t\tsuper.applyInternalDefaults();\r\n\r\n\t\t// Add a default screen reader title for accessibility\r\n\t\t// This will be overridden in screen reader if there are any `titles` set\r\n\t\tif (!$type.hasValue(this.readerTitle)) {\r\n\t\t\tthis.readerTitle = this.language.translate(\"Map\");\r\n\t\t}\r\n\r\n\t\tif (!$type.hasValue(this.background.readerTitle)) {\r\n\t\t\tthis.background.role = \"application\";\r\n\t\t\tthis.background.readerTitle = this.language.translate(\"Use plus and minus keys on your keyboard to zoom in and out\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Handles event when a pointer presses down on the map, e.g. user presses\r\n\t * down mouse or touches the map on a screen.\r\n\t *\r\n\t * Stops all animations currently going on.\r\n\t */\r\n\tprotected handleMapDown(): void {\r\n\t\tif (this._mapAnimation) {\r\n\t\t\tthis._mapAnimation.stop();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the event when user doubleclicks or dooubletaps the map: zooms\r\n\t * in on the reference point.\r\n\t *\r\n\t * @param event Original event\r\n\t */\r\n\tprotected handleDoubleHit(event: AMEvent[\"doublehit\"]) {\r\n\t\tlet svgPoint: IPoint = $utils.documentPointToSvg(event.point, this.htmlContainer, this.svgContainer.cssScale);\r\n\t\tlet geoPoint: IGeoPoint = this.svgPointToGeo(svgPoint);\r\n\t\tthis.zoomIn(geoPoint);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles mouse wheel event, e.g. user rotates mouse wheel while over the\r\n\t * map: zooms in or out depending on the direction of the wheel turn.\r\n\t *\r\n\t * @param event Original event\r\n\t */\r\n\tprotected handleWheel(event: AMEvent[\"wheel\"]) {\r\n\r\n\t\t// Cancel any move inertia if there is one\r\n\t\tconst inertia = this.seriesContainer.interactions.inertias.getKey(\"move\");\r\n\t\tif (inertia) {\r\n\t\t\tinertia.done();\r\n\t\t}\r\n\r\n\t\tlet svgPoint: IPoint = $utils.documentPointToSvg(event.point, this.htmlContainer, this.svgContainer.cssScale);\r\n\t\tlet geoPoint: IGeoPoint = this.svgPointToGeo(svgPoint);\r\n\r\n\t\tif (event.shift.y < 0) {\r\n\t\t\tthis.zoomIn(geoPoint, undefined, this.interactions.mouseOptions.sensitivity);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.zoomOut(geoPoint, undefined, this.interactions.mouseOptions.sensitivity);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Specifies what should chart do if when mouse wheel is rotated.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/reference/sprite/#mouseOptions_property} More information about `mouseOptions`\r\n\t * @param mouse wheel behavior\r\n\t * @default zoomX\r\n\t */\r\n\tpublic set mouseWheelBehavior(value: \"zoom\" | \"none\") {\r\n\r\n\t\tif (this.setPropertyValue(\"mouseWheelBehavior\", value)) {\r\n\t\t\tif (value != \"none\") {\r\n\t\t\t\tthis._mouseWheelDisposer = this.chartContainer.events.on(\"wheel\", this.handleWheel, this, false);\r\n\t\t\t\tthis._disposers.push(this._mouseWheelDisposer);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (this._mouseWheelDisposer) {\r\n\t\t\t\t\tthis._mouseWheelDisposer.dispose();\r\n\t\t\t\t}\r\n\t\t\t\tthis.chartContainer.wheelable = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return mouse wheel behavior\r\n\t */\r\n\tpublic get mouseWheelBehavior(): \"zoom\" | \"none\" {\r\n\t\treturn this.getPropertyValue(\"mouseWheelBehavior\");\r\n\t}\r\n\r\n\t/**\r\n\t * What \"dragging\" map does.\r\n\t *\r\n\t * Available values:\r\n\t * * `\"move\"` (default): changes position of the map.\r\n\t * * `\"rotateLat\"`: changes `deltaLatitude` (rotates the globe vertically).\r\n\t * * `\"rotateLong\"`: changes `deltaLongitude` (rotates the globe horizontally).\r\n\t * * `\"rotateLongLat\"`: changes both `deltaLongitude` and `deltaLatitude` (rotates the globe in any direction).\r\n\t *\r\n\t * @default \"move\"\r\n\t * @since 4.3.0\r\n\t * @param value Behavior\r\n\t */\r\n\tpublic set panBehavior(value: \"none\" | \"move\" | \"rotateLat\" | \"rotateLong\" | \"rotateLongLat\") {\r\n\t\tif (this.setPropertyValue(\"panBehavior\", value)) {\r\n\t\t\tlet seriesContainer = this.seriesContainer;\r\n\t\t\tthis.panSprite.draggable = false;\r\n\t\t\tseriesContainer.draggable = false;\r\n\r\n\t\t\tswitch (value) {\r\n\t\t\t\tcase \"move\":\r\n\t\t\t\t\tseriesContainer.draggable = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthis.panSprite.draggable = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @returns If the map should be centered when zooming out.\r\n\t */\r\n\tpublic get centerMapOnZoomOut(): boolean {\r\n\t\treturn this.getPropertyValue(\"centerMapOnZoomOut\");\r\n\t}\r\n\r\n\t/**\r\n\t * Specifies if the map should be centered when zooming out\r\n\t * @default true\r\n\t * @since 4.7.12\r\n\t */\r\n\tpublic set centerMapOnZoomOut(value: boolean) {\r\n\t\tthis.setPropertyValue(\"centerMapOnZoomOut\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @returns Behavior\r\n\t */\r\n\tpublic get panBehavior(): \"none\" | \"move\" | \"rotateLat\" | \"rotateLong\" | \"rotateLongLat\" {\r\n\t\treturn this.getPropertyValue(\"panBehavior\");\r\n\t}\r\n\r\n\t/**\r\n\t * Projection to use for the map.\r\n\t *\r\n\t * Available projections:\r\n\t * * Albers\r\n\t * * AlbersUSA\r\n\t * * AzimuthalEqualArea\r\n\t * * Eckert6\r\n\t * * EqualEarth\r\n\t * * Mercator\r\n\t * * Miller\r\n\t * * NaturalEarth\r\n\t * * Orthographic\r\n\t * * Stereographic\r\n\t *\r\n\t * ```TypeScript\r\n\t * map.projection = new am4maps.projections.Mercator();\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * map.projection = new am4maps.projections.Mercator();\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"projection\": \"Mercator\"\r\n\t * // ...\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/chart-types/map/#Setting_projection} More about projections\r\n\t * @param projection Projection\r\n\t */\r\n\tpublic set projection(projection: Projection) {\r\n\t\tif (this.setPropertyValue(\"projection\", projection)) {\r\n\t\t\tthis.invalidateProjection();\r\n\r\n\t\t\tprojection.chart = this;\r\n\r\n\t\t\tif (this._backgroundSeries) {\r\n\t\t\t\tthis._backgroundSeries.invalidate();\r\n\t\t\t}\r\n\r\n\t\t\tif (this.inited) {\r\n\t\t\t\tthis.updateExtremes();\r\n\t\t\t}\r\n\r\n\t\t\tthis.series.each((series) => {\r\n\t\t\t\tseries.events.once(\"validated\", () => {\r\n\t\t\t\t\tthis.updateCenterGeoPoint();\r\n\t\t\t\t\tthis.updateScaleRatio();\r\n\t\t\t\t\tthis.goHome(0);\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Projection\r\n\t */\r\n\tpublic get projection(): Projection {\r\n\t\treturn this.getPropertyValue(\"projection\");\r\n\t}\r\n\r\n\t/**\r\n\t * Validates (processes) data items.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateDataItems() {\r\n\t\tsuper.validateDataItems();\r\n\t\tthis.updateExtremes();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Calculates the longitudes and latitudes of the most distant points from\r\n\t * the center in all four directions: West, East, North, and South.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateExtremes(): void {\r\n\r\n\t\tlet east: number;\r\n\t\tlet north: number;\r\n\t\tlet west: number;\r\n\t\tlet south: number;\r\n\r\n\t\tthis.series.each((series) => {\r\n\t\t\tif (series.ignoreBounds || (series instanceof GraticuleSeries && series.fitExtent)) {\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (series.north > north || !$type.isNumber(north)) {\r\n\t\t\t\t\tnorth = series.north;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (series.south < south || !$type.isNumber(south)) {\r\n\t\t\t\t\tsouth = series.south;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (series.west < west || !$type.isNumber(west)) {\r\n\t\t\t\t\twest = series.west;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (series.east > east || !$type.isNumber(east)) {\r\n\t\t\t\t\teast = series.east;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tlet features: any[] = [];\r\n\t\tlet foundGraticule = false;\r\n\t\t// if we gave graticule, get features of these series only for faster fitSize\r\n\t\tthis.series.each((series) => {\r\n\t\t\tif (series instanceof GraticuleSeries && !series.fitExtent) {\r\n\t\t\t\tfeatures = series.getFeatures();\r\n\t\t\t\tfoundGraticule = true;\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tif (!foundGraticule) {\r\n\t\t\tthis.series.each((series) => {\r\n\t\t\t\tif (series.ignoreBounds || (series instanceof GraticuleSeries && series.fitExtent)) {\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tfeatures = features.concat(series.getFeatures());\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tlet w = $math.max(50, this.innerWidth);\r\n\t\tlet h = $math.max(50, this.innerHeight);\r\n\r\n\t\tlet d3Projection = this.projection.d3Projection;\r\n\r\n\t\tif (features.length > 0 && d3Projection && (this.east != east || this.west != west || this.north != north || this.south != south)) {\r\n\t\t\tthis.east = east;\r\n\t\t\tthis.west = west;\r\n\t\t\tthis.north = north;\r\n\t\t\tthis.south = south;\r\n\t\t\tif (d3Projection.rotate) {\r\n\t\t\t\tlet rotation = d3Projection.rotate();\r\n\t\t\t\tlet deltaLong = rotation[0];\r\n\t\t\t\tlet deltaLat = rotation[1];\r\n\t\t\t\tlet deltaGamma = rotation[2];\r\n\r\n\t\t\t\tthis.deltaLongitude = deltaLong;\r\n\t\t\t\tthis.deltaLatitude = deltaLat;\r\n\t\t\t\tthis.deltaGamma = deltaGamma;\r\n\t\t\t}\r\n\r\n\t\t\tlet geoJSON = { \"type\": \"FeatureCollection\", features: features };\r\n\r\n\t\t\tlet initialScale = d3Projection.scale();\r\n\r\n\t\t\td3Projection.fitSize([w, h], geoJSON);\r\n\r\n\t\t\tif (d3Projection.scale() != initialScale) {\r\n\t\t\t\tthis.invalidateDataUsers();\r\n\t\t\t}\r\n\r\n\t\t\tthis.series.each((series) => {\r\n\t\t\t\tif (series instanceof GraticuleSeries) {\r\n\t\t\t\t\tseries.invalidateData();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tif (this._backgroundSeries) {\r\n\t\t\t\tlet polygon = this._backgroundSeries.mapPolygons.getIndex(0);\r\n\t\t\t\tif (polygon) {\r\n\t\t\t\t\tpolygon.multiPolygon = $mapUtils.getBackground(this.north, this.east, this.south, this.west);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis._fitWidth = w;\r\n\t\t\tthis._fitHeight = h;\r\n\t\t}\r\n\r\n\t\tif (!this._zoomGeoPointReal || !$type.isNumber(this._zoomGeoPointReal.latitude)) {\r\n\t\t\tthis.goHome(0);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * (Re)calculates a ratio which should be used to scale the actual map so\r\n\t * that it fits perfectly into available space. Helps to avoid redrawing of all the map if container size changes\r\n\t * @ignore\r\n\t */\r\n\tprotected updateScaleRatio(): void {\r\n\t\tlet scaleRatio: number;\r\n\r\n\t\tthis.updateCenterGeoPoint();\r\n\r\n\t\tlet hScale: number = this.innerWidth / this.seriesWidth;\r\n\t\tlet vScale: number = this.innerHeight / this.seriesHeight;\r\n\r\n\t\tscaleRatio = $math.min(hScale, vScale);\r\n\r\n\t\tif ($type.isNaN(scaleRatio) || scaleRatio == Infinity) {\r\n\t\t\tscaleRatio = 1;\r\n\t\t}\r\n\r\n\t\tif (scaleRatio != this.scaleRatio) {\r\n\t\t\tthis.scaleRatio = scaleRatio;\r\n\r\n\t\t\t$iter.each(this.series.iterator(), (series) => {\r\n\t\t\t\tseries.scale = scaleRatio;\r\n\t\t\t\tseries.updateTooltipBounds();\r\n\t\t\t});\r\n\r\n\t\t\tthis.backgroundSeries.scale = scaleRatio;\r\n\r\n\t\t\tthis.dispatch(\"scaleratiochanged\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a point within map container to geographical (lat/long)\r\n\t * coordinates.\r\n\t *\r\n\t * @param point Source point\r\n\t * @return Geo-point\r\n\t */\r\n\tpublic svgPointToGeo(point: IPoint): IGeoPoint {\r\n\t\tlet series: MapSeries = this.series.getIndex(0);\r\n\t\tif (series) {\r\n\t\t\tlet seriesPoint: IPoint = $utils.svgPointToSprite(point, series);\r\n\t\t\treturn this.seriesPointToGeo(seriesPoint);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Converts geographical (lat/long) coordinates to an X/Y point within map's\r\n\t * container.\r\n\t *\r\n\t * @param point Source geo-point\r\n\t * @return Point\r\n\t */\r\n\tpublic geoPointToSVG(point: IGeoPoint): IPoint {\r\n\t\tlet series: MapSeries = this.series.getIndex(0);\r\n\t\tif (series) {\r\n\t\t\tlet seriesPoint: IPoint = this.geoPointToSeries(point);\r\n\t\t\treturn $utils.spritePointToSvg(seriesPoint, series);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a point (X/Y) within actual objects of the map to geographical\r\n\t * (lat/long) coordinates.\r\n\t *\r\n\t * @param point Source point\r\n\t * @return Geo-point\r\n\t */\r\n\tpublic seriesPointToGeo(point: IPoint): IGeoPoint {\r\n\t\treturn this.projection.invert(point);\r\n\t}\r\n\r\n\t/**\r\n\t * Converts geographical (lat/long) coordinates to an X/Y point within\r\n\t * actual elements/objects of the maps.\r\n\t *\r\n\t * @param point Source geo-point\r\n\t * @return Point\r\n\t */\r\n\tpublic geoPointToSeries(point: IGeoPoint): IPoint {\r\n\t\treturn this.projection.convert(point);\r\n\t}\r\n\r\n\t/**\r\n\t * Map data in GeoJSON format.\r\n\t *\r\n\t * The Map supports the following GeoJSON objects: `Point`, `LineString`,\r\n\t * `Polygon`, `MultiPoint`, `MultiLineString`, and `MultiPolygon`.\r\n\t *\r\n\t * @see {@link http://geojson.org/} Official GeoJSON format specification\r\n\t * @param geoJSON GeoJSON data\r\n\t */\r\n\tpublic set geodata(geodata: Object) {\r\n\t\tif (geodata != this._geodata) {\r\n\t\t\tthis._geodata = geodata;\r\n\r\n\t\t\tif (this.reverseGeodata) {\r\n\t\t\t\tthis.processReverseGeodata(this._geodata);\r\n\t\t\t}\r\n\t\t\tthis.invalidateData();\r\n\r\n\t\t\tthis.dataUsers.each((dataUser) => {\r\n\t\t\t\tfor (let i = dataUser.data.length - 1; i >= 0; i--) {\r\n\t\t\t\t\tif (dataUser.data[i].madeFromGeoData == true) {\r\n\t\t\t\t\t\tdataUser.data.splice(i, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tdataUser.disposeData();\r\n\t\t\t\tdataUser.invalidateData();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return GeoJSON data\r\n\t */\r\n\tpublic get geodata(): Object {\r\n\t\treturn this._geodata;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether GeoJSON geodata supplied to the chart uses\r\n\t * ESRI (clockwise) or non-ESRI (counter-clockwise) order of the polygon\r\n\t * coordinates.\r\n\t *\r\n\t * `MapChart` supports only ESRI standard, so if your custom maps appears\r\n\t * garbled, try setting `reverseGeodata = true`.\r\n\t * \r\n\t * @default false\r\n\t * @since 4.10.11\r\n\t * @param value Reverse the order of geodata coordinates?\r\n\t */\r\n\tpublic set reverseGeodata(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"reverseGeodata\", value) && this._geodata) {\r\n\t\t\tthis.processReverseGeodata(this._geodata);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @returns Reverse the order of geodata coordinates?\r\n\t */\r\n\tpublic get reverseGeodata(): boolean {\r\n\t\treturn this.getPropertyValue(\"reverseGeodata\");\r\n\t}\r\n\r\n\t/**\r\n\t * Reverses the order of polygons on a GeoJSON data.\r\n\t *\r\n\t * @since 4.10.11\r\n\t * @param geodata Source geodata\r\n\t */\r\n\tpublic processReverseGeodata(geodata: any): void {\r\n\t\tfor (let i = 0; i < geodata.features.length; i++) {\r\n\t\t\tlet feature = geodata.features[i];\r\n\t\t\tfor (let x = 0; x < feature.geometry.coordinates.length; x++) {\r\n\t\t\t\tif (feature.geometry.type == \"MultiPolygon\") {\r\n\t\t\t\t\tfor (let y = 0; y < feature.geometry.coordinates[x].length; y++) {\r\n\t\t\t\t\t\tfeature.geometry.coordinates[x][y].reverse()\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tfeature.geometry.coordinates[x].reverse()\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms the map to particular zoom level and centers on a latitude/longitude\r\n\t * coordinate.\r\n\t *\r\n\t * @param point Center coordinate\r\n\t * @param zoomLevel Zoom level\r\n\t * @param center Center on the given coordinate?\r\n\t * @param duration Duration for zoom animation (ms)\r\n\t * @return Zoom animation\r\n\t */\r\n\tpublic zoomToGeoPoint(point: IGeoPoint, zoomLevel: number, center?: boolean, duration?: number, mapObject?: boolean): Animation {\r\n\r\n\t\tif (!point) {\r\n\t\t\tlet hasData = false;\r\n\t\t\tthis.series.each((series) => {\r\n\t\t\t\tif (series.dataItems.length > 0) {\r\n\t\t\t\t\thasData = true;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\tif (hasData) {\r\n\t\t\t\tpoint = this.zoomGeoPoint;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!point || !$type.isNumber(point.longitude) || !$type.isNumber(point.latitude)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._zoomGeoPointReal = point;\r\n\r\n\t\tzoomLevel = $math.fitToRange(zoomLevel, this.minZoomLevel, this.maxZoomLevel);\r\n\r\n\t\tlet seriesPoint: IPoint = this.projection.convert(point);\r\n\t\tif (seriesPoint) {\r\n\r\n\t\t\tlet svgPoint: IPoint = this.geoPointToSVG(point);\r\n\r\n\t\t\tlet mapPoint = $utils.svgPointToSprite(svgPoint, this);\r\n\r\n\t\t\tif (center) {\r\n\t\t\t\tmapPoint = {\r\n\t\t\t\t\tx: this.innerWidth / 2,\r\n\t\t\t\t\ty: this.innerHeight / 2\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (!$type.isNumber(duration)) {\r\n\t\t\t\tduration = this.zoomDuration;\r\n\t\t\t}\r\n\r\n\t\t\tlet x = mapPoint.x - seriesPoint.x * zoomLevel * this.scaleRatio;\r\n\t\t\tlet y = mapPoint.y - seriesPoint.y * zoomLevel * this.scaleRatio;\r\n\r\n\r\n\t\t\tif (!mapObject && zoomLevel < this.zoomLevel && this.centerMapOnZoomOut && zoomLevel < 1.5) {\r\n\t\t\t\tx = this.innerWidth / 2 - (this.seriesMaxLeft + (this.seriesMaxRight - this.seriesMaxLeft) / 2) * zoomLevel * this.scaleRatio;\r\n\t\t\t\ty = this.innerHeight / 2 - (this.seriesMaxTop + (this.seriesMaxBottom - this.seriesMaxTop) / 2) * zoomLevel * this.scaleRatio;\r\n\t\t\t}\r\n\r\n\t\t\tthis._mapAnimation = this.seriesContainer.animate(\r\n\t\t\t\t[{\r\n\t\t\t\t\tproperty: \"scale\",\r\n\t\t\t\t\tto: zoomLevel\r\n\t\t\t\t}, {\r\n\t\t\t\t\tproperty: \"x\", from: this.seriesContainer.pixelX,\r\n\t\t\t\t\tto: x\r\n\t\t\t\t}, {\r\n\t\t\t\t\tproperty: \"y\", from: this.seriesContainer.pixelY,\r\n\t\t\t\t\tto: y\r\n\t\t\t\t}], duration, this.zoomEasing);\r\n\r\n\t\t\tthis._disposers.push(this._mapAnimation.events.on(\"animationended\", () => {\r\n\t\t\t\tthis._zoomGeoPointReal = this.zoomGeoPoint;\r\n\t\t\t}))\r\n\r\n\r\n\t\t\tthis.seriesContainer.validatePosition();\r\n\r\n\t\t\treturn this._mapAnimation;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms the map to a particular map object.\r\n\t *\r\n\t * @param mapObject Target map object\r\n\t * @param zoomLevel Zoom level\r\n\t * @param center Center on the given coordinate?\r\n\t * @param duration Duration for zoom animation (ms)\r\n\t * @return Zoom animation\r\n\t */\r\n\tpublic zoomToMapObject(mapObject: MapObject, zoomLevel?: number, center?: boolean, duration?: number): Animation {\r\n\t\tif (center == undefined) {\r\n\t\t\tcenter = true;\r\n\t\t}\r\n\r\n\t\tconst inertia = this.seriesContainer.interactions.inertias.getKey(\"move\");\r\n\t\tif (inertia) {\r\n\t\t\tinertia.done();\r\n\t\t}\r\n\r\n\t\tif (mapObject instanceof MapImage) {\r\n\t\t\tif ($type.isNaN(zoomLevel)) {\r\n\t\t\t\tzoomLevel = 5;\r\n\t\t\t}\r\n\t\t\treturn this.zoomToGeoPoint({ latitude: mapObject.latitude, longitude: mapObject.longitude }, zoomLevel, center, duration, true);\r\n\t\t}\r\n\r\n\t\tlet dataItem = mapObject.dataItem;\r\n\r\n\t\tif (dataItem && $type.isNumber(dataItem.zoomLevel)) {\r\n\t\t\tzoomLevel = dataItem.zoomLevel;\r\n\t\t}\r\n\r\n\r\n\t\tif (mapObject instanceof MapPolygon) {\r\n\t\t\tlet dataItem = mapObject.dataItem;\r\n\t\t\tlet bbox = mapObject.polygon.bbox;\r\n\t\t\tif (bbox.width == 0 || bbox.height == 0) {\r\n\t\t\t\tbbox = mapObject.polygon.group.getBBox();\r\n\t\t\t}\r\n\r\n\t\t\tif (!$type.isNumber(zoomLevel)) {\r\n\t\t\t\tzoomLevel = Math.min(this.seriesWidth / bbox.width, this.seriesHeight / bbox.height);\r\n\t\t\t}\r\n\r\n\t\t\tlet geoPoint: IGeoPoint;\r\n\r\n\t\t\tif (dataItem && $type.hasValue(dataItem.zoomGeoPoint)) {\r\n\t\t\t\tgeoPoint = dataItem.zoomGeoPoint;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// this is more accurate\r\n\t\t\t\tlet polygonPoint = { x: bbox.x + bbox.width / 2, y: bbox.y + bbox.height / 2 };\r\n\t\t\t\tlet seriesPoint = $utils.spritePointToSprite(polygonPoint, mapObject.polygon, mapObject.series);\r\n\r\n\t\t\t\tgeoPoint = this.seriesPointToGeo(seriesPoint);\r\n\t\t\t}\r\n\r\n\t\t\treturn this.zoomToGeoPoint(geoPoint, zoomLevel, true, duration, true);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms the map to a particular viewport.\r\n\t *\r\n\t * The `north`, `east`, `south`, and `west` define boundaries of the\r\n\t * imaginary viewort we want to zoom the map to.\r\n\t *\r\n\t * `level` is not actual zoom level. The map will determine the zoom level\r\n\t * required to accommodated such zoom, and will adjust it by `level` if set.\r\n\t *\r\n\t * @param north Latitude of the North-most boundary\r\n\t * @param east Longitude of the East-most boundary\r\n\t * @param south Latitude of the South-most boundary\r\n\t * @param west Longitude of the West-most boundary\r\n\t * @param level Adjust zoom level\r\n\t * @param center Center on the given coordinate?\r\n\t * @param duration Duration for zoom animation (ms)\r\n\t * @return Zoom animation\r\n\t */\r\n\tpublic zoomToRectangle(north: number, east: number, south: number, west: number, level?: number, center?: boolean, duration?: number): Animation {\r\n\t\tif ($type.isNaN(level)) {\r\n\t\t\tlevel = 1;\r\n\t\t}\r\n\r\n\t\tlet w = $math.min(west, east);\r\n\t\tlet e = $math.max(west, east);\r\n\r\n\t\twest = w;\r\n\t\teast = e;\r\n\r\n\t\tlet splitLongitude = $math.normalizeAngle(180 - this.deltaLongitude);\r\n\t\tif (splitLongitude > 180) {\r\n\t\t\tsplitLongitude -= 360;\r\n\t\t}\r\n\r\n\t\tlet newLong = west + (east - west) / 2;\r\n\t\tlet d = (west - east);\r\n\r\n\t\tif (west < splitLongitude && east > splitLongitude) {\r\n\t\t\tnewLong += 180;\r\n\t\t\td = $math.normalizeAngle(east - west - 360);\r\n\t\t}\r\n\r\n\t\tlet zoomLevel = level * Math.min((this.south - this.north) / (south - north), Math.abs((this.west - this.east) / d));\r\n\r\n\t\treturn this.zoomToGeoPoint({ latitude: north + (south - north) / 2, longitude: newLong }, zoomLevel, center, duration, true);\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms in the map, optionally centering on particular latitude/longitude\r\n\t * point.\r\n\t *\r\n\t * @param geoPoint Optional center point\r\n\t * @param duration Duration for zoom animation (ms)\r\n\t * @return Zoom animation\r\n\t */\r\n\tpublic zoomIn(geoPoint?: IGeoPoint, duration?: number, sensitivity: number = 1): Animation {\r\n\t\tlet step = 1 + (this.zoomStep - 1) * sensitivity;\r\n\t\tif (step < 1) {\r\n\t\t\tstep = 1;\r\n\t\t}\r\n\t\treturn this.zoomToGeoPoint(geoPoint, this.zoomLevel * step, false, duration);\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms out the map, optionally centering on particular latitude/longitude\r\n\t * point.\r\n\t *\r\n\t * @param geoPoint Optional center point\r\n\t * @param duration Duration for zoom animation (ms)\r\n\t * @return Zoom animation\r\n\t */\r\n\tpublic zoomOut(geoPoint?: IGeoPoint, duration?: number, sensitivity: number = 1): Animation {\r\n\t\tlet step = 1 + (this.zoomStep - 1) * sensitivity;\r\n\t\tif (step < 1) {\r\n\t\t\tstep = 1;\r\n\t\t}\r\n\t\treturn this.zoomToGeoPoint(geoPoint, this.zoomLevel / step, false, duration);\r\n\t}\r\n\r\n\t/**\r\n\t * Pans the maps using relative coordinates. E.g.:\r\n\t *\r\n\t * ```JSON\r\n\t * {\r\n\t * x: 0.1,\r\n\t * y: -0.1\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * The above will move the map by 10% to the right, and by 10% upwards.\r\n\t *\r\n\t * @param shift Vertical and horizontal shift\r\n\t * @param duration Pan animation duration (ms)\r\n\t */\r\n\tpublic pan(shift: IPoint, duration?: number): void {\r\n\t\tlet point = this.geoPointToSVG(this.zoomGeoPoint);\r\n\t\tpoint.x += this.pixelWidth * shift.x;\r\n\t\tpoint.y += this.pixelHeight * shift.y;\r\n\t\tthis.zoomToGeoPoint(this.svgPointToGeo(point), this.zoomLevel, true, duration, true);\r\n\t}\r\n\r\n\t/**\r\n\t * Current lat/long coordinates for the center of the viewport. (default\r\n\t * zoom reference point)\r\n\t *\r\n\t * @readonly\r\n\t * @return Coordinates\r\n\t */\r\n\tpublic get zoomGeoPoint(): IGeoPoint {\r\n\t\tconst point = $utils.spritePointToSvg({ x: this.pixelWidth / 2, y: this.pixelHeight / 2 }, this);\r\n\t\treturn this.svgPointToGeo(point);\r\n\t}\r\n\r\n\t/**\r\n\t * Current zoom level.\r\n\t *\r\n\t * @readonly\r\n\t * @return Zoom level\r\n\t */\r\n\tpublic set zoomLevel(value: number) {\r\n\t\tthis.seriesContainer.scale = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Zoom level\r\n\t */\r\n\tpublic get zoomLevel(): number {\r\n\t\treturn this.seriesContainer.scale;\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches events after some map transformation, like pan or zoom.\r\n\t *\r\n\t * @ignore\r\n\t */\r\n\tprotected handleMapTransform(): void {\r\n\t\tif (this.zoomLevel != this._prevZoomLevel) {\r\n\t\t\tthis.dispatch(\"zoomlevelchanged\");\r\n\t\t\tthis._prevZoomLevel = this.zoomLevel;\r\n\t\t\tthis.svgContainer.readerAlert(this.language.translate(\"Zoom level changed to %1\", this.language.locale, $type.castString(this.zoomLevel)));\r\n\t\t}\r\n\r\n\t\tif (this.zoomGeoPoint && (this._prevZoomGeoPoint.latitude != this.zoomGeoPoint.latitude || this._prevZoomGeoPoint.longitude != this.zoomGeoPoint.longitude)) {\r\n\t\t\tthis.dispatch(\"mappositionchanged\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A [[SmallMap]] to be used on the map.\r\n\t *\r\n\t * Please note, that accessing this property will NOT create a small map\r\n\t * if it has not yet been created. (except in JSON)\r\n\t *\r\n\t * ```TypeScript\r\n\t * // Create a small map\r\n\t * map.smallMap = new am4maps.SmallMap();\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * // Create a small map\r\n\t * map.smallMap = new am4maps.SmallMap();\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"smallMap\": {}\r\n\t * // ...\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @param smallMap Small map\r\n\t */\r\n\tpublic set smallMap(smallMap: SmallMap) {\r\n\t\tif (this._smallMap) {\r\n\t\t\tthis.removeDispose(this._smallMap);\r\n\t\t}\r\n\t\tthis._smallMap = smallMap;\r\n\t\tthis._smallMap.chart = this;\r\n\t\tsmallMap.parent = this.chartContainer;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Small map\r\n\t */\r\n\tpublic get smallMap(): SmallMap {\r\n\t\tif (!this._smallMap) {\r\n\t\t\tlet smallMap: SmallMap = new SmallMap();\r\n\t\t\tthis.smallMap = smallMap;\r\n\t\t}\r\n\t\treturn this._smallMap;\r\n\t}\r\n\r\n\t/**\r\n\t * A [[ZoomControl]] to be used on the map.\r\n\t *\r\n\t * Please note, that accessing this property will NOT create a zoom control\r\n\t * if it has not yet been created. (except in JSON)\r\n\t *\r\n\t * ```TypeScript\r\n\t * // Create a zoom control\r\n\t * map.zoomControl = new am4maps.ZoomControl();\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * // Create a zoom control\r\n\t * map.zoomControl = new am4maps.ZoomControl();\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"zoomControl\": {}\r\n\t * // ...\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @param zoomControl Zoom control\r\n\t */\r\n\tpublic set zoomControl(zoomControl: ZoomControl) {\r\n\t\tif (this._zoomControl) {\r\n\t\t\tthis.removeDispose(this._zoomControl);\r\n\t\t}\r\n\t\tthis._zoomControl = zoomControl;\r\n\t\tzoomControl.chart = this;\r\n\t\tzoomControl.parent = this.chartContainer;\r\n\t\tzoomControl.plusButton.exportable = false;\r\n\t\tzoomControl.minusButton.exportable = false;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Zoom control\r\n\t */\r\n\tpublic get zoomControl(): ZoomControl {\r\n\t\treturn this._zoomControl;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a map series of appropriate type.\r\n\t *\r\n\t * @return Map series\r\n\t */\r\n\tprotected createSeries(): this[\"_seriesType\"] {\r\n\t\treturn new MapSeries();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Degrees to rotate the map around vertical axis (Y).\r\n\t *\r\n\t * E.g. if set to -160, the longitude 20 will become a new center, creating\r\n\t * a Pacific-centered map.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/chart-types/map/#Map_rotation} For more info on map rotation.\r\n\t * @param value Rotation\r\n\t */\r\n\tpublic set deltaLongitude(value: number) {\r\n\t\tvalue = $math.round(value, 3);\r\n\t\tif (this.setPropertyValue(\"deltaLongitude\", $geo.wrapAngleTo180(value))) {\r\n\t\t\tthis.rotateMap();\r\n\t\t\tthis.updateZoomGeoPoint();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Rotation\r\n\t */\r\n\tpublic get deltaLongitude(): number {\r\n\t\treturn this.getPropertyValue(\"deltaLongitude\");\r\n\t}\r\n\r\n\t/**\r\n\t * Degrees to rotate the map around horizontal axis (X).\r\n\t *\r\n\t * E.g. setting this to 90 will put Antarctica directly in the center of\r\n\t * the map.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/chart-types/map/#Map_rotation} For more info on map rotation.\r\n\t * @since 4.3.0\r\n\t * @param value Rotation\r\n\t */\r\n\tpublic set deltaLatitude(value: number) {\r\n\t\tvalue = $math.round(value, 3);\r\n\t\tif (this.setPropertyValue(\"deltaLatitude\", value)) {\r\n\t\t\tthis.rotateMap();\r\n\t\t\tthis.updateZoomGeoPoint();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Rotation\r\n\t */\r\n\tpublic get deltaLatitude(): number {\r\n\t\treturn this.getPropertyValue(\"deltaLatitude\");\r\n\t}\r\n\r\n\t/**\r\n\t * Degrees to rotate the map around \"Z\" axis. This is the axis that pierces\r\n\t * the globe directly from the viewer's point of view.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/chart-types/map/#Map_rotation} For more info on map rotation.\r\n\t * @since 4.3.0\r\n\t * @param value Rotation\r\n\t */\r\n\tpublic set deltaGamma(value: number) {\r\n\t\tvalue = $math.round(value, 3);\r\n\t\tif (this.setPropertyValue(\"deltaGamma\", value)) {\r\n\t\t\tthis.rotateMap();\r\n\t\t\tthis.updateZoomGeoPoint();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Rotation\r\n\t */\r\n\tpublic get deltaGamma(): number {\r\n\t\treturn this.getPropertyValue(\"deltaGamma\");\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected rotateMap() {\r\n\t\tif (this.projection.d3Projection) {\r\n\t\t\tif (this.projection.d3Projection.rotate) {\r\n\t\t\t\tthis.projection.d3Projection.rotate([this.deltaLongitude, this.deltaLatitude, this.deltaGamma]);\r\n\t\t\t\tthis.invalidateProjection();\r\n\t\t\t\t//this.updateExtremes(); // removal fixes #3292\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Maximum portion of the map's width/height to allow panning \"off screen\".\r\n\t *\r\n\t * A value of 0 (zero) will prevent any portion of the the map to be panned\r\n\t * outside the viewport.\r\n\t *\r\n\t * 0.5 will allow half of the map to be outside viewable area.\r\n\t *\r\n\t * @default 0.7\r\n\t * @param value Max pan out\r\n\t */\r\n\tpublic set maxPanOut(value: number) {\r\n\t\tthis.setPropertyValue(\"maxPanOut\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Max pan out\r\n\t */\r\n\tpublic get maxPanOut(): number {\r\n\t\treturn this.getPropertyValue(\"maxPanOut\");\r\n\t}\r\n\r\n\t/**\r\n\t * The geographical point to center map on when it is first loaded.\r\n\t *\r\n\t * The map will also be centered to this point when you call `goHome()`\r\n\t * method.\r\n\t *\r\n\t * @param value Home geo point\r\n\t */\r\n\tpublic set homeGeoPoint(value: IGeoPoint) {\r\n\t\tthis.setPropertyValue(\"homeGeoPoint\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Home geo point\r\n\t */\r\n\tpublic get homeGeoPoint(): IGeoPoint {\r\n\t\treturn this.getPropertyValue(\"homeGeoPoint\");\r\n\t}\r\n\r\n\t/**\r\n\t * The zoom level to put the map in when it is first loaded.\r\n\t *\r\n\t * The map will also be set to this zoom level when you call `goHome()`\r\n\t * method.\r\n\t *\r\n\t * @param value Home zoom level\r\n\t */\r\n\tpublic set homeZoomLevel(value: number) {\r\n\t\tthis.setPropertyValue(\"homeZoomLevel\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Home zoom level\r\n\t */\r\n\tpublic get homeZoomLevel(): number {\r\n\t\treturn this.getPropertyValue(\"homeZoomLevel\");\r\n\t}\r\n\r\n\t/**\r\n\t * When user zooms in or out current zoom level is multiplied or divided\r\n\t * by value of this setting.\r\n\t *\r\n\t * @default 2\r\n\t * @param value Zoom factor\r\n\t */\r\n\tpublic set zoomStep(value: number) {\r\n\t\tthis.setPropertyValue(\"zoomStep\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Zoom factor\r\n\t */\r\n\tpublic get zoomStep(): number {\r\n\t\treturn this.getPropertyValue(\"zoomStep\");\r\n\t}\r\n\r\n\t/**\r\n\t * Invalidates projection, causing all series to be redrawn.\r\n\t *\r\n\t * Call this after changing projection or its settings.\r\n\t */\r\n\tpublic invalidateProjection() {\r\n\t\tthis.east = undefined;\r\n\t\tthis.invalidateDataUsers();\r\n\t\tthis.updateCenterGeoPoint();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a [[DataSource]] to be used for loading Component's data.\r\n\t *\r\n\t * @param value Data source\r\n\t */\r\n\tpublic set geodataSource(value: DataSource) {\r\n\t\tif (this._dataSources[\"geodata\"]) {\r\n\t\t\tthis.removeDispose(this._dataSources[\"geodata\"]);\r\n\t\t}\r\n\t\tthis._dataSources[\"geodata\"] = value;\r\n\t\tthis._dataSources[\"geodata\"].component = this;\r\n\t\tthis.events.on(\"inited\", () => {\r\n\t\t\tthis.loadData(\"geodata\");\r\n\t\t}, this, false);\r\n\t\tthis.setDataSourceEvents(value, \"geodata\");\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a [[DataSource]] specifically for loading Component's data.\r\n\t *\r\n\t * @return Data source\r\n\t */\r\n\tpublic get geodataSource(): DataSource {\r\n\t\tif (!this._dataSources[\"geodata\"]) {\r\n\t\t\tlet dataSource = this.getDataSource(\"geodata\");\r\n\t\t\tdataSource.events.on(\"parseended\", () => {\r\n\t\t\t\tthis.events.once(\"datavalidated\", () => {\r\n\t\t\t\t\tthis.goHome(0);\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t}\r\n\t\treturn this._dataSources[\"geodata\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Processes JSON-based config before it is applied to the object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config\r\n\t */\r\n\tpublic processConfig(config?: { [index: string]: any }): void {\r\n\r\n\t\tif ($type.hasValue(config[\"geodata\"]) && $type.isString(config[\"geodata\"])) {\r\n\t\t\tconst name = config[\"geodata\"];\r\n\t\t\t// Check if there's a map loaded by such name\r\n\t\t\tif ($type.hasValue((window)[\"am4geodata_\" + config[\"geodata\"]])) {\r\n\t\t\t\tconfig[\"geodata\"] = (window)[\"am4geodata_\" + config[\"geodata\"]];\r\n\t\t\t}\r\n\t\t\t// Nope. Let's try maybe we got JSON as string?\r\n\t\t\telse {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconfig[\"geodata\"] = JSON.parse(config[\"geodata\"]);\r\n\t\t\t\t}\r\n\t\t\t\tcatch (e) {\r\n\t\t\t\t\t// No go again. Error out.\r\n\t\t\t\t\tthis.raiseCriticalError(Error(\"MapChart error: Geodata `\" + name + \"` is not loaded or is incorrect.\"), true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Instantiate projection\r\n\t\tif ($type.hasValue(config[\"projection\"]) && $type.isString(config[\"projection\"])) {\r\n\t\t\tconfig[\"projection\"] = this.createClassInstance(config[\"projection\"]);\r\n\t\t}\r\n\r\n\t\t// Set up small map\r\n\t\tif ($type.hasValue(config.smallMap) && !$type.hasValue(config.smallMap.type)) {\r\n\t\t\tconfig.smallMap.type = \"SmallMap\";\r\n\t\t}\r\n\r\n\t\t// Set up zoom control\r\n\t\tif ($type.hasValue(config.zoomControl) && !$type.hasValue(config.zoomControl.type)) {\r\n\t\t\tconfig.zoomControl.type = \"ZoomControl\";\r\n\t\t}\r\n\r\n\t\tsuper.processConfig(config);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Decorates a new [[Series]] object with required parameters when it is\r\n\t * added to the chart.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Event\r\n\t */\r\n\tpublic handleSeriesAdded(event: IListEvents[\"inserted\"]): void {\r\n\t\tsuper.handleSeriesAdded(event);\r\n\t\tlet series = event.newValue;\r\n\t\tseries.scale = this.scaleRatio;\r\n\t\tseries.events.on(\"validated\", this.updateCenterGeoPoint, this, false);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * This function is used to sort element's JSON config properties, so that\r\n\t * some properties that absolutely need to be processed last, can be put at\r\n\t * the end.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param a Element 1\r\n\t * @param b Element 2\r\n\t * @return Sorting number\r\n\t */\r\n\tprotected configOrder(a: string, b: string): Ordering {\r\n\t\tif (a == b) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\t// Must come last\r\n\t\telse if (a == \"smallMap\") {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\telse if (b == \"smallMap\") {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\telse if (a == \"series\") {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\telse if (b == \"series\") {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn super.configOrder(a, b);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Adds `projection` to \"as is\" fields.\r\n\t *\r\n\t * @param field Field name\r\n\t * @return Assign as is?\r\n\t */\r\n\tprotected asIs(field: string): boolean {\r\n\t\treturn field == \"projection\" || field == \"geodata\" || super.asIs(field);\r\n\t}\r\n\r\n\t/**\r\n\t * Geo point of map center\r\n\t *\r\n\t * @readonly\r\n\t */\r\n\tpublic get centerGeoPoint(): IGeoPoint {\r\n\t\treturn this._centerGeoPoint;\r\n\t}\r\n\r\n\t/**\r\n\t * Resets the map to its original position and zoom level.\r\n\t *\r\n\t * Use the only parameter to set number of milliseconds for the zoom\r\n\t * animation to play.\r\n\t *\r\n\t * @param duration Duration (ms)\r\n\t */\r\n\tpublic goHome(duration?: number) {\r\n\t\tlet homeGeoPoint = this.homeGeoPoint;\r\n\t\tif (!homeGeoPoint) {\r\n\t\t\thomeGeoPoint = this.centerGeoPoint;\r\n\t\t}\r\n\t\tif (homeGeoPoint) {\r\n\t\t\tthis.zoomToGeoPoint(homeGeoPoint, this.homeZoomLevel, true, duration, true);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets [[Paper]] instance to use to draw elements.\r\n\t *\r\n\t * @ignore\r\n\t * @param paper Paper\r\n\t * @return true if paper was changed, false, if it's the same\r\n\t */\r\n\tpublic setPaper(paper: Paper): boolean {\r\n\t\tif (this.svgContainer) {\r\n\t\t\tthis.svgContainer.hideOverflow = true;\r\n\t\t}\r\n\r\n\t\treturn super.setPaper(paper);\r\n\t}\r\n\r\n\t/**\r\n\t * Background series will create polygons that will fill all the map area\r\n\t * with some color (or other fill).\r\n\t *\r\n\t * This might be useful with non-rectangular projections, like Orthographic,\r\n\t * Albers, etc.\r\n\t *\r\n\t * To change background color/opacity access polygon template.\r\n\t *\r\n\t * ```TypeScript\r\n\t * chart.backgroundSeries.mapPolygons.template.polygon.fill = am4core.color(\"#fff\");\r\n\t * chart.backgroundSeries.mapPolygons.template.polygon.fillOpacity = 0.1;\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * chart.backgroundSeries.mapPolygons.template.polygon.fill = am4core.color(\"#fff\");\r\n\t * chart.backgroundSeries.mapPolygons.template.polygon.fillOpacity = 0.1;\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * \"backgroundSeries\": {\r\n\t * \"mapPolygons\": {\r\n\t * \"polygon\": {\r\n\t * \"fill\": \"#fff\",\r\n\t * \"fillOpacity\": 0.1\r\n\t * }\r\n\t * }\r\n\t * }\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @since 4.3.0\r\n\t */\r\n\tpublic get backgroundSeries(): MapPolygonSeries {\r\n\t\tif (!this._backgroundSeries) {\r\n\t\t\tlet backgroundSeries = new MapPolygonSeries();\r\n\t\t\tbackgroundSeries.parent = this.seriesContainer;\r\n\t\t\tbackgroundSeries.chart = this;\r\n\r\n\t\t\tbackgroundSeries.hiddenInLegend = true;\r\n\t\t\tbackgroundSeries.mapPolygons.template.focusable = false;\r\n\t\t\tbackgroundSeries.addDisposer(new Disposer(() => {\r\n\t\t\t\tthis._backgroundSeries = undefined;\r\n\t\t\t}))\r\n\t\t\tthis._disposers.push(backgroundSeries);\r\n\r\n\t\t\tlet interfaceColors = new InterfaceColorSet();\r\n\t\t\tlet color = interfaceColors.getFor(\"background\");\r\n\r\n\t\t\tlet polygonTemplate = backgroundSeries.mapPolygons.template.polygon;\r\n\t\t\tpolygonTemplate.stroke = color;\r\n\t\t\tpolygonTemplate.fill = color;\r\n\t\t\tpolygonTemplate.fillOpacity = 0;\r\n\t\t\tpolygonTemplate.strokeOpacity = 0;\r\n\t\t\t//polygonTemplate.focusable = false;\r\n\r\n\t\t\tbackgroundSeries.mapPolygons.create();\r\n\r\n\t\t\tthis._backgroundSeries = backgroundSeries;\r\n\t\t}\r\n\r\n\t\treturn this._backgroundSeries;\r\n\t}\r\n\r\n\t/**\r\n\t * Prepares the legend instance for use in this chart.\r\n\t *\r\n\t * @param legend Legend\r\n\t */\r\n\tprotected setLegend(legend: Legend) {\r\n\t\tsuper.setLegend(legend);\r\n\t\tif (legend) {\r\n\t\t\tlegend.parent = this;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @param value Tap to activate?\r\n\t */\r\n\tprotected setTapToActivate(value: boolean): void {\r\n\t\tsuper.setTapToActivate(value);\r\n\t\t// setup other containers\r\n\t\tthis.seriesContainer.interactions.isTouchProtected = true;\r\n\t\tthis.panSprite.interactions.isTouchProtected = true;\r\n\t}\r\n\r\n\tprotected handleTapToActivate(): void {\r\n\t\tsuper.handleTapToActivate();\r\n\t\tthis.seriesContainer.interactions.isTouchProtected = false;\r\n\t\tthis.panSprite.interactions.isTouchProtected = false;\r\n\t}\r\n\r\n\tprotected handleTapToActivateDeactivation(): void {\r\n\t\tsuper.handleTapToActivateDeactivation();\r\n\t\tthis.seriesContainer.interactions.isTouchProtected = true;\r\n\t\tthis.panSprite.interactions.isTouchProtected = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Adds easing functions to \"function\" fields.\r\n\t *\r\n\t * @param field Field name\r\n\t * @return Assign as function?\r\n\t */\r\n\tprotected asFunction(field: string): boolean {\r\n\t\treturn field == \"zoomEasing\" || super.asIs(field);\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t * @return Has license?\r\n\t */\r\n\tpublic hasLicense(): boolean {\r\n\t\tif (options.commercialLicense) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (!super.hasLicense()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfor (let i = 0; i < options.licenses.length; i++) {\r\n\t\t\tif (options.licenses[i].match(/^MP.{5,}/i)) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"MapChart\"] = MapChart;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/types/MapChart.ts","/**\r\n * Map spline module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { MapLine, IMapLineProperties, IMapLineAdapters, IMapLineEvents } from \"./MapLine\";\r\nimport { Polyspline } from \"../../core/elements/Polyspline\";\r\nimport { MapSplineSeriesDataItem, MapSplineSeries } from \"./MapSplineSeries\";\r\nimport { registry } from \"../../core/Registry\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[MapSpline]].\r\n */\r\nexport interface IMapSplineProperties extends IMapLineProperties { }\r\n\r\n/**\r\n * Defines events for [[MapSpline]].\r\n */\r\nexport interface IMapSplineEvents extends IMapLineEvents { }\r\n\r\n/**\r\n * Defines adapters for [[MapSpline]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IMapSplineAdapters extends IMapLineAdapters, IMapSplineProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Used to draw a spline on the map.\r\n *\r\n * @see {@link IMapSplineEvents} for a list of available events\r\n * @see {@link IMapSplineAdapters} for a list of available Adapters\r\n */\r\nexport class MapSpline extends MapLine {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IMapSplineProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IMapSplineAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IMapSplineEvents;\r\n\r\n\t/**\r\n\t * A visual element for the spline.\r\n\t */\r\n\tpublic line: Polyspline;\r\n\r\n\t/**\r\n\t * A related data item.\r\n\t */\r\n\tpublic _dataItem: MapSplineSeriesDataItem;\r\n\r\n\t/**\r\n\t * A map series this object belongs to.\r\n\t */\r\n\tpublic series: MapSplineSeries;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"MapSpline\";\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected createLine(){\r\n\t\tthis.line = new Polyspline();\r\n\t\tthis.line.tensionX = 0.8;\r\n\t\tthis.line.tensionY = 0.8;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ShortestDistance = true is not supported by MapSpline, only MapLine does support it\r\n\t * @default false\r\n\t * @param value\r\n\t * @todo: review description\r\n\t */\r\n\tpublic get shortestDistance(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tpublic set shortestDistance(value: boolean) {\r\n\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"MapSpline\"] = MapSpline;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/map/MapSpline.ts","/**\r\n * Map arched line module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { MapLine, IMapLineProperties, IMapLineAdapters, IMapLineEvents } from \"./MapLine\";\r\nimport { Polyarc } from \"../../core/elements/Polyarc\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { MapArcSeries } from \"./MapArcSeries\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[MapArc]].\r\n */\r\nexport interface IMapArcProperties extends IMapLineProperties { }\r\n\r\n/**\r\n * Defines events for [[MapArc]].\r\n */\r\nexport interface IMapArcEvents extends IMapLineEvents { }\r\n\r\n/**\r\n * Defines adapters for [[MapArc]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IMapArcAdapters extends IMapLineAdapters, IMapArcProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Used to draw an arched line on the map.\r\n *\r\n * @see {@link IMapArcEvents} for a list of available events\r\n * @see {@link IMapArcAdapters} for a list of available Adapters\r\n */\r\nexport class MapArc extends MapLine {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IMapArcProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IMapArcAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IMapArcEvents;\r\n\r\n\t/**\r\n\t * A visual element.\r\n\t */\r\n\tpublic line: Polyarc;\r\n\r\n\t/**\r\n\t * A map series this object belongs to.\r\n\t */\r\n\tpublic series: MapArcSeries;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"MapArc\";\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected createLine(){\r\n\t\tthis.line = new Polyarc();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * `shortestDistance = true` is not supported by `MapArc`.\r\n\t *\r\n\t * Only [[MapLine]] supports it.\r\n\t *\r\n\t * @default false\r\n\t * @param value\r\n\t */\r\n\tpublic set shortestDistance(value: boolean) {\r\n\r\n\t}\r\n\r\n\tpublic get shortestDistance(): boolean {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"MapArc\"] = MapArc;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/map/MapArc.ts","/**\r\n * Map spline series module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { MapLineSeries, MapLineSeriesDataItem, IMapLineSeriesProperties, IMapLineSeriesDataFields, IMapLineSeriesAdapters, IMapLineSeriesEvents } from \"./MapLineSeries\";\r\nimport { MapSpline } from \"./MapSpline\";\r\nimport { registry } from \"../../core/Registry\";\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[MapSplineSeries]]\r\n * @see {@link DataItem}\r\n */\r\nexport class MapSplineSeriesDataItem extends MapLineSeriesDataItem {\r\n\r\n\t/**\r\n\t * A [[MapSpline]] element related to this data item.\r\n\t */\r\n\tpublic _mapLine: MapSpline;\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for\r\n\t */\r\n\tpublic _component!: MapSplineSeries;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"MapSplineSeriesDataItem\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines data fields for [[MapSplineSeries]].\r\n */\r\nexport interface IMapSplineSeriesDataFields extends IMapLineSeriesDataFields { }\r\n\r\n/**\r\n * Defines properties for [[MapSplineSeries]].\r\n */\r\nexport interface IMapSplineSeriesProperties extends IMapLineSeriesProperties { }\r\n\r\n/**\r\n * Defines events for [[MapSplineSeries]].\r\n */\r\nexport interface IMapSplineSeriesEvents extends IMapLineSeriesEvents { }\r\n\r\n/**\r\n * Defines adapters for [[MapSplineSeries]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IMapSplineSeriesAdapters extends IMapLineSeriesAdapters, IMapSplineSeriesProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * A series of map spline elements.\r\n *\r\n * @see {@link IMapSplineSeriesEvents} for a list of available Events\r\n * @see {@link IMapSplineSeriesAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class MapSplineSeries extends MapLineSeries {\r\n\r\n\t/**\r\n\t * Defines available data fields.\r\n\t */\r\n\tpublic _dataFields: IMapSplineSeriesDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IMapSplineSeriesProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IMapSplineSeriesAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IMapSplineSeriesEvents;\r\n\r\n\t/**\r\n\t * Defines the type of data item.\r\n\t */\r\n\tpublic _dataItem: MapSplineSeriesDataItem;\r\n\r\n\t/**\r\n\t * Defines the type of the line items in this series.\r\n\t */\r\n\tpublic _mapLine: MapSpline;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"MapSplineSeries\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty DataItem of the type appropriate for this object.\r\n\t *\r\n\t * @see {@link DataItem}\r\n\t * @return Data Item\r\n\t */\r\n\tprotected createDataItem(): this[\"_dataItem\"] {\r\n\t\treturn new MapSplineSeriesDataItem();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new line instance of suitable type.\r\n\t *\r\n\t * @return New line\r\n\t */\r\n\tprotected createLine(): this[\"_mapLine\"] {\r\n\t\treturn new MapSpline();\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"MapSplineSeries\"] = MapSplineSeries;\r\nregistry.registeredClasses[\"MapSplineSeriesDataItem\"] = MapSplineSeriesDataItem;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/map/MapSplineSeries.ts","/**\r\n * Map arc series module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { MapLineSeries, MapLineSeriesDataItem, IMapLineSeriesProperties, IMapLineSeriesDataFields, IMapLineSeriesAdapters, IMapLineSeriesEvents } from \"./MapLineSeries\";\r\nimport { MapArc } from \"./MapArc\";\r\nimport { registry } from \"../../core/Registry\";\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[MapArcSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class MapArcSeriesDataItem extends MapLineSeriesDataItem {\r\n\r\n\t/**\r\n\t * A [[MapArc]] element related to this data item.\r\n\t */\r\n\tpublic _mapLine: MapArc;\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for.\r\n\t */\r\n\tpublic _component!: MapArcSeries;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"MapArcSeriesDataItem\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines data fields for [[MapArcSeries]].\r\n */\r\nexport interface IMapArcSeriesDataFields extends IMapLineSeriesDataFields { }\r\n\r\n/**\r\n * Defines properties for [[MapArcSeries]].\r\n */\r\nexport interface IMapArcSeriesProperties extends IMapLineSeriesProperties { }\r\n\r\n/**\r\n * Defines events for [[MapArcSeries]].\r\n */\r\nexport interface IMapArcSeriesEvents extends IMapLineSeriesEvents { }\r\n\r\n/**\r\n * Defines adapters for [[MapArcSeries]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IMapArcSeriesAdapters extends IMapLineSeriesAdapters, IMapArcSeriesProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * A series of arc elements. (curved lines)\r\n *\r\n * @see {@link IMapArcSeriesEvents} for a list of available Events\r\n * @see {@link IMapArcSeriesAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class MapArcSeries extends MapLineSeries {\r\n\r\n\t/**\r\n\t * Defines available data fields.\r\n\t */\r\n\tpublic _dataFields: IMapArcSeriesDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IMapArcSeriesProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IMapArcSeriesAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IMapArcSeriesEvents;\r\n\r\n\t/**\r\n\t * Defines the type of data item.\r\n\t */\r\n\tpublic _dataItem: MapArcSeriesDataItem;\r\n\r\n\t/**\r\n\t * Defines the type of the line items in this series.\r\n\t */\r\n\tpublic _mapLine: MapArc;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"MapArcSeries\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty DataItem of the type appropriate for this object.\r\n\t *\r\n\t * @see {@link DataItem}\r\n\t * @return Data Item\r\n\t */\r\n\tprotected createDataItem(): this[\"_dataItem\"] {\r\n\t\treturn new MapArcSeriesDataItem();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new line instance of suitable type.\r\n\t *\r\n\t * @return New line\r\n\t */\r\n\tprotected createLine(): this[\"_mapLine\"] {\r\n\t\treturn new MapArc();\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"MapArcSeries\"] = MapArcSeries;\r\nregistry.registeredClasses[\"MapArcSeriesDataItem\"] = MapArcSeriesDataItem;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/map/MapArcSeries.ts","/**\r\n * Zoom control module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container, IContainerProperties, IContainerAdapters, IContainerEvents } from \"../../core/Container\";\r\nimport { Sprite, ISpriteEvents, AMEvent } from \"../../core/Sprite\";\r\nimport { Button } from \"../../core/elements/Button\";\r\nimport { MapChart } from \"../types/MapChart\";\r\nimport { RoundedRectangle } from \"../../core/elements/RoundedRectangle\";\r\nimport { MutableValueDisposer, MultiDisposer } from \"../../core/utils/Disposer\";\r\nimport { keyboard } from \"../../core/utils/Keyboard\";\r\nimport { getInteraction } from \"../../core/interaction/Interaction\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[ZoomControl]].\r\n */\r\nexport interface IZoomControlProperties extends IContainerProperties { }\r\n\r\n/**\r\n * Defines events for [[ZoomControl]].\r\n */\r\nexport interface IZoomControlEvents extends IContainerEvents { }\r\n\r\n/**\r\n * Defines adapters for [[ZoomControl]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IZoomControlAdapters extends IContainerAdapters, IZoomControlProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creates a control for zooming the map.\r\n *\r\n * @see {@link IZoomControlEvents} for a list of available events\r\n * @see {@link IZoomControlAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class ZoomControl extends Container {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IZoomControlProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IZoomControlAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IZoomControlEvents;\r\n\r\n\t/**\r\n\t * Zoom in button element.\r\n\t */\r\n\tpublic plusButton: Button;\r\n\r\n\t/**\r\n\t * Zoom out button element.\r\n\t */\r\n\tpublic minusButton: Button;\r\n\r\n\t/**\r\n\t * A zoom slider background element.\r\n\t */\r\n\tpublic slider: Container;\r\n\r\n\t/**\r\n\t * A zoom slider thumb element.\r\n\t */\r\n\tpublic thumb: Button;\r\n\r\n\t/**\r\n\t * A target map.\r\n\t */\r\n\tprotected _chart: MutableValueDisposer = new MutableValueDisposer();\r\n\r\n\t/**\r\n\t * A type to use for the background element for zoom control.\r\n\t */\r\n\tpublic _background: RoundedRectangle;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.className = \"ZoomControl\";\r\n\r\n\t\tthis.align = \"right\";\r\n\t\tthis.valign = \"bottom\";\r\n\r\n\t\tthis.layout = \"vertical\";\r\n\t\tthis.padding(5, 5, 5, 5);\r\n\r\n\t\tlet interfaceColors = new InterfaceColorSet();\r\n\r\n\t\tlet plusButton: Button = this.createChild(Button);\r\n\t\tplusButton.shouldClone = false;\r\n\t\tplusButton.label.text = \"+\";\r\n\t\t//plusButton.fontFamily = \"Verdana\";\r\n\t\tthis.plusButton = plusButton;\r\n\r\n\t\tlet slider: Container = this.createChild(Container);\r\n\t\tslider.shouldClone = false;\r\n\t\tslider.background.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n\t\tslider.background.fillOpacity = 0.05;\r\n\t\tslider.background.events.on(\"hit\", this.handleBackgroundClick, this, false);\r\n\t\tslider.events.on(\"sizechanged\", this.updateThumbSize, this, false);\r\n\t\tthis.slider = slider;\r\n\r\n\t\tlet thumb: Button = slider.createChild(Button);\r\n\t\tthumb.shouldClone = false;\r\n\t\tthumb.padding(0, 0, 0, 0);\r\n\t\tthumb.draggable = true;\r\n\t\tthumb.events.on(\"drag\", this.handleThumbDrag, this, false);\r\n\t\tthis.thumb = thumb;\r\n\r\n\t\tlet minusButton: Button = this.createChild(Button);\r\n\t\tminusButton.shouldClone = false;\r\n\t\tminusButton.label.text = \"-\";\r\n\t\t//minusButton.fontFamily = \"Verdana\";\r\n\t\tthis.minusButton = minusButton;\r\n\r\n\t\t// Set roles\r\n\t\tthis.thumb.role = \"slider\";\r\n\t\tthis.thumb.readerLive = \"polite\";\r\n\r\n\t\t// Set reader text\r\n\t\tthis.thumb.readerTitle = this.language.translate(\"Use arrow keys to zoom in and out\");\r\n\t\tthis.minusButton.readerTitle = this.language.translate(\"Press ENTER to zoom in\");\r\n\t\tthis.plusButton.readerTitle = this.language.translate(\"Press ENTER to zoom out\");\r\n\r\n\t\tthis.applyTheme();\r\n\r\n\t\tthis.events.on(\"propertychanged\", (event) => {\r\n\t\t\tif (event.property == \"layout\") {\r\n\t\t\t\tthis.fixLayout();\r\n\t\t\t}\r\n\t\t}, undefined, false);\r\n\r\n\t\tthis._disposers.push(this._chart);\r\n\r\n\t\tthis.fixLayout();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected fixLayout() {\r\n\r\n\t\tlet plusButton = this.plusButton;\r\n\t\tlet minusButton = this.minusButton;\r\n\r\n\t\tlet thumb = this.thumb;\r\n\t\tlet slider = this.slider;\r\n\r\n\t\tplusButton.x = undefined;\r\n\t\tplusButton.y = undefined;\r\n\r\n\t\tminusButton.x = undefined;\r\n\t\tminusButton.y = undefined;\r\n\r\n\t\tthumb.x = undefined;\r\n\t\tthumb.y = undefined;\r\n\r\n\t\tslider.x = undefined;\r\n\t\tslider.y = undefined;\r\n\r\n\t\tplusButton.padding(6, 10, 6, 10);\r\n\t\tminusButton.padding(6, 10, 6, 10);\r\n\r\n\t\tminusButton.label.align = \"center\";\r\n\t\tminusButton.label.valign = \"middle\";\r\n\r\n\t\tplusButton.label.align = \"center\";\r\n\t\tplusButton.label.valign = \"middle\";\r\n\r\n\t\tif (this.layout == \"vertical\") {\r\n\t\t\tthis.width = 40;\r\n\t\t\tthis.height = undefined;\r\n\r\n\t\t\tminusButton.width = percent(100);\r\n\t\t\tminusButton.height = undefined;\r\n\r\n\t\t\tthumb.width = percent(100);\r\n\t\t\tthumb.height = undefined;\r\n\r\n\t\t\tplusButton.width = percent(100);\r\n\t\t\tplusButton.height = undefined;\r\n\r\n\t\t\tslider.width = percent(100);\r\n\t\t\tminusButton.marginTop = 1;\r\n\t\t\tplusButton.marginBottom = 2;\r\n\r\n\t\t\tslider.height = 0;\r\n\r\n\t\t\tminusButton.toFront();\r\n\t\t\tplusButton.toBack();\r\n\r\n\t\t\tthumb.minX = 0;\r\n\t\t\tthumb.maxX = 0;\r\n\t\t\tthumb.minY = 0;\r\n\r\n\r\n\t\t}\r\n\t\telse if (this.layout == \"horizontal\") {\r\n\t\t\tthis.height = 40;\r\n\t\t\tthis.width = undefined;\r\n\r\n\t\t\tminusButton.height = percent(100);\r\n\t\t\tminusButton.width = undefined;\r\n\r\n\t\t\tplusButton.height = percent(100);\r\n\t\t\tplusButton.width = undefined;\r\n\r\n\t\t\tthumb.height = percent(100);\r\n\t\t\tthumb.width = undefined;\r\n\r\n\t\t\tthumb.minX = 0;\r\n\t\t\tthumb.minY = 0;\r\n\t\t\tthumb.maxY = 0;\r\n\r\n\t\t\tslider.height = percent(100);\r\n\t\t\tslider.width = 0;\r\n\r\n\t\t\tminusButton.toBack();\r\n\t\t\tplusButton.toFront();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Handles zoom operation after clicking on the slider background.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Event\r\n\t */\r\n\tpublic handleBackgroundClick(event: AMEvent[\"hit\"]): void {\r\n\t\tlet sprite: Sprite = event.target;\r\n\t\tlet y: number = event.spritePoint.y;\r\n\t\tlet chart: MapChart = this.chart;\r\n\r\n\t\tlet maxPower: number = Math.log(chart.maxZoomLevel) / Math.LN2;\r\n\t\tlet minPower: number = Math.log(chart.minZoomLevel) / Math.LN2;\r\n\r\n\t\tlet power: number = (sprite.pixelHeight - y) / sprite.pixelHeight * (minPower + (maxPower - minPower));\r\n\t\tlet zoomLevel: number = Math.pow(2, power);\r\n\t\tchart.zoomToGeoPoint(chart.zoomGeoPoint, zoomLevel);\r\n\t}\r\n\r\n\t/**\r\n\t * A main chart/map that this zoom control is for.\r\n\t *\r\n\t * @param chart Map/chart\r\n\t */\r\n\tpublic set chart(chart: MapChart) {\r\n\t\tthis._chart.set(chart, new MultiDisposer([\r\n\t\t\tchart.events.on(\"maxsizechanged\", this.updateThumbSize, this, false),\r\n\t\t\tchart.events.on(\"zoomlevelchanged\", this.updateThumb, this, false),\r\n\r\n\t\t\tthis.minusButton.events.on(\"hit\", () => { chart.zoomOut(chart.zoomGeoPoint) }, chart, false),\r\n\r\n\t\t\tgetInteraction().body.events.on(\"keyup\", (ev) => {\r\n\t\t\t\tif (this.topParent.hasFocused) {\r\n\t\t\t\t\t// ENTER is now handled globally\r\n\t\t\t\t\tif (keyboard.isKey(ev.event, \"plus\")) {\r\n\t\t\t\t\t\tchart.zoomIn();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (keyboard.isKey(ev.event, \"minus\")) {\r\n\t\t\t\t\t\tchart.zoomOut();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}, chart),\r\n\t\t\tthis.plusButton.events.on(\"hit\", () => { chart.zoomIn(chart.zoomGeoPoint) }, chart, false)\r\n\t\t]));\r\n\t}\r\n\r\n\t/**\r\n\t * @return Map/chart\r\n\t */\r\n\tpublic get chart(): MapChart {\r\n\t\treturn this._chart.get();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the slider's thumb size based on the available zoom space.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateThumbSize(): void {\r\n\t\tlet chart = this.chart;\r\n\t\tif (chart) {\r\n\t\t\tlet slider: Container = this.slider;\r\n\t\t\tlet thumb: Button = this.thumb;\r\n\t\t\tif (this.layout == \"vertical\") {\r\n\t\t\t\tthumb.minHeight = Math.min(this.slider.pixelHeight, 20);\r\n\r\n\t\t\t\tthumb.height = slider.pixelHeight / this.stepCount;\r\n\t\t\t\tthumb.maxY = slider.pixelHeight - thumb.pixelHeight;\r\n\r\n\t\t\t\tif (thumb.pixelHeight <= 1) {\r\n\t\t\t\t\tthumb.visible = false;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthumb.visible = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthumb.minWidth = Math.min(this.slider.pixelWidth, 20);\r\n\t\t\t\tthumb.width = slider.pixelWidth / this.stepCount;\r\n\t\t\t\tthumb.maxX = slider.pixelWidth - thumb.pixelWidth;\r\n\r\n\t\t\t\tif (thumb.pixelWidth <= 1) {\r\n\t\t\t\t\tthumb.visible = false;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthumb.visible = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates thumb according to current zoom position from map.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateThumb(): void {\r\n\t\tlet slider: Container = this.slider;\r\n\t\tlet chart: MapChart = this.chart;\r\n\t\tlet thumb: Button = this.thumb;\r\n\r\n\t\tif (!thumb.isDown) {\r\n\t\t\tlet step: number = (Math.log(chart.zoomLevel) - Math.log(this.chart.minZoomLevel)) / Math.LN2;\r\n\r\n\t\t\tif (this.layout == \"vertical\") {\r\n\t\t\t\tthumb.y = slider.pixelHeight - (slider.pixelHeight - thumb.pixelHeight) * step / this.stepCount - thumb.pixelHeight;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthumb.x = slider.pixelWidth * step / this.stepCount;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms the actual map when slider position changes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic handleThumbDrag(): void {\r\n\t\tlet slider: Container = this.slider;\r\n\t\tlet chart: MapChart = this.chart;\r\n\t\tlet thumb: Button = this.thumb;\r\n\t\tlet step: number;\r\n\r\n\t\tlet minStep = Math.log(this.chart.minZoomLevel) / Math.LN2;\r\n\r\n\t\tif (this.layout == \"vertical\") {\r\n\t\t\tstep = this.stepCount * (slider.pixelHeight - thumb.pixelY - thumb.pixelHeight) / (slider.pixelHeight - thumb.pixelHeight);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tstep = this.stepCount * thumb.pixelX / slider.pixelWidth;\r\n\t\t}\r\n\t\tstep = minStep + step;\r\n\r\n\t\tlet zoomLevel: number = Math.pow(2, step);\r\n\t\tchart.zoomToGeoPoint(undefined, zoomLevel, false, 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the step countfor the slider grid according to map's min and max\r\n\t * zoom level settings.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Step count\r\n\t */\r\n\tpublic get stepCount(): number {\r\n\t\treturn Math.log(this.chart.maxZoomLevel) / Math.LN2 - Math.log(this.chart.minZoomLevel) / Math.LN2;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a background element for slider control.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Background\r\n\t */\r\n\tpublic createBackground(): this[\"_background\"] {\r\n\t\treturn new RoundedRectangle();\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ZoomControl\"] = ZoomControl;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/map/ZoomControl.ts","/**\r\n * Functionality for Mercator projection\r\n *\r\n * The function(s) below are from D3.js library (https://d3js.org/)\r\n *\r\n * ```\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n * this list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n * this list of conditions and the following disclaimer in the documentation\r\n * and/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n * contributors may be used to endorse or promote products derived from this\r\n * software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * ```\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Projection } from \"./Projection\";\r\nimport { registry } from \"../../../core/Registry\";\r\nimport * as d3geo from \"d3-geo\";\r\n\r\n\r\n/**\r\n * Mercator projection.\r\n */\r\nexport class Mercator extends Projection {\r\n\tconstructor(){\r\n\t\tsuper();\r\n\t\tthis.d3Projection = d3geo.geoMercator();\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Mercator\"] = Mercator;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../../src/.internal/charts/map/projections/Mercator.ts","export var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var ceil = Math.ceil;\nexport var cos = Math.cos;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var pow = Math.pow;\nexport var round = Math.round;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sin = Math.sin;\nexport var tan = Math.tan;\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var sqrt1_2 = Math.SQRT1_2;\nexport var sqrt2 = sqrt(2);\nexport var sqrtPi = sqrt(pi);\nexport var tau = pi * 2;\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport function sinci(x) {\n return x ? x / Math.sin(x) : 1;\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function sqrt(x) {\n return x > 0 ? Math.sqrt(x) : 0;\n}\n\nexport function tanh(x) {\n x = exp(2 * x);\n return (x - 1) / (x + 1);\n}\n\nexport function sinh(x) {\n return (exp(x) - exp(-x)) / 2;\n}\n\nexport function cosh(x) {\n return (exp(x) + exp(-x)) / 2;\n}\n\nexport function arsinh(x) {\n return log(x + sqrt(x * x + 1));\n}\n\nexport function arcosh(x) {\n return log(x + sqrt(x * x - 1));\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/math.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, acos, cos, epsilon, pi, sin, sinci, sqrt} from \"./math.js\";\n\nexport function aitoffRaw(x, y) {\n var cosy = cos(y), sincia = sinci(acos(cosy * cos(x /= 2)));\n return [2 * cosy * sin(x) * sincia, sin(y) * sincia];\n}\n\n// Abort if [x, y] is not within an ellipse centered at [0, 0] with\n// semi-major axis pi and semi-minor axis pi/2.\naitoffRaw.invert = function(x, y) {\n if (x * x + 4 * y * y > pi * pi + epsilon) return;\n var x1 = x, y1 = y, i = 25;\n do {\n var sinx = sin(x1),\n sinx_2 = sin(x1 / 2),\n cosx_2 = cos(x1 / 2),\n siny = sin(y1),\n cosy = cos(y1),\n sin_2y = sin(2 * y1),\n sin2y = siny * siny,\n cos2y = cosy * cosy,\n sin2x_2 = sinx_2 * sinx_2,\n c = 1 - cos2y * cosx_2 * cosx_2,\n e = c ? acos(cosy * cosx_2) * sqrt(f = 1 / c) : f = 0,\n f,\n fx = 2 * e * cosy * sinx_2 - x,\n fy = e * siny - y,\n dxdx = f * (cos2y * sin2x_2 + e * cosy * cosx_2 * sin2y),\n dxdy = f * (0.5 * sinx * sin_2y - e * 2 * siny * sinx_2),\n dydx = f * 0.25 * (sin_2y * sinx_2 - e * siny * cos2y * sinx),\n dydy = f * (sin2y * cosx_2 + e * sin2x_2 * cosy),\n z = dxdy * dydx - dydy * dxdx;\n if (!z) break;\n var dx = (fy * dxdy - fx * dydy) / z,\n dy = (fx * dydx - fy * dxdx) / z;\n x1 -= dx, y1 -= dy;\n } while ((abs(dx) > epsilon || abs(dy) > epsilon) && --i > 0);\n return [x1, y1];\n};\n\nexport default function() {\n return projection(aitoffRaw)\n .scale(152.63);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/aitoff.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, arcosh, arsinh, asin, atan2, cos, cosh, sign, sin, sinh, sqrt, tan} from \"./math.js\";\n\nexport function augustRaw(lambda, phi) {\n var tanPhi = tan(phi / 2),\n k = sqrt(1 - tanPhi * tanPhi),\n c = 1 + k * cos(lambda /= 2),\n x = sin(lambda) * k / c,\n y = tanPhi / c,\n x2 = x * x,\n y2 = y * y;\n return [\n 4 / 3 * x * (3 + x2 - 3 * y2),\n 4 / 3 * y * (3 + 3 * x2 - y2)\n ];\n}\n\naugustRaw.invert = function(x, y) {\n x *= 3 / 8, y *= 3 / 8;\n if (!x && abs(y) > 1) return null;\n var x2 = x * x,\n y2 = y * y,\n s = 1 + x2 + y2,\n sin3Eta = sqrt((s - sqrt(s * s - 4 * y * y)) / 2),\n eta = asin(sin3Eta) / 3,\n xi = sin3Eta ? arcosh(abs(y / sin3Eta)) / 3 : arsinh(abs(x)) / 3,\n cosEta = cos(eta),\n coshXi = cosh(xi),\n d = coshXi * coshXi - cosEta * cosEta;\n return [\n sign(x) * 2 * atan2(sinh(xi) * cosEta, 0.25 - d),\n sign(y) * 2 * atan2(coshXi * sin(eta), 0.25 + d)\n ];\n};\n\nexport default function() {\n return projection(augustRaw)\n .scale(66.1603);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/august.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, atan, cos, epsilon2, exp, halfPi, log, quarterPi, sign, sin, sqrt, sqrt2, tan} from \"./math.js\";\n\nvar sqrt8 = sqrt(8),\n phi0 = log(1 + sqrt2);\n\nexport function bakerRaw(lambda, phi) {\n var phi0 = abs(phi);\n return phi0 < quarterPi\n ? [lambda, log(tan(quarterPi + phi / 2))]\n : [lambda * cos(phi0) * (2 * sqrt2 - 1 / sin(phi0)), sign(phi) * (2 * sqrt2 * (phi0 - quarterPi) - log(tan(phi0 / 2)))];\n}\n\nbakerRaw.invert = function(x, y) {\n if ((y0 = abs(y)) < phi0) return [x, 2 * atan(exp(y)) - halfPi];\n var phi = quarterPi, i = 25, delta, y0;\n do {\n var cosPhi_2 = cos(phi / 2), tanPhi_2 = tan(phi / 2);\n phi -= delta = (sqrt8 * (phi - quarterPi) - log(tanPhi_2) - y0) / (sqrt8 - cosPhi_2 * cosPhi_2 / (2 * tanPhi_2));\n } while (abs(delta) > epsilon2 && --i > 0);\n return [x / (cos(phi) * (sqrt8 - 1 / sin(phi))), sign(y) * phi];\n};\n\nexport default function() {\n return projection(bakerRaw)\n .scale(112.314);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/baker.js","import {geoAzimuthalEqualAreaRaw as azimuthalEqualAreaRaw, geoProjectionMutator as projectionMutator} from \"d3-geo\";\nimport {asin, cos, sin} from \"./math.js\";\n\nexport function hammerRaw(A, B) {\n if (arguments.length < 2) B = A;\n if (B === 1) return azimuthalEqualAreaRaw;\n if (B === Infinity) return hammerQuarticAuthalicRaw;\n\n function forward(lambda, phi) {\n var coordinates = azimuthalEqualAreaRaw(lambda / B, phi);\n coordinates[0] *= A;\n return coordinates;\n }\n\n forward.invert = function(x, y) {\n var coordinates = azimuthalEqualAreaRaw.invert(x / A, y);\n coordinates[0] *= B;\n return coordinates;\n };\n\n return forward;\n}\n\nfunction hammerQuarticAuthalicRaw(lambda, phi) {\n return [\n lambda * cos(phi) / cos(phi /= 2),\n 2 * sin(phi)\n ];\n}\n\nhammerQuarticAuthalicRaw.invert = function(x, y) {\n var phi = 2 * asin(y / 2);\n return [\n x * cos(phi / 2) / cos(phi),\n phi\n ];\n};\n\nexport default function() {\n var B = 2,\n m = projectionMutator(hammerRaw),\n p = m(B);\n\n p.coefficient = function(_) {\n if (!arguments.length) return B;\n return m(B = +_);\n };\n\n return p\n .scale(169.529);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/hammer.js","import {abs, epsilon, epsilon2} from \"./math.js\";\n\n// Approximate Newton-Raphson\n// Solve f(x) = y, start from x\nexport function solve(f, y, x) {\n var steps = 100, delta, f0, f1;\n x = x === undefined ? 0 : +x;\n y = +y;\n do {\n f0 = f(x);\n f1 = f(x + epsilon);\n if (f0 === f1) f1 = f0 + epsilon;\n x -= delta = (-1 * epsilon * (f0 - y)) / (f0 - f1);\n } while (steps-- > 0 && abs(delta) > epsilon);\n return steps < 0 ? NaN : x;\n}\n\n// Approximate Newton-Raphson in 2D\n// Solve f(a,b) = [x,y]\nexport function solve2d(f, MAX_ITERATIONS, eps) {\n if (MAX_ITERATIONS === undefined) MAX_ITERATIONS = 40;\n if (eps === undefined) eps = epsilon2;\n return function(x, y, a, b) {\n var err2, da, db;\n a = a === undefined ? 0 : +a;\n b = b === undefined ? 0 : +b;\n for (var i = 0; i < MAX_ITERATIONS; i++) {\n var p = f(a, b),\n // diffs\n tx = p[0] - x,\n ty = p[1] - y;\n if (abs(tx) < eps && abs(ty) < eps) break; // we're there!\n\n // backtrack if we overshot\n var h = tx * tx + ty * ty;\n if (h > err2) {\n a -= da /= 2;\n b -= db /= 2;\n continue;\n }\n err2 = h;\n\n // partial derivatives\n var ea = (a > 0 ? -1 : 1) * eps,\n eb = (b > 0 ? -1 : 1) * eps,\n pa = f(a + ea, b),\n pb = f(a, b + eb),\n dxa = (pa[0] - p[0]) / ea,\n dya = (pa[1] - p[1]) / ea,\n dxb = (pb[0] - p[0]) / eb,\n dyb = (pb[1] - p[1]) / eb,\n // determinant\n D = dyb * dxa - dya * dxb,\n // newton step — or half-step for small D\n l = (abs(D) < 0.5 ? 0.5 : 1) / D;\n da = (ty * dxb - tx * dyb) * l;\n db = (tx * dya - ty * dxa) * l;\n a += da;\n b += db;\n if (abs(da) < eps && abs(db) < eps) break; // we're crawling\n }\n return [a, b];\n };\n}\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/newton.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, asin, cos, epsilon, halfPi, pi, sin, sqrt2} from \"./math.js\";\n\nexport function mollweideBromleyTheta(cp, phi) {\n var cpsinPhi = cp * sin(phi), i = 30, delta;\n do phi -= delta = (phi + sin(phi) - cpsinPhi) / (1 + cos(phi));\n while (abs(delta) > epsilon && --i > 0);\n return phi / 2;\n}\n\nexport function mollweideBromleyRaw(cx, cy, cp) {\n\n function forward(lambda, phi) {\n return [cx * lambda * cos(phi = mollweideBromleyTheta(cp, phi)), cy * sin(phi)];\n }\n\n forward.invert = function(x, y) {\n return y = asin(y / cy), [x / (cx * cos(y)), asin((2 * y + sin(2 * y)) / cp)];\n };\n\n return forward;\n}\n\nexport var mollweideRaw = mollweideBromleyRaw(sqrt2 / halfPi, sqrt2, pi);\n\nexport default function() {\n return projection(mollweideRaw)\n .scale(169.529);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/mollweide.js","import {geoProjection as projection} from \"d3-geo\";\nimport {mollweideBromleyTheta} from \"./mollweide.js\";\nimport {abs, cos, epsilon, pi, quarterPi, sin, sqrt2} from \"./math.js\";\n\nvar k = 2.00276,\n w = 1.11072;\n\nexport function boggsRaw(lambda, phi) {\n var theta = mollweideBromleyTheta(pi, phi);\n return [k * lambda / (1 / cos(phi) + w / cos(theta)), (phi + sqrt2 * sin(theta)) / k];\n}\n\nboggsRaw.invert = function(x, y) {\n var ky = k * y, theta = y < 0 ? -quarterPi : quarterPi, i = 25, delta, phi;\n do {\n phi = ky - sqrt2 * sin(theta);\n theta -= delta = (sin(2 * theta) + 2 * theta - pi * sin(phi)) / (2 * cos(2 * theta) + 2 + pi * cos(phi) * sqrt2 * cos(theta));\n } while (abs(delta) > epsilon && --i > 0);\n phi = ky - sqrt2 * sin(theta);\n return [x * (1 / cos(phi) + w / cos(theta)) / k, phi];\n};\n\nexport default function() {\n return projection(boggsRaw)\n .scale(160.857);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/boggs.js","import {geoProjection as projection} from \"d3-geo\";\nimport {cos} from \"./math.js\";\n\nexport function sinusoidalRaw(lambda, phi) {\n return [lambda * cos(phi), phi];\n}\n\nsinusoidalRaw.invert = function(x, y) {\n return [x / cos(y), y];\n};\n\nexport default function() {\n return projection(sinusoidalRaw)\n .scale(152.63);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/sinusoidal.js","import {geoProjection as projection} from \"d3-geo\";\nimport {pi} from \"./math.js\";\nimport {mollweideBromleyRaw} from \"./mollweide.js\";\n\nexport var bromleyRaw = mollweideBromleyRaw(1, 4 / pi, pi);\n\nexport default function() {\n return projection(bromleyRaw)\n .scale(152.63);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/bromley.js","import {geoProjection as projection} from \"d3-geo\";\nimport {asin, pi, sin, sqrt, sqrtPi} from \"./math.js\";\n\nexport function collignonRaw(lambda, phi) {\n var alpha = sqrt(1 - sin(phi));\n return [(2 / sqrtPi) * lambda * alpha, sqrtPi * (1 - alpha)];\n}\n\ncollignonRaw.invert = function(x, y) {\n var lambda = (lambda = y / sqrtPi - 1) * lambda;\n return [lambda > 0 ? x * sqrt(pi / lambda) / 2 : 0, asin(1 - lambda)];\n};\n\nexport default function() {\n return projection(collignonRaw)\n .scale(95.6464)\n .center([0, 30]);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/collignon.js","import {asin, atan2, cos, sin, sqrt, tan} from \"./math.js\";\nimport parallel1 from \"./parallel1.js\";\n\nexport function craigRaw(phi0) {\n var tanPhi0 = tan(phi0);\n\n function forward(lambda, phi) {\n return [lambda, (lambda ? lambda / sin(lambda) : 1) * (sin(phi) * cos(lambda) - tanPhi0 * cos(phi))];\n }\n\n forward.invert = tanPhi0 ? function(x, y) {\n if (x) y *= sin(x) / x;\n var cosLambda = cos(x);\n return [x, 2 * atan2(sqrt(cosLambda * cosLambda + tanPhi0 * tanPhi0 - y * y) - cosLambda, tanPhi0 - y)];\n } : function(x, y) {\n return [x, asin(x ? y * tan(x) / x : y)];\n };\n\n return forward;\n}\n\nexport default function() {\n return parallel1(craigRaw)\n .scale(249.828)\n .clipAngle(90);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/craig.js","import {geoProjection as projection} from \"d3-geo\";\nimport {asin, cos, sin, sqrt, sqrtPi} from \"./math.js\";\n\nvar sqrt3 = sqrt(3);\n\nexport function crasterRaw(lambda, phi) {\n return [sqrt3 * lambda * (2 * cos(2 * phi / 3) - 1) / sqrtPi, sqrt3 * sqrtPi * sin(phi / 3)];\n}\n\ncrasterRaw.invert = function(x, y) {\n var phi = 3 * asin(y / (sqrt3 * sqrtPi));\n return [sqrtPi * x / (sqrt3 * (2 * cos(2 * phi / 3) - 1)), phi];\n};\n\nexport default function() {\n return projection(crasterRaw)\n .scale(156.19);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/craster.js","import {asin, cos, sin} from \"./math.js\";\nimport parallel1 from \"./parallel1.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n\nexport default function() {\n return parallel1(cylindricalEqualAreaRaw)\n .parallel(38.58) // acos(sqrt(width / height / pi)) * radians\n .scale(195.044); // width / (sqrt(width / height / pi) * 2 * pi)\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/cylindricalEqualArea.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, pi, sqrt} from \"./math.js\";\n\nexport function eckert1Raw(lambda, phi) {\n var alpha = sqrt(8 / (3 * pi));\n return [\n alpha * lambda * (1 - abs(phi) / pi),\n alpha * phi\n ];\n}\n\neckert1Raw.invert = function(x, y) {\n var alpha = sqrt(8 / (3 * pi)),\n phi = y / alpha;\n return [\n x / (alpha * (1 - abs(phi) / pi)),\n phi\n ];\n};\n\nexport default function() {\n return projection(eckert1Raw)\n .scale(165.664);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/eckert1.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, asin, pi, sign, sin, sqrt} from \"./math.js\";\n\nexport function eckert2Raw(lambda, phi) {\n var alpha = sqrt(4 - 3 * sin(abs(phi)));\n return [\n 2 / sqrt(6 * pi) * lambda * alpha,\n sign(phi) * sqrt(2 * pi / 3) * (2 - alpha)\n ];\n}\n\neckert2Raw.invert = function(x, y) {\n var alpha = 2 - abs(y) / sqrt(2 * pi / 3);\n return [\n x * sqrt(6 * pi) / (2 * alpha),\n sign(y) * asin((4 - alpha * alpha) / 3)\n ];\n};\n\nexport default function() {\n return projection(eckert2Raw)\n .scale(165.664);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/eckert2.js","import {geoProjection as projection} from \"d3-geo\";\nimport {pi, sqrt} from \"./math.js\";\n\nexport function eckert3Raw(lambda, phi) {\n var k = sqrt(pi * (4 + pi));\n return [\n 2 / k * lambda * (1 + sqrt(1 - 4 * phi * phi / (pi * pi))),\n 4 / k * phi\n ];\n}\n\neckert3Raw.invert = function(x, y) {\n var k = sqrt(pi * (4 + pi)) / 2;\n return [\n x * k / (1 + sqrt(1 - y * y * (4 + pi) / (4 * pi))),\n y * k / 2\n ];\n};\n\nexport default function() {\n return projection(eckert3Raw)\n .scale(180.739);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/eckert3.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, asin, cos, epsilon, halfPi, pi, sin, sqrt} from \"./math.js\";\n\nexport function eckert4Raw(lambda, phi) {\n var k = (2 + halfPi) * sin(phi);\n phi /= 2;\n for (var i = 0, delta = Infinity; i < 10 && abs(delta) > epsilon; i++) {\n var cosPhi = cos(phi);\n phi -= delta = (phi + sin(phi) * (cosPhi + 2) - k) / (2 * cosPhi * (1 + cosPhi));\n }\n return [\n 2 / sqrt(pi * (4 + pi)) * lambda * (1 + cos(phi)),\n 2 * sqrt(pi / (4 + pi)) * sin(phi)\n ];\n}\n\neckert4Raw.invert = function(x, y) {\n var A = y * sqrt((4 + pi) / pi) / 2,\n k = asin(A),\n c = cos(k);\n return [\n x / (2 / sqrt(pi * (4 + pi)) * (1 + c)),\n asin((k + A * (c + 2)) / (2 + halfPi))\n ];\n};\n\nexport default function() {\n return projection(eckert4Raw)\n .scale(180.739);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/eckert4.js","import {geoProjection as projection} from \"d3-geo\";\nimport {cos, pi, sqrt} from \"./math.js\";\n\nexport function eckert5Raw(lambda, phi) {\n return [\n lambda * (1 + cos(phi)) / sqrt(2 + pi),\n 2 * phi / sqrt(2 + pi)\n ];\n}\n\neckert5Raw.invert = function(x, y) {\n var k = sqrt(2 + pi),\n phi = y * k / 2;\n return [\n k * x / (1 + cos(phi)),\n phi\n ];\n};\n\nexport default function() {\n return projection(eckert5Raw)\n .scale(173.044);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/eckert5.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, asin, cos, epsilon, halfPi, pi, sin, sqrt} from \"./math.js\";\n\nexport function eckert6Raw(lambda, phi) {\n var k = (1 + halfPi) * sin(phi);\n for (var i = 0, delta = Infinity; i < 10 && abs(delta) > epsilon; i++) {\n phi -= delta = (phi + sin(phi) - k) / (1 + cos(phi));\n }\n k = sqrt(2 + pi);\n return [\n lambda * (1 + cos(phi)) / k,\n 2 * phi / k\n ];\n}\n\neckert6Raw.invert = function(x, y) {\n var j = 1 + halfPi,\n k = sqrt(j / 2);\n return [\n x * 2 * k / (1 + cos(y *= k)),\n asin((y + sin(y)) / j)\n ];\n};\n\nexport default function() {\n return projection(eckert6Raw)\n .scale(173.044);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/eckert6.js","import {geoProjection as projection} from \"d3-geo\";\nimport {augustRaw} from \"./august.js\";\nimport {abs, atan, cos, epsilon, halfPi, log, max, min, sin, sqrt, sqrt1_2, sqrt2} from \"./math.js\";\n\nvar eisenlohrK = 3 + 2 * sqrt2;\n\nexport function eisenlohrRaw(lambda, phi) {\n var s0 = sin(lambda /= 2),\n c0 = cos(lambda),\n k = sqrt(cos(phi)),\n c1 = cos(phi /= 2),\n t = sin(phi) / (c1 + sqrt2 * c0 * k),\n c = sqrt(2 / (1 + t * t)),\n v = sqrt((sqrt2 * c1 + (c0 + s0) * k) / (sqrt2 * c1 + (c0 - s0) * k));\n return [\n eisenlohrK * (c * (v - 1 / v) - 2 * log(v)),\n eisenlohrK * (c * t * (v + 1 / v) - 2 * atan(t))\n ];\n}\n\neisenlohrRaw.invert = function(x, y) {\n if (!(p = augustRaw.invert(x / 1.2, y * 1.065))) return null;\n var lambda = p[0], phi = p[1], i = 20, p;\n x /= eisenlohrK, y /= eisenlohrK;\n do {\n var _0 = lambda / 2,\n _1 = phi / 2,\n s0 = sin(_0),\n c0 = cos(_0),\n s1 = sin(_1),\n c1 = cos(_1),\n cos1 = cos(phi),\n k = sqrt(cos1),\n t = s1 / (c1 + sqrt2 * c0 * k),\n t2 = t * t,\n c = sqrt(2 / (1 + t2)),\n v0 = (sqrt2 * c1 + (c0 + s0) * k),\n v1 = (sqrt2 * c1 + (c0 - s0) * k),\n v2 = v0 / v1,\n v = sqrt(v2),\n vm1v = v - 1 / v,\n vp1v = v + 1 / v,\n fx = c * vm1v - 2 * log(v) - x,\n fy = c * t * vp1v - 2 * atan(t) - y,\n deltatDeltaLambda = s1 && sqrt1_2 * k * s0 * t2 / s1,\n deltatDeltaPhi = (sqrt2 * c0 * c1 + k) / (2 * (c1 + sqrt2 * c0 * k) * (c1 + sqrt2 * c0 * k) * k),\n deltacDeltat = -0.5 * t * c * c * c,\n deltacDeltaLambda = deltacDeltat * deltatDeltaLambda,\n deltacDeltaPhi = deltacDeltat * deltatDeltaPhi,\n A = (A = 2 * c1 + sqrt2 * k * (c0 - s0)) * A * v,\n deltavDeltaLambda = (sqrt2 * c0 * c1 * k + cos1) / A,\n deltavDeltaPhi = -(sqrt2 * s0 * s1) / (k * A),\n deltaxDeltaLambda = vm1v * deltacDeltaLambda - 2 * deltavDeltaLambda / v + c * (deltavDeltaLambda + deltavDeltaLambda / v2),\n deltaxDeltaPhi = vm1v * deltacDeltaPhi - 2 * deltavDeltaPhi / v + c * (deltavDeltaPhi + deltavDeltaPhi / v2),\n deltayDeltaLambda = t * vp1v * deltacDeltaLambda - 2 * deltatDeltaLambda / (1 + t2) + c * vp1v * deltatDeltaLambda + c * t * (deltavDeltaLambda - deltavDeltaLambda / v2),\n deltayDeltaPhi = t * vp1v * deltacDeltaPhi - 2 * deltatDeltaPhi / (1 + t2) + c * vp1v * deltatDeltaPhi + c * t * (deltavDeltaPhi - deltavDeltaPhi / v2),\n denominator = deltaxDeltaPhi * deltayDeltaLambda - deltayDeltaPhi * deltaxDeltaLambda;\n if (!denominator) break;\n var deltaLambda = (fy * deltaxDeltaPhi - fx * deltayDeltaPhi) / denominator,\n deltaPhi = (fx * deltayDeltaLambda - fy * deltaxDeltaLambda) / denominator;\n lambda -= deltaLambda;\n phi = max(-halfPi, min(halfPi, phi - deltaPhi));\n } while ((abs(deltaLambda) > epsilon || abs(deltaPhi) > epsilon) && --i > 0);\n return abs(abs(phi) - halfPi) < epsilon ? [0, phi] : i && [lambda, phi];\n};\n\nexport default function() {\n return projection(eisenlohrRaw)\n .scale(62.5271);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/eisenlohr.js","import {geoProjection as projection} from \"d3-geo\";\nimport {atan, cos, radians, sqrt, tan} from \"./math.js\";\n\nvar faheyK = cos(35 * radians);\n\nexport function faheyRaw(lambda, phi) {\n var t = tan(phi / 2);\n return [lambda * faheyK * sqrt(1 - t * t), (1 + faheyK) * t];\n}\n\nfaheyRaw.invert = function(x, y) {\n var t = y / (1 + faheyK);\n return [x && x / (faheyK * sqrt(1 - t * t)), 2 * atan(t)];\n};\n\nexport default function() {\n return projection(faheyRaw)\n .scale(137.152);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/fahey.js","import {geoProjection as projection} from \"d3-geo\";\nimport {atan, cos, sqrtPi, tan} from \"./math.js\";\n\nexport function foucautRaw(lambda, phi) {\n var k = phi / 2, cosk = cos(k);\n return [ 2 * lambda / sqrtPi * cos(phi) * cosk * cosk, sqrtPi * tan(k)];\n}\n\nfoucautRaw.invert = function(x, y) {\n var k = atan(y / sqrtPi), cosk = cos(k), phi = 2 * k;\n return [x * sqrtPi / 2 / (cos(phi) * cosk * cosk), phi];\n};\n\nexport default function() {\n return projection(foucautRaw)\n .scale(135.264);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/foucaut.js","import {geoAzimuthalEquidistantRaw as azimuthalEquidistantRaw, geoProjectionMutator as projectionMutator} from \"d3-geo\";\nimport {abs, asin, atan2, cos, degrees, epsilon, epsilon2, halfPi, pi, radians, round, sin, sqrt} from \"./math.js\";\n\nexport function gingeryRaw(rho, n) {\n var k = 2 * pi / n,\n rho2 = rho * rho;\n\n function forward(lambda, phi) {\n var p = azimuthalEquidistantRaw(lambda, phi),\n x = p[0],\n y = p[1],\n r2 = x * x + y * y;\n\n if (r2 > rho2) {\n var r = sqrt(r2),\n theta = atan2(y, x),\n theta0 = k * round(theta / k),\n alpha = theta - theta0,\n rhoCosAlpha = rho * cos(alpha),\n k_ = (rho * sin(alpha) - alpha * sin(rhoCosAlpha)) / (halfPi - rhoCosAlpha),\n s_ = gingeryLength(alpha, k_),\n e = (pi - rho) / gingeryIntegrate(s_, rhoCosAlpha, pi);\n\n x = r;\n var i = 50, delta;\n do {\n x -= delta = (rho + gingeryIntegrate(s_, rhoCosAlpha, x) * e - r) / (s_(x) * e);\n } while (abs(delta) > epsilon && --i > 0);\n\n y = alpha * sin(x);\n if (x < halfPi) y -= k_ * (x - halfPi);\n\n var s = sin(theta0),\n c = cos(theta0);\n p[0] = x * c - y * s;\n p[1] = x * s + y * c;\n }\n return p;\n }\n\n forward.invert = function(x, y) {\n var r2 = x * x + y * y;\n if (r2 > rho2) {\n var r = sqrt(r2),\n theta = atan2(y, x),\n theta0 = k * round(theta / k),\n dTheta = theta - theta0;\n\n x = r * cos(dTheta);\n y = r * sin(dTheta);\n\n var x_halfPi = x - halfPi,\n sinx = sin(x),\n alpha = y / sinx,\n delta = x < halfPi ? Infinity : 0,\n i = 10;\n\n while (true) {\n var rhosinAlpha = rho * sin(alpha),\n rhoCosAlpha = rho * cos(alpha),\n sinRhoCosAlpha = sin(rhoCosAlpha),\n halfPi_RhoCosAlpha = halfPi - rhoCosAlpha,\n k_ = (rhosinAlpha - alpha * sinRhoCosAlpha) / halfPi_RhoCosAlpha,\n s_ = gingeryLength(alpha, k_);\n\n if (abs(delta) < epsilon2 || !--i) break;\n\n alpha -= delta = (alpha * sinx - k_ * x_halfPi - y) / (\n sinx - x_halfPi * 2 * (\n halfPi_RhoCosAlpha * (rhoCosAlpha + alpha * rhosinAlpha * cos(rhoCosAlpha) - sinRhoCosAlpha) -\n rhosinAlpha * (rhosinAlpha - alpha * sinRhoCosAlpha)\n ) / (halfPi_RhoCosAlpha * halfPi_RhoCosAlpha));\n }\n r = rho + gingeryIntegrate(s_, rhoCosAlpha, x) * (pi - rho) / gingeryIntegrate(s_, rhoCosAlpha, pi);\n theta = theta0 + alpha;\n x = r * cos(theta);\n y = r * sin(theta);\n }\n return azimuthalEquidistantRaw.invert(x, y);\n };\n\n return forward;\n}\n\nfunction gingeryLength(alpha, k) {\n return function(x) {\n var y_ = alpha * cos(x);\n if (x < halfPi) y_ -= k;\n return sqrt(1 + y_ * y_);\n };\n}\n\n// Numerical integration: trapezoidal rule.\nfunction gingeryIntegrate(f, a, b) {\n var n = 50,\n h = (b - a) / n,\n s = f(a) + f(b);\n for (var i = 1, x = a; i < n; ++i) s += 2 * f(x += h);\n return s * 0.5 * h;\n}\n\nexport default function() {\n var n = 6,\n rho = 30 * radians,\n cRho = cos(rho),\n sRho = sin(rho),\n m = projectionMutator(gingeryRaw),\n p = m(rho, n),\n stream_ = p.stream,\n epsilon = 1e-2,\n cr = -cos(epsilon * radians),\n sr = sin(epsilon * radians);\n\n p.radius = function(_) {\n if (!arguments.length) return rho * degrees;\n cRho = cos(rho = _ * radians);\n sRho = sin(rho);\n return m(rho, n);\n };\n\n p.lobes = function(_) {\n if (!arguments.length) return n;\n return m(rho, n = +_);\n };\n\n p.stream = function(stream) {\n var rotate = p.rotate(),\n rotateStream = stream_(stream),\n sphereStream = (p.rotate([0, 0]), stream_(stream));\n p.rotate(rotate);\n rotateStream.sphere = function() {\n sphereStream.polygonStart(), sphereStream.lineStart();\n for (var i = 0, delta = 2 * pi / n, phi = 0; i < n; ++i, phi -= delta) {\n sphereStream.point(atan2(sr * cos(phi), cr) * degrees, asin(sr * sin(phi)) * degrees);\n sphereStream.point(atan2(sRho * cos(phi - delta / 2), cRho) * degrees, asin(sRho * sin(phi - delta / 2)) * degrees);\n }\n sphereStream.lineEnd(), sphereStream.polygonEnd();\n };\n return rotateStream;\n };\n\n return p\n .rotate([90, -40])\n .scale(91.7095)\n .clipAngle(180 - 1e-3);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/gingery.js","import {abs, asin, cos, epsilon, pi, sin, sqrt} from \"./math.js\";\n\nexport default function(a, b, c, d, e, f, g, h) {\n if (arguments.length < 8) h = 0;\n\n function forward(lambda, phi) {\n if (!phi) return [a * lambda / pi, 0];\n var phi2 = phi * phi,\n xB = a + phi2 * (b + phi2 * (c + phi2 * d)),\n yB = phi * (e - 1 + phi2 * (f - h + phi2 * g)),\n m = (xB * xB + yB * yB) / (2 * yB),\n alpha = lambda * asin(xB / m) / pi;\n return [m * sin(alpha), phi * (1 + phi2 * h) + m * (1 - cos(alpha))];\n }\n\n forward.invert = function(x, y) {\n var lambda = pi * x / a,\n phi = y,\n deltaLambda, deltaPhi, i = 50;\n do {\n var phi2 = phi * phi,\n xB = a + phi2 * (b + phi2 * (c + phi2 * d)),\n yB = phi * (e - 1 + phi2 * (f - h + phi2 * g)),\n p = xB * xB + yB * yB,\n q = 2 * yB,\n m = p / q,\n m2 = m * m,\n dAlphadLambda = asin(xB / m) / pi,\n alpha = lambda * dAlphadLambda,\n xB2 = xB * xB,\n dxBdPhi = (2 * b + phi2 * (4 * c + phi2 * 6 * d)) * phi,\n dyBdPhi = e + phi2 * (3 * f + phi2 * 5 * g),\n dpdPhi = 2 * (xB * dxBdPhi + yB * (dyBdPhi - 1)),\n dqdPhi = 2 * (dyBdPhi - 1),\n dmdPhi = (dpdPhi * q - p * dqdPhi) / (q * q),\n cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n mcosAlpha = m * cosAlpha,\n msinAlpha = m * sinAlpha,\n dAlphadPhi = ((lambda / pi) * (1 / sqrt(1 - xB2 / m2)) * (dxBdPhi * m - xB * dmdPhi)) / m2,\n fx = msinAlpha - x,\n fy = phi * (1 + phi2 * h) + m - mcosAlpha - y,\n deltaxDeltaPhi = dmdPhi * sinAlpha + mcosAlpha * dAlphadPhi,\n deltaxDeltaLambda = mcosAlpha * dAlphadLambda,\n deltayDeltaPhi = 1 + dmdPhi - (dmdPhi * cosAlpha - msinAlpha * dAlphadPhi),\n deltayDeltaLambda = msinAlpha * dAlphadLambda,\n denominator = deltaxDeltaPhi * deltayDeltaLambda - deltayDeltaPhi * deltaxDeltaLambda;\n if (!denominator) break;\n lambda -= deltaLambda = (fy * deltaxDeltaPhi - fx * deltayDeltaPhi) / denominator;\n phi -= deltaPhi = (fx * deltayDeltaLambda - fy * deltaxDeltaLambda) / denominator;\n } while ((abs(deltaLambda) > epsilon || abs(deltaPhi) > epsilon) && --i > 0);\n return [lambda, phi];\n };\n\n return forward;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/ginzburgPolyconic.js","import {geoProjection as projection} from \"d3-geo\";\nimport ginzburgPolyconicRaw from \"./ginzburgPolyconic.js\";\n\nexport var ginzburg4Raw = ginzburgPolyconicRaw(2.8284, -1.6988, 0.75432, -0.18071, 1.76003, -0.38914, 0.042555);\n\nexport default function() {\n return projection(ginzburg4Raw)\n .scale(149.995);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/ginzburg4.js","import {geoProjection as projection} from \"d3-geo\";\nimport ginzburgPolyconicRaw from \"./ginzburgPolyconic.js\";\n\nexport var ginzburg5Raw = ginzburgPolyconicRaw(2.583819, -0.835827, 0.170354, -0.038094, 1.543313, -0.411435,0.082742);\n\nexport default function() {\n return projection(ginzburg5Raw)\n .scale(153.93);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/ginzburg5.js","import {geoProjection as projection} from \"d3-geo\";\nimport ginzburgPolyconicRaw from \"./ginzburgPolyconic.js\";\nimport {pi} from \"./math.js\";\n\nexport var ginzburg6Raw = ginzburgPolyconicRaw(5 / 6 * pi, -0.62636, -0.0344, 0, 1.3493, -0.05524, 0, 0.045);\n\nexport default function() {\n return projection(ginzburg6Raw)\n .scale(130.945);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/ginzburg6.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, epsilon} from \"./math.js\";\n\nexport function ginzburg8Raw(lambda, phi) {\n var lambda2 = lambda * lambda,\n phi2 = phi * phi;\n return [\n lambda * (1 - 0.162388 * phi2) * (0.87 - 0.000952426 * lambda2 * lambda2),\n phi * (1 + phi2 / 12)\n ];\n}\n\nginzburg8Raw.invert = function(x, y) {\n var lambda = x,\n phi = y,\n i = 50, delta;\n do {\n var phi2 = phi * phi;\n phi -= delta = (phi * (1 + phi2 / 12) - y) / (1 + phi2 / 4);\n } while (abs(delta) > epsilon && --i > 0);\n i = 50;\n x /= 1 -0.162388 * phi2;\n do {\n var lambda4 = (lambda4 = lambda * lambda) * lambda4;\n lambda -= delta = (lambda * (0.87 - 0.000952426 * lambda4) - x) / (0.87 - 0.00476213 * lambda4);\n } while (abs(delta) > epsilon && --i > 0);\n return [lambda, phi];\n};\n\nexport default function() {\n return projection(ginzburg8Raw)\n .scale(131.747);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/ginzburg8.js","import {geoProjection as projection} from \"d3-geo\";\nimport ginzburgPolyconicRaw from \"./ginzburgPolyconic.js\";\n\nexport var ginzburg9Raw = ginzburgPolyconicRaw(2.6516, -0.76534, 0.19123, -0.047094, 1.36289, -0.13965,0.031762);\n\nexport default function() {\n return projection(ginzburg9Raw)\n .scale(131.087);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/ginzburg9.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, asin, atan2, cos, sign, epsilon, epsilon2, halfPi, pi, sin, sqrt} from \"./math.js\";\nimport squareRaw from \"./square.js\";\n\nexport function gringortenRaw(lambda, phi) {\n var sLambda = sign(lambda),\n sPhi = sign(phi),\n cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(sPhi * phi);\n lambda = abs(atan2(y, z));\n phi = asin(x);\n if (abs(lambda - halfPi) > epsilon) lambda %= halfPi;\n var point = gringortenHexadecant(lambda > pi / 4 ? halfPi - lambda : lambda, phi);\n if (lambda > pi / 4) z = point[0], point[0] = -point[1], point[1] = -z;\n return (point[0] *= sLambda, point[1] *= -sPhi, point);\n}\n\ngringortenRaw.invert = function(x, y) {\n if (abs(x) > 1) x = sign(x) * 2 - x;\n if (abs(y) > 1) y = sign(y) * 2 - y;\n var sx = sign(x),\n sy = sign(y),\n x0 = -sx * x,\n y0 = -sy * y,\n t = y0 / x0 < 1,\n p = gringortenHexadecantInvert(t ? y0 : x0, t ? x0 : y0),\n lambda = p[0],\n phi = p[1],\n cosPhi = cos(phi);\n if (t) lambda = -halfPi - lambda;\n return [sx * (atan2(sin(lambda) * cosPhi, -sin(phi)) + pi), sy * asin(cos(lambda) * cosPhi)];\n};\n\nfunction gringortenHexadecant(lambda, phi) {\n if (phi === halfPi) return [0, 0];\n\n var sinPhi = sin(phi),\n r = sinPhi * sinPhi,\n r2 = r * r,\n j = 1 + r2,\n k = 1 + 3 * r2,\n q = 1 - r2,\n z = asin(1 / sqrt(j)),\n v = q + r * j * z,\n p2 = (1 - sinPhi) / v,\n p = sqrt(p2),\n a2 = p2 * j,\n a = sqrt(a2),\n h = p * q,\n x,\n i;\n\n if (lambda === 0) return [0, -(h + r * a)];\n\n var cosPhi = cos(phi),\n secPhi = 1 / cosPhi,\n drdPhi = 2 * sinPhi * cosPhi,\n dvdPhi = (-3 * r + z * k) * drdPhi,\n dp2dPhi = (-v * cosPhi - (1 - sinPhi) * dvdPhi) / (v * v),\n dpdPhi = (0.5 * dp2dPhi) / p,\n dhdPhi = q * dpdPhi - 2 * r * p * drdPhi,\n dra2dPhi = r * j * dp2dPhi + p2 * k * drdPhi,\n mu = -secPhi * drdPhi,\n nu = -secPhi * dra2dPhi,\n zeta = -2 * secPhi * dhdPhi,\n lambda1 = 4 * lambda / pi,\n delta;\n\n // Slower but accurate bisection method.\n if (lambda > 0.222 * pi || phi < pi / 4 && lambda > 0.175 * pi) {\n x = (h + r * sqrt(a2 * (1 + r2) - h * h)) / (1 + r2);\n if (lambda > pi / 4) return [x, x];\n var x1 = x, x0 = 0.5 * x;\n x = 0.5 * (x0 + x1), i = 50;\n do {\n var g = sqrt(a2 - x * x),\n f = (x * (zeta + mu * g) + nu * asin(x / a)) - lambda1;\n if (!f) break;\n if (f < 0) x0 = x;\n else x1 = x;\n x = 0.5 * (x0 + x1);\n } while (abs(x1 - x0) > epsilon && --i > 0);\n }\n\n // Newton-Raphson.\n else {\n x = epsilon, i = 25;\n do {\n var x2 = x * x,\n g2 = sqrt(a2 - x2),\n zetaMug = zeta + mu * g2,\n f2 = x * zetaMug + nu * asin(x / a) - lambda1,\n df = zetaMug + (nu - mu * x2) / g2;\n x -= delta = g2 ? f2 / df : 0;\n } while (abs(delta) > epsilon && --i > 0);\n }\n\n return [x, -h - r * sqrt(a2 - x * x)];\n}\n\nfunction gringortenHexadecantInvert(x, y) {\n var x0 = 0,\n x1 = 1,\n r = 0.5,\n i = 50;\n\n while (true) {\n var r2 = r * r,\n sinPhi = sqrt(r),\n z = asin(1 / sqrt(1 + r2)),\n v = (1 - r2) + r * (1 + r2) * z,\n p2 = (1 - sinPhi) / v,\n p = sqrt(p2),\n a2 = p2 * (1 + r2),\n h = p * (1 - r2),\n g2 = a2 - x * x,\n g = sqrt(g2),\n y0 = y + h + r * g;\n if (abs(x1 - x0) < epsilon2 || --i === 0 || y0 === 0) break;\n if (y0 > 0) x0 = r;\n else x1 = r;\n r = 0.5 * (x0 + x1);\n }\n\n if (!i) return null;\n\n var phi = asin(sinPhi),\n cosPhi = cos(phi),\n secPhi = 1 / cosPhi,\n drdPhi = 2 * sinPhi * cosPhi,\n dvdPhi = (-3 * r + z * (1 + 3 * r2)) * drdPhi,\n dp2dPhi = (-v * cosPhi - (1 - sinPhi) * dvdPhi) / (v * v),\n dpdPhi = 0.5 * dp2dPhi / p,\n dhdPhi = (1 - r2) * dpdPhi - 2 * r * p * drdPhi,\n zeta = -2 * secPhi * dhdPhi,\n mu = -secPhi * drdPhi,\n nu = -secPhi * (r * (1 + r2) * dp2dPhi + p2 * (1 + 3 * r2) * drdPhi);\n\n return [pi / 4 * (x * (zeta + mu * g) + nu * asin(x / sqrt(a2))), phi];\n}\n\nexport default function() {\n return projection(squareRaw(gringortenRaw))\n .scale(239.75);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/gringorten.js","import {abs, asin, atan, cos, cosh, epsilon, exp, halfPi, log, pi, pow, quarterPi, sign, sin, sinh, sqrt, tan, tanh} from \"./math.js\";\n\n// Returns [sn, cn, dn](u + iv|m).\nexport function ellipticJi(u, v, m) {\n var a, b, c;\n if (!u) {\n b = ellipticJ(v, 1 - m);\n return [\n [0, b[0] / b[1]],\n [1 / b[1], 0],\n [b[2] / b[1], 0]\n ];\n }\n a = ellipticJ(u, m);\n if (!v) return [[a[0], 0], [a[1], 0], [a[2], 0]];\n b = ellipticJ(v, 1 - m);\n c = b[1] * b[1] + m * a[0] * a[0] * b[0] * b[0];\n return [\n [a[0] * b[2] / c, a[1] * a[2] * b[0] * b[1] / c],\n [a[1] * b[1] / c, -a[0] * a[2] * b[0] * b[2] / c],\n [a[2] * b[1] * b[2] / c, -m * a[0] * a[1] * b[0] / c]\n ];\n}\n\n// Returns [sn, cn, dn, ph](u|m).\nexport function ellipticJ(u, m) {\n var ai, b, phi, t, twon;\n if (m < epsilon) {\n t = sin(u);\n b = cos(u);\n ai = m * (u - t * b) / 4;\n return [\n t - ai * b,\n b + ai * t,\n 1 - m * t * t / 2,\n u - ai\n ];\n }\n if (m >= 1 - epsilon) {\n ai = (1 - m) / 4;\n b = cosh(u);\n t = tanh(u);\n phi = 1 / b;\n twon = b * sinh(u);\n return [\n t + ai * (twon - u) / (b * b),\n phi - ai * t * phi * (twon - u),\n phi + ai * t * phi * (twon + u),\n 2 * atan(exp(u)) - halfPi + ai * (twon - u) / b\n ];\n }\n\n var a = [1, 0, 0, 0, 0, 0, 0, 0, 0],\n c = [sqrt(m), 0, 0, 0, 0, 0, 0, 0, 0],\n i = 0;\n b = sqrt(1 - m);\n twon = 1;\n\n while (abs(c[i] / a[i]) > epsilon && i < 8) {\n ai = a[i++];\n c[i] = (ai - b) / 2;\n a[i] = (ai + b) / 2;\n b = sqrt(ai * b);\n twon *= 2;\n }\n\n phi = twon * a[i] * u;\n do {\n t = c[i] * sin(b = phi) / a[i];\n phi = (asin(t) + phi) / 2;\n } while (--i);\n\n return [sin(phi), t = cos(phi), t / cos(phi - b), phi];\n}\n\n// Calculate F(phi+iPsi|m).\n// See Abramowitz and Stegun, 17.4.11.\nexport function ellipticFi(phi, psi, m) {\n var r = abs(phi),\n i = abs(psi),\n sinhPsi = sinh(i);\n if (r) {\n var cscPhi = 1 / sin(r),\n cotPhi2 = 1 / (tan(r) * tan(r)),\n b = -(cotPhi2 + m * (sinhPsi * sinhPsi * cscPhi * cscPhi) - 1 + m),\n c = (m - 1) * cotPhi2,\n cotLambda2 = (-b + sqrt(b * b - 4 * c)) / 2;\n return [\n ellipticF(atan(1 / sqrt(cotLambda2)), m) * sign(phi),\n ellipticF(atan(sqrt((cotLambda2 / cotPhi2 - 1) / m)), 1 - m) * sign(psi)\n ];\n }\n return [\n 0,\n ellipticF(atan(sinhPsi), 1 - m) * sign(psi)\n ];\n}\n\n// Calculate F(phi|m) where m = k² = sin²α.\n// See Abramowitz and Stegun, 17.6.7.\nexport function ellipticF(phi, m) {\n if (!m) return phi;\n if (m === 1) return log(tan(phi / 2 + quarterPi));\n var a = 1,\n b = sqrt(1 - m),\n c = sqrt(m);\n for (var i = 0; abs(c) > epsilon; i++) {\n if (phi % pi) {\n var dPhi = atan(b * tan(phi) / a);\n if (dPhi < 0) dPhi += pi;\n phi += dPhi + ~~(phi / pi) * pi;\n } else phi += phi;\n c = (a + b) / 2;\n b = sqrt(a * b);\n c = ((a = c) - b) / 2;\n }\n return phi / (pow(2, i) * a);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/elliptic.js","import {geoProjection as projection} from \"d3-geo\";\nimport {ellipticF, ellipticFi, ellipticJi} from \"./elliptic.js\";\nimport {abs, atan, atan2, cos, exp, halfPi, log, pi, sin, sqrt, sqrt2, tan} from \"./math.js\";\nimport squareRaw from \"./square.js\";\n\nexport function guyouRaw(lambda, phi) {\n var k_ = (sqrt2 - 1) / (sqrt2 + 1),\n k = sqrt(1 - k_ * k_),\n K = ellipticF(halfPi, k * k),\n f = -1,\n psi = log(tan(pi / 4 + abs(phi) / 2)),\n r = exp(f * psi) / sqrt(k_),\n at = guyouComplexAtan(r * cos(f * lambda), r * sin(f * lambda)),\n t = ellipticFi(at[0], at[1], k * k);\n return [-t[1], (phi >= 0 ? 1 : -1) * (0.5 * K - t[0])];\n}\n\nfunction guyouComplexAtan(x, y) {\n var x2 = x * x,\n y_1 = y + 1,\n t = 1 - x2 - y * y;\n return [\n 0.5 * ((x >= 0 ? halfPi : -halfPi) - atan2(t, 2 * x)),\n -0.25 * log(t * t + 4 * x2) +0.5 * log(y_1 * y_1 + x2)\n ];\n}\n\nfunction guyouComplexDivide(a, b) {\n var denominator = b[0] * b[0] + b[1] * b[1];\n return [\n (a[0] * b[0] + a[1] * b[1]) / denominator,\n (a[1] * b[0] - a[0] * b[1]) / denominator\n ];\n}\n\nguyouRaw.invert = function(x, y) {\n var k_ = (sqrt2 - 1) / (sqrt2 + 1),\n k = sqrt(1 - k_ * k_),\n K = ellipticF(halfPi, k * k),\n f = -1,\n j = ellipticJi(0.5 * K - y, -x, k * k),\n tn = guyouComplexDivide(j[0], j[1]),\n lambda = atan2(tn[1], tn[0]) / f;\n return [\n lambda,\n 2 * atan(exp(0.5 / f * log(k_ * tn[0] * tn[0] + k_ * tn[1] * tn[1]))) - halfPi\n ];\n};\n\nexport default function() {\n return projection(squareRaw(guyouRaw))\n .scale(151.496);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/guyou.js","import {range} from \"d3-array\";\nimport {geoStream, geoProjectionMutator as projectionMutator} from \"d3-geo\";\nimport {collignonRaw} from \"./collignon.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\nimport {abs, asin, degrees, epsilon, floor, max, min, pi, radians, sqrtPi, tau} from \"./math.js\";\n\nvar K = 3,\n healpixParallel = asin(1 - 1 / K) * degrees,\n healpixLambert = cylindricalEqualAreaRaw(0);\n\nexport function healpixRaw(H) {\n var phi0 = healpixParallel * radians,\n dx = collignonRaw(pi, phi0)[0] - collignonRaw(-pi, phi0)[0],\n y0 = healpixLambert(0, phi0)[1],\n y1 = collignonRaw(0, phi0)[1],\n dy1 = sqrtPi - y1,\n k = tau / H,\n w = 4 / tau,\n h = y0 + (dy1 * dy1 * 4) / tau;\n\n function forward(lambda, phi) {\n var point,\n phi2 = abs(phi);\n if (phi2 > phi0) {\n var i = min(H - 1, max(0, floor((lambda + pi) / k)));\n lambda += pi * (H - 1) / H - i * k;\n point = collignonRaw(lambda, phi2);\n point[0] = point[0] * tau / dx - tau * (H - 1) / (2 * H) + i * tau / H;\n point[1] = y0 + (point[1] - y1) * 4 * dy1 / tau;\n if (phi < 0) point[1] = -point[1];\n } else {\n point = healpixLambert(lambda, phi);\n }\n point[0] *= w, point[1] /= h;\n return point;\n }\n\n forward.invert = function(x, y) {\n x /= w, y *= h;\n var y2 = abs(y);\n if (y2 > y0) {\n var i = min(H - 1, max(0, floor((x + pi) / k)));\n x = (x + pi * (H - 1) / H - i * k) * dx / tau;\n var point = collignonRaw.invert(x, 0.25 * (y2 - y0) * tau / dy1 + y1);\n point[0] -= pi * (H - 1) / H - i * k;\n if (y < 0) point[1] = -point[1];\n return point;\n }\n return healpixLambert.invert(x, y);\n };\n\n return forward;\n}\n\nfunction sphereTop(x, i) {\n return [x, i & 1 ? 90 - epsilon : healpixParallel];\n}\n\nfunction sphereBottom(x, i) {\n return [x, i & 1 ? -90 + epsilon : -healpixParallel];\n}\n\nfunction sphereNudge(d) {\n return [d[0] * (1 - epsilon), d[1]];\n}\n\nfunction sphere(step) {\n var c = [].concat(\n range(-180, 180 + step / 2, step).map(sphereTop),\n range(180, -180 - step / 2, -step).map(sphereBottom)\n );\n return {\n type: \"Polygon\",\n coordinates: [step === 180 ? c.map(sphereNudge) : c]\n };\n}\n\nexport default function() {\n var H = 4,\n m = projectionMutator(healpixRaw),\n p = m(H),\n stream_ = p.stream;\n\n p.lobes = function(_) {\n return arguments.length ? m(H = +_) : H;\n };\n\n p.stream = function(stream) {\n var rotate = p.rotate(),\n rotateStream = stream_(stream),\n sphereStream = (p.rotate([0, 0]), stream_(stream));\n p.rotate(rotate);\n rotateStream.sphere = function() { geoStream(sphere(180 / H), sphereStream); };\n return rotateStream;\n };\n\n return p\n .scale(239.75);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/healpix.js","import {geoProjectionMutator as projectionMutator} from \"d3-geo\";\nimport {abs, acos, asin, atan2, cos, epsilon2, halfPi, pi, sin, sqrt} from \"./math.js\";\n\nexport function hillRaw(K) {\n var L = 1 + K,\n sinBt = sin(1 / L),\n Bt = asin(sinBt),\n A = 2 * sqrt(pi / (B = pi + 4 * Bt * L)),\n B,\n rho0 = 0.5 * A * (L + sqrt(K * (2 + K))),\n K2 = K * K,\n L2 = L * L;\n\n function forward(lambda, phi) {\n var t = 1 - sin(phi),\n rho,\n omega;\n if (t && t < 2) {\n var theta = halfPi - phi, i = 25, delta;\n do {\n var sinTheta = sin(theta),\n cosTheta = cos(theta),\n Bt_Bt1 = Bt + atan2(sinTheta, L - cosTheta),\n C = 1 + L2 - 2 * L * cosTheta;\n theta -= delta = (theta - K2 * Bt - L * sinTheta + C * Bt_Bt1 -0.5 * t * B) / (2 * L * sinTheta * Bt_Bt1);\n } while (abs(delta) > epsilon2 && --i > 0);\n rho = A * sqrt(C);\n omega = lambda * Bt_Bt1 / pi;\n } else {\n rho = A * (K + t);\n omega = lambda * Bt / pi;\n }\n return [\n rho * sin(omega),\n rho0 - rho * cos(omega)\n ];\n }\n\n forward.invert = function(x, y) {\n var rho2 = x * x + (y -= rho0) * y,\n cosTheta = (1 + L2 - rho2 / (A * A)) / (2 * L),\n theta = acos(cosTheta),\n sinTheta = sin(theta),\n Bt_Bt1 = Bt + atan2(sinTheta, L - cosTheta);\n return [\n asin(x / sqrt(rho2)) * pi / Bt_Bt1,\n asin(1 - 2 * (theta - K2 * Bt - L * sinTheta + (1 + L2 - 2 * L * cosTheta) * Bt_Bt1) / B)\n ];\n };\n\n return forward;\n}\n\nexport default function() {\n var K = 1,\n m = projectionMutator(hillRaw),\n p = m(K);\n\n p.ratio = function(_) {\n return arguments.length ? m(K = +_) : K;\n };\n\n return p\n .scale(167.774)\n .center([0, 18.67]);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/hill.js","import {geoProjection as projection} from \"d3-geo\";\nimport {mollweideRaw} from \"./mollweide.js\";\nimport {sinusoidalRaw} from \"./sinusoidal.js\";\n\nexport var sinuMollweidePhi = 0.7109889596207567;\n\nexport var sinuMollweideY = 0.0528035274542;\n\nexport function sinuMollweideRaw(lambda, phi) {\n return phi > -sinuMollweidePhi\n ? (lambda = mollweideRaw(lambda, phi), lambda[1] += sinuMollweideY, lambda)\n : sinusoidalRaw(lambda, phi);\n}\n\nsinuMollweideRaw.invert = function(x, y) {\n return y > -sinuMollweidePhi\n ? mollweideRaw.invert(x, y - sinuMollweideY)\n : sinusoidalRaw.invert(x, y);\n};\n\nexport default function() {\n return projection(sinuMollweideRaw)\n .rotate([-20, -55])\n .scale(164.263)\n .center([0, -5.4036]);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/sinuMollweide.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs} from \"./math.js\";\nimport {mollweideRaw} from \"./mollweide.js\";\nimport {sinusoidalRaw} from \"./sinusoidal.js\";\nimport {sinuMollweidePhi, sinuMollweideY} from \"./sinuMollweide.js\";\n\nexport function homolosineRaw(lambda, phi) {\n return abs(phi) > sinuMollweidePhi\n ? (lambda = mollweideRaw(lambda, phi), lambda[1] -= phi > 0 ? sinuMollweideY : -sinuMollweideY, lambda)\n : sinusoidalRaw(lambda, phi);\n}\n\nhomolosineRaw.invert = function(x, y) {\n return abs(y) > sinuMollweidePhi\n ? mollweideRaw.invert(x, y + (y > 0 ? sinuMollweideY : -sinuMollweideY))\n : sinusoidalRaw.invert(x, y);\n};\n\nexport default function() {\n return projection(homolosineRaw)\n .scale(152.63);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/homolosine.js","import {geoProjection as projection} from \"d3-geo\";\nimport {pi, sqrt, tau} from \"./math.js\";\n\nexport function kavrayskiy7Raw(lambda, phi) {\n return [3 / tau * lambda * sqrt(pi * pi / 3 - phi * phi), phi];\n}\n\nkavrayskiy7Raw.invert = function(x, y) {\n return [tau / 3 * x / sqrt(pi * pi / 3 - y * y), y];\n};\n\nexport default function() {\n return projection(kavrayskiy7Raw)\n .scale(158.837);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/kavrayskiy7.js","import {geoProjectionMutator as projectionMutator} from \"d3-geo\";\nimport {abs, asin, atan2, cos, epsilon, halfPi, pow, sign, sin} from \"./math.js\";\n\nexport function lagrangeRaw(n) {\n\n function forward(lambda, phi) {\n if (abs(abs(phi) - halfPi) < epsilon) return [0, phi < 0 ? -2 : 2];\n var sinPhi = sin(phi),\n v = pow((1 + sinPhi) / (1 - sinPhi), n / 2),\n c = 0.5 * (v + 1 / v) + cos(lambda *= n);\n return [\n 2 * sin(lambda) / c,\n (v - 1 / v) / c\n ];\n }\n\n forward.invert = function(x, y) {\n var y0 = abs(y);\n if (abs(y0 - 2) < epsilon) return x ? null : [0, sign(y) * halfPi];\n if (y0 > 2) return null;\n\n x /= 2, y /= 2;\n var x2 = x * x,\n y2 = y * y,\n t = 2 * y / (1 + x2 + y2); // tanh(nPhi)\n t = pow((1 + t) / (1 - t), 1 / n);\n return [\n atan2(2 * x, 1 - x2 - y2) / n,\n asin((t - 1) / (t + 1))\n ];\n };\n\n return forward;\n}\n\nexport default function() {\n var n = 0.5,\n m = projectionMutator(lagrangeRaw),\n p = m(n);\n\n p.spacing = function(_) {\n return arguments.length ? m(n = +_) : n;\n };\n\n return p\n .scale(124.75);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/lagrange.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, acos, cos, epsilon, halfPi, sin, pi, sqrt, sqrt2} from \"./math.js\";\n\nvar pi_sqrt2 = pi / sqrt2;\n\nexport function larriveeRaw(lambda, phi) {\n return [\n lambda * (1 + sqrt(cos(phi))) / 2,\n phi / (cos(phi / 2) * cos(lambda / 6))\n ];\n}\n\nlarriveeRaw.invert = function(x, y) {\n var x0 = abs(x),\n y0 = abs(y),\n lambda = epsilon,\n phi = halfPi;\n if (y0 < pi_sqrt2) phi *= y0 / pi_sqrt2;\n else lambda += 6 * acos(pi_sqrt2 / y0);\n for (var i = 0; i < 25; i++) {\n var sinPhi = sin(phi),\n sqrtcosPhi = sqrt(cos(phi)),\n sinPhi_2 = sin(phi / 2),\n cosPhi_2 = cos(phi / 2),\n sinLambda_6 = sin(lambda / 6),\n cosLambda_6 = cos(lambda / 6),\n f0 = 0.5 * lambda * (1 + sqrtcosPhi) - x0,\n f1 = phi / (cosPhi_2 * cosLambda_6) - y0,\n df0dPhi = sqrtcosPhi ? -0.25 * lambda * sinPhi / sqrtcosPhi : 0,\n df0dLambda = 0.5 * (1 + sqrtcosPhi),\n df1dPhi = (1 + 0.5 * phi * sinPhi_2 / cosPhi_2) / (cosPhi_2 * cosLambda_6),\n df1dLambda = (phi / cosPhi_2) * (sinLambda_6 / 6) / (cosLambda_6 * cosLambda_6),\n denom = df0dPhi * df1dLambda - df1dPhi * df0dLambda,\n dPhi = (f0 * df1dLambda - f1 * df0dLambda) / denom,\n dLambda = (f1 * df0dPhi - f0 * df1dPhi) / denom;\n phi -= dPhi;\n lambda -= dLambda;\n if (abs(dPhi) < epsilon && abs(dLambda) < epsilon) break;\n }\n return [x < 0 ? -lambda : lambda, y < 0 ? -phi : phi];\n};\n\nexport default function() {\n return projection(larriveeRaw)\n .scale(97.2672);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/larrivee.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, epsilon, pi, sign} from \"./math.js\";\n\nexport function laskowskiRaw(lambda, phi) {\n var lambda2 = lambda * lambda, phi2 = phi * phi;\n return [\n lambda * (0.975534 + phi2 * (-0.119161 + lambda2 * -0.0143059 + phi2 * -0.0547009)),\n phi * (1.00384 + lambda2 * (0.0802894 + phi2 * -0.02855 + lambda2 * 0.000199025) + phi2 * (0.0998909 + phi2 * -0.0491032))\n ];\n}\n\nlaskowskiRaw.invert = function(x, y) {\n var lambda = sign(x) * pi,\n phi = y / 2,\n i = 50;\n do {\n var lambda2 = lambda * lambda,\n phi2 = phi * phi,\n lambdaPhi = lambda * phi,\n fx = lambda * (0.975534 + phi2 * (-0.119161 + lambda2 * -0.0143059 + phi2 * -0.0547009)) - x,\n fy = phi * (1.00384 + lambda2 * (0.0802894 + phi2 * -0.02855 + lambda2 * 0.000199025) + phi2 * (0.0998909 + phi2 * -0.0491032)) - y,\n deltaxDeltaLambda = 0.975534 - phi2 * (0.119161 + 3 * lambda2 * 0.0143059 + phi2 * 0.0547009),\n deltaxDeltaPhi = -lambdaPhi * (2 * 0.119161 + 4 * 0.0547009 * phi2 + 2 * 0.0143059 * lambda2),\n deltayDeltaLambda = lambdaPhi * (2 * 0.0802894 + 4 * 0.000199025 * lambda2 + 2 * -0.02855 * phi2),\n deltayDeltaPhi = 1.00384 + lambda2 * (0.0802894 + 0.000199025 * lambda2) + phi2 * (3 * (0.0998909 - 0.02855 * lambda2) - 5 * 0.0491032 * phi2),\n denominator = deltaxDeltaPhi * deltayDeltaLambda - deltayDeltaPhi * deltaxDeltaLambda,\n deltaLambda = (fy * deltaxDeltaPhi - fx * deltayDeltaPhi) / denominator,\n deltaPhi = (fx * deltayDeltaLambda - fy * deltaxDeltaLambda) / denominator;\n lambda -= deltaLambda, phi -= deltaPhi;\n } while ((abs(deltaLambda) > epsilon || abs(deltaPhi) > epsilon) && --i > 0);\n return i && [lambda, phi];\n};\n\nexport default function() {\n return projection(laskowskiRaw)\n .scale(139.98);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/laskowski.js","import {geoProjection as projection} from \"d3-geo\";\nimport {acos, asin, cos, sign, sin, tan, sqrt, sqrt1_2} from \"./math.js\";\n\nexport function littrowRaw(lambda, phi) {\n return [\n sin(lambda) / cos(phi),\n tan(phi) * cos(lambda)\n ];\n}\n\nlittrowRaw.invert = function(x, y) {\n var x2 = x * x,\n y2 = y * y,\n y2_1 = y2 + 1,\n x2_y2_1 = x2 + y2_1,\n cosPhi = x\n ? sqrt1_2 * sqrt((x2_y2_1 - sqrt(x2_y2_1 * x2_y2_1 - 4 * x2)) / x2)\n : 1 / sqrt(y2_1);\n return [\n asin(x * cosPhi),\n sign(y) * acos(cosPhi)\n ];\n};\n\nexport default function() {\n return projection(littrowRaw)\n .scale(144.049)\n .clipAngle(90 - 1e-3);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/littrow.js","import {geoProjection as projection} from \"d3-geo\";\nimport {atan, exp, log, quarterPi, pi, tan} from \"./math.js\";\n\nexport function millerRaw(lambda, phi) {\n return [lambda, 1.25 * log(tan(quarterPi + 0.4 * phi))];\n}\n\nmillerRaw.invert = function(x, y) {\n return [x, 2.5 * atan(exp(0.8 * y)) - 0.625 * pi];\n};\n\nexport default function() {\n return projection(millerRaw)\n .scale(108.318);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/miller.js","import {geoProjection as projection} from \"d3-geo\";\nimport {asin, cos, sin, sqrt} from \"./math.js\";\n\nvar sqrt6 = sqrt(6),\n sqrt7 = sqrt(7);\n\nexport function mtFlatPolarParabolicRaw(lambda, phi) {\n var theta = asin(7 * sin(phi) / (3 * sqrt6));\n return [\n sqrt6 * lambda * (2 * cos(2 * theta / 3) - 1) / sqrt7,\n 9 * sin(theta / 3) / sqrt7\n ];\n}\n\nmtFlatPolarParabolicRaw.invert = function(x, y) {\n var theta = 3 * asin(y * sqrt7 / 9);\n return [\n x * sqrt7 / (sqrt6 * (2 * cos(2 * theta / 3) - 1)),\n asin(sin(theta) * 3 * sqrt6 / 7)\n ];\n};\n\nexport default function() {\n return projection(mtFlatPolarParabolicRaw)\n .scale(164.859);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/mtFlatPolarParabolic.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, asin, cos, epsilon, sin, sqrt, sqrt1_2, sqrt2} from \"./math.js\";\n\nexport function mtFlatPolarQuarticRaw(lambda, phi) {\n var k = (1 + sqrt1_2) * sin(phi),\n theta = phi;\n for (var i = 0, delta; i < 25; i++) {\n theta -= delta = (sin(theta / 2) + sin(theta) - k) / (0.5 * cos(theta / 2) + cos(theta));\n if (abs(delta) < epsilon) break;\n }\n return [\n lambda * (1 + 2 * cos(theta) / cos(theta / 2)) / (3 * sqrt2),\n 2 * sqrt(3) * sin(theta / 2) / sqrt(2 + sqrt2)\n ];\n}\n\nmtFlatPolarQuarticRaw.invert = function(x, y) {\n var sinTheta_2 = y * sqrt(2 + sqrt2) / (2 * sqrt(3)),\n theta = 2 * asin(sinTheta_2);\n return [\n 3 * sqrt2 * x / (1 + 2 * cos(theta) / cos(theta / 2)),\n asin((sinTheta_2 + sin(theta)) / (1 + sqrt1_2))\n ];\n};\n\nexport default function() {\n return projection(mtFlatPolarQuarticRaw)\n .scale(188.209);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/mtFlatPolarQuartic.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, asin, cos, epsilon, halfPi, pi, sin, sqrt} from \"./math.js\";\n\nexport function mtFlatPolarSinusoidalRaw(lambda, phi) {\n var A = sqrt(6 / (4 + pi)),\n k = (1 + pi / 4) * sin(phi),\n theta = phi / 2;\n for (var i = 0, delta; i < 25; i++) {\n theta -= delta = (theta / 2 + sin(theta) - k) / (0.5 + cos(theta));\n if (abs(delta) < epsilon) break;\n }\n return [\n A * (0.5 + cos(theta)) * lambda / 1.5,\n A * theta\n ];\n}\n\nmtFlatPolarSinusoidalRaw.invert = function(x, y) {\n var A = sqrt(6 / (4 + pi)),\n theta = y / A;\n if (abs(abs(theta) - halfPi) < epsilon) theta = theta < 0 ? -halfPi : halfPi;\n return [\n 1.5 * x / (A * (0.5 + cos(theta))),\n asin((theta / 2 + sin(theta)) / (1 + pi / 4))\n ];\n};\n\nexport default function() {\n return projection(mtFlatPolarSinusoidalRaw)\n .scale(166.518);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/mtFlatPolarSinusoidal.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, epsilon2} from \"./math.js\";\n\nexport function naturalEarth2Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2, phi6 = phi2 * phi4;\n return [\n lambda * (0.84719 - 0.13063 * phi2 + phi6 * phi6 * (-0.04515 + 0.05494 * phi2 - 0.02326 * phi4 + 0.00331 * phi6)),\n phi * (1.01183 + phi4 * phi4 * (-0.02625 + 0.01926 * phi2 - 0.00396 * phi4))\n ];\n}\n\nnaturalEarth2Raw.invert = function(x, y) {\n var phi = y, i = 25, delta, phi2, phi4, phi6;\n do {\n phi2 = phi * phi; phi4 = phi2 * phi2;\n phi -= delta = ((phi * (1.01183 + phi4 * phi4 * (-0.02625 + 0.01926 * phi2 - 0.00396 * phi4))) - y) /\n (1.01183 + phi4 * phi4 * ((9 * -0.02625) + (11 * 0.01926) * phi2 + (13 * -0.00396) * phi4));\n } while (abs(delta) > epsilon2 && --i > 0);\n phi2 = phi * phi; phi4 = phi2 * phi2; phi6 = phi2 * phi4;\n return [\n x / (0.84719 - 0.13063 * phi2 + phi6 * phi6 * (-0.04515 + 0.05494 * phi2 - 0.02326 * phi4 + 0.00331 * phi6)),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth2Raw)\n .scale(175.295);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/naturalEarth2.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, cos, epsilon, tan} from \"./math.js\";\n\nexport function nellHammerRaw(lambda, phi) {\n return [\n lambda * (1 + cos(phi)) / 2,\n 2 * (phi - tan(phi / 2))\n ];\n}\n\nnellHammerRaw.invert = function(x, y) {\n var p = y / 2;\n for (var i = 0, delta = Infinity; i < 10 && abs(delta) > epsilon; ++i) {\n var c = cos(y / 2);\n y -= delta = (y - tan(y / 2) - p) / (1 - 0.5 / (c * c));\n }\n return [\n 2 * x / (1 + cos(y)),\n y\n ];\n};\n\nexport default function() {\n return projection(nellHammerRaw)\n .scale(152.63);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/nellHammer.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, cos, halfPi, pi, sign, sin, sqrt} from \"./math.js\";\nimport {solve} from \"./newton.js\";\n\n// Based on Torben Jansen's implementation\n// https://beta.observablehq.com/@toja/nicolosi-globular-projection\n// https://beta.observablehq.com/@toja/nicolosi-globular-inverse\n\nexport function nicolosiRaw(lambda, phi) {\n var sinPhi = sin(phi),\n q = cos(phi),\n s = sign(lambda);\n\n if (lambda === 0 || abs(phi) === halfPi) return [0, phi];\n else if (phi === 0) return [lambda, 0];\n else if (abs(lambda) === halfPi) return [lambda * q, halfPi * sinPhi];\n\n var b = pi / (2 * lambda) - (2 * lambda) / pi,\n c = (2 * phi) / pi,\n d = (1 - c * c) / (sinPhi - c);\n\n var b2 = b * b,\n d2 = d * d,\n b2d2 = 1 + b2 / d2,\n d2b2 = 1 + d2 / b2;\n\n var M = ((b * sinPhi) / d - b / 2) / b2d2,\n N = ((d2 * sinPhi) / b2 + d / 2) / d2b2,\n m = M * M + (q * q) / b2d2,\n n = N * N - ((d2 * sinPhi * sinPhi) / b2 + d * sinPhi - 1) / d2b2;\n\n return [\n halfPi * (M + sqrt(m) * s),\n halfPi * (N + sqrt(n < 0 ? 0 : n) * sign(-phi * b) * s)\n ];\n}\n\nnicolosiRaw.invert = function(x, y) {\n\n x /= halfPi;\n y /= halfPi;\n\n var x2 = x * x,\n y2 = y * y,\n x2y2 = x2 + y2,\n pi2 = pi * pi;\n\n return [\n x ? (x2y2 -1 + sqrt((1 - x2y2) * (1 - x2y2) + 4 * x2)) / (2 * x) * halfPi : 0,\n solve(function(phi) {\n return (\n x2y2 * (pi * sin(phi) - 2 * phi) * pi +\n 4 * phi * phi * (y - sin(phi)) +\n 2 * pi * phi -\n pi2 * y\n );\n }, 0)\n ];\n};\n\nexport default function() {\n return projection(nicolosiRaw)\n .scale(127.267);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/nicolosi.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, epsilon} from \"./math.js\";\n\n// Based on Java implementation by Bojan Savric.\n// https://github.com/OSUCartography/JMapProjLib/blob/master/src/com/jhlabs/map/proj/PattersonProjection.java\n\nvar pattersonK1 = 1.0148,\n pattersonK2 = 0.23185,\n pattersonK3 = -0.14499,\n pattersonK4 = 0.02406,\n pattersonC1 = pattersonK1,\n pattersonC2 = 5 * pattersonK2,\n pattersonC3 = 7 * pattersonK3,\n pattersonC4 = 9 * pattersonK4,\n pattersonYmax = 1.790857183;\n\nexport function pattersonRaw(lambda, phi) {\n var phi2 = phi * phi;\n return [\n lambda,\n phi * (pattersonK1 + phi2 * phi2 * (pattersonK2 + phi2 * (pattersonK3 + pattersonK4 * phi2)))\n ];\n}\n\npattersonRaw.invert = function(x, y) {\n if (y > pattersonYmax) y = pattersonYmax;\n else if (y < -pattersonYmax) y = -pattersonYmax;\n var yc = y, delta;\n\n do { // Newton-Raphson\n var y2 = yc * yc;\n yc -= delta = ((yc * (pattersonK1 + y2 * y2 * (pattersonK2 + y2 * (pattersonK3 + pattersonK4 * y2)))) - y) / (pattersonC1 + y2 * y2 * (pattersonC2 + y2 * (pattersonC3 + pattersonC4 * y2)));\n } while (abs(delta) > epsilon);\n\n return [x, yc];\n};\n\nexport default function() {\n return projection(pattersonRaw)\n .scale(139.319);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/patterson.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, acos, asin, cos, epsilon, halfPi, sign, sin, tan} from \"./math.js\";\n\nexport function polyconicRaw(lambda, phi) {\n if (abs(phi) < epsilon) return [lambda, 0];\n var tanPhi = tan(phi),\n k = lambda * sin(phi);\n return [\n sin(k) / tanPhi,\n phi + (1 - cos(k)) / tanPhi\n ];\n}\n\npolyconicRaw.invert = function(x, y) {\n if (abs(y) < epsilon) return [x, 0];\n var k = x * x + y * y,\n phi = y * 0.5,\n i = 10, delta;\n do {\n var tanPhi = tan(phi),\n secPhi = 1 / cos(phi),\n j = k - 2 * y * phi + phi * phi;\n phi -= delta = (tanPhi * j + 2 * (phi - y)) / (2 + j * secPhi * secPhi + 2 * (phi - y) * tanPhi);\n } while (abs(delta) > epsilon && --i > 0);\n tanPhi = tan(phi);\n return [\n (abs(y) < abs(phi + 1 / tanPhi) ? asin(x * tanPhi) : sign(y) * sign(x) * (acos(abs(x * tanPhi)) + halfPi)) / sin(phi),\n phi\n ];\n};\n\nexport default function() {\n return projection(polyconicRaw)\n .scale(103.74);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/polyconic.js","// TODO generate on-the-fly to avoid external modification.\nvar octahedron = [\n [0, 90],\n [-90, 0], [0, 0], [90, 0], [180, 0],\n [0, -90]\n];\n\nexport default [\n [0, 2, 1],\n [0, 3, 2],\n [5, 1, 2],\n [5, 2, 3],\n [0, 1, 4],\n [0, 4, 3],\n [5, 4, 1],\n [5, 3, 4]\n].map(function(face) {\n return face.map(function(i) {\n return octahedron[i];\n });\n});\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/polyhedral/octahedron.js","import {geoCentroid as centroid, geoProjection as projection} from \"d3-geo\";\nimport {collignonRaw} from \"../collignon.js\";\nimport {pi, sqrt} from \"../math.js\";\nimport polyhedral from \"./index.js\";\nimport octahedron from \"./octahedron.js\";\n\nvar kx = 2 / sqrt(3);\n\nfunction collignonK(a, b) {\n var p = collignonRaw(a, b);\n return [p[0] * kx, p[1]];\n}\n\ncollignonK.invert = function(x,y) {\n return collignonRaw.invert(x / kx, y);\n};\n\nexport default function(faceProjection) {\n\n faceProjection = faceProjection || function(face) {\n var c = centroid({type: \"MultiPoint\", coordinates: face});\n return projection(collignonK).translate([0, 0]).scale(1).rotate(c[1] > 0 ? [-c[0], 0] : [180 - c[0], 180]);\n };\n\n var faces = octahedron.map(function(face) {\n return {face: face, project: faceProjection(face)};\n });\n\n [-1, 0, 0, 1, 0, 1, 4, 5].forEach(function(d, i) {\n var node = faces[d];\n node && (node.children || (node.children = [])).push(faces[i]);\n });\n\n return polyhedral(faces[0], function(lambda, phi) {\n return faces[lambda < -pi / 2 ? phi < 0 ? 6 : 4\n : lambda < 0 ? phi < 0 ? 2 : 0\n : lambda < pi / 2 ? phi < 0 ? 3 : 1\n : phi < 0 ? 7 : 5];\n })\n .angle(-30)\n .scale(121.906)\n .center([0, 48.5904]);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/polyhedral/collignon.js","import {abs, acos, asin, atan, cos, epsilon, pi, sin, tan} from \"./math.js\";\nimport parallel1 from \"./parallel1.js\";\n\nexport function rectangularPolyconicRaw(phi0) {\n var sinPhi0 = sin(phi0);\n\n function forward(lambda, phi) {\n var A = sinPhi0 ? tan(lambda * sinPhi0 / 2) / sinPhi0 : lambda / 2;\n if (!phi) return [2 * A, -phi0];\n var E = 2 * atan(A * sin(phi)),\n cotPhi = 1 / tan(phi);\n return [\n sin(E) * cotPhi,\n phi + (1 - cos(E)) * cotPhi - phi0\n ];\n }\n\n // TODO return null for points outside outline.\n forward.invert = function(x, y) {\n if (abs(y += phi0) < epsilon) return [sinPhi0 ? 2 * atan(sinPhi0 * x / 2) / sinPhi0 : x, 0];\n var k = x * x + y * y,\n phi = 0,\n i = 10, delta;\n do {\n var tanPhi = tan(phi),\n secPhi = 1 / cos(phi),\n j = k - 2 * y * phi + phi * phi;\n phi -= delta = (tanPhi * j + 2 * (phi - y)) / (2 + j * secPhi * secPhi + 2 * (phi - y) * tanPhi);\n } while (abs(delta) > epsilon && --i > 0);\n var E = x * (tanPhi = tan(phi)),\n A = tan(abs(y) < abs(phi + 1 / tanPhi) ? asin(E) * 0.5 : acos(E) * 0.5 + pi / 4) / sin(phi);\n return [\n sinPhi0 ? 2 * atan(sinPhi0 * A) / sinPhi0 : 2 * A,\n phi\n ];\n };\n\n return forward;\n}\n\nexport default function() {\n return parallel1(rectangularPolyconicRaw)\n .scale(131.215);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/rectangularPolyconic.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, degrees, epsilon2, floor, max, min, pi, radians, sign} from \"./math.js\";\n\nvar K = [\n [0.9986, -0.062],\n [1.0000, 0.0000],\n [0.9986, 0.0620],\n [0.9954, 0.1240],\n [0.9900, 0.1860],\n [0.9822, 0.2480],\n [0.9730, 0.3100],\n [0.9600, 0.3720],\n [0.9427, 0.4340],\n [0.9216, 0.4958],\n [0.8962, 0.5571],\n [0.8679, 0.6176],\n [0.8350, 0.6769],\n [0.7986, 0.7346],\n [0.7597, 0.7903],\n [0.7186, 0.8435],\n [0.6732, 0.8936],\n [0.6213, 0.9394],\n [0.5722, 0.9761],\n [0.5322, 1.0000]\n];\n\nK.forEach(function(d) {\n d[1] *= 1.593415793900743;\n});\n\nexport function robinsonRaw(lambda, phi) {\n var i = min(18, abs(phi) * 36 / pi),\n i0 = floor(i),\n di = i - i0,\n ax = (k = K[i0])[0],\n ay = k[1],\n bx = (k = K[++i0])[0],\n by = k[1],\n cx = (k = K[min(19, ++i0)])[0],\n cy = k[1],\n k;\n return [\n lambda * (bx + di * (cx - ax) / 2 + di * di * (cx - 2 * bx + ax) / 2),\n sign(phi) * (by + di * (cy - ay) / 2 + di * di * (cy - 2 * by + ay) / 2)\n ];\n}\n\nrobinsonRaw.invert = function(x, y) {\n var phi = y * 90,\n i = min(18, abs(phi / 5)),\n i0 = max(0, floor(i));\n do {\n var ay = K[i0][1],\n by = K[i0 + 1][1],\n cy = K[min(19, i0 + 2)][1],\n u = cy - ay,\n v = cy - 2 * by + ay,\n t = 2 * (abs(y) - by) / u,\n c = v / u,\n di = t * (1 - c * t * (1 - 2 * c * t));\n if (di >= 0 || i0 === 1) {\n phi = (y >= 0 ? 5 : -5) * (di + i);\n var j = 50, delta;\n do {\n i = min(18, abs(phi) / 5);\n i0 = floor(i);\n di = i - i0;\n ay = K[i0][1];\n by = K[i0 + 1][1];\n cy = K[min(19, i0 + 2)][1];\n phi -= (delta = sign(y) * (by + di * (cy - ay) / 2 + di * di * (cy - 2 * by + ay) / 2) - y) * degrees;\n } while (abs(delta) > epsilon2 && --j > 0);\n break;\n }\n } while (--i0 >= 0);\n var ax = K[i0][0],\n bx = K[i0 + 1][0],\n cx = K[min(19, i0 + 2)][0];\n return [\n x / (bx + di * (cx - ax) / 2 + di * di * (cx - 2 * bx + ax) / 2),\n phi * radians\n ];\n};\n\nexport default function() {\n return projection(robinsonRaw)\n .scale(152.63);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/robinson.js","import {geoProjection as projection} from \"d3-geo\";\nimport {atan, quarterPi, sin, tan} from \"./math.js\";\n\nexport function timesRaw(lambda, phi) {\n var t = tan(phi / 2),\n s = sin(quarterPi * t);\n return [\n lambda * (0.74482 - 0.34588 * s * s),\n 1.70711 * t\n ];\n}\n\ntimesRaw.invert = function(x, y) {\n var t = y / 1.70711,\n s = sin(quarterPi * t);\n return [\n x / (0.74482 - 0.34588 * s * s),\n 2 * atan(t)\n ];\n};\n\nexport default function() {\n return projection(timesRaw)\n .scale(146.153);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/times.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, acos, asin, atan, cos, epsilon, halfPi, pi, sign, sin, sqrt, tan} from \"./math.js\";\n\nexport function vanDerGrintenRaw(lambda, phi) {\n if (abs(phi) < epsilon) return [lambda, 0];\n var sinTheta = abs(phi / halfPi),\n theta = asin(sinTheta);\n if (abs(lambda) < epsilon || abs(abs(phi) - halfPi) < epsilon) return [0, sign(phi) * pi * tan(theta / 2)];\n var cosTheta = cos(theta),\n A = abs(pi / lambda - lambda / pi) / 2,\n A2 = A * A,\n G = cosTheta / (sinTheta + cosTheta - 1),\n P = G * (2 / sinTheta - 1),\n P2 = P * P,\n P2_A2 = P2 + A2,\n G_P2 = G - P2,\n Q = A2 + G;\n return [\n sign(lambda) * pi * (A * G_P2 + sqrt(A2 * G_P2 * G_P2 - P2_A2 * (G * G - P2))) / P2_A2,\n sign(phi) * pi * (P * Q - A * sqrt((A2 + 1) * P2_A2 - Q * Q)) / P2_A2\n ];\n}\n\nvanDerGrintenRaw.invert = function(x, y) {\n if (abs(y) < epsilon) return [x, 0];\n if (abs(x) < epsilon) return [0, halfPi * sin(2 * atan(y / pi))];\n var x2 = (x /= pi) * x,\n y2 = (y /= pi) * y,\n x2_y2 = x2 + y2,\n z = x2_y2 * x2_y2,\n c1 = -abs(y) * (1 + x2_y2),\n c2 = c1 - 2 * y2 + x2,\n c3 = -2 * c1 + 1 + 2 * y2 + z,\n d = y2 / c3 + (2 * c2 * c2 * c2 / (c3 * c3 * c3) - 9 * c1 * c2 / (c3 * c3)) / 27,\n a1 = (c1 - c2 * c2 / (3 * c3)) / c3,\n m1 = 2 * sqrt(-a1 / 3),\n theta1 = acos(3 * d / (a1 * m1)) / 3;\n return [\n pi * (x2_y2 - 1 + sqrt(1 + 2 * (x2 - y2) + z)) / (2 * x),\n sign(y) * pi * (-m1 * cos(theta1 + pi / 3) - c2 / (3 * c3))\n ];\n};\n\nexport default function() {\n return projection(vanDerGrintenRaw)\n .scale(79.4183);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/vanDerGrinten.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, asin, atan, atan2, cos, halfPi, epsilon, pi, sign, sin, sqrt, tan} from \"./math.js\";\n\nexport function vanDerGrinten2Raw(lambda, phi) {\n if (abs(phi) < epsilon) return [lambda, 0];\n var sinTheta = abs(phi / halfPi),\n theta = asin(sinTheta);\n if (abs(lambda) < epsilon || abs(abs(phi) - halfPi) < epsilon) return [0, sign(phi) * pi * tan(theta / 2)];\n var cosTheta = cos(theta),\n A = abs(pi / lambda - lambda / pi) / 2,\n A2 = A * A,\n x1 = cosTheta * (sqrt(1 + A2) - A * cosTheta) / (1 + A2 * sinTheta * sinTheta);\n return [\n sign(lambda) * pi * x1,\n sign(phi) * pi * sqrt(1 - x1 * (2 * A + x1))\n ];\n}\n\nvanDerGrinten2Raw.invert = function(x, y) {\n if (!x) return [0, halfPi * sin(2 * atan(y / pi))];\n var x1 = abs(x / pi),\n A = (1 - x1 * x1 - (y /= pi) * y) / (2 * x1),\n A2 = A * A,\n B = sqrt(A2 + 1);\n return [\n sign(x) * pi * (B - A),\n sign(y) * halfPi * sin(2 * atan2(sqrt((1 - 2 * A * x1) * (A + B) - x1), sqrt(B + A + x1)))\n ];\n};\n\nexport default function() {\n return projection(vanDerGrinten2Raw)\n .scale(79.4183);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/vanDerGrinten2.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, asin, atan, cos, epsilon, halfPi, pi, sign, sin, sqrt, tan} from \"./math.js\";\n\nexport function vanDerGrinten3Raw(lambda, phi) {\n if (abs(phi) < epsilon) return [lambda, 0];\n var sinTheta = phi / halfPi,\n theta = asin(sinTheta);\n if (abs(lambda) < epsilon || abs(abs(phi) - halfPi) < epsilon) return [0, pi * tan(theta / 2)];\n var A = (pi / lambda - lambda / pi) / 2,\n y1 = sinTheta / (1 + cos(theta));\n return [\n pi * (sign(lambda) * sqrt(A * A + 1 - y1 * y1) - A),\n pi * y1\n ];\n}\n\nvanDerGrinten3Raw.invert = function(x, y) {\n if (!y) return [x, 0];\n var y1 = y / pi,\n A = (pi * pi * (1 - y1 * y1) - x * x) / (2 * pi * x);\n return [\n x ? pi * (sign(x) * sqrt(A * A + 1) - A) : 0,\n halfPi * sin(2 * atan(y1))\n ];\n};\n\nexport default function() {\n return projection(vanDerGrinten3Raw)\n .scale(79.4183);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/vanDerGrinten3.js","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, epsilon, halfPi, min, pi, sign, sqrt} from \"./math.js\";\n\nexport function vanDerGrinten4Raw(lambda, phi) {\n if (!phi) return [lambda, 0];\n var phi0 = abs(phi);\n if (!lambda || phi0 === halfPi) return [0, phi];\n var B = phi0 / halfPi,\n B2 = B * B,\n C = (8 * B - B2 * (B2 + 2) - 5) / (2 * B2 * (B - 1)),\n C2 = C * C,\n BC = B * C,\n B_C2 = B2 + C2 + 2 * BC,\n B_3C = B + 3 * C,\n lambda0 = lambda / halfPi,\n lambda1 = lambda0 + 1 / lambda0,\n D = sign(abs(lambda) - halfPi) * sqrt(lambda1 * lambda1 - 4),\n D2 = D * D,\n F = B_C2 * (B2 + C2 * D2 - 1) + (1 - B2) * (B2 * (B_3C * B_3C + 4 * C2) + 12 * BC * C2 + 4 * C2 * C2),\n x1 = (D * (B_C2 + C2 - 1) + 2 * sqrt(F)) / (4 * B_C2 + D2);\n return [\n sign(lambda) * halfPi * x1,\n sign(phi) * halfPi * sqrt(1 + D * abs(x1) - x1 * x1)\n ];\n}\n\nvanDerGrinten4Raw.invert = function(x, y) {\n var delta;\n if (!x || !y) return [x, y];\n var sy = sign(y);\n y = abs(y) / pi;\n var x1 = sign(x) * x / halfPi,\n D = (x1 * x1 - 1 + 4 * y * y) / abs(x1),\n D2 = D * D,\n B = y * (2 - (y > 0.5 ? min(y, abs(x)) : 0)),\n r = x * x + y * y,\n i = 50;\n do {\n var B2 = B * B,\n C = (8 * B - B2 * (B2 + 2) - 5) / (2 * B2 * (B - 1)),\n C_ = (3 * B - B2 * B - 10) / (2 * B2 * B),\n C2 = C * C,\n BC = B * C,\n B_C = B + C,\n B_C2 = B_C * B_C,\n B_3C = B + 3 * C,\n F = B_C2 * (B2 + C2 * D2 - 1) + (1 - B2) * (B2 * (B_3C * B_3C + 4 * C2) + C2 * (12 * BC + 4 * C2)),\n F_ = -2 * B_C * (4 * BC * C2 + (1 - 4 * B2 + 3 * B2 * B2) * (1 + C_) + C2 * (-6 + 14 * B2 - D2 + (-8 + 8 * B2 - 2 * D2) * C_) + BC * (-8 + 12 * B2 + (-10 + 10 * B2 - D2) * C_)),\n sqrtF = sqrt(F),\n f = D * (B_C2 + C2 - 1) + 2 * sqrtF - x1 * (4 * B_C2 + D2),\n f_ = D * (2 * C * C_ + 2 * B_C * (1 + C_)) + F_ / sqrtF - 8 * B_C * (D * (-1 + C2 + B_C2) + 2 * sqrtF) * (1 + C_) / (D2 + 4 * B_C2);\n B -= delta = f / f_;\n } while (delta * r * r > epsilon && --i > 0);\n return [\n sign(x) * (sqrt(D * D + 4) + D) * pi / 4,\n sy * halfPi * B\n ];\n};\n\nexport default function() {\n return projection(vanDerGrinten4Raw)\n .scale(127.16);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/vanDerGrinten4.js","import {geoProjection as projection} from \"d3-geo\";\nimport {sqrt, pi} from \"./math.js\";\nimport {mollweideBromleyRaw} from \"./mollweide.js\";\n\nvar A = 4 * pi + 3 * sqrt(3),\n B = 2 * sqrt(2 * pi * sqrt(3) / A);\n\nexport var wagner4Raw = mollweideBromleyRaw(B * sqrt(3) / pi, B, A / 6);\n\nexport default function() {\n return projection(wagner4Raw)\n .scale(176.84);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/wagner4.js","import {geoProjection as projection} from \"d3-geo\";\nimport {pi, sqrt} from \"./math.js\";\n\nexport function wagner6Raw(lambda, phi) {\n return [lambda * sqrt(1 - 3 * phi * phi / (pi * pi)), phi];\n}\n\nwagner6Raw.invert = function(x, y) {\n return [x / sqrt(1 - 3 * y * y / (pi * pi)), y];\n};\n\nexport default function() {\n return projection(wagner6Raw)\n .scale(152.63);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/wagner6.js","import {geoProjection as projection} from \"d3-geo\";\nimport {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function wiechelRaw(lambda, phi) {\n var cosPhi = cos(phi),\n sinPhi = cos(lambda) * cosPhi,\n sin1_Phi = 1 - sinPhi,\n cosLambda = cos(lambda = atan2(sin(lambda) * cosPhi, -sin(phi))),\n sinLambda = sin(lambda);\n cosPhi = sqrt(1 - sinPhi * sinPhi);\n return [\n sinLambda * cosPhi - cosLambda * sin1_Phi,\n -cosLambda * cosPhi - sinLambda * sin1_Phi\n ];\n}\n\nwiechelRaw.invert = function(x, y) {\n var w = (x * x + y * y) / -2,\n k = sqrt(-w * (2 + w)),\n b = y * w + x * k,\n a = x * w - y * k,\n D = sqrt(a * a + b * b);\n return [\n atan2(k * b, D * (1 + w)),\n D ? -asin(k * a / D) : 0\n ];\n};\n\nexport default function() {\n return projection(wiechelRaw)\n .rotate([0, -90, 45])\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/wiechel.js","import {geoProjection as projection} from \"d3-geo\";\nimport {aitoffRaw} from \"./aitoff.js\";\nimport {halfPi, epsilon, sin, cos, sqrt, abs, acos} from \"./math.js\";\n\nexport function winkel3Raw(lambda, phi) {\n var coordinates = aitoffRaw(lambda, phi);\n return [\n (coordinates[0] + lambda / halfPi) / 2,\n (coordinates[1] + phi) / 2\n ];\n}\n\nwinkel3Raw.invert = function(x, y) {\n var lambda = x, phi = y, i = 25;\n do {\n var cosphi = cos(phi),\n sinphi = sin(phi),\n sin_2phi = sin(2 * phi),\n sin2phi = sinphi * sinphi,\n cos2phi = cosphi * cosphi,\n sinlambda = sin(lambda),\n coslambda_2 = cos(lambda / 2),\n sinlambda_2 = sin(lambda / 2),\n sin2lambda_2 = sinlambda_2 * sinlambda_2,\n C = 1 - cos2phi * coslambda_2 * coslambda_2,\n E = C ? acos(cosphi * coslambda_2) * sqrt(F = 1 / C) : F = 0,\n F,\n fx = 0.5 * (2 * E * cosphi * sinlambda_2 + lambda / halfPi) - x,\n fy = 0.5 * (E * sinphi + phi) - y,\n dxdlambda = 0.5 * F * (cos2phi * sin2lambda_2 + E * cosphi * coslambda_2 * sin2phi) + 0.5 / halfPi,\n dxdphi = F * (sinlambda * sin_2phi / 4 - E * sinphi * sinlambda_2),\n dydlambda = 0.125 * F * (sin_2phi * sinlambda_2 - E * sinphi * cos2phi * sinlambda),\n dydphi = 0.5 * F * (sin2phi * coslambda_2 + E * sin2lambda_2 * cosphi) + 0.5,\n denominator = dxdphi * dydlambda - dydphi * dxdlambda,\n dlambda = (fy * dxdphi - fx * dydphi) / denominator,\n dphi = (fx * dydlambda - fy * dxdlambda) / denominator;\n lambda -= dlambda, phi -= dphi;\n } while ((abs(dlambda) > epsilon || abs(dphi) > epsilon) && --i > 0);\n return [lambda, phi];\n};\n\nexport default function() {\n return projection(winkel3Raw)\n .scale(158.837);\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/d3-geo-projection/src/winkel3.js","/**\n * Functionality for Miller projection\n *\n * The function(s) below are from D3.js library (https://d3js.org/)\n *\n * ```\n * Copyright 2017 Mike Bostock\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of the copyright holder nor the names of its\n * contributors may be used to endorse or promote products derived from this\n * software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n * ```\n */\n\n/**\n * ============================================================================\n * IMPORTS\n * ============================================================================\n * @hidden\n */\nimport { Projection } from \"./Projection\";\nimport { registry } from \"../../../core/Registry\";\n// @ts-ignore\nimport * as d3geoprojection from \"d3-geo-projection\";\n\n\n/**\n * Miller projection.\n */\nexport class Miller extends Projection {\n\tconstructor(){\n\t\tsuper();\n\t\tthis.d3Projection = d3geoprojection.geoMiller();\n\t}\n}\n\n/**\n * Register class in system, so that it can be instantiated using its name from\n * anywhere.\n *\n * @ignore\n */\nregistry.registeredClasses[\"Miller\"] = Miller;\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../../src/.internal/charts/map/projections/Miller.ts","/**\r\n * Functionality for Eckert6 projection\r\n *\r\n * The function(s) below are from D3.js library (https://d3js.org/)\r\n *\r\n * ```\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n * this list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n * this list of conditions and the following disclaimer in the documentation\r\n * and/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n * contributors may be used to endorse or promote products derived from this\r\n * software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * ```\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Projection } from \"./Projection\";\r\nimport { registry } from \"../../../core/Registry\";\r\n// @ts-ignore\r\nimport * as d3geoprojection from \"d3-geo-projection\";\r\n\r\n/**\r\n * Eckert6 projection.\r\n */\r\nexport class Eckert6 extends Projection {\r\n\tconstructor(){\r\n\t\tsuper();\r\n\t\tthis.d3Projection = d3geoprojection.geoEckert6();\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Eckert6\"] = Eckert6;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../../src/.internal/charts/map/projections/Eckert6.ts","/**\r\n * Functionality for Mercator projection\r\n *\r\n * The function(s) below are from D3.js library (https://d3js.org/)\r\n *\r\n * ```\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n * this list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n * this list of conditions and the following disclaimer in the documentation\r\n * and/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n * contributors may be used to endorse or promote products derived from this\r\n * software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * ```\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Projection } from \"./Projection\";\r\nimport { registry } from \"../../../core/Registry\";\r\nimport * as d3geo from \"d3-geo\";\r\n\r\n\r\n/**\r\n * Orthographic projection.\r\n */\r\nexport class Orthographic extends Projection {\r\n\tconstructor(){\r\n\t\tsuper();\r\n\t\tthis.d3Projection = d3geo.geoOrthographic();\r\n\t}\t\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Orthographic\"] = Orthographic;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../../src/.internal/charts/map/projections/Orthographic.ts","/**\r\n * Functionality for Mercator projection\r\n *\r\n * The function(s) below are from D3.js library (https://d3js.org/)\r\n *\r\n * ```\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n * this list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n * this list of conditions and the following disclaimer in the documentation\r\n * and/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n * contributors may be used to endorse or promote products derived from this\r\n * software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * ```\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Projection } from \"./Projection\";\r\nimport { registry } from \"../../../core/Registry\";\r\nimport * as d3geo from \"d3-geo\";\r\n\r\n\r\n/**\r\n * Orthographic projection.\r\n */\r\nexport class Stereographic extends Projection {\r\n\tconstructor(){\r\n\t\tsuper();\r\n\t\tthis.d3Projection = d3geo.geoStereographic();\r\n\t}\t\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Stereographic\"] = Stereographic;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../../src/.internal/charts/map/projections/Stereographic.ts","/**\r\n * Functionality for Mercator projection\r\n *\r\n * The function(s) below are from D3.js library (https://d3js.org/)\r\n *\r\n * ```\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n * this list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n * this list of conditions and the following disclaimer in the documentation\r\n * and/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n * contributors may be used to endorse or promote products derived from this\r\n * software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * ```\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Projection } from \"./Projection\";\r\nimport { registry } from \"../../../core/Registry\";\r\nimport * as d3geo from \"d3-geo\";\r\n\r\n\r\n/**\r\n * Orthographic projection.\r\n */\r\nexport class Albers extends Projection {\r\n\tconstructor(){\r\n\t\tsuper();\r\n\t\tthis.d3Projection = d3geo.geoAlbers();\r\n\t}\t\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Albers\"] = Albers;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../../src/.internal/charts/map/projections/Albers.ts","/**\r\n * Functionality for Mercator projection\r\n *\r\n * The function(s) below are from D3.js library (https://d3js.org/)\r\n *\r\n * ```\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n * this list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n * this list of conditions and the following disclaimer in the documentation\r\n * and/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n * contributors may be used to endorse or promote products derived from this\r\n * software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * ```\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Projection } from \"./Projection\";\r\nimport { registry } from \"../../../core/Registry\";\r\nimport * as d3geo from \"d3-geo\";\r\n\r\n\r\n/**\r\n * Orthographic projection.\r\n */\r\nexport class AlbersUsa extends Projection {\r\n\tconstructor(){\r\n\t\tsuper();\r\n\t\tthis.d3Projection = d3geo.geoAlbersUsa();\r\n\t}\t\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AlbersUsa\"] = AlbersUsa;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../../src/.internal/charts/map/projections/AlbersUSA.ts","/**\r\n * Functionality for Mercator projection\r\n *\r\n * The function(s) below are from D3.js library (https://d3js.org/)\r\n *\r\n * ```\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n * this list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n * this list of conditions and the following disclaimer in the documentation\r\n * and/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n * contributors may be used to endorse or promote products derived from this\r\n * software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * ```\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Projection } from \"./Projection\";\r\nimport { registry } from \"../../../core/Registry\";\r\nimport * as d3geo from \"d3-geo\";\r\n\r\n\r\n/**\r\n * Orthographic projection.\r\n */\r\nexport class NaturalEarth1 extends Projection {\r\n\tconstructor(){\r\n\t\tsuper();\r\n\t\tthis.d3Projection = d3geo.geoNaturalEarth1();\r\n\t}\t\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"NaturalEarth1\"] = NaturalEarth1;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../../src/.internal/charts/map/projections/NaturalEarth1.ts","/**\r\n * Functionality for Mercator projection\r\n *\r\n * The function(s) below are from D3.js library (https://d3js.org/)\r\n *\r\n * ```\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n * this list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n * this list of conditions and the following disclaimer in the documentation\r\n * and/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n * contributors may be used to endorse or promote products derived from this\r\n * software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * ```\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Projection } from \"./Projection\";\r\nimport { registry } from \"../../../core/Registry\";\r\nimport * as d3geo from \"d3-geo\";\r\n\r\n\r\n/**\r\n * Orthographic projection.\r\n */\r\nexport class AzimuthalEqualArea extends Projection {\r\n\tconstructor(){\r\n\t\tsuper();\r\n\t\tthis.d3Projection = d3geo.geoAzimuthalEqualArea();\r\n\t}\t\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AzimuthalEqualArea\"] = AzimuthalEqualArea;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../../src/.internal/charts/map/projections/AzimuthalEqualArea.ts","/**\r\n * Functionality for Mercator projection\r\n *\r\n * The function(s) below are from D3.js library (https://d3js.org/)\r\n *\r\n * ```\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n * this list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n * this list of conditions and the following disclaimer in the documentation\r\n * and/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n * contributors may be used to endorse or promote products derived from this\r\n * software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * ```\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Projection } from \"./Projection\";\r\nimport { registry } from \"../../../core/Registry\";\r\nimport * as d3geo from \"d3-geo\";\r\n\r\n\r\n/**\r\n * Orthographic projection.\r\n */\r\nexport class EqualEarth extends Projection {\r\n\tconstructor(){\r\n\t\tsuper();\r\n\t\tthis.d3Projection = d3geo.geoEqualEarth();\r\n\t}\t\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"EqualEarth\"] = EqualEarth;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../../src/.internal/charts/map/projections/EqualEarth.ts","import * as m from \"../es2015/maps\";\nwindow.am4maps = m;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./maps.js\n// module id = null\n// module chunks = ","\nexport default class TinyQueue {\n constructor(data = [], compare = defaultCompare) {\n this.data = data;\n this.length = this.data.length;\n this.compare = compare;\n\n if (this.length > 0) {\n for (let i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n }\n }\n\n push(item) {\n this.data.push(item);\n this.length++;\n this._up(this.length - 1);\n }\n\n pop() {\n if (this.length === 0) return undefined;\n\n const top = this.data[0];\n const bottom = this.data.pop();\n this.length--;\n\n if (this.length > 0) {\n this.data[0] = bottom;\n this._down(0);\n }\n\n return top;\n }\n\n peek() {\n return this.data[0];\n }\n\n _up(pos) {\n const {data, compare} = this;\n const item = data[pos];\n\n while (pos > 0) {\n const parent = (pos - 1) >> 1;\n const current = data[parent];\n if (compare(item, current) >= 0) break;\n data[pos] = current;\n pos = parent;\n }\n\n data[pos] = item;\n }\n\n _down(pos) {\n const {data, compare} = this;\n const halfLength = this.length >> 1;\n const item = data[pos];\n\n while (pos < halfLength) {\n let left = (pos << 1) + 1;\n let best = data[left];\n const right = left + 1;\n\n if (right < this.length && compare(data[right], best) < 0) {\n left = right;\n best = data[right];\n }\n if (compare(best, item) >= 0) break;\n\n data[pos] = best;\n pos = left;\n }\n\n data[pos] = item;\n }\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/tinyqueue/index.js","'use strict';\n\nvar Queue = require('tinyqueue');\n\nif (Queue.default) Queue = Queue.default; // temporary webpack fix\n\nmodule.exports = polylabel;\nmodule.exports.default = polylabel;\n\nfunction polylabel(polygon, precision, debug) {\n precision = precision || 1.0;\n\n // find the bounding box of the outer ring\n var minX, minY, maxX, maxY;\n for (var i = 0; i < polygon[0].length; i++) {\n var p = polygon[0][i];\n if (!i || p[0] < minX) minX = p[0];\n if (!i || p[1] < minY) minY = p[1];\n if (!i || p[0] > maxX) maxX = p[0];\n if (!i || p[1] > maxY) maxY = p[1];\n }\n\n var width = maxX - minX;\n var height = maxY - minY;\n var cellSize = Math.min(width, height);\n var h = cellSize / 2;\n\n if (cellSize === 0) {\n var degeneratePoleOfInaccessibility = [minX, minY];\n degeneratePoleOfInaccessibility.distance = 0;\n return degeneratePoleOfInaccessibility;\n }\n\n // a priority queue of cells in order of their \"potential\" (max distance to polygon)\n var cellQueue = new Queue(undefined, compareMax);\n\n // cover polygon with initial cells\n for (var x = minX; x < maxX; x += cellSize) {\n for (var y = minY; y < maxY; y += cellSize) {\n cellQueue.push(new Cell(x + h, y + h, h, polygon));\n }\n }\n\n // take centroid as the first best guess\n var bestCell = getCentroidCell(polygon);\n\n // special case for rectangular polygons\n var bboxCell = new Cell(minX + width / 2, minY + height / 2, 0, polygon);\n if (bboxCell.d > bestCell.d) bestCell = bboxCell;\n\n var numProbes = cellQueue.length;\n\n while (cellQueue.length) {\n // pick the most promising cell from the queue\n var cell = cellQueue.pop();\n\n // update the best cell if we found a better one\n if (cell.d > bestCell.d) {\n bestCell = cell;\n if (debug) console.log('found best %d after %d probes', Math.round(1e4 * cell.d) / 1e4, numProbes);\n }\n\n // do not drill down further if there's no chance of a better solution\n if (cell.max - bestCell.d <= precision) continue;\n\n // split the cell into four cells\n h = cell.h / 2;\n cellQueue.push(new Cell(cell.x - h, cell.y - h, h, polygon));\n cellQueue.push(new Cell(cell.x + h, cell.y - h, h, polygon));\n cellQueue.push(new Cell(cell.x - h, cell.y + h, h, polygon));\n cellQueue.push(new Cell(cell.x + h, cell.y + h, h, polygon));\n numProbes += 4;\n }\n\n if (debug) {\n console.log('num probes: ' + numProbes);\n console.log('best distance: ' + bestCell.d);\n }\n\n var poleOfInaccessibility = [bestCell.x, bestCell.y];\n poleOfInaccessibility.distance = bestCell.d;\n return poleOfInaccessibility;\n}\n\nfunction compareMax(a, b) {\n return b.max - a.max;\n}\n\nfunction Cell(x, y, h, polygon) {\n this.x = x; // cell center x\n this.y = y; // cell center y\n this.h = h; // half the cell size\n this.d = pointToPolygonDist(x, y, polygon); // distance from cell center to polygon\n this.max = this.d + this.h * Math.SQRT2; // max distance to polygon within a cell\n}\n\n// signed distance from point to polygon outline (negative if point is outside)\nfunction pointToPolygonDist(x, y, polygon) {\n var inside = false;\n var minDistSq = Infinity;\n\n for (var k = 0; k < polygon.length; k++) {\n var ring = polygon[k];\n\n for (var i = 0, len = ring.length, j = len - 1; i < len; j = i++) {\n var a = ring[i];\n var b = ring[j];\n\n if ((a[1] > y !== b[1] > y) &&\n (x < (b[0] - a[0]) * (y - a[1]) / (b[1] - a[1]) + a[0])) inside = !inside;\n\n minDistSq = Math.min(minDistSq, getSegDistSq(x, y, a, b));\n }\n }\n\n return minDistSq === 0 ? 0 : (inside ? 1 : -1) * Math.sqrt(minDistSq);\n}\n\n// get polygon centroid\nfunction getCentroidCell(polygon) {\n var area = 0;\n var x = 0;\n var y = 0;\n var points = polygon[0];\n\n for (var i = 0, len = points.length, j = len - 1; i < len; j = i++) {\n var a = points[i];\n var b = points[j];\n var f = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * f;\n y += (a[1] + b[1]) * f;\n area += f * 3;\n }\n if (area === 0) return new Cell(points[0][0], points[0][1], 0, polygon);\n return new Cell(x / area, y / area, 0, polygon);\n}\n\n// get squared distance from a point to a segment\nfunction getSegDistSq(px, py, a, b) {\n\n var x = a[0];\n var y = a[1];\n var dx = b[0] - x;\n var dy = b[1] - y;\n\n if (dx !== 0 || dy !== 0) {\n\n var t = ((px - x) * dx + (py - y) * dy) / (dx * dx + dy * dy);\n\n if (t > 1) {\n x = b[0];\n y = b[1];\n\n } else if (t > 0) {\n x += dx * t;\n y += dy * t;\n }\n }\n\n dx = px - x;\n dy = py - y;\n\n return dx * dx + dy * dy;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/Dropbox/www/amcharts4dev/node_modules/polylabel/polylabel.js\n// module id = o+vr\n// module chunks = cc1e"],"sourceRoot":""}