{"version":3,"file":"kendo.dataviz.map.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendodataviz","map","js","this","kendo","window","deepExtend","now","Date","getTime","util","renderPos","pos","result","parts","toHyphens","split","i","length","push","join","renderSize","size","sqr","value","romanToArabic","r","toLowerCase","digits","v","x","l","c","d","m","prev","charAt","arabicToRoman","n","literals","values","roman","shift","memoize","f","cache","Object","create","arguments$1","arguments","id","apply","isUnicodeLetter","ch","RX_UNICODE_LETTER","test","withExit","obj","call","Return","ex","RegExp","$","undefined$1","math","Math","abs","atan","atan2","cos","max","min","sin","tan","Class","dataviz","drawing","defined","deg","rad","round","valueOrDefault","Location","extend","init","lat","lng","DISTANCE_ITERATIONS","DISTANCE_CONVERGENCE","DISTANCE_PRECISION","FORMAT","toArray","equals","loc","clone","precision","wrap","distanceTo","dest","datum","greatCircleTo","distance","destination","bearing","datums","WGS84","fromLat","fromLng","dToR","a","asin","azimuthFrom","azimuthTo","prevLambda","sinLambda","cosLambda","sino","cosA2","coso","cos2om","sigma","b","L","U1","sinU1","cosU1","U2","sinU2","cosU2","lambda","converged","sqrt","sinA","C","u2","A","B","deltao","fn","toString","format","fromLngLat","ll","fromLatLng","Extent","nw","se","contains","center","containsAny","locs","include","includeAll","edges","ne","sw","overlaps","extent","World","jQuery","Widget","ui","template","Attribution","element","options","_initOptions","items","addClass","name","separator","itemTemplate","ref","text","filter","zoom","_extent","_zoom","_render","add","item","remove","clear","empty","_itemText","append","show","hide","inZoomLevel","_inZoomLevel","minZoom","maxZoom","inArea","_inArea","Number","MAX_VALUE","area","plugin","keys","button","dir","icon","iconClass","BUTTONS","Navigator","on","_click","bind","parentElement","parent","closest","attr","_keyroot","_tabindex","_keydown","panStep","events","dispose","off","_pan","y","trigger","e","currentTarget","is","preventDefault","which","UP","DOWN","RIGHT","LEFT","ZoomControl","zoomStep","_change","delta","NUMPAD_PLUS","NUMPAD_MINUS","exp","pow","log","g","geometry","Point","limit","limitValue","PI","PI_DIV_2","PI_DIV_4","DEG_TO_RAD","Mercator","MAX_LNG","MAX_LAT","INVERSE_ITERATIONS","INVERSE_CONVERGENCE","centralMeridian","forward","clamp","proj","lng0","_projectLat","ecc","ts","con","p","inverse","point","_inverseY","ecch","phi","dphi","SphericalMercator","Equirectangular","EPSG3857","_proj","_tm","transform","translate","scale","_itm","toPoint","toLocation","crs","EPSG3395","EPSG4326","projections","layers","Layer","css","zIndex","opacity","appendTo","scrollElement","_beforeReset","_reset","_resize","_panEnd","_activate","_updateAttribution","destroy","_deactivate","reset","_applyExtent","_setVisibility","noop","matchMinZoom","matchMaxZoom","inside","visible","unbind","attribution","DataSource","data","Group","last","ShapeLayer","surface","Surface","width","height","_initRoot","movable","Movable","_markers","_handler","_mouseenter","_mouseleave","_initDataSource","autoBind","dataSource","_dataChange","setDataSource","fetch","_translateSurface","_data","_load","_root","draw","dsOptions","sender","view","_clearMarkers","_loader","GeoJSONLoader","style","container","shape","parse","shapeCreated","cancelled","Circle","_createMarker","args","layer","featureCreated","marker","markers","location","dataItem","_panning","suspendTracking","resumeTracking","locationToView","moveTo","event","originalEvent","locator","defaultStyle","observer","root","unwrap","type","_loadGeometryTo","_featureCreated","children","_shapeCreated","group","properties","path","coords","coordinates","_loadPolygon","_setLineFill","_loadPoint","segments","anchor","fill","_loadShape","rings","_buildPolygon","MultiPath","Path","j","lineTo","circle","schemas","geojson","features","geometries","transports","read","dataType","getter","BubbleLayer","locationField","valueField","minSize","maxSize","symbol","opt","getValue","slice","sort","scaleType","_scaleType","_createSymbol","_drawSymbol","isFunction","scales","symbols","SqrtScale","domain","range","_domain","_range","domainRange","outputRange","_ratio","rel","bubble","geo","square","halfSize","close","drawingUtil","TileLayer","subdomains","viewType","_viewType","_view","origin","locationToLayer","viewOrigin","tileTitle","_updateView","TileView","support","mobileOS","throttle","extentToPoint","render","pool","TilePool","tileSize","urlTemplate","_center","_viewOrigin","pointToTileIndex","floor","tileCount","firstTileIndex","indexToPoint","ceil","diff","index","subdomainText","subdomainIndex","_tileTitle","tile","createTile","currentIndex","tileOptions","get","wrapIndex","offset","roundPoint","subdomain","errorUrlTemplate","boundary","wrapValue","remainder","ImageTile","createElement","position","display","errorUrl","target","setAttribute","removeAttribute","top","left","url","visibility","urlResult","urlOptions","z","s","quadkey","q","culture","_items","_remove","_create","hashKey","maxDist","dist","splice","BingLayer","baseUrl","_scheme","_onMetadata","_fetchMetadata","imagerySet","key","Error","ajax","output","uriScheme","jsonp","success","proto","protocol","replace","resourceSets","resource","resources","imageUrl","imageUrlSubdomains","zoomMin","zoomMax","_addAttribution","BingView","imageryProviders","coverageAreas","bbox","tileQuadKey","digit","mask","quadKey","bing","doc","document","indexOf","inArray","Tooltip","MarkerLayer","_markerClick","titleField","arg","Array","isArray","_addOne","update","showAt","Marker","addTo","getLocation","getTitle","title","tooltip","popup","_position","attributes","renderTooltip","contentTemplate","content","contentUrl","defaults","Map","_getOrigin","_initScroller","_initMarkers","_initControls","_initLayers","_mousewheel","controls","navigator","layerDefaults","color","stroke","markerDefaults","wraparound","messages","scroller","zoomControl","level","_setExtent","_getExtent","setOptions","_layerSize","layerToLocation","translateWith","viewToLocation","eventOffset","field","pageX","clientX","pageY","clientY","eventToView","cursor","eventToLayer","eventToLocation","viewSize","exportVisual","_setOrigin","topLeft","_origin","invalidate","raw","bottomRight","layerWidth","layerHeight","_zoomAround","pivot","_createAttribution","_createNavigator","_createZoomControl","_createControlElement","defaultPos","posSelector","_navigatorPan","_navigatorCenter","scrollLeft","scrollTop","bounds","_virtualSize","one","_scrollEnd","scrollTo","_zoomControlChange","friction","zoomable","mobile","Scroller","velocityMultiplier","mousewheelScrolling","supportDoubleTap","_scroll","userEvents","_scaleStart","_scale","_doubleTap","_tap","defs","impl","_scrollOffset","_panComplete","_panEndTS","touch","touches","cancel","_scaleToZoom","gestureCenter","centerLocation","originPoint","scaleDelta","tiles","_resetScroller","dimensions","forcedMinScale","maxScale","xBounds","yBounds","pannable","makeVirtual","virtualSize","_renderLayers","scrollWrap","toZoom","mwDelta","fromZoom"],"sources":["kendo.dataviz.map.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.data.js'), require('kendo.userevents.js'), require('kendo.tooltip.js'), require('kendo.mobile.scroller.js'), require('kendo.draganddrop.js'), require('kendo.dataviz.core.js'), require('kendo.drawing.js'), require('kendo.core.js'), require('kendo.icons.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.data', 'kendo.userevents', 'kendo.tooltip', 'kendo.mobile.scroller', 'kendo.draganddrop', 'kendo.dataviz.core', 'kendo.drawing', 'kendo.core', 'kendo.icons'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendodataviz = global.kendodataviz || {}, global.kendodataviz.map = global.kendodataviz.map || {}, global.kendodataviz.map.js = factory()));\n})(this, (function () {\n (function () {\r\n // Imports ================================================================\r\n var kendo = window.kendo,\r\n deepExtend = kendo.deepExtend;\r\n\r\n function sqr(value) {\r\n return value * value;\r\n }\r\n\r\n var now = Date.now;\r\n if (!now) {\r\n now = function() {\r\n return new Date().getTime();\r\n };\r\n }\r\n\r\n // Template helpers =======================================================\r\n\r\n function renderSize(size) {\r\n if (typeof size !== \"string\") {\r\n size += \"px\";\r\n }\r\n\r\n return size;\r\n }\r\n\r\n function renderPos(pos) {\r\n var result = [];\r\n\r\n if (pos) {\r\n var parts = kendo.toHyphens(pos).split(\"-\");\r\n\r\n for (var i = 0; i < parts.length; i++) {\r\n result.push(\"k-pos-\" + parts[i]);\r\n }\r\n }\r\n\r\n return result.join(\" \");\r\n }\r\n\r\n function arabicToRoman(n) {\r\n var literals = {\r\n 1 : \"i\", 10 : \"x\", 100 : \"c\",\r\n 2 : \"ii\", 20 : \"xx\", 200 : \"cc\",\r\n 3 : \"iii\", 30 : \"xxx\", 300 : \"ccc\",\r\n 4 : \"iv\", 40 : \"xl\", 400 : \"cd\",\r\n 5 : \"v\", 50 : \"l\", 500 : \"d\",\r\n 6 : \"vi\", 60 : \"lx\", 600 : \"dc\",\r\n 7 : \"vii\", 70 : \"lxx\", 700 : \"dcc\",\r\n 8 : \"viii\", 80 : \"lxxx\", 800 : \"dccc\",\r\n 9 : \"ix\", 90 : \"xc\", 900 : \"cm\",\r\n 1000 : \"m\"\r\n };\r\n var values = [ 1000,\r\n 900 , 800, 700, 600, 500, 400, 300, 200, 100,\r\n 90 , 80 , 70 , 60 , 50 , 40 , 30 , 20 , 10 ,\r\n 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ];\r\n var roman = \"\";\r\n while (n > 0) {\r\n if (n < values[0]) {\r\n values.shift();\r\n } else {\r\n roman += literals[values[0]];\r\n n -= values[0];\r\n }\r\n }\r\n return roman;\r\n }\r\n\r\n function romanToArabic(r) {\r\n r = r.toLowerCase();\r\n var digits = {\r\n i: 1,\r\n v: 5,\r\n x: 10,\r\n l: 50,\r\n c: 100,\r\n d: 500,\r\n m: 1000\r\n };\r\n var value = 0, prev = 0;\r\n for (var i = 0; i < r.length; ++i) {\r\n var v = digits[r.charAt(i)];\r\n if (!v) {\r\n return null;\r\n }\r\n value += v;\r\n if (v > prev) {\r\n value -= 2 * prev;\r\n }\r\n prev = v;\r\n }\r\n return value;\r\n }\r\n\r\n function memoize(f) {\r\n var cache = Object.create(null);\r\n return function() {\n var arguments$1 = arguments;\n\r\n var id = \"\";\r\n for (var i = arguments.length; --i >= 0;) {\r\n id += \":\" + arguments$1[i];\r\n }\r\n return id in cache ? cache[id] : (cache[id] = f.apply(this, arguments));\r\n };\r\n }\r\n\r\n function isUnicodeLetter(ch) {\r\n return RX_UNICODE_LETTER.test(ch);\r\n }\r\n\r\n function withExit(f, obj) {\r\n try {\r\n return f.call(obj, function(value){\r\n throw new Return(value);\r\n });\r\n } catch(ex) {\r\n if (ex instanceof Return) {\r\n return ex.value;\r\n }\r\n throw ex;\r\n }\r\n function Return(value) {\r\n this.value = value;\r\n }\r\n }\r\n\r\n // Exports ================================================================\r\n deepExtend(kendo, {\r\n util: {\r\n now: now,\r\n renderPos: renderPos,\r\n renderSize: renderSize,\r\n sqr: sqr,\r\n romanToArabic: romanToArabic,\r\n arabicToRoman: arabicToRoman,\r\n memoize: memoize,\r\n isUnicodeLetter: isUnicodeLetter,\r\n withExit: withExit\r\n }\r\n });\r\n\r\n var RX_UNICODE_LETTER = new RegExp(\"[\\\\u0041-\\\\u005A\\\\u0061-\\\\u007A\\\\u00AA\\\\u00B5\\\\u00BA\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]\");\r\n\r\n })();\n\n (function($, undefined$1) {\n // Imports ================================================================\n var math = Math,\n abs = math.abs,\n atan = math.atan,\n atan2 = math.atan2,\n cos = math.cos,\n max = math.max,\n min = math.min,\n sin = math.sin,\n tan = math.tan,\n\n kendo = window.kendo,\n Class = kendo.Class,\n\n dataviz = kendo.dataviz,\n deepExtend = kendo.deepExtend,\n\n util = kendo.drawing.util,\n defined = util.defined,\n deg = util.deg,\n rad = util.rad,\n round = util.round,\n valueOrDefault = util.valueOrDefault,\n\n sqr = kendo.util.sqr;\n\n // Implementation =========================================================\n var Location = Class.extend({\n init: function(lat, lng) {\n if (arguments.length === 1) {\n this.lat = lat[0];\n this.lng = lat[1];\n } else {\n this.lat = lat;\n this.lng = lng;\n }\n },\n\n DISTANCE_ITERATIONS: 100,\n DISTANCE_CONVERGENCE: 1e-12,\n DISTANCE_PRECISION: 2,\n FORMAT: \"{0:N6},{1:N6}\",\n\n toArray: function() {\n return [this.lat, this.lng];\n },\n\n equals: function(loc) {\n return loc && loc.lat === this.lat && loc.lng === this.lng;\n },\n\n clone: function() {\n return new Location(this.lat, this.lng);\n },\n\n round: function(precision) {\n this.lng = round(this.lng, precision);\n this.lat = round(this.lat, precision);\n return this;\n },\n\n wrap: function() {\n this.lng = this.lng % 180;\n this.lat = this.lat % 90;\n return this;\n },\n\n distanceTo: function(dest, datum) {\n return this.greatCircleTo(dest, datum).distance;\n },\n\n destination: function(distance, bearing, datum) {\n bearing = rad(bearing);\n datum = datum || dataviz.map.datums.WGS84;\n\n var fromLat = rad(this.lat);\n var fromLng = rad(this.lng);\n var dToR = distance / kendo.dataviz.map.datums.WGS84.a;\n\n var lat = math.asin(sin(fromLat) * cos(dToR) +\n cos(fromLat) * sin(dToR) * cos(bearing));\n\n var lng = fromLng + atan2(sin(bearing) * sin(dToR) * cos(fromLat),\n cos(dToR) - sin(fromLat) * sin(lat));\n\n return new Location(deg(lat), deg(lng));\n },\n\n greatCircleTo: function(dest, datum) {\n dest = Location.create(dest);\n datum = datum || dataviz.map.datums.WGS84;\n\n if (!dest || this.clone().round(8).equals(dest.clone().round(8))) {\n return {\n distance: 0,\n azimuthFrom: 0,\n azimuthTo: 0\n };\n }\n\n // See http://en.wikipedia.org/wiki/Vincenty's_formulae#Notation\n // o == sigma\n // A == alpha\n var a = datum.a;\n var b = datum.b;\n var f = datum.f;\n\n var L = rad(dest.lng - this.lng);\n\n var U1 = atan((1 - f) * tan(rad(this.lat)));\n var sinU1 = sin(U1);\n var cosU1 = cos(U1);\n\n var U2 = atan((1 - f) * tan(rad(dest.lat)));\n var sinU2 = sin(U2);\n var cosU2 = cos(U2);\n\n var lambda = L;\n var prevLambda;\n\n var i = this.DISTANCE_ITERATIONS;\n var converged = false;\n\n var sinLambda;\n var cosLambda;\n var sino;\n var cosA2;\n var coso;\n var cos2om;\n var sigma;\n\n while (!converged && i-- > 0) {\n sinLambda = sin(lambda);\n cosLambda = cos(lambda);\n sino = math.sqrt(\n sqr(cosU2 * sinLambda) + sqr(cosU1 * sinU2 - sinU1 * cosU2 * cosLambda)\n );\n\n coso = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda;\n sigma = atan2(sino, coso);\n\n var sinA = cosU1 * cosU2 * sinLambda / sino;\n cosA2 = 1 - sqr(sinA);\n cos2om = 0;\n if (cosA2 !== 0) {\n cos2om = coso - 2 * sinU1 * sinU2 / cosA2;\n }\n\n prevLambda = lambda;\n var C = f / 16 * cosA2 * (4 + f * (4 - 3 * cosA2));\n lambda = L + (1 - C) * f * sinA * (\n sigma + C * sino * (cos2om + C * coso * (-1 + 2 * sqr(cos2om)))\n );\n\n converged = abs(lambda - prevLambda) <= this.DISTANCE_CONVERGENCE;\n }\n\n var u2 = cosA2 * (sqr(a) - sqr(b)) / sqr(b);\n var A = 1 + u2 / 16384 * (4096 + u2 * (-768 + u2 * (320 - 175 * u2)));\n var B = u2 / 1024 * (256 + u2 * (-128 + u2 * (74 - 47 * u2)));\n var deltao = B * sino * (cos2om + B / 4 * (\n coso * (-1 + 2 * sqr(cos2om)) - B / 6 * cos2om * (-3 + 4 * sqr(sino)) * (-3 + 4 * sqr(cos2om))\n ));\n\n var azimuthFrom = atan2(cosU2 * sinLambda, cosU1 * sinU2 - sinU1 * cosU2 * cosLambda);\n var azimuthTo = atan2(cosU1 * sinLambda, -sinU1 * cosU2 + cosU1 * sinU2 * cosLambda);\n\n return {\n distance: round(b * A * (sigma - deltao), this.DISTANCE_PRECISION),\n azimuthFrom: deg(azimuthFrom),\n azimuthTo: deg(azimuthTo)\n };\n }\n });\n\n // IE < 9 doesn't allow to override toString on definition\n Location.fn.toString = function() {\n return kendo.format(this.FORMAT, this.lat, this.lng);\n };\n\n Location.fromLngLat = function(ll) {\n return new Location(ll[1], ll[0]);\n };\n\n Location.fromLatLng = function(ll) {\n return new Location(ll[0], ll[1]);\n };\n\n Location.create = function(a, b) {\n if (defined(a)) {\n if (a instanceof Location) {\n return a.clone();\n } else if (arguments.length === 1 && a.length === 2) {\n return Location.fromLatLng(a);\n } else {\n return new Location(a, b);\n }\n }\n };\n\n var Extent = Class.extend({\n init: function(nw, se) {\n nw = Location.create(nw);\n se = Location.create(se);\n\n if (nw.lng + 180 > se.lng + 180 &&\n nw.lat + 90 < se.lat + 90) {\n this.se = nw;\n this.nw = se;\n } else {\n this.se = se;\n this.nw = nw;\n }\n },\n\n contains: function(loc) {\n var nw = this.nw,\n se = this.se,\n lng = valueOrDefault(loc.lng, loc[1]),\n lat = valueOrDefault(loc.lat, loc[0]);\n\n return loc &&\n lng + 180 >= nw.lng + 180 &&\n lng + 180 <= se.lng + 180 &&\n lat + 90 >= se.lat + 90 &&\n lat + 90 <= nw.lat + 90;\n },\n\n center: function() {\n var nw = this.nw;\n var se = this.se;\n\n var lng = nw.lng + (se.lng - nw.lng) / 2;\n var lat = nw.lat + (se.lat - nw.lat) / 2;\n return new Location(lat, lng);\n },\n\n containsAny: function(locs) {\n var result = false;\n for (var i = 0; i < locs.length; i++) {\n result = result || this.contains(locs[i]);\n }\n\n return result;\n },\n\n include: function(loc) {\n var nw = this.nw,\n se = this.se,\n lng = valueOrDefault(loc.lng, loc[1]),\n lat = valueOrDefault(loc.lat, loc[0]);\n\n nw.lng = min(nw.lng, lng);\n nw.lat = max(nw.lat, lat);\n\n se.lng = max(se.lng, lng);\n se.lat = min(se.lat, lat);\n },\n\n includeAll: function(locs) {\n for (var i = 0; i < locs.length; i++) {\n this.include(locs[i]);\n }\n },\n\n edges: function() {\n var nw = this.nw,\n se = this.se;\n\n return { nw: this.nw, ne: new Location(nw.lat, se.lng),\n se: this.se, sw: new Location(se.lat, nw.lng) };\n },\n\n toArray: function() {\n var nw = this.nw,\n se = this.se;\n\n return [nw, new Location(nw.lat, se.lng),\n se, new Location(se.lat, nw.lng)];\n },\n\n overlaps: function(extent) {\n return this.containsAny(extent.toArray()) ||\n extent.containsAny(this.toArray());\n }\n });\n\n Extent.World = new Extent([90, -180], [-90, 180]);\n\n Extent.create = function(a, b) {\n if (a instanceof Extent) {\n return a;\n } else if (a && b) {\n return new Extent(a, b);\n } else if (a && a.length === 4 && !b) {\n return new Extent([a[0], a[1]], [a[2], a[3]]);\n }\n };\n\n // Exports ================================================================\n deepExtend(dataviz, {\n map: {\n Extent: Extent,\n Location: Location\n }\n });\n\n })(window.kendo.jQuery);\n\n (function() {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n template = kendo.template,\n\n util = kendo.drawing.util,\n valueOrDefault = util.valueOrDefault,\n defined = util.defined;\n\n var Attribution = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, options);\n this._initOptions(options);\n this.items = [];\n this.element.addClass(\"k-widget k-attribution\");\n },\n\n options: {\n name: \"Attribution\",\n separator: \" | \",\n itemTemplate: function (ref) {\n var text = ref.text;\n\n return text;\n }\n },\n\n filter: function(extent, zoom) {\n this._extent = extent;\n this._zoom = zoom;\n this._render();\n },\n\n add: function(item) {\n if (defined(item)) {\n if (typeof item === \"string\") {\n item = { text: item };\n }\n\n this.items.push(item);\n this._render();\n }\n },\n\n remove: function(text) {\n var result = [];\n for (var i = 0; i < this.items.length; i++) {\n var item = this.items[i];\n if (item.text !== text) {\n result.push(item);\n }\n }\n\n this.items = result;\n\n this._render();\n },\n\n clear: function() {\n this.items = [];\n this.element.empty();\n },\n\n _render: function() {\n var result = [];\n var itemTemplate = template(this.options.itemTemplate);\n\n for (var i = 0; i < this.items.length; i++) {\n var item = this.items[i];\n var text = this._itemText(item);\n if (text !== \"\") {\n result.push(itemTemplate({\n text: text\n }));\n }\n }\n\n if (result.length > 0) {\n this.element.empty()\n .append(result.join(this.options.separator))\n .show();\n } else {\n this.element.hide();\n }\n },\n\n _itemText: function(item) {\n var text = \"\";\n var inZoomLevel = this._inZoomLevel(item.minZoom, item.maxZoom);\n var inArea = this._inArea(item.extent);\n\n if (inZoomLevel && inArea) {\n text += item.text;\n }\n\n return text;\n },\n\n _inZoomLevel: function(min, max) {\n var result = true;\n min = valueOrDefault(min, -Number.MAX_VALUE);\n max = valueOrDefault(max, Number.MAX_VALUE);\n\n result = this._zoom > min && this._zoom < max;\n\n return result;\n },\n\n _inArea: function(area) {\n var result = true;\n\n if (area) {\n result = area.contains(this._extent);\n }\n\n return result;\n }\n });\n\n kendo.dataviz.ui.plugin(Attribution);\n })(window.kendo.jQuery);\n\n (function($) {\n var kendo = window.kendo;\n var Widget = kendo.ui.Widget;\n var keys = kendo.keys;\n\n var NS = \".kendoNavigator\";\n\n // Helper functions =======================================================\n function button(dir) {\n return \"';\n }\n\n var BUTTONS = button(\"up\") + button(\"right\") + button(\"down\") + button(\"left\");\n\n var Navigator = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, options);\n this._initOptions(options);\n\n this.element.addClass(\"k-widget k-navigator\")\n .append(BUTTONS)\n .on(\"click\" + NS, \".k-button\", this._click.bind(this));\n\n var parentElement = this.element.parent().closest(\"[\" + kendo.attr(\"role\") + \"]\");\n this._keyroot = parentElement.length > 0 ? parentElement : this.element;\n this._tabindex(this._keyroot);\n\n this._keydown = this._keydown.bind(this);\n this._keyroot.on(\"keydown\", this._keydown);\n },\n\n options: {\n name: \"Navigator\",\n panStep: 1\n },\n\n events: [\n \"pan\"\n ],\n\n dispose: function() {\n this._keyroot.off(\"keydown\", this._keydown);\n },\n\n _pan: function(x, y) {\n var panStep = this.options.panStep;\n this.trigger(\"pan\", {\n x: x * panStep,\n y: y * panStep\n });\n },\n\n _click: function(e) {\n var x = 0;\n var y = 0;\n var button = $(e.currentTarget);\n\n if (button.is(\".k-navigator-up\")) {\n y = 1;\n } else if (button.is(\".k-navigator-down\")) {\n y = -1;\n } else if (button.is(\".k-navigator-right\")) {\n x = 1;\n } else if (button.is(\".k-navigator-left\")) {\n x = -1;\n }\n\n this._pan(x, y);\n e.preventDefault();\n },\n\n _keydown: function(e) {\n switch (e.which) {\n case keys.UP:\n this._pan(0, 1);\n e.preventDefault();\n break;\n\n case keys.DOWN:\n this._pan(0, -1);\n e.preventDefault();\n break;\n\n case keys.RIGHT:\n this._pan(1, 0);\n e.preventDefault();\n break;\n\n case keys.LEFT:\n this._pan(-1, 0);\n e.preventDefault();\n break;\n }\n }\n });\n\n // Exports ================================================================\n kendo.dataviz.ui.plugin(Navigator);\n\n })(window.kendo.jQuery);\n\n (function($) {\n var kendo = window.kendo;\n var Widget = kendo.ui.Widget;\n var keys = kendo.keys;\n\n // Helper functions =======================================================\n function button(dir, icon) {\n return (\"\");\n }\n\n var NS = \".kendoZoomControl\";\n var BUTTONS = button(\"in\", \"plus\") + button(\"out\", \"minus\");\n\n var PLUS = 187;\n var MINUS = 189;\n var FF_PLUS = 61;\n var FF_MINUS = 173;\n\n\n var ZoomControl = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, options);\n this._initOptions(options);\n\n this.element.addClass(\"k-widget k-zoom-control k-button-group k-group-horizontal\")\n .append(BUTTONS)\n .on(\"click\" + NS, \".k-button\", this._click.bind(this));\n\n var parentElement = this.element.parent().closest(\"[\" + kendo.attr(\"role\") + \"]\");\n this._keyroot = parentElement.length > 0 ? parentElement : this.element;\n\n this._tabindex(this._keyroot);\n\n this._keydown = this._keydown.bind(this);\n this._keyroot.on(\"keydown\", this._keydown);\n },\n\n options: {\n name: \"ZoomControl\",\n zoomStep: 1\n },\n\n events: [\n \"change\"\n ],\n\n _change: function(dir) {\n var zoomStep = this.options.zoomStep;\n this.trigger(\"change\", {\n delta: dir * zoomStep\n });\n },\n\n _click: function(e) {\n var button = $(e.currentTarget);\n var dir = 1;\n\n if (button.is(\".k-zoom-out\")) {\n dir = -1;\n }\n\n this._change(dir);\n e.preventDefault();\n },\n\n _keydown: function(e) {\n switch (e.which) {\n case keys.NUMPAD_PLUS:\n case PLUS:\n case FF_PLUS:\n this._change(1);\n break;\n\n case keys.NUMPAD_MINUS:\n case MINUS:\n case FF_MINUS:\n this._change(-1);\n break;\n }\n }\n });\n\n\n // Exports ================================================================\n kendo.dataviz.ui.plugin(ZoomControl);\n\n })(window.kendo.jQuery);\n\n (function($, undefined$1) {\n // Imports ================================================================\n var math = Math,\n atan = math.atan,\n exp = math.exp,\n pow = math.pow,\n sin = math.sin,\n log = math.log,\n tan = math.tan,\n\n kendo = window.kendo,\n Class = kendo.Class,\n\n dataviz = kendo.dataviz,\n deepExtend = kendo.deepExtend,\n\n g = kendo.geometry,\n Point = g.Point,\n\n map = dataviz.map,\n Location = map.Location,\n\n util = kendo.drawing.util,\n rad = util.rad,\n deg = util.deg,\n limit = util.limitValue;\n\n // Constants ==============================================================\n var PI = math.PI,\n PI_DIV_2 = PI / 2,\n PI_DIV_4 = PI / 4,\n DEG_TO_RAD = PI / 180;\n\n // Coordinate reference systems ===========================================\n var WGS84 = {\n a: 6378137, // Semi-major radius\n b: 6356752.314245179, // Semi-minor radius\n f: 0.0033528106647474805, // Flattening\n e: 0.08181919084262149 // Eccentricity\n };\n\n // WGS 84 / World Mercator\n var Mercator = Class.extend({\n init: function(options) {\n this._initOptions(options);\n },\n\n MAX_LNG: 180,\n MAX_LAT: 85.0840590501,\n INVERSE_ITERATIONS: 15,\n INVERSE_CONVERGENCE: 1e-12,\n\n options: {\n centralMeridian: 0,\n datum: WGS84\n },\n\n forward: function(loc, clamp) {\n var proj = this,\n options = proj.options,\n datum = options.datum,\n r = datum.a,\n lng0 = options.centralMeridian,\n lat = limit(loc.lat, -proj.MAX_LAT, proj.MAX_LAT),\n lng = clamp ? limit(loc.lng, -proj.MAX_LNG, proj.MAX_LNG) : loc.lng,\n x = rad(lng - lng0) * r,\n y = proj._projectLat(lat);\n\n return new Point(x, y);\n },\n\n _projectLat: function(lat) {\n var datum = this.options.datum,\n ecc = datum.e,\n r = datum.a,\n y = rad(lat),\n ts = tan(PI_DIV_4 + y / 2),\n con = ecc * sin(y),\n p = pow((1 - con) / (1 + con), ecc / 2);\n\n // See:\n // http://en.wikipedia.org/wiki/Mercator_projection#Generalization_to_the_ellipsoid\n return r * log(ts * p);\n },\n\n inverse: function(point, clamp) {\n var proj = this,\n options = proj.options,\n datum = options.datum,\n r = datum.a,\n lng0 = options.centralMeridian,\n lng = point.x / (DEG_TO_RAD * r) + lng0,\n lat = limit(proj._inverseY(point.y), -proj.MAX_LAT, proj.MAX_LAT);\n\n if (clamp) {\n lng = limit(lng, -proj.MAX_LNG, proj.MAX_LNG);\n }\n\n return new Location(lat, lng);\n },\n\n _inverseY: function(y) {\n var proj = this,\n datum = proj.options.datum,\n r = datum.a,\n ecc = datum.e,\n ecch = ecc / 2,\n ts = exp(-y / r),\n phi = PI_DIV_2 - 2 * atan(ts),\n i;\n\n for (i = 0; i <= proj.INVERSE_ITERATIONS; i++) {\n var con = ecc * sin(phi),\n p = pow((1 - con) / (1 + con), ecch),\n dphi = PI_DIV_2 - 2 * atan(ts * p) - phi;\n\n phi += dphi;\n\n if (math.abs(dphi) <= proj.INVERSE_CONVERGENCE) {\n break;\n }\n }\n\n return deg(phi);\n }\n });\n\n // WGS 84 / Pseudo-Mercator\n // Used by Google Maps, Bing, OSM, etc.\n // Spherical projection of ellipsoidal coordinates.\n var SphericalMercator = Mercator.extend({\n MAX_LAT: 85.0511287798,\n\n _projectLat: function(lat) {\n var r = this.options.datum.a,\n y = rad(lat),\n ts = tan(PI_DIV_4 + y / 2);\n\n return r * log(ts);\n },\n\n _inverseY: function(y) {\n var r = this.options.datum.a,\n ts = exp(-y / r);\n\n return deg(PI_DIV_2 - (2 * atan(ts)));\n }\n });\n\n var Equirectangular = Class.extend({\n forward: function(loc) {\n return new Point(loc.lng, loc.lat);\n },\n\n inverse: function(point) {\n return new Location(point.y, point.x);\n }\n });\n\n // TODO: Better (less cryptic name) for this class(es)\n var EPSG3857 = Class.extend({\n init: function() {\n var crs = this,\n proj = crs._proj = new SphericalMercator();\n\n var c = this.c = 2 * PI * proj.options.datum.a;\n\n // Scale circumference to 1, mirror Y and shift origin to top left\n this._tm = g.transform().translate(0.5, 0.5).scale(1 / c, -1 / c);\n\n // Inverse transform matrix\n this._itm = g.transform().scale(c, -c).translate(-0.5, -0.5);\n },\n\n // Location <-> Point (screen coordinates for a given scale)\n toPoint: function(loc, scale, clamp) {\n var point = this._proj.forward(loc, clamp);\n\n return point\n .transform(this._tm)\n .scale(scale || 1);\n },\n\n toLocation: function(point, scale, clamp) {\n point = point\n .clone()\n .scale(1 / (scale || 1))\n .transform(this._itm);\n\n return this._proj.inverse(point, clamp);\n }\n });\n\n var EPSG3395 = Class.extend({\n init: function() {\n this._proj = new Mercator();\n },\n\n toPoint: function(loc) {\n return this._proj.forward(loc);\n },\n\n toLocation: function(point) {\n return this._proj.inverse(point);\n }\n });\n\n // WGS 84\n var EPSG4326 = Class.extend({\n init: function() {\n this._proj = new Equirectangular();\n },\n\n toPoint: function(loc) {\n return this._proj.forward(loc);\n },\n\n toLocation: function(point) {\n return this._proj.inverse(point);\n }\n });\n\n // Exports ================================================================\n deepExtend(dataviz, {\n map: {\n crs: {\n EPSG3395: EPSG3395,\n EPSG3857: EPSG3857,\n EPSG4326: EPSG4326\n },\n datums: {\n WGS84: WGS84\n },\n projections: {\n Equirectangular: Equirectangular,\n Mercator: Mercator,\n SphericalMercator: SphericalMercator\n }\n }\n });\n\n })(window.kendo.jQuery);\n\n (function($, undefined$1) {\n // Imports ================================================================\n var kendo = window.kendo,\n Class = kendo.Class,\n\n dataviz = kendo.dataviz,\n deepExtend = kendo.deepExtend,\n\n Extent = dataviz.map.Extent,\n\n util = kendo.drawing.util,\n defined = util.defined;\n\n // Implementation =========================================================\n var Layer = Class.extend({\n init: function(map, options) {\n this._initOptions(options);\n this.map = map;\n\n this.element = $(\"
\")\n .css({\n \"zIndex\": this.options.zIndex,\n \"opacity\": this.options.opacity\n })\n .appendTo(map.scrollElement);\n\n this._beforeReset = this._beforeReset.bind(this);\n this._reset = this._reset.bind(this);\n this._resize = this._resize.bind(this);\n this._panEnd = this._panEnd.bind(this);\n this._activate();\n\n this._updateAttribution();\n },\n\n destroy: function() {\n this._deactivate();\n },\n\n show: function() {\n this.reset();\n this._activate();\n this._applyExtent(true);\n },\n\n hide: function() {\n this._deactivate();\n this._setVisibility(false);\n },\n\n reset: function() {\n this._beforeReset();\n this._reset();\n },\n\n _reset: function() {\n this._applyExtent();\n },\n\n _beforeReset: $.noop,\n\n _resize: $.noop,\n\n _panEnd: function() {\n this._applyExtent();\n },\n\n _applyExtent: function() {\n var options = this.options;\n\n var zoom = this.map.zoom();\n var matchMinZoom = !defined(options.minZoom) || zoom >= options.minZoom;\n var matchMaxZoom = !defined(options.maxZoom) || zoom <= options.maxZoom;\n\n var extent = Extent.create(options.extent);\n var inside = !extent || extent.overlaps(this.map.extent());\n\n this._setVisibility(matchMinZoom && matchMaxZoom && inside);\n },\n\n _setVisibility: function(visible) {\n this.element.css(\"display\", visible ? \"\" : \"none\");\n },\n\n _activate: function() {\n var map = this.map;\n this._deactivate();\n map.bind(\"beforeReset\", this._beforeReset);\n map.bind(\"reset\", this._reset);\n map.bind(\"resize\", this._resize);\n map.bind(\"panEnd\", this._panEnd);\n },\n\n _deactivate: function() {\n var map = this.map;\n map.unbind(\"beforeReset\", this._beforeReset);\n map.unbind(\"reset\", this._reset);\n map.unbind(\"resize\", this._resize);\n map.unbind(\"panEnd\", this._panEnd);\n },\n\n _updateAttribution: function() {\n var attr = this.map.attribution;\n\n if (attr) {\n attr.add(this.options.attribution);\n }\n }\n });\n\n // Exports ================================================================\n deepExtend(dataviz, {\n map: {\n layers: {\n Layer: Layer\n }\n }\n });\n\n })(window.kendo.jQuery);\n\n (function($, undefined$1) {\n // Imports ================================================================\n var kendo = window.kendo,\n Class = kendo.Class,\n DataSource = kendo.data.DataSource,\n\n dataviz = kendo.dataviz,\n deepExtend = kendo.deepExtend,\n\n g = kendo.geometry,\n\n d = kendo.drawing,\n Group = d.Group,\n\n last = d.util.last,\n defined = d.util.defined,\n\n map = dataviz.map,\n Location = map.Location,\n Layer = map.layers.Layer;\n\n // Implementation =========================================================\n var ShapeLayer = Layer.extend({\n init: function(map, options) {\n\n this._pan = this._pan.bind(this);\n\n Layer.fn.init.call(this, map, options);\n\n this.surface = d.Surface.create(this.element, {\n width: map.scrollElement.width(),\n height: map.scrollElement.height()\n });\n\n this._initRoot();\n\n this.movable = new kendo.ui.Movable(this.surface.element);\n this._markers = [];\n\n this._click = this._handler(\"shapeClick\");\n this.surface.bind(\"click\", this._click);\n\n this._mouseenter = this._handler(\"shapeMouseEnter\");\n this.surface.bind(\"mouseenter\", this._mouseenter);\n\n this._mouseleave = this._handler(\"shapeMouseLeave\");\n this.surface.bind(\"mouseleave\", this._mouseleave);\n\n this._initDataSource();\n },\n\n options: {\n autoBind: true\n },\n\n destroy: function() {\n Layer.fn.destroy.call(this);\n\n this.surface.destroy();\n this.dataSource.unbind(\"change\", this._dataChange);\n },\n\n setDataSource: function(dataSource) {\n if (this.dataSource) {\n this.dataSource.unbind(\"change\", this._dataChange);\n }\n\n this.dataSource = kendo.data.DataSource.create(dataSource);\n this.dataSource.bind(\"change\", this._dataChange);\n\n if (this.options.autoBind) {\n this.dataSource.fetch();\n }\n },\n\n _reset: function() {\n Layer.fn._reset.call(this);\n this._translateSurface();\n\n if (this._data) {\n this._load(this._data);\n }\n },\n\n _initRoot: function() {\n this._root = new Group();\n this.surface.draw(this._root);\n },\n\n _beforeReset: function() {\n this.surface.clear();\n this._initRoot();\n },\n\n _resize: function() {\n this.surface.size(this.map.size());\n },\n\n _initDataSource: function() {\n var dsOptions = this.options.dataSource;\n this._dataChange = this._dataChange.bind(this);\n this.dataSource = DataSource\n .create(dsOptions)\n .bind(\"change\", this._dataChange);\n\n if (dsOptions && this.options.autoBind) {\n this.dataSource.fetch();\n }\n },\n\n _dataChange: function(e) {\n this._data = e.sender.view();\n this._load(this._data);\n },\n\n _load: function(data) {\n this._clearMarkers();\n\n if (!this._loader) {\n this._loader = new GeoJSONLoader(this.map, this.options.style, this);\n }\n\n var container = new Group();\n for (var i = 0; i < data.length; i++) {\n var shape = this._loader.parse(data[i]);\n if (shape) {\n container.append(shape);\n }\n }\n\n this._root.clear();\n this._root.append(container);\n },\n\n shapeCreated: function(shape) {\n var cancelled = false;\n if (shape instanceof d.Circle) {\n cancelled = defined(this._createMarker(shape));\n }\n\n if (!cancelled) {\n var args = { layer: this, shape: shape };\n cancelled = this.map.trigger(\"shapeCreated\", args);\n }\n\n return cancelled;\n },\n\n featureCreated: function(e) {\n e.layer = this;\n this.map.trigger(\"shapeFeatureCreated\", e);\n },\n\n _createMarker: function(shape) {\n var marker = this.map.markers.bind({\n location: shape.location\n }, shape.dataItem);\n\n if (marker) {\n this._markers.push(marker);\n }\n\n return marker;\n },\n\n _clearMarkers: function() {\n for (var i = 0; i < this._markers.length; i++) {\n this.map.markers.remove(this._markers[i]);\n }\n this._markers = [];\n },\n\n _pan: function() {\n if (!this._panning) {\n this._panning = true;\n this.surface.suspendTracking();\n }\n },\n\n _panEnd: function(e) {\n Layer.fn._panEnd.call(this, e);\n this._translateSurface();\n this.surface.resumeTracking();\n this._panning = false;\n },\n\n _translateSurface: function() {\n var map = this.map;\n var nw = map.locationToView(map.extent().nw);\n\n if (this.surface.translate) {\n this.surface.translate(nw);\n this.movable.moveTo({ x: nw.x, y: nw.y });\n }\n },\n\n _handler: function(event) {\n var layer = this;\n return function(e) {\n if (e.element) {\n var args = {\n layer: layer,\n shape: e.element,\n originalEvent: e.originalEvent\n };\n\n layer.map.trigger(event, args);\n }\n };\n },\n\n _activate: function() {\n Layer.fn._activate.call(this);\n\n this.map.bind(\"pan\", this._pan);\n },\n\n _deactivate: function() {\n Layer.fn._deactivate.call(this);\n\n this.map.unbind(\"pan\", this._pan);\n }\n });\n\n var GeoJSONLoader = Class.extend({\n init: function(locator, defaultStyle, observer) {\n this.observer = observer;\n this.locator = locator;\n this.style = defaultStyle;\n },\n\n parse: function(item) {\n var root = new Group();\n var unwrap = true;\n\n if (item.type === \"Feature\") {\n unwrap = false;\n this._loadGeometryTo(root, item.geometry, item);\n this._featureCreated(root, item);\n } else {\n this._loadGeometryTo(root, item, item);\n }\n\n if (unwrap && root.children.length < 2) {\n root = root.children[0];\n }\n\n return root;\n },\n\n _shapeCreated: function(shape) {\n var cancelled = false;\n\n if (this.observer && this.observer.shapeCreated) {\n cancelled = this.observer.shapeCreated(shape);\n }\n\n return cancelled;\n },\n\n _featureCreated: function(group, dataItem) {\n if (this.observer && this.observer.featureCreated) {\n this.observer.featureCreated({\n group: group,\n dataItem: dataItem,\n properties: dataItem.properties\n });\n }\n },\n\n _loadGeometryTo: function(container, geometry, dataItem) {\n var coords = geometry.coordinates;\n var i;\n var path;\n\n switch (geometry.type) {\n case \"LineString\":\n path = this._loadPolygon(container, [coords], dataItem);\n this._setLineFill(path);\n break;\n\n case \"MultiLineString\":\n for (i = 0; i < coords.length; i++) {\n path = this._loadPolygon(container, [coords[i]], dataItem);\n this._setLineFill(path);\n }\n break;\n\n case \"Polygon\":\n this._loadPolygon(container, coords, dataItem);\n break;\n\n case \"MultiPolygon\":\n for (i = 0; i < coords.length; i++) {\n this._loadPolygon(container, coords[i], dataItem);\n }\n break;\n\n case \"Point\":\n this._loadPoint(container, coords, dataItem);\n break;\n\n case \"MultiPoint\":\n for (i = 0; i < coords.length; i++) {\n this._loadPoint(container, coords[i], dataItem);\n }\n break;\n }\n },\n\n _setLineFill: function(path) {\n var segments = path.segments;\n if (segments.length < 4 || !segments[0].anchor().equals(last(segments).anchor())) {\n path.options.fill = null;\n }\n },\n\n _loadShape: function(container, shape) {\n if (!this._shapeCreated(shape)) {\n container.append(shape);\n }\n\n return shape;\n },\n\n _loadPolygon: function(container, rings, dataItem) {\n var shape = this._buildPolygon(rings);\n shape.dataItem = dataItem;\n\n return this._loadShape(container, shape);\n },\n\n _buildPolygon: function(rings) {\n var type = rings.length > 1 ? d.MultiPath : d.Path;\n var path = new type(this.style);\n\n for (var i = 0; i < rings.length; i++) {\n for (var j = 0; j < rings[i].length; j++) {\n var point = this.locator.locationToView(\n Location.fromLngLat(rings[i][j])\n );\n\n if (j === 0) {\n path.moveTo(point.x, point.y);\n } else {\n path.lineTo(point.x, point.y);\n }\n }\n }\n\n return path;\n },\n\n _loadPoint: function(container, coords, dataItem) {\n var location = Location.fromLngLat(coords);\n var point = this.locator.locationToView(location);\n\n var circle = new g.Circle(point, 10);\n var shape = new d.Circle(circle, this.style);\n shape.dataItem = dataItem;\n shape.location = location;\n\n return this._loadShape(container, shape);\n }\n });\n\n // Exports ================================================================\n deepExtend(kendo.data, {\n schemas: {\n geojson: {\n type: \"json\",\n data: function(data) {\n if (data.type === \"FeatureCollection\") {\n return data.features;\n }\n\n if (data.type === \"GeometryCollection\") {\n return data.geometries;\n }\n\n return data;\n }\n }\n },\n transports: {\n geojson: {\n read: {\n dataType: \"json\"\n }\n }\n }\n });\n\n deepExtend(dataviz, {\n map: {\n layers: {\n shape: ShapeLayer,\n ShapeLayer: ShapeLayer\n },\n GeoJSONLoader: GeoJSONLoader\n }\n });\n\n })(window.kendo.jQuery);\n\n (function($, undefined$1) {\n // Imports ================================================================\n var kendo = window.kendo,\n getter = kendo.getter,\n\n dataviz = kendo.dataviz,\n deepExtend = kendo.deepExtend,\n\n g = kendo.geometry,\n d = kendo.drawing,\n\n util = d.util,\n defined = util.defined,\n\n map = dataviz.map,\n Location = map.Location,\n ShapeLayer = map.layers.ShapeLayer;\n\n // Implementation =========================================================\n var BubbleLayer = ShapeLayer.extend({\n options: {\n autoBind: true,\n locationField: \"location\",\n valueField: \"value\",\n minSize: 0,\n maxSize: 100,\n scale: \"sqrt\",\n symbol: \"circle\"\n },\n\n _load: function(data) {\n this.surface.clear();\n\n if (data.length === 0) {\n return;\n }\n\n var opt = this.options;\n var getValue = getter(opt.valueField);\n\n data = data.slice(0);\n data.sort(function(a, b) {\n return getValue(b) - getValue(a);\n });\n\n var scaleType = this._scaleType();\n var scale;\n for (var i = 0; i < data.length; i++) {\n var dataItem = data[i];\n var location = getter(opt.locationField)(dataItem);\n var value = getter(opt.valueField)(dataItem);\n\n if (defined(location) && defined(value)) {\n if (!scale) {\n scale = new scaleType([0, value], [opt.minSize, opt.maxSize]);\n }\n\n location = Location.create(location);\n var center = this.map.locationToView(location);\n var size = scale.map(value);\n\n var symbol = this._createSymbol({\n center: center,\n size: size,\n style: opt.style,\n dataItem: dataItem,\n location: location\n });\n\n symbol.dataItem = dataItem;\n symbol.location = location;\n symbol.value = value;\n\n this._drawSymbol(symbol);\n }\n }\n },\n\n _scaleType: function() {\n var scale = this.options.scale;\n\n if (kendo.isFunction(scale)) {\n return scale;\n }\n\n return dataviz.map.scales[scale];\n },\n\n _createSymbol: function(args) {\n var symbol = this.options.symbol;\n if (!kendo.isFunction(symbol)) {\n symbol = dataviz.map.symbols[symbol];\n }\n\n return symbol(args);\n },\n\n _drawSymbol: function(shape) {\n var args = { layer: this, shape: shape };\n var cancelled = this.map.trigger(\"shapeCreated\", args);\n if (!cancelled) {\n this.surface.draw(shape);\n }\n }\n });\n\n var SqrtScale = kendo.Class.extend({\n init: function(domain, range) {\n this._domain = domain;\n this._range = range;\n\n var domainRange = Math.sqrt(domain[1]) - Math.sqrt(domain[0]);\n var outputRange = range[1] - range[0];\n this._ratio = outputRange / domainRange;\n },\n\n map: function(value) {\n var rel = (Math.sqrt(value) - Math.sqrt(this._domain[0])) * this._ratio;\n return this._range[0] + rel;\n }\n });\n\n var Symbols = {\n circle: function(args) {\n var geo = new g.Circle(args.center, args.size / 2);\n return new d.Circle(geo, args.style);\n },\n\n square: function(args) {\n var path = new d.Path(args.style);\n var halfSize = args.size / 2;\n var center = args.center;\n\n path.moveTo(center.x - halfSize, center.y - halfSize)\n .lineTo(center.x + halfSize, center.y - halfSize)\n .lineTo(center.x + halfSize, center.y + halfSize)\n .lineTo(center.x - halfSize, center.y + halfSize)\n .close();\n\n return path;\n }\n };\n\n // Exports ================================================================\n deepExtend(dataviz, {\n map: {\n layers: {\n bubble: BubbleLayer,\n BubbleLayer: BubbleLayer\n },\n scales: {\n sqrt: SqrtScale\n },\n symbols: Symbols\n }\n });\n\n })(window.kendo.jQuery);\n\n (function($, undefined$1) {\n // Imports ================================================================\n var math = Math,\n\n kendo = window.kendo,\n Class = kendo.Class,\n template = kendo.template,\n\n dataviz = kendo.dataviz,\n deepExtend = kendo.deepExtend,\n\n g = kendo.geometry,\n Point = g.Point,\n\n Layer = dataviz.map.layers.Layer,\n\n util = kendo.util,\n renderSize = util.renderSize,\n\n drawingUtil = kendo.drawing.util,\n round = drawingUtil.round,\n limit = drawingUtil.limitValue;\n\n // Image tile layer =============================================================\n var TileLayer = Layer.extend({\n init: function(map, options) {\n Layer.fn.init.call(this, map, options);\n\n if (typeof this.options.subdomains === \"string\") {\n this.options.subdomains = this.options.subdomains.split(\"\");\n }\n\n var viewType = this._viewType();\n this._view = new viewType(this.element, this.options);\n },\n\n destroy: function() {\n Layer.fn.destroy.call(this);\n\n this._view.destroy();\n this._view = null;\n },\n\n _beforeReset: function() {\n var map = this.map;\n var origin = map.locationToLayer(map.extent().nw).round();\n this._view.viewOrigin(origin);\n },\n\n _reset: function(e) {\n var tileTitle;\n\n if (e) {\n tileTitle = e.tileTitle;\n } else {\n tileTitle = \"\";\n }\n\n Layer.fn._reset.call(this);\n this._updateView();\n this._view.reset(tileTitle);\n },\n\n _viewType: function() {\n return TileView;\n },\n\n _activate: function() {\n Layer.fn._activate.call(this);\n\n if (!kendo.support.mobileOS) {\n if (!this._pan) {\n this._pan = kendo.throttle(\n this._render.bind(this),\n 100\n );\n }\n\n this.map.bind(\"pan\", this._pan);\n }\n },\n\n _deactivate: function() {\n Layer.fn._deactivate.call(this);\n\n if (this._pan) {\n this.map.unbind(\"pan\", this._pan);\n }\n },\n\n _updateView: function() {\n var view = this._view,\n map = this.map,\n extent = map.extent(),\n extentToPoint = {\n nw: map.locationToLayer(extent.nw).round(),\n se: map.locationToLayer(extent.se).round()\n };\n\n view.center(map.locationToLayer(map.center()));\n view.extent(extentToPoint);\n view.zoom(map.zoom());\n },\n\n _resize: function() {\n this._render();\n },\n\n _panEnd: function(e) {\n Layer.fn._panEnd.call(this, e);\n this._render();\n },\n\n _render: function() {\n this._updateView();\n this._view.render();\n }\n });\n\n var TileView = Class.extend({\n init: function(element, options) {\n this.element = element;\n this._initOptions(options);\n\n this.pool = new TilePool();\n },\n\n options: {\n tileSize: 256,\n subdomains: [\"a\", \"b\", \"c\"],\n urlTemplate: function () { return \"\"; }\n },\n\n center: function(center) {\n this._center = center;\n },\n\n extent: function(extent) {\n this._extent = extent;\n },\n\n viewOrigin: function(origin) {\n this._viewOrigin = origin;\n },\n\n zoom: function(zoom) {\n this._zoom = zoom;\n },\n\n pointToTileIndex: function(point) {\n return new Point(\n math.floor(point.x / this.options.tileSize),\n math.floor(point.y / this.options.tileSize)\n );\n },\n\n tileCount: function() {\n var size = this.size(),\n firstTileIndex = this.pointToTileIndex(this._extent.nw),\n nw = this._extent.nw,\n point = this.indexToPoint(firstTileIndex).translate(-nw.x, -nw.y);\n\n return {\n x: math.ceil((math.abs(point.x) + size.width) / this.options.tileSize),\n y: math.ceil((math.abs(point.y) + size.height) / this.options.tileSize)\n };\n },\n\n size: function() {\n var nw = this._extent.nw,\n se = this._extent.se,\n diff = se.clone().translate(-nw.x, -nw.y);\n\n return {\n width: diff.x,\n height: diff.y\n };\n },\n\n indexToPoint: function(index) {\n var x = index.x, y = index.y;\n\n return new Point(\n x * this.options.tileSize,\n y * this.options.tileSize\n );\n },\n\n subdomainText: function() {\n var subdomains = this.options.subdomains;\n\n return subdomains[this.subdomainIndex++ % subdomains.length];\n },\n\n destroy: function() {\n this.element.empty();\n this.pool.empty();\n },\n\n reset: function(tileTitle) {\n this._tileTitle = tileTitle;\n this.pool.reset();\n this.subdomainIndex = 0;\n this.render();\n },\n\n render: function() {\n var size = this.tileCount(),\n firstTileIndex = this.pointToTileIndex(this._extent.nw),\n tile, x, y;\n\n for (x = 0; x < size.x; x++) {\n for (y = 0; y < size.y; y++) {\n tile = this.createTile({\n x: firstTileIndex.x + x,\n y: firstTileIndex.y + y\n });\n\n if (!tile.visible) {\n tile.show();\n }\n }\n }\n },\n\n createTile: function(currentIndex) {\n var options = this.tileOptions(currentIndex);\n var tile = this.pool.get(this._center, options);\n if (tile.element.parent().length === 0) {\n this.element.append(tile.element);\n }\n\n return tile;\n },\n\n tileOptions: function(currentIndex) {\n var index = this.wrapIndex(currentIndex),\n point = this.indexToPoint(currentIndex),\n origin = this._viewOrigin,\n offset = point.clone().translate(-origin.x, -origin.y);\n\n return {\n index: index,\n currentIndex: currentIndex,\n point: point,\n offset: roundPoint(offset),\n zoom: this._zoom,\n size: this.options.tileSize,\n subdomain: this.subdomainText(),\n urlTemplate: this.options.urlTemplate,\n errorUrlTemplate: this.options.errorUrlTemplate,\n tileTitle: this._tileTitle\n };\n },\n\n wrapIndex: function(index) {\n var boundary = math.pow(2, this._zoom);\n return {\n x: this.wrapValue(index.x, boundary),\n y: limit(index.y, 0, boundary - 1)\n };\n },\n\n wrapValue: function(value, boundary) {\n var remainder = (math.abs(value) % boundary);\n if (value >= 0) {\n value = remainder;\n } else {\n value = boundary - (remainder === 0 ? boundary : remainder);\n }\n\n return value;\n }\n });\n\n var ImageTile = Class.extend({\n init: function(id, options) {\n this.id = id;\n this.visible = true;\n\n this._initOptions(options);\n this.createElement();\n this.show();\n },\n\n options: {\n urlTemplate: function () { return \"\"; },\n errorUrlTemplate: function () { return \"\"; }\n },\n\n createElement: function() {\n this.element = $(\"