{"version":3,"sources":["webpack:///./node_modules/devextreme/viz/vector_map/projection.main.js","webpack:///./node_modules/devextreme/viz/vector_map/event_emitter.js","webpack:///./node_modules/devextreme/viz/vector_map.js","webpack:///./node_modules/devextreme/viz/vector_map/vector_map.js","webpack:///./node_modules/devextreme/viz/vector_map/control_bar.js","webpack:///./node_modules/devextreme/viz/vector_map/gesture_handler.js","webpack:///./node_modules/devextreme/viz/vector_map/tracker.js","webpack:///./node_modules/devextreme/viz/vector_map/data_exchanger.js","webpack:///./node_modules/devextreme/viz/vector_map/legend.js","webpack:///./node_modules/devextreme/viz/vector_map/layout.js","webpack:///./node_modules/devextreme/viz/vector_map/map_layer.js","webpack:///./node_modules/devextreme/viz/vector_map/tooltip_viewer.js","webpack:///./node_modules/devextreme/viz/vector_map/vector_map.utils.js","webpack:///./node_modules/devextreme/viz/vector_map/projection.js"],"names":["exports","projection","Projection","_extend","_event_emitter","_slicedToArray","arr","i","Array","isArray","_arrayWithHoles","_i","Symbol","iterator","_s","_e","_arr","_n","_d","call","next","done","push","value","length","err","return","_iterableToArrayLimit","o","minLen","_arrayLikeToArray","n","Object","prototype","toString","slice","constructor","name","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","len","arr2","_Number","Number","_min","Math","min","_max","max","_abs","abs","_round","round","_ln","log","_pow","pow","TWO_TO_LN2","LN2","DEFAULT_CENTER","NaN","floatsEqual","f1","f2","arraysEqual","a1","a2","parseAndClamp","minValue","maxValue","defaultValue","val","isFinite","parseAndClampArray","getEngine","engine","Engine","get","parameters","this","_initEvents","_params","_engine","_center","center","_adjustCenter","selectFarthestPoint","point1","point2","basePoint1","basePoint2","basePoint","selectClosestPoint","setMinMax","p1","p2","_findMinMax","findMinMax","returnArray","_minZoom","_maxZoom","_zoom","_canvas","_scale","dispose","_disposeEvents","setEngine","_fire","_changeCenter","_triggerCenterChanged","_changeZoom","_triggerZoomChanged","_setupScreen","setBounds","bounds","original","canvas","width","height","aspectRatio","ar","_x0","left","_y0","top","correction","project","screenAR","boundsAR","isNaN","_xRadius","_yRadius","setSize","getCanvas","_toScreen","coordinates","_fromScreen","_toTransformed","_xCenter","_yCenter","_toTransformedFast","_fromTransformed","transform","isInvertible","getSquareSize","size","getZoom","isChanged","setZoom","getScaledZoom","setScaledZoom","scaledZoom","changeScaledZoom","deltaZoom","getZoomScalePartition","_setupScaling","k","step","zoom","setMaxZoom","maxZoom","MAX_VALUE","getCenter","setCenter","centerChanged","zoomChanged","setCenterByPoint","screenPosition","p","q","unproject","beginMoveCenter","_moveCenter","endMoveCenter","moveCenter","shift","current","toScreenPoint","fromScreenPoint","getViewport","lt","lb","rt","rb","minMax","concat","setViewport","viewport","data","l","r","t","b","getZoomAndCenterFromViewport","getTransform","translateX","translateY","_eventNames","makeEventEmitter","method","to","arg","invertVerticalAxis","createUnprojectMethod","returnValue","source","extend","_proto","_aspectRatio","_bounds","b1","b2","delta","x0","y0","_project2","p0","createProjectUnprojectMethods","pair","projectionsCache","add","target","proto","eventEmitterMethods","obj","_callbacks","__esModule","names","ii","events","_events","default","empty","on","handlers","remove","fire","_default","module","_utils","_projection","_control_bar","_gesture_handler","_tracker","_data_exchanger","_legend","_layout","_map_layer","_tooltip_viewer","_vector_map","_base_widget","_interopRequireDefault","_component_registrator","_export","_title","_tooltip","_loading_indicator","_annotations","RE_STARTS_LAYERS","RE_ENDS_DATA_SOURCE","mergeBounds","sumBounds","dataBounds","dxVectorMap","inherit","_eventsMap","onClick","onCenterChanged","onZoomFactorChanged","onHoverChanged","onSelectionChanged","_rootClassPrefix","_rootClass","_themeSection","_fontFields","_initLayerCollection","dataKey","that","_layerCollection","MapLayerCollection","renderer","_renderer","themeManager","_themeManager","tracker","eventTrigger","_eventTrigger","dataExchanger","_dataExchanger","tooltip","notifyDirty","_notifyDirty","notifyReady","_notifyReady","dataReady","option","_preventProjectionEvents","_getBoundsFromData","_allowProjectionEvents","ceil","floor","longitudeLength","latitudeLength","_getBoundingBoxFromDataSource","boundsByData","getMaxBound","getLayers","map","getBounds","_initLegendsControl","_legendsControl","LegendsControl","container","_root","widget","layoutControl","_layoutControl","_initControlBar","_controlBar","ControlBar","_initElements","preventProjectionEvents","generateDataKey","notifyCounter","_resetIsReady","_drawn","DataExchanger","zoomFactor","Tracker","root","_gestureHandler","GestureHandler","LayoutControl","suspend","_createHtmlStructure","_prepareExtraElements","_tooltipViewer","TooltipViewer","layerCollection","_change_RESUME_LAYOUT","resume","_initialChanges","_layoutChangesOrder","_customChangesOrder","_initCore","attr","align","cursor","_disposeCore","_setupInteraction","options","centeringEnabled","parseScalar","_getOption","zoomingEnabled","setInteraction","_getDefaultSize","_applySize","rect","layout","right","bottom","setRect","_requestChange","_optionChanging","currentValue","nextValue","dataSource","_applyChanges","callBase","apply","arguments","_optionChangesMap","background","layers","extraElements","controlBar","legends","touchEnabled","wheelEnabled","panningEnabled","maxZoomFactor","_optionChangesOrder","_change_PROJECTION","_setProjection","_change_BOUNDS","_setBounds","_change_MAX_ZOOM_FACTOR","_setMaxZoom","_change_ZOOM_FACTOR","_setZoom","_change_CENTER","_setCenter","_change_BACKGROUND","_setBackgroundOptions","_change_LAYERS","_setLayerCollectionOptions","_change_CONTROL_BAR","_setControlBarOptions","_change_EXTRA_ELEMENTS","_renderExtraElements","_change_LEGENDS","_setLegendsOptions","_change_TRACKER","_setTrackerOptions","_change_INTERACTION","_themeDependentChanges","setBackgroundOptions","setOptions","items","infinityBounds","resultBBox","reduce","sumBBox","layerData","getData","itemCount","count","rootBBox","getBBox","proxy","getLayerByIndex","index","layer","byIndex","getLayerByName","byName","clearSelection","_noEvent","convertCoordinates","convertToGeo","x","y","convertToXY","longitude","latitude","addPlugin","plugin","plugins","core","vectorMap","_math","_floor","_sqrt","sqrt","parseHorizontalAlignment","enumParser","parseVerticalAlignment","SIZE_OPTIONS","bigCircleSize","smallCircleSize","buttonSize","arrowButtonOffset","incDecButtonSize","incButtonOffset","decButtonOffset","sliderLineStartOffset","sliderLineEndOffset","sliderLength","sliderWidth","trackerGap","COMMAND_TO_TYPE_MAP","_createElements","addItem","_subscribeToProjection","_subscribeToTracker","_createCallbacks","disposeCommand","command","_owner","update","finish","ResetCommand","owner","_command","MoveCommand","timeout","dx","dy","_stop","clearTimeout","endMove","beginMove","callback","move","setTimeout","ZoomCommand","dZoom","_adjustZoom","_zoomFactor","ZoomDragCommand","_pos","_flags","removeItem","linkRemove","linkOff","_offProjection","_offTracker","updateZoom","_update","_zoomPartition","_sliderUnitLength","_sliderLineLength","isActive","start","_processStart","_processMove","end","_processEnd","reset","isCenter","isZoom","g","linkOn","buttonsGroups","_buttonsGroup","append","trackersGroup","stroke","fill","opacity","css","_createButtons","_createTrackers","group","offset1","offset2","directionOptions","circle","path","_zoomLine","_zoomDrag","size2","_zoomDragTracker","resize","_isActive","visibility","getLayoutOptions","_layoutOptions","locate","_margin","_isEnabled","linkAppend","updateLayout","interaction","enabled","margin","horizontalAlignment","verticalAlignment","borderWidth","borderColor","color","h","points","_applyZoom","commandType","flags","FLAG_CENTERING","_LN2","params","_x","_y","_processZoom","_centeringEnabled","_zoomingEnabled","coords","ratio","getRootOffset","_events_engine","_window","_dom_adapter","_index","_wheel","EVENTS","Focus","navigator","getNavigator","_addNamespace","addNamespace","_NAME","_createEventHandlers","_createProjectionHandlers","_focus","_attachHandlers","getDistance","x1","y1","x2","y2","isTouchEvent","event","type","originalEvent","pointerType","selectItem","item","getEventCoords","touch","touches","pageX","pageY","getPointerId","pointerId","getMultitouchEventCoords","pointerEnabled","msPointerEnabled","hasProperty","wheel","_detachHandlers","_docHandlers","_rootHandlers","_startClick","_clickState","threshold","time","Date","now","_endClick","state","$event","_startDrag","_dragState","_moveDrag","active","_endDrag","_wheelZoom","lock","_wheelLock","dirTime","dir","_delta","sign","adjustWheelDelta","_startZoom","pointer2","_zoomState","pointer1","x1_0","y1_0","x2_0","y2_0","ready","_moveZoom","_endZoom","startDistance","currentDistance","_startHover","_doHover","_moveHover","isTouch","_cancelHover","_hoverTarget","_hoverState","_startFocus","_doFocus","_moveFocus","_cancelFocus","turnOff","turnOn","cancel","DATA_KEY","tagName","parentNode","_isTouchEnabled","preventDefault","stopPropagation","_isWheelEnabled","handler","off","getDocument","_activeData","_data","_disabled","_offTimer","onCheck","result","_store","_get","category","store","callbacks","set","bind","unbind","_extend2","_iterator","_object","_each","each","unknownSource","Legend","after","enableLinks","backgroundClass","itemsGroupClass","textField","getFormatObject","_onDataChanged","_updateData","_items","virtualLink","clone","_unbindData","erase","draw","_options","defaultColor","partition","values","field","list","states","normal","visible","buildData","_dataName","theme","title","_dataCategory","_bindData","grouping","_","optionList","splice","_array","_inArray","inArray","horizontalAlignmentMap","verticalAlignmentMap","createCells","hStep","vStep","h1","h2","h3","h4","v1","v2","v3","cells","horInversion","verInversion","itemsList","getCellIndex","cell","adjustCellsAndApplyLayout","forceMode","hasHiddenItems","otherCell","size1","otherCell1","otherCell2","adjustCellSizes","cellRect","cellWidth","cellHeight","xOffset","yOffset","currentHeight","totalL","totalT","totalR","totalB","moves","applyCellLayout","_suspended","_widget","_updateLayout","resolveItemsDeferred","filter","el","getTemplatesGroups","getTemplatesDef","applyLayout","_common","_data_helper","_type","_deferred","_noop","noop","_concat","STATE_TO_INDEX","SELECTIONS","none","single","multiple","_isArray","_String","String","a","c","getName","opt","EmptySource","ArraySource","raw","GeoJsonSource","isGeoJsonObject","features","setAreaLabelVisibility","label","text","spaceSize","setLineLabelVisibility","getDataValue","dataField","attribute","geometry","attributes","bbox","properties","TYPE_TO_TYPE_MAP","Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","pick","groupByColor","groupBySize","emptyStrategy","setup","arrange","updateGrouping","getDefaultColor","strategiesByType","strategiesByGeometry","strategiesByElementType","selectStrategy","sample","normalizeEnum","elementType","strategy","guessTypeByData","fullType","applyElementState","figure","styles","projectPointList","output","projectLineString","projectPolygon","transformList","transformPointList","content","getItemSettings","context","settings","combineSettings","findGroupingIndex","applyGrouping","paletteIndex","_colors","middle","raiseChanged","handle","common","partial","font","valueCallback","projectLabel","centroid","resultCentroid","maxArea","calculatePolygonCentroid","area","transformLabel","refresh","getLabelOffset","getStyles","hoveredBorderColor","hoveredBorderWidth","hoveredColor","hoveredOpacity","selectedBorderColor","selectedBorderWidth","selectedColor","selectedOpacity","setState","hasLabelsGroup","resultData","maxLength","calculateLineStringData","_draw","_getStyles","_setState","ctx","palette","getAccentColor","projectMultiPolygon","dot","shadowFilter","back","sharp","shadow","id","style","hoveredSize","selectedSize","selectedStep","hoveredBackSize","backStep","selectedBackSize","backColor","backOpacity","bubble","handles","minSize","maxSize","sizeGroups","deltaValue","deltaSize","_settings","pie","border","colors","sum","zeroSum","total","forEach","arc","createPalette","useHighlight","extensionMode","generateColors","image","href","hoveredStep","MapLayerElement","performGrouping","settingField","valuesCallback","isFunction","dropGrouping","setFlag","flag","hasFlag","colorGroups","colorGroupingField","_palette","createDiscretePalette","getColor","sizeGroupingField","sizes","MapLayer","_onProjection","getElements","getProxies","getDataSource","createLayerProxy","_context","str","hover","selection","_container","_handles","_dataSourceLoaded","cross","cx","cy","minX","maxX","minY","maxY","totalLength","min0","max0","min1","max1","_layers","_layerByName","_rect","_clip","clipRect","_background","_dataReady","getDataReadyCallback","_removeHandlers","_project","screen","_transform","_transformCore","_dataSourceLoadErrorHandler","_dataSourceChangedHandler","sourceType","_dataSource","_dataSourceOptions","paginate","_getSpecificDataSourceOption","_specificDataSourceOption","_normalizeDataSource","_loadMode","_disposeDataSource","_destroyHandles","labelRoot","Deferred","_options_dataSource","_refreshDataSource","isContextChanged","selectionMode","clear","paletteSize","processCommonSettings","hasSeparateLabel","hoverEnabled","resetSelected","_createHandles","_updateHandles","resolve","_ref","coordsToBoundsSearch","ac","initValue","dataItem","proxies","customize","restoreSelected","measureLabel","adjustLabel","getProxy","raiseClick","dxEvent","hoverItem","setHovered","setSelected","attrs","selected","isSelected","applySettings","createProxy","_ctx","_fig","_label","_state","_coordinates","_projectLabel","_labelProjection","_transformLabel","_styles","_refreshLabel","labelSettings","patchFontOptions","bBox","offset","_setForeground","toForeground","toBackground","currentState","newState","tmp","click","readyCallbacks","layerByName","some","isDefined","when","_updateClip","bw","_borderWidth","isEnabled","show","hide","nextDataKey","defineProperty","enumerable","_sin","sin","_asin","asin","_tan","tan","_atan","atan","_exp","exp","_log","PI","PI_DIV_4","RADIANS","MERCATOR_LAT_BOUND","MILLER_LAT_BOUND","clamp"],"mappings":"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","file":"vendors~a9f628ba.7924b62b4896400cf9ec.bundle.js","sourcesContent":["/**\r\n * DevExtreme (viz/vector_map/projection.main.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.projection = exports.Projection = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _event_emitter = require(\"./event_emitter\");\r\n\r\nfunction _slicedToArray(arr, i) {\r\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest()\r\n}\r\n\r\nfunction _nonIterableRest() {\r\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n if (!o) {\r\n return\r\n }\r\n if (\"string\" === typeof o) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n var n = Object.prototype.toString.call(o).slice(8, -1);\r\n if (\"Object\" === n && o.constructor) {\r\n n = o.constructor.name\r\n }\r\n if (\"Map\" === n || \"Set\" === n) {\r\n return Array.from(o)\r\n }\r\n if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n if (null == len || len > arr.length) {\r\n len = arr.length\r\n }\r\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n arr2[i] = arr[i]\r\n }\r\n return arr2\r\n}\r\n\r\nfunction _iterableToArrayLimit(arr, i) {\r\n var _i = arr && (\"undefined\" !== typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]);\r\n if (null == _i) {\r\n return\r\n }\r\n var _arr = [];\r\n var _n = true;\r\n var _d = false;\r\n var _s, _e;\r\n try {\r\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\r\n _arr.push(_s.value);\r\n if (i && _arr.length === i) {\r\n break\r\n }\r\n }\r\n } catch (err) {\r\n _d = true;\r\n _e = err\r\n } finally {\r\n try {\r\n if (!_n && null != _i.return) {\r\n _i.return()\r\n }\r\n } finally {\r\n if (_d) {\r\n throw _e\r\n }\r\n }\r\n }\r\n return _arr\r\n}\r\n\r\nfunction _arrayWithHoles(arr) {\r\n if (Array.isArray(arr)) {\r\n return arr\r\n }\r\n}\r\nvar _Number = Number;\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar _abs = Math.abs;\r\nvar _round = Math.round;\r\nvar _ln = Math.log;\r\nvar _pow = Math.pow;\r\nvar TWO_TO_LN2 = 2 / Math.LN2;\r\nvar MIN_BOUNDS_RANGE = 1 / 3600 / 180 / 10;\r\nvar DEFAULT_MIN_ZOOM = 1;\r\nvar DEFAULT_MAX_ZOOM = 256;\r\nvar DEFAULT_CENTER = [NaN, NaN];\r\nvar DEFAULT_ENGINE_NAME = \"mercator\";\r\n\r\nfunction floatsEqual(f1, f2) {\r\n return _abs(f1 - f2) < 1e-8\r\n}\r\n\r\nfunction arraysEqual(a1, a2) {\r\n return floatsEqual(a1[0], a2[0]) && floatsEqual(a1[1], a2[1])\r\n}\r\n\r\nfunction parseAndClamp(value, minValue, maxValue, defaultValue) {\r\n var val = _Number(value);\r\n return isFinite(val) ? _min(_max(val, minValue), maxValue) : defaultValue\r\n}\r\n\r\nfunction parseAndClampArray(value, minValue, maxValue, defaultValue) {\r\n return [parseAndClamp(value[0], minValue[0], maxValue[0], defaultValue[0]), parseAndClamp(value[1], minValue[1], maxValue[1], defaultValue[1])]\r\n}\r\n\r\nfunction getEngine(engine) {\r\n return engine instanceof Engine && engine || projection.get(engine) || projection(engine) || projection.get(DEFAULT_ENGINE_NAME)\r\n}\r\nvar Projection = function(parameters) {\r\n var that = this;\r\n that._initEvents();\r\n that._params = parameters;\r\n that._engine = getEngine();\r\n that._center = that._engine.center();\r\n that._adjustCenter()\r\n};\r\nexports.Projection = Projection;\r\nProjection.prototype = {\r\n constructor: Projection,\r\n _minZoom: DEFAULT_MIN_ZOOM,\r\n _maxZoom: DEFAULT_MAX_ZOOM,\r\n _zoom: DEFAULT_MIN_ZOOM,\r\n _center: DEFAULT_CENTER,\r\n _canvas: {},\r\n _scale: [],\r\n dispose: function() {\r\n this._disposeEvents()\r\n },\r\n setEngine: function(value) {\r\n var that = this;\r\n var engine = getEngine(value);\r\n if (that._engine !== engine) {\r\n that._engine = engine;\r\n that._fire(\"engine\");\r\n if (that._changeCenter(engine.center())) {\r\n that._triggerCenterChanged()\r\n }\r\n if (that._changeZoom(that._minZoom)) {\r\n that._triggerZoomChanged()\r\n }\r\n that._adjustCenter();\r\n that._setupScreen()\r\n }\r\n },\r\n setBounds: function(bounds) {\r\n if (void 0 !== bounds) {\r\n this.setEngine(this._engine.original().bounds(bounds))\r\n }\r\n },\r\n _setupScreen: function() {\r\n var that = this;\r\n var canvas = that._canvas;\r\n var width = canvas.width;\r\n var height = canvas.height;\r\n var engine = that._engine;\r\n var aspectRatio = engine.ar();\r\n that._x0 = canvas.left + width / 2;\r\n that._y0 = canvas.top + height / 2;\r\n var min = [that.project([engine.min()[0], 0])[0], that.project([0, engine.min()[1]])[1]];\r\n var max = [that.project([engine.max()[0], 0])[0], that.project([0, engine.max()[1]])[1]];\r\n var screenAR = width / height;\r\n var boundsAR = _abs(max[0] - min[0]) / _abs(max[1] - min[1]);\r\n var correction;\r\n if (isNaN(boundsAR) || 0 === boundsAR || _min(screenAR, aspectRatio) <= aspectRatio * boundsAR && aspectRatio * boundsAR <= _max(screenAR, aspectRatio)) {\r\n correction = 1\r\n } else {\r\n correction = boundsAR > 1 ? boundsAR : 1 / boundsAR\r\n }\r\n if (aspectRatio * boundsAR >= screenAR) {\r\n that._xRadius = width / 2 / correction;\r\n that._yRadius = width / 2 / (aspectRatio * correction)\r\n } else {\r\n that._xRadius = height / 2 * (aspectRatio / correction);\r\n that._yRadius = height / 2 / correction\r\n }\r\n that._fire(\"screen\")\r\n },\r\n setSize: function(canvas) {\r\n this._canvas = canvas;\r\n this._setupScreen()\r\n },\r\n getCanvas: function() {\r\n return this._canvas\r\n },\r\n _toScreen: function(coordinates) {\r\n return [this._x0 + this._xRadius * coordinates[0], this._y0 + this._yRadius * coordinates[1]]\r\n },\r\n _fromScreen: function(coordinates) {\r\n return [(coordinates[0] - this._x0) / this._xRadius, (coordinates[1] - this._y0) / this._yRadius]\r\n },\r\n _toTransformed: function(coordinates) {\r\n return [coordinates[0] * this._zoom + this._xCenter, coordinates[1] * this._zoom + this._yCenter]\r\n },\r\n _toTransformedFast: function(coordinates) {\r\n return [coordinates[0] * this._zoom, coordinates[1] * this._zoom]\r\n },\r\n _fromTransformed: function(coordinates) {\r\n return [(coordinates[0] - this._xCenter) / this._zoom, (coordinates[1] - this._yCenter) / this._zoom]\r\n },\r\n _adjustCenter: function() {\r\n var that = this;\r\n var center = that._engine.project(that._center);\r\n that._xCenter = -center[0] * that._zoom || 0;\r\n that._yCenter = -center[1] * that._zoom || 0\r\n },\r\n project: function(coordinates) {\r\n return this._engine.project(coordinates)\r\n },\r\n transform: function(coordinates) {\r\n return this._toScreen(this._toTransformedFast(coordinates))\r\n },\r\n isInvertible: function() {\r\n return this._engine.isInvertible()\r\n },\r\n getSquareSize: function(size) {\r\n return [size[0] * this._zoom * this._xRadius, size[1] * this._zoom * this._yRadius]\r\n },\r\n getZoom: function() {\r\n return this._zoom\r\n },\r\n _changeZoom: function(value) {\r\n var that = this;\r\n var oldZoom = that._zoom;\r\n var newZoom = that._zoom = parseAndClamp(value, that._minZoom, that._maxZoom, that._minZoom);\r\n var isChanged = !floatsEqual(oldZoom, newZoom);\r\n if (isChanged) {\r\n that._adjustCenter();\r\n that._fire(\"zoom\")\r\n }\r\n return isChanged\r\n },\r\n setZoom: function(value) {\r\n if (this._engine.isInvertible() && this._changeZoom(value)) {\r\n this._triggerZoomChanged()\r\n }\r\n },\r\n getScaledZoom: function() {\r\n return _round((this._scale.length - 1) * _ln(this._zoom) / _ln(this._maxZoom))\r\n },\r\n setScaledZoom: function(scaledZoom) {\r\n this.setZoom(this._scale[_round(scaledZoom)])\r\n },\r\n changeScaledZoom: function(deltaZoom) {\r\n this.setZoom(this._scale[_max(_min(_round(this.getScaledZoom() + deltaZoom), this._scale.length - 1), 0)])\r\n },\r\n getZoomScalePartition: function() {\r\n return this._scale.length - 1\r\n },\r\n _setupScaling: function() {\r\n var that = this;\r\n var k = _max(_round(TWO_TO_LN2 * _ln(that._maxZoom)), 4);\r\n var step = _pow(that._maxZoom, 1 / k);\r\n var zoom = that._minZoom;\r\n that._scale = [zoom];\r\n for (var i = 1; i <= k; ++i) {\r\n that._scale.push(zoom *= step)\r\n }\r\n },\r\n setMaxZoom: function(maxZoom) {\r\n var that = this;\r\n that._minZoom = DEFAULT_MIN_ZOOM;\r\n that._maxZoom = parseAndClamp(maxZoom, that._minZoom, _Number.MAX_VALUE, DEFAULT_MAX_ZOOM);\r\n that._setupScaling();\r\n if (that._zoom > that._maxZoom) {\r\n that.setZoom(that._maxZoom)\r\n }\r\n that._fire(\"max-zoom\")\r\n },\r\n getCenter: function() {\r\n return this._center.slice()\r\n },\r\n setCenter: function(value) {\r\n if (this._engine.isInvertible() && this._changeCenter(value || [])) {\r\n this._triggerCenterChanged()\r\n }\r\n },\r\n _changeCenter: function(value) {\r\n var that = this;\r\n var engine = that._engine;\r\n var oldCenter = that._center;\r\n var newCenter = that._center = parseAndClampArray(value, engine.min(), engine.max(), engine.center());\r\n var isChanged = !arraysEqual(oldCenter, newCenter);\r\n if (isChanged) {\r\n that._adjustCenter();\r\n that._fire(\"center\")\r\n }\r\n return isChanged\r\n },\r\n _triggerCenterChanged: function() {\r\n this._params.centerChanged(this.getCenter())\r\n },\r\n _triggerZoomChanged: function() {\r\n this._params.zoomChanged(this.getZoom())\r\n },\r\n setCenterByPoint: function(coordinates, screenPosition) {\r\n var that = this;\r\n var p = that._engine.project(coordinates);\r\n var q = that._fromScreen(screenPosition);\r\n that.setCenter(that._engine.unproject([-q[0] / that._zoom + p[0], -q[1] / that._zoom + p[1]]))\r\n },\r\n beginMoveCenter: function() {\r\n if (this._engine.isInvertible()) {\r\n this._moveCenter = this._center\r\n }\r\n },\r\n endMoveCenter: function() {\r\n var that = this;\r\n if (that._moveCenter) {\r\n if (!arraysEqual(that._moveCenter, that._center)) {\r\n that._triggerCenterChanged()\r\n }\r\n that._moveCenter = null\r\n }\r\n },\r\n moveCenter: function(shift) {\r\n var that = this;\r\n if (that._moveCenter) {\r\n var current = that.toScreenPoint(that._center);\r\n that._changeCenter(that.fromScreenPoint([current[0] + shift[0], current[1] + shift[1]]))\r\n }\r\n },\r\n getViewport: function() {\r\n var that = this;\r\n var unproject = that._engine.unproject;\r\n var lt = unproject(that._fromTransformed([-1, -1]));\r\n var lb = unproject(that._fromTransformed([-1, 1]));\r\n var rt = unproject(that._fromTransformed([1, -1]));\r\n var rb = unproject(that._fromTransformed([1, 1]));\r\n var minMax = findMinMax([selectFarthestPoint(lt[0], lb[0], rt[0], rb[0]), selectFarthestPoint(lt[1], rt[1], lb[1], rb[1])], [selectFarthestPoint(rt[0], rb[0], lt[0], lb[0]), selectFarthestPoint(lb[1], rb[1], lt[1], rt[1])]);\r\n return [].concat(minMax.min, minMax.max)\r\n },\r\n setViewport: function(viewport) {\r\n var engine = this._engine;\r\n var data = viewport ? getZoomAndCenterFromViewport(engine.project, engine.unproject, viewport) : [this._minZoom, engine.center()];\r\n this.setZoom(data[0]);\r\n this.setCenter(data[1])\r\n },\r\n getTransform: function() {\r\n return {\r\n translateX: this._xCenter * this._xRadius,\r\n translateY: this._yCenter * this._yRadius\r\n }\r\n },\r\n fromScreenPoint: function(coordinates) {\r\n return this._engine.unproject(this._fromTransformed(this._fromScreen(coordinates)))\r\n },\r\n toScreenPoint: function(coordinates) {\r\n return this._toScreen(this._toTransformed(this._engine.project(coordinates)))\r\n },\r\n _eventNames: [\"engine\", \"screen\", \"center\", \"zoom\", \"max-zoom\"]\r\n};\r\n(0, _event_emitter.makeEventEmitter)(Projection);\r\n\r\nfunction selectFarthestPoint(point1, point2, basePoint1, basePoint2) {\r\n var basePoint = (basePoint1 + basePoint2) / 2;\r\n return _abs(point1 - basePoint) > _abs(point2 - basePoint) ? point1 : point2\r\n}\r\n\r\nfunction selectClosestPoint(point1, point2, basePoint1, basePoint2) {\r\n var basePoint = (basePoint1 + basePoint2) / 2;\r\n return _abs(point1 - basePoint) < _abs(point2 - basePoint) ? point1 : point2\r\n}\r\n\r\nfunction getZoomAndCenterFromViewport(project, unproject, viewport) {\r\n var lt = project([viewport[0], viewport[3]]);\r\n var lb = project([viewport[0], viewport[1]]);\r\n var rt = project([viewport[2], viewport[3]]);\r\n var rb = project([viewport[2], viewport[1]]);\r\n var l = selectClosestPoint(lt[0], lb[0], rt[0], rb[0]);\r\n var r = selectClosestPoint(rt[0], rb[0], lt[0], lb[0]);\r\n var t = selectClosestPoint(lt[1], rt[1], lb[1], rb[1]);\r\n var b = selectClosestPoint(lb[1], rb[1], lt[1], rt[1]);\r\n return [2 / _max(_abs(l - r), _abs(t - b)), unproject([(l + r) / 2, (t + b) / 2])]\r\n}\r\n\r\nfunction setMinMax(engine, p1, p2) {\r\n var _findMinMax = findMinMax(p1, p2),\r\n min = _findMinMax.min,\r\n max = _findMinMax.max;\r\n engine.min = returnArray(min);\r\n engine.max = returnArray(max)\r\n}\r\nvar Engine = function() {\r\n function Engine(parameters) {\r\n var that = this;\r\n var project = createProjectMethod(parameters.to);\r\n var unproject = parameters.from ? createUnprojectMethod(parameters.from) : returnValue(DEFAULT_CENTER);\r\n that.project = project;\r\n that.unproject = unproject;\r\n that.original = returnValue(that);\r\n that.source = function() {\r\n return (0, _extend.extend)({}, parameters)\r\n };\r\n that.isInvertible = returnValue(!!parameters.from);\r\n that.ar = returnValue(parameters.aspectRatio > 0 ? _Number(parameters.aspectRatio) : 1);\r\n that.center = returnArray(unproject([0, 0]));\r\n setMinMax(that, [unproject([-1, 0])[0], unproject([0, 1])[1]], [unproject([1, 0])[0], unproject([0, -1])[1]])\r\n }\r\n var _proto = Engine.prototype;\r\n _proto.aspectRatio = function(_aspectRatio) {\r\n var engine = new Engine((0, _extend.extend)(this.source(), {\r\n aspectRatio: _aspectRatio\r\n }));\r\n engine.original = this.original;\r\n engine.min = this.min;\r\n engine.max = this.max;\r\n return engine\r\n };\r\n _proto.bounds = function(_bounds) {\r\n _bounds = _bounds || [];\r\n var parameters = this.source();\r\n var min = this.min();\r\n var max = this.max();\r\n var b1 = parseAndClampArray([_bounds[0], _bounds[1]], min, max, min);\r\n var b2 = parseAndClampArray([_bounds[2], _bounds[3]], min, max, max);\r\n var p1 = parameters.to(b1);\r\n var p2 = parameters.to(b2);\r\n var delta = _min(_abs(p2[0] - p1[0]) > MIN_BOUNDS_RANGE ? _abs(p2[0] - p1[0]) : 2, _abs(p2[1] - p1[1]) > MIN_BOUNDS_RANGE ? _abs(p2[1] - p1[1]) : 2);\r\n if (delta < 2) {\r\n (0, _extend.extend)(parameters, createProjectUnprojectMethods(parameters.to, parameters.from, p1, p2, delta))\r\n }\r\n var engine = new Engine(parameters);\r\n engine.original = this.original;\r\n setMinMax(engine, b1, b2);\r\n return engine\r\n };\r\n return Engine\r\n}();\r\n\r\nfunction invertVerticalAxis(pair) {\r\n return [pair[0], -pair[1]]\r\n}\r\n\r\nfunction createProjectMethod(method) {\r\n return function(arg) {\r\n return invertVerticalAxis(method(arg))\r\n }\r\n}\r\n\r\nfunction createUnprojectMethod(method) {\r\n return function(arg) {\r\n return method(invertVerticalAxis(arg))\r\n }\r\n}\r\n\r\nfunction returnValue(value) {\r\n return function() {\r\n return value\r\n }\r\n}\r\n\r\nfunction returnArray(value) {\r\n return function() {\r\n return value.slice()\r\n }\r\n}\r\n\r\nfunction findMinMax(p1, p2) {\r\n return {\r\n min: [_min(p1[0], p2[0]), _min(p1[1], p2[1])],\r\n max: [_max(p1[0], p2[0]), _max(p1[1], p2[1])]\r\n }\r\n}\r\nvar projection = function(parameters) {\r\n return parameters && parameters.to ? new Engine(parameters) : null\r\n};\r\nexports.projection = projection;\r\nvar projectionsCache = {};\r\nprojection.get = function(name) {\r\n return projectionsCache[name] || null\r\n};\r\nprojection.add = function(name, engine) {\r\n engine = engine instanceof Engine && engine || projection(engine);\r\n if (!projectionsCache[name] && engine) {\r\n projectionsCache[name] = engine\r\n }\r\n return projection\r\n};\r\n\r\nfunction createProjectUnprojectMethods(project, unproject, p1, p2, delta) {\r\n var x0 = (p1[0] + p2[0]) / 2 - delta / 2;\r\n var y0 = (p1[1] + p2[1]) / 2 - delta / 2;\r\n var k = 2 / delta;\r\n return {\r\n to: function(coordinates) {\r\n var _project = project(coordinates),\r\n _project2 = _slicedToArray(_project, 2),\r\n p0 = _project2[0],\r\n p1 = _project2[1];\r\n return [-1 + (p0 - x0) * k, -1 + (p1 - y0) * k]\r\n },\r\n from: function(coordinates) {\r\n return unproject([x0 + (coordinates[0] + 1) / k, y0 + (coordinates[1] + 1) / k])\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (viz/vector_map/event_emitter.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.makeEventEmitter = makeEventEmitter;\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar eventEmitterMethods = {\r\n _initEvents: function() {\r\n var names = this._eventNames;\r\n var i;\r\n var ii = names.length;\r\n var events = this._events = {};\r\n for (i = 0; i < ii; ++i) {\r\n events[names[i]] = (0, _callbacks.default)()\r\n }\r\n },\r\n _disposeEvents: function() {\r\n var events = this._events;\r\n var name;\r\n for (name in events) {\r\n events[name].empty()\r\n }\r\n this._events = null\r\n },\r\n on: function(handlers) {\r\n var events = this._events;\r\n var name;\r\n for (name in handlers) {\r\n events[name].add(handlers[name])\r\n }\r\n return dispose;\r\n\r\n function dispose() {\r\n for (name in handlers) {\r\n events[name].remove(handlers[name])\r\n }\r\n }\r\n },\r\n _fire: function(name, arg) {\r\n this._events[name].fire(arg)\r\n }\r\n};\r\n\r\nfunction makeEventEmitter(target) {\r\n var proto = target.prototype;\r\n var name;\r\n for (name in eventEmitterMethods) {\r\n proto[name] = eventEmitterMethods[name]\r\n }\r\n}\r\n","/**\r\n * DevExtreme (viz/vector_map.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _vector_map = _interopRequireDefault(require(\"./vector_map/vector_map\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _vector_map.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/vector_map/vector_map.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _utils = require(\"../core/utils\");\r\nvar _projection = require(\"./projection.main\");\r\nvar _control_bar = require(\"./control_bar\");\r\nvar _gesture_handler = require(\"./gesture_handler\");\r\nvar _tracker = require(\"./tracker\");\r\nvar _data_exchanger = require(\"./data_exchanger\");\r\nvar _legend = require(\"./legend\");\r\nvar _layout = require(\"./layout\");\r\nvar _map_layer = require(\"./map_layer\");\r\nvar _tooltip_viewer = require(\"./tooltip_viewer\");\r\nvar _vector_map = require(\"./vector_map.utils\");\r\nrequire(\"./projection\");\r\nvar _base_widget = _interopRequireDefault(require(\"../core/base_widget\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _export = require(\"../core/export\");\r\nvar _title = require(\"../core/title\");\r\nvar _tooltip = require(\"../core/tooltip\");\r\nvar _loading_indicator = require(\"../core/loading_indicator\");\r\nvar _annotations = require(\"../core/annotations\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DEFAULT_WIDTH = 800;\r\nvar DEFAULT_HEIGHT = 400;\r\nvar RE_STARTS_LAYERS = /^layers/;\r\nvar RE_ENDS_DATA_SOURCE = /\\.dataSource$/;\r\n\r\nfunction mergeBounds(sumBounds, dataBounds) {\r\n return dataBounds ? [Math.min(dataBounds[0], dataBounds[2], sumBounds[0]), Math.min(dataBounds[1], dataBounds[3], sumBounds[3]), Math.max(dataBounds[0], dataBounds[2], sumBounds[2]), Math.max(dataBounds[1], dataBounds[3], sumBounds[1])] : sumBounds\r\n}\r\nvar dxVectorMap = _base_widget.default.inherit({\r\n _eventsMap: {\r\n onClick: {\r\n name: \"click\"\r\n },\r\n onCenterChanged: {\r\n name: \"centerChanged\"\r\n },\r\n onZoomFactorChanged: {\r\n name: \"zoomFactorChanged\"\r\n },\r\n onHoverChanged: {\r\n name: \"hoverChanged\"\r\n },\r\n onSelectionChanged: {\r\n name: \"selectionChanged\"\r\n }\r\n },\r\n _rootClassPrefix: \"dxm\",\r\n _rootClass: \"dxm-vector-map\",\r\n _themeSection: \"map\",\r\n _fontFields: [\"layer:area.label.font\", \"layer:marker:dot.label.font\", \"layer:marker:bubble.label.font\", \"layer:marker:pie.label.font\", \"layer:marker:image.label.font\", \"legend.font\", \"legend.title.font\", \"legend.title.subtitle.font\"],\r\n _initLayerCollection: function(dataKey) {\r\n var that = this;\r\n that._layerCollection = new _map_layer.MapLayerCollection({\r\n renderer: that._renderer,\r\n projection: that._projection,\r\n themeManager: that._themeManager,\r\n tracker: that._tracker,\r\n dataKey: dataKey,\r\n eventTrigger: that._eventTrigger,\r\n dataExchanger: that._dataExchanger,\r\n tooltip: that._tooltip,\r\n notifyDirty: that._notifyDirty,\r\n notifyReady: that._notifyReady,\r\n dataReady: function() {\r\n var bounds;\r\n if (that.option(\"getBoundsFromData\") && !that.option(\"bounds\")) {\r\n that._preventProjectionEvents();\r\n bounds = that._getBoundsFromData();\r\n that._projection.setBounds(bounds);\r\n that._allowProjectionEvents()\r\n }\r\n if (!that.option(\"projection\")) {\r\n bounds = bounds || that._getBoundsFromData();\r\n if (Math.ceil(bounds[0]) < -180 || Math.ceil(bounds[3]) < -90 || Math.floor(bounds[2]) > 180 || Math.floor(bounds[1]) > 90) {\r\n var longitudeLength = bounds[2] - bounds[0];\r\n var latitudeLength = bounds[1] - bounds[3];\r\n that._projection.setEngine({\r\n to: function(coordinates) {\r\n return [2 * (coordinates[0] - bounds[0]) / longitudeLength - 1, 2 * (coordinates[1] - bounds[3]) / latitudeLength - 1]\r\n },\r\n from: function(coordinates) {\r\n return [(coordinates[0] + 1) * longitudeLength / 2 + bounds[0], (coordinates[1] + 1) * latitudeLength / 2 + bounds[3]]\r\n }\r\n })\r\n }\r\n }\r\n }\r\n })\r\n },\r\n _getBoundsFromData: function() {\r\n var bounds = this._getBoundingBoxFromDataSource();\r\n if (!bounds) {\r\n var boundsByData = (0, _map_layer.getMaxBound)(this.getLayers().map(function(l) {\r\n return l.getBounds()\r\n }));\r\n if (boundsByData) {\r\n bounds = boundsByData\r\n }\r\n }\r\n bounds = bounds || [];\r\n bounds = [bounds[0], bounds[3], bounds[2], bounds[1]];\r\n return bounds\r\n },\r\n _initLegendsControl: function() {\r\n var that = this;\r\n that._legendsControl = new _legend.LegendsControl({\r\n renderer: that._renderer,\r\n container: that._root,\r\n widget: that,\r\n layoutControl: that._layoutControl,\r\n themeManager: that._themeManager,\r\n dataExchanger: that._dataExchanger,\r\n notifyDirty: that._notifyDirty,\r\n notifyReady: that._notifyReady\r\n })\r\n },\r\n _initControlBar: function(dataKey) {\r\n var that = this;\r\n that._controlBar = new _control_bar.ControlBar({\r\n renderer: that._renderer,\r\n container: that._root,\r\n layoutControl: that._layoutControl,\r\n projection: that._projection,\r\n tracker: that._tracker,\r\n dataKey: dataKey\r\n })\r\n },\r\n _initElements: function() {\r\n var that = this;\r\n var dataKey = (0, _vector_map.generateDataKey)();\r\n var notifyCounter = 0;\r\n var preventProjectionEvents;\r\n that._preventProjectionEvents = function() {\r\n preventProjectionEvents = true\r\n };\r\n that._allowProjectionEvents = function() {\r\n preventProjectionEvents = false\r\n };\r\n that._notifyDirty = function() {\r\n that._resetIsReady();\r\n ++notifyCounter\r\n };\r\n that._notifyReady = function() {\r\n that._allowProjectionEvents();\r\n if (0 === --notifyCounter) {\r\n that._drawn()\r\n }\r\n };\r\n that._preventProjectionEvents();\r\n that._dataExchanger = new _data_exchanger.DataExchanger;\r\n that._projection = new _projection.Projection({\r\n centerChanged: function(value) {\r\n if (!preventProjectionEvents) {\r\n that._eventTrigger(\"centerChanged\", {\r\n center: value\r\n })\r\n }\r\n },\r\n zoomChanged: function(value) {\r\n if (!preventProjectionEvents) {\r\n that._eventTrigger(\"zoomFactorChanged\", {\r\n zoomFactor: value\r\n })\r\n }\r\n }\r\n });\r\n that._tracker = new _tracker.Tracker({\r\n root: that._root,\r\n projection: that._projection,\r\n dataKey: dataKey\r\n });\r\n that._gestureHandler = new _gesture_handler.GestureHandler({\r\n projection: that._projection,\r\n renderer: that._renderer,\r\n tracker: that._tracker\r\n });\r\n that._layoutControl = new _layout.LayoutControl(that);\r\n that._layoutControl.suspend();\r\n that._initLayerCollection(dataKey);\r\n that._createHtmlStructure();\r\n that._initControlBar(dataKey);\r\n that._initLegendsControl();\r\n that._prepareExtraElements();\r\n that._tooltipViewer = new _tooltip_viewer.TooltipViewer({\r\n tracker: that._tracker,\r\n tooltip: that._tooltip,\r\n layerCollection: that._layerCollection\r\n })\r\n },\r\n _change_RESUME_LAYOUT: function() {\r\n this._layoutControl.resume()\r\n },\r\n _initialChanges: [\"PROJECTION\", \"RESUME_LAYOUT\", \"LAYOUT_INIT\", \"BOUNDS\", \"MAX_ZOOM_FACTOR\", \"ZOOM_FACTOR\", \"CENTER\"],\r\n _layoutChangesOrder: [\"RESUME_LAYOUT\", \"LAYERS\"],\r\n _customChangesOrder: [\"EXTRA_ELEMENTS\"],\r\n _initCore: function() {\r\n this._root = this._renderer.root.attr({\r\n align: \"center\",\r\n cursor: \"default\"\r\n });\r\n this._initElements()\r\n },\r\n _disposeCore: function() {\r\n var that = this;\r\n that._controlBar.dispose();\r\n that._gestureHandler.dispose();\r\n that._tracker.dispose();\r\n that._legendsControl.dispose();\r\n that._layerCollection.dispose();\r\n that._layoutControl.dispose();\r\n that._tooltipViewer.dispose();\r\n that._dataExchanger.dispose();\r\n that._projection.dispose();\r\n that._dataExchanger = that._gestureHandler = that._projection = that._tracker = that._layoutControl = that._root = that._layerCollection = that._controlBar = that._legendsControl = null\r\n },\r\n _setupInteraction: function() {\r\n var options = {\r\n centeringEnabled: !!(0, _utils.parseScalar)(this._getOption(\"panningEnabled\", true), true),\r\n zoomingEnabled: !!(0, _utils.parseScalar)(this._getOption(\"zoomingEnabled\", true), true)\r\n };\r\n this._gestureHandler.setInteraction(options);\r\n this._controlBar.setInteraction(options)\r\n },\r\n _getDefaultSize: function() {\r\n return {\r\n width: DEFAULT_WIDTH,\r\n height: DEFAULT_HEIGHT\r\n }\r\n },\r\n _applySize: function(rect) {\r\n var layout = {\r\n left: rect[0],\r\n top: rect[1],\r\n width: rect[2] - rect[0],\r\n height: rect[3] - rect[1],\r\n right: 0,\r\n bottom: 0\r\n };\r\n this._projection.setSize(layout);\r\n this._layoutControl.setSize(layout);\r\n this._layerCollection.setRect([layout.left, layout.top, layout.width, layout.height]);\r\n this._requestChange([\"EXTRA_ELEMENTS\"])\r\n },\r\n _optionChanging: function(name, currentValue, nextValue) {\r\n if (currentValue && nextValue) {\r\n if (RE_STARTS_LAYERS.test(name)) {\r\n if (currentValue.dataSource && nextValue.dataSource && currentValue !== nextValue) {\r\n currentValue.dataSource = null\r\n } else {\r\n if (RE_ENDS_DATA_SOURCE.test(name)) {\r\n this.option(name, null)\r\n }\r\n }\r\n }\r\n }\r\n },\r\n _applyChanges: function() {\r\n this._notifyDirty();\r\n this.callBase.apply(this, arguments);\r\n this._notifyReady()\r\n },\r\n _optionChangesMap: {\r\n background: \"BACKGROUND\",\r\n layers: \"LAYERS\",\r\n extraElements: \"EXTRA_ELEMENTS\",\r\n controlBar: \"CONTROL_BAR\",\r\n legends: \"LEGENDS\",\r\n touchEnabled: \"TRACKER\",\r\n wheelEnabled: \"TRACKER\",\r\n panningEnabled: \"INTERACTION\",\r\n zoomingEnabled: \"INTERACTION\",\r\n projection: \"PROJECTION\",\r\n bounds: \"BOUNDS\",\r\n maxZoomFactor: \"MAX_ZOOM_FACTOR\",\r\n zoomFactor: \"ZOOM_FACTOR\",\r\n center: \"CENTER\"\r\n },\r\n _optionChangesOrder: [\"PROJECTION\", \"BOUNDS\", \"MAX_ZOOM_FACTOR\", \"ZOOM_FACTOR\", \"CENTER\", \"BACKGROUND\", \"CONTROL_BAR\", \"LEGENDS\", \"TRACKER\", \"INTERACTION\"],\r\n _change_PROJECTION: function() {\r\n this._setProjection()\r\n },\r\n _change_BOUNDS: function() {\r\n this._setBounds()\r\n },\r\n _change_MAX_ZOOM_FACTOR: function() {\r\n this._setMaxZoom()\r\n },\r\n _change_ZOOM_FACTOR: function() {\r\n this._setZoom()\r\n },\r\n _change_CENTER: function() {\r\n this._setCenter()\r\n },\r\n _change_BACKGROUND: function() {\r\n this._setBackgroundOptions()\r\n },\r\n _change_LAYERS: function() {\r\n this._setLayerCollectionOptions()\r\n },\r\n _change_CONTROL_BAR: function() {\r\n this._setControlBarOptions()\r\n },\r\n _change_EXTRA_ELEMENTS: function() {\r\n this._renderExtraElements()\r\n },\r\n _change_LEGENDS: function() {\r\n this._setLegendsOptions()\r\n },\r\n _change_TRACKER: function() {\r\n this._setTrackerOptions()\r\n },\r\n _change_INTERACTION: function() {\r\n this._setupInteraction()\r\n },\r\n _themeDependentChanges: [\"BACKGROUND\", \"LAYERS\", \"CONTROL_BAR\", \"LEGENDS\", \"TRACKER\", \"INTERACTION\"],\r\n _setProjection: function() {\r\n this._projection.setEngine(this.option(\"projection\"))\r\n },\r\n _setBounds: function() {\r\n this._projection.setBounds(this.option(\"bounds\"))\r\n },\r\n _setMaxZoom: function() {\r\n this._projection.setMaxZoom(this.option(\"maxZoomFactor\"))\r\n },\r\n _setZoom: function() {\r\n this._projection.setZoom(this.option(\"zoomFactor\"))\r\n },\r\n _setCenter: function() {\r\n this._projection.setCenter(this.option(\"center\"))\r\n },\r\n _setBackgroundOptions: function() {\r\n this._layerCollection.setBackgroundOptions(this._getOption(\"background\"))\r\n },\r\n _setLayerCollectionOptions: function() {\r\n this._layerCollection.setOptions(this.option(\"layers\"))\r\n },\r\n _getBoundingBoxFromDataSource: function() {\r\n var that = this;\r\n var layers = that._layerCollection.items();\r\n var infinityBounds = [1 / 0, -(1 / 0), -(1 / 0), 1 / 0];\r\n var resultBBox = layers && layers.length ? layers.reduce(function(sumBBox, l) {\r\n var layerData = l.getData();\r\n var itemCount = layerData.count();\r\n if (itemCount > 0) {\r\n var rootBBox = layerData.getBBox();\r\n if (rootBBox) {\r\n sumBBox = mergeBounds(sumBBox, rootBBox)\r\n } else {\r\n for (var i = 0; i < itemCount; i++) {\r\n sumBBox = mergeBounds(sumBBox, layerData.getBBox(i))\r\n }\r\n }\r\n }\r\n return sumBBox\r\n }, infinityBounds) : void 0;\r\n return resultBBox === infinityBounds ? void 0 : resultBBox\r\n },\r\n _setControlBarOptions: function() {\r\n this._controlBar.setOptions(this._getOption(\"controlBar\"))\r\n },\r\n _setLegendsOptions: function() {\r\n this._legendsControl.setOptions(this.option(\"legends\"))\r\n },\r\n _setTrackerOptions: function() {\r\n this._tracker.setOptions({\r\n touchEnabled: this._getOption(\"touchEnabled\", true),\r\n wheelEnabled: this._getOption(\"wheelEnabled\", true)\r\n })\r\n },\r\n getLayers: function() {\r\n return this._layerCollection.items().map(function(l) {\r\n return l.proxy\r\n })\r\n },\r\n getLayerByIndex: function(index) {\r\n var layer = this._layerCollection.byIndex(index);\r\n return layer ? layer.proxy : null\r\n },\r\n getLayerByName: function(name) {\r\n var layer = this._layerCollection.byName(name);\r\n return layer ? layer.proxy : null\r\n },\r\n clearSelection: function(_noEvent) {\r\n var layers = this._layerCollection.items();\r\n var i;\r\n var ii = layers.length;\r\n for (i = 0; i < ii; ++i) {\r\n layers[i].clearSelection(_noEvent)\r\n }\r\n return this\r\n },\r\n center: function(value) {\r\n var that = this;\r\n if (void 0 === value) {\r\n return that._projection.getCenter()\r\n } else {\r\n that._projection.setCenter(value);\r\n return that\r\n }\r\n },\r\n zoomFactor: function(value) {\r\n var that = this;\r\n if (void 0 === value) {\r\n return that._projection.getZoom()\r\n } else {\r\n that._projection.setZoom(value);\r\n return that\r\n }\r\n },\r\n viewport: function(value) {\r\n var that = this;\r\n if (void 0 === value) {\r\n return that._projection.getViewport()\r\n } else {\r\n that._projection.setViewport(value);\r\n return that\r\n }\r\n },\r\n convertCoordinates: function(coordinates) {\r\n coordinates = coordinates && coordinates.length ? coordinates : [arguments[0], arguments[1]];\r\n return this.convertToGeo(coordinates[0], coordinates[1])\r\n },\r\n convertToGeo: function(x, y) {\r\n return this._projection.fromScreenPoint([x, y])\r\n },\r\n convertToXY: function(longitude, latitude) {\r\n return this._projection.toScreenPoint([longitude, latitude])\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxVectorMap\", dxVectorMap);\r\nvar _default = dxVectorMap;\r\nexports.default = _default;\r\ndxVectorMap.addPlugin(_export.plugin);\r\ndxVectorMap.addPlugin(_title.plugin);\r\ndxVectorMap.addPlugin(_tooltip.plugin);\r\ndxVectorMap.addPlugin(_loading_indicator.plugin);\r\ndxVectorMap.addPlugin(_annotations.plugins.core);\r\ndxVectorMap.addPlugin(_annotations.plugins.vectorMap);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/vector_map/control_bar.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.ControlBar = ControlBar;\r\nvar _utils = require(\"../core/utils\");\r\nvar _math = Math;\r\nvar _min = _math.min;\r\nvar _max = _math.max;\r\nvar _round = _math.round;\r\nvar _floor = _math.floor;\r\nvar _sqrt = _math.sqrt;\r\nvar parseHorizontalAlignment = (0, _utils.enumParser)([\"left\", \"center\", \"right\"]);\r\nvar parseVerticalAlignment = (0, _utils.enumParser)([\"top\", \"bottom\"]);\r\nvar COMMAND_RESET = \"command-reset\";\r\nvar COMMAND_MOVE_UP = \"command-move-up\";\r\nvar COMMAND_MOVE_RIGHT = \"command-move-right\";\r\nvar COMMAND_MOVE_DOWN = \"command-move-down\";\r\nvar COMMAND_MOVE_LEFT = \"command-move-left\";\r\nvar COMMAND_ZOOM_IN = \"command-zoom-in\";\r\nvar COMMAND_ZOOM_OUT = \"command-zoom-out\";\r\nvar COMMAND_ZOOM_DRAG_LINE = \"command-zoom-drag-line\";\r\nvar COMMAND_ZOOM_DRAG = \"command-zoom-drag\";\r\nvar EVENT_TARGET_TYPE = \"control-bar\";\r\nvar FLAG_CENTERING = 1;\r\nvar FLAG_ZOOMING = 2;\r\nvar SIZE_OPTIONS = {\r\n bigCircleSize: 58,\r\n smallCircleSize: 28,\r\n buttonSize: 10,\r\n arrowButtonOffset: 20,\r\n incDecButtonSize: 11,\r\n incButtonOffset: 66,\r\n decButtonOffset: 227,\r\n sliderLineStartOffset: 88.5,\r\n sliderLineEndOffset: 205.5,\r\n sliderLength: 20,\r\n sliderWidth: 8,\r\n trackerGap: 4\r\n};\r\nvar OFFSET_X = 30.5;\r\nvar OFFSET_Y = 30.5;\r\nvar TOTAL_WIDTH = 61;\r\nvar TOTAL_HEIGHT = 274;\r\nvar COMMAND_TO_TYPE_MAP = {};\r\nCOMMAND_TO_TYPE_MAP[COMMAND_RESET] = ResetCommand;\r\nCOMMAND_TO_TYPE_MAP[COMMAND_MOVE_UP] = COMMAND_TO_TYPE_MAP[COMMAND_MOVE_RIGHT] = COMMAND_TO_TYPE_MAP[COMMAND_MOVE_DOWN] = COMMAND_TO_TYPE_MAP[COMMAND_MOVE_LEFT] = MoveCommand;\r\nCOMMAND_TO_TYPE_MAP[COMMAND_ZOOM_IN] = COMMAND_TO_TYPE_MAP[COMMAND_ZOOM_OUT] = ZoomCommand;\r\nCOMMAND_TO_TYPE_MAP[COMMAND_ZOOM_DRAG] = ZoomDragCommand;\r\n\r\nfunction ControlBar(parameters) {\r\n var that = this;\r\n that._params = parameters;\r\n that._createElements(parameters.renderer, parameters.container, parameters.dataKey);\r\n parameters.layoutControl.addItem(that);\r\n that._subscribeToProjection(parameters.projection);\r\n that._subscribeToTracker(parameters.tracker);\r\n that._createCallbacks(parameters.projection)\r\n}\r\nControlBar.prototype = {\r\n constructor: ControlBar,\r\n _flags: 0,\r\n dispose: function() {\r\n var that = this;\r\n that._params.layoutControl.removeItem(that);\r\n that._root.linkRemove().linkOff();\r\n that._offProjection();\r\n that._offTracker();\r\n that._params = that._root = that._offProjection = that._offTracker = that._callbacks = null\r\n },\r\n _subscribeToProjection: function(projection) {\r\n var that = this;\r\n that._offProjection = projection.on({\r\n engine: function() {\r\n that._update()\r\n },\r\n zoom: updateZoom,\r\n \"max-zoom\": function() {\r\n that._zoomPartition = projection.getZoomScalePartition();\r\n that._sliderUnitLength = that._sliderLineLength / that._zoomPartition;\r\n updateZoom()\r\n }\r\n });\r\n\r\n function updateZoom() {\r\n that._adjustZoom(projection.getScaledZoom())\r\n }\r\n },\r\n _subscribeToTracker: function(tracker) {\r\n var that = this;\r\n var isActive = false;\r\n that._offTracker = tracker.on({\r\n start: function(arg) {\r\n isActive = arg.data.name === EVENT_TARGET_TYPE;\r\n if (isActive) {\r\n that._processStart(arg.data.index, arg)\r\n }\r\n },\r\n move: function(arg) {\r\n if (isActive) {\r\n that._processMove(arg.data.index, arg)\r\n }\r\n },\r\n end: function() {\r\n if (isActive) {\r\n that._processEnd();\r\n isActive = false\r\n }\r\n }\r\n })\r\n },\r\n _createCallbacks: function(projection) {\r\n var that = this;\r\n that._callbacks = {\r\n reset: function(isCenter, isZoom) {\r\n if (isCenter) {\r\n projection.setCenter(null)\r\n }\r\n if (isZoom) {\r\n projection.setZoom(null)\r\n }\r\n },\r\n beginMove: function() {\r\n projection.beginMoveCenter()\r\n },\r\n endMove: function() {\r\n projection.endMoveCenter()\r\n },\r\n move: function(shift) {\r\n projection.moveCenter(shift)\r\n },\r\n zoom: function(_zoom) {\r\n projection.setScaledZoom(_zoom)\r\n }\r\n }\r\n },\r\n _createElements: function(renderer, container, dataKey) {\r\n var that = this;\r\n that._root = renderer.g().attr({\r\n \"class\": \"dxm-control-bar\"\r\n }).linkOn(container, \"control-bar\");\r\n var buttonsGroups = that._buttonsGroup = renderer.g().attr({\r\n \"class\": \"dxm-control-buttons\"\r\n }).append(that._root);\r\n var trackersGroup = renderer.g().attr({\r\n stroke: \"none\",\r\n \"stroke-width\": 0,\r\n fill: \"#000000\",\r\n opacity: 1e-4\r\n }).css({\r\n cursor: \"pointer\"\r\n }).append(that._root);\r\n that._createButtons(renderer, dataKey, buttonsGroups);\r\n that._createTrackers(renderer, dataKey, trackersGroup)\r\n },\r\n _createButtons: function(renderer, dataKey, group) {\r\n var that = this;\r\n var options = SIZE_OPTIONS;\r\n var size = options.buttonSize / 2;\r\n var offset1 = options.arrowButtonOffset - size;\r\n var offset2 = options.arrowButtonOffset;\r\n var incDecButtonSize = options.incDecButtonSize / 2;\r\n var directionOptions = {\r\n \"stroke-linecap\": \"square\",\r\n fill: \"none\"\r\n };\r\n var line = \"line\";\r\n renderer.circle(0, 0, options.bigCircleSize / 2).append(group);\r\n renderer.circle(0, 0, size).attr({\r\n fill: \"none\"\r\n }).append(group);\r\n renderer.path([-size, -offset1, 0, -offset2, size, -offset1], line).attr(directionOptions).append(group);\r\n renderer.path([offset1, -size, offset2, 0, offset1, size], line).attr(directionOptions).append(group);\r\n renderer.path([size, offset1, 0, offset2, -size, offset1], line).attr(directionOptions).append(group);\r\n renderer.path([-offset1, size, -offset2, 0, -offset1, -size], line).attr(directionOptions).append(group);\r\n renderer.circle(0, options.incButtonOffset, options.smallCircleSize / 2).append(group);\r\n renderer.path([\r\n [-incDecButtonSize, options.incButtonOffset, incDecButtonSize, options.incButtonOffset],\r\n [0, options.incButtonOffset - incDecButtonSize, 0, options.incButtonOffset + incDecButtonSize]\r\n ], \"area\").append(group);\r\n renderer.circle(0, options.decButtonOffset, options.smallCircleSize / 2).append(group);\r\n renderer.path([-incDecButtonSize, options.decButtonOffset, incDecButtonSize, options.decButtonOffset], \"area\").append(group);\r\n that._zoomLine = renderer.path([], \"line\").append(group);\r\n that._zoomDrag = renderer.rect(_floor(-options.sliderLength / 2), _floor(options.sliderLineEndOffset - options.sliderWidth / 2), options.sliderLength, options.sliderWidth).append(group);\r\n that._sliderLineLength = options.sliderLineEndOffset - options.sliderLineStartOffset\r\n },\r\n _createTrackers: function(renderer, dataKey, group) {\r\n var options = SIZE_OPTIONS;\r\n var size = _round((options.arrowButtonOffset - options.trackerGap) / 2);\r\n var offset1 = options.arrowButtonOffset - size;\r\n var offset2 = _round(_sqrt(options.bigCircleSize * options.bigCircleSize / 4 - size * size));\r\n var size2 = offset2 - offset1;\r\n renderer.rect(-size, -size, 2 * size, 2 * size).data(dataKey, {\r\n index: COMMAND_RESET,\r\n name: EVENT_TARGET_TYPE\r\n }).append(group);\r\n renderer.rect(-size, -offset2, 2 * size, size2).data(dataKey, {\r\n index: COMMAND_MOVE_UP,\r\n name: EVENT_TARGET_TYPE\r\n }).append(group);\r\n renderer.rect(offset1, -size, size2, 2 * size).data(dataKey, {\r\n index: COMMAND_MOVE_RIGHT,\r\n name: EVENT_TARGET_TYPE\r\n }).append(group);\r\n renderer.rect(-size, offset1, 2 * size, size2).data(dataKey, {\r\n index: COMMAND_MOVE_DOWN,\r\n name: EVENT_TARGET_TYPE\r\n }).append(group);\r\n renderer.rect(-offset2, -size, size2, 2 * size).data(dataKey, {\r\n index: COMMAND_MOVE_LEFT,\r\n name: EVENT_TARGET_TYPE\r\n }).append(group);\r\n renderer.circle(0, options.incButtonOffset, options.smallCircleSize / 2).data(dataKey, {\r\n index: COMMAND_ZOOM_IN,\r\n name: EVENT_TARGET_TYPE\r\n }).append(group);\r\n renderer.circle(0, options.decButtonOffset, options.smallCircleSize / 2).data(dataKey, {\r\n index: COMMAND_ZOOM_OUT,\r\n name: EVENT_TARGET_TYPE\r\n }).append(group);\r\n renderer.rect(-2, options.sliderLineStartOffset - 2, 4, options.sliderLineEndOffset - options.sliderLineStartOffset + 4).css({\r\n cursor: \"default\"\r\n }).data(dataKey, {\r\n index: COMMAND_ZOOM_DRAG_LINE,\r\n name: EVENT_TARGET_TYPE\r\n }).append(group);\r\n this._zoomDragTracker = renderer.rect(-options.sliderLength / 2, options.sliderLineEndOffset - options.sliderWidth / 2, options.sliderLength, options.sliderWidth).data(dataKey, {\r\n index: COMMAND_ZOOM_DRAG,\r\n name: EVENT_TARGET_TYPE\r\n }).append(group)\r\n },\r\n resize: function(size) {\r\n if (this._isActive) {\r\n this._root.attr({\r\n visibility: null !== size ? null : \"hidden\"\r\n })\r\n }\r\n },\r\n getLayoutOptions: function() {\r\n return this._isActive ? this._layoutOptions : null\r\n },\r\n locate: function(x, y) {\r\n this._root.attr({\r\n translateX: x + this._margin + OFFSET_X,\r\n translateY: y + this._margin + OFFSET_Y\r\n })\r\n },\r\n _update: function() {\r\n var that = this;\r\n that._isActive = that._isEnabled && that._flags && that._params.projection.isInvertible();\r\n if (that._isActive) {\r\n that._root.linkAppend()\r\n } else {\r\n that._root.linkRemove()\r\n }\r\n that._processEnd();\r\n that.updateLayout()\r\n },\r\n setInteraction: function(interaction) {\r\n var that = this;\r\n if ((0, _utils.parseScalar)(interaction.centeringEnabled, true)) {\r\n that._flags |= FLAG_CENTERING\r\n } else {\r\n that._flags &= ~FLAG_CENTERING\r\n }\r\n if ((0, _utils.parseScalar)(interaction.zoomingEnabled, true)) {\r\n that._flags |= FLAG_ZOOMING\r\n } else {\r\n that._flags &= ~FLAG_ZOOMING\r\n }\r\n that._update()\r\n },\r\n setOptions: function(options) {\r\n var that = this;\r\n that._isEnabled = !!(0, _utils.parseScalar)(options.enabled, true);\r\n that._margin = options.margin || 0;\r\n that._layoutOptions = {\r\n width: 2 * that._margin + TOTAL_WIDTH,\r\n height: 2 * that._margin + TOTAL_HEIGHT,\r\n horizontalAlignment: parseHorizontalAlignment(options.horizontalAlignment, \"left\"),\r\n verticalAlignment: parseVerticalAlignment(options.verticalAlignment, \"top\")\r\n };\r\n that._buttonsGroup.attr({\r\n \"stroke-width\": options.borderWidth,\r\n stroke: options.borderColor,\r\n fill: options.color,\r\n \"fill-opacity\": options.opacity\r\n });\r\n that._update()\r\n },\r\n _adjustZoom: function(zoom) {\r\n var that = this;\r\n var start = SIZE_OPTIONS.sliderLineStartOffset;\r\n var end = SIZE_OPTIONS.sliderLineEndOffset;\r\n var h = SIZE_OPTIONS.sliderWidth;\r\n that._zoomFactor = _max(_min(_round(zoom), that._zoomPartition), 0);\r\n var transform = {\r\n translateY: -_round(that._zoomFactor * that._sliderUnitLength)\r\n };\r\n var y = end - h / 2 + transform.translateY;\r\n that._zoomLine.attr({\r\n points: [\r\n [0, start, 0, _max(start, y)],\r\n [0, _min(end, y + h), 0, end]\r\n ]\r\n });\r\n that._zoomDrag.attr(transform);\r\n that._zoomDragTracker.attr(transform)\r\n },\r\n _applyZoom: function() {\r\n this._callbacks.zoom(this._zoomFactor)\r\n },\r\n _processStart: function(command, arg) {\r\n var commandType;\r\n if (this._isActive) {\r\n commandType = COMMAND_TO_TYPE_MAP[command];\r\n this._command = commandType && commandType.flags & this._flags ? new commandType(this, command, arg) : null\r\n }\r\n },\r\n _processMove: function(command, arg) {\r\n this._command && this._command.update(command, arg)\r\n },\r\n _processEnd: function() {\r\n this._command && this._command.finish();\r\n this._command = null\r\n }\r\n};\r\n\r\nfunction disposeCommand(command) {\r\n delete command._owner;\r\n command.update = function() {};\r\n command.finish = function() {}\r\n}\r\n\r\nfunction ResetCommand(owner, command) {\r\n this._owner = owner;\r\n this._command = command\r\n}\r\nResetCommand.flags = FLAG_CENTERING | FLAG_ZOOMING;\r\nResetCommand.prototype.update = function(command) {\r\n command !== this._command && disposeCommand(this)\r\n};\r\nResetCommand.prototype.finish = function() {\r\n var flags = this._owner._flags;\r\n this._owner._callbacks.reset(!!(flags & FLAG_CENTERING), !!(flags & FLAG_ZOOMING));\r\n disposeCommand(this)\r\n};\r\n\r\nfunction MoveCommand(owner, command, arg) {\r\n this._command = command;\r\n var timeout = null;\r\n var interval = 100;\r\n var dx = 0;\r\n var dy = 0;\r\n switch (this._command) {\r\n case COMMAND_MOVE_UP:\r\n dy = -10;\r\n break;\r\n case COMMAND_MOVE_RIGHT:\r\n dx = 10;\r\n break;\r\n case COMMAND_MOVE_DOWN:\r\n dy = 10;\r\n break;\r\n case COMMAND_MOVE_LEFT:\r\n dx = -10\r\n }\r\n\r\n function callback() {\r\n owner._callbacks.move([dx, dy]);\r\n timeout = setTimeout(callback, interval)\r\n }\r\n this._stop = function() {\r\n clearTimeout(timeout);\r\n owner._callbacks.endMove();\r\n this._stop = owner = null;\r\n return this\r\n };\r\n arg = null;\r\n owner._callbacks.beginMove();\r\n callback()\r\n}\r\nMoveCommand.flags = FLAG_CENTERING;\r\nMoveCommand.prototype.update = function(command) {\r\n this._command !== command && this.finish()\r\n};\r\nMoveCommand.prototype.finish = function() {\r\n disposeCommand(this._stop())\r\n};\r\n\r\nfunction ZoomCommand(owner, command) {\r\n this._owner = owner;\r\n this._command = command;\r\n var timeout = null;\r\n var interval = 150;\r\n var dZoom = this._command === COMMAND_ZOOM_IN ? 1 : -1;\r\n\r\n function callback() {\r\n owner._adjustZoom(owner._zoomFactor + dZoom);\r\n timeout = setTimeout(callback, interval)\r\n }\r\n this._stop = function() {\r\n clearTimeout(timeout);\r\n this._stop = owner = null;\r\n return this\r\n };\r\n callback()\r\n}\r\nZoomCommand.flags = FLAG_ZOOMING;\r\nZoomCommand.prototype.update = function(command) {\r\n this._command !== command && this.finish()\r\n};\r\nZoomCommand.prototype.finish = function() {\r\n this._owner._applyZoom();\r\n disposeCommand(this._stop())\r\n};\r\n\r\nfunction ZoomDragCommand(owner, command, arg) {\r\n this._owner = owner;\r\n this._zoomFactor = owner._zoomFactor;\r\n this._pos = arg.y\r\n}\r\nZoomDragCommand.flags = FLAG_ZOOMING;\r\nZoomDragCommand.prototype.update = function(command, arg) {\r\n var owner = this._owner;\r\n owner._adjustZoom(this._zoomFactor + owner._zoomPartition * (this._pos - arg.y) / owner._sliderLineLength)\r\n};\r\nZoomDragCommand.prototype.finish = function() {\r\n this._owner._applyZoom();\r\n disposeCommand(this)\r\n};\r\n","/**\r\n * DevExtreme (viz/vector_map/gesture_handler.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.GestureHandler = GestureHandler;\r\nvar _ln = Math.log;\r\nvar _LN2 = Math.LN2;\r\n\r\nfunction GestureHandler(params) {\r\n var that = this;\r\n that._projection = params.projection;\r\n that._renderer = params.renderer;\r\n that._x = that._y = 0;\r\n that._subscribeToTracker(params.tracker)\r\n}\r\nGestureHandler.prototype = {\r\n constructor: GestureHandler,\r\n dispose: function() {\r\n this._offTracker();\r\n this._offTracker = null\r\n },\r\n _subscribeToTracker: function(tracker) {\r\n var that = this;\r\n var isActive = false;\r\n that._offTracker = tracker.on({\r\n start: function(arg) {\r\n isActive = \"control-bar\" !== arg.data.name;\r\n if (isActive) {\r\n that._processStart(arg)\r\n }\r\n },\r\n move: function(arg) {\r\n if (isActive) {\r\n that._processMove(arg)\r\n }\r\n },\r\n end: function() {\r\n if (isActive) {\r\n that._processEnd()\r\n }\r\n },\r\n zoom: function(arg) {\r\n that._processZoom(arg)\r\n }\r\n })\r\n },\r\n setInteraction: function(options) {\r\n this._processEnd();\r\n this._centeringEnabled = options.centeringEnabled;\r\n this._zoomingEnabled = options.zoomingEnabled\r\n },\r\n _processStart: function(arg) {\r\n if (this._centeringEnabled) {\r\n this._x = arg.x;\r\n this._y = arg.y;\r\n this._projection.beginMoveCenter()\r\n }\r\n },\r\n _processMove: function(arg) {\r\n var that = this;\r\n if (that._centeringEnabled) {\r\n that._renderer.root.attr({\r\n cursor: \"move\"\r\n });\r\n that._projection.moveCenter([that._x - arg.x, that._y - arg.y]);\r\n that._x = arg.x;\r\n that._y = arg.y\r\n }\r\n },\r\n _processEnd: function() {\r\n if (this._centeringEnabled) {\r\n this._renderer.root.attr({\r\n cursor: \"default\"\r\n });\r\n this._projection.endMoveCenter()\r\n }\r\n },\r\n _processZoom: function(arg) {\r\n var that = this;\r\n var delta;\r\n var screenPosition;\r\n var coords;\r\n if (that._zoomingEnabled) {\r\n if (arg.delta) {\r\n delta = arg.delta\r\n } else {\r\n if (arg.ratio) {\r\n delta = _ln(arg.ratio) / _LN2\r\n }\r\n }\r\n if (that._centeringEnabled) {\r\n screenPosition = that._renderer.getRootOffset();\r\n screenPosition = [arg.x - screenPosition.left, arg.y - screenPosition.top];\r\n coords = that._projection.fromScreenPoint(screenPosition)\r\n }\r\n that._projection.changeScaledZoom(delta);\r\n if (that._centeringEnabled) {\r\n that._projection.setCenterByPoint(coords, screenPosition)\r\n }\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/vector_map/tracker.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.Tracker = Tracker;\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _event_emitter = require(\"./event_emitter\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _wheel = require(\"../../events/core/wheel\");\r\nvar _utils = require(\"../core/utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar navigator = (0, _window.getNavigator)();\r\nvar _math = Math;\r\nvar _abs = _math.abs;\r\nvar _sqrt = _math.sqrt;\r\nvar _round = _math.round;\r\nvar _addNamespace = _index.addNamespace;\r\nvar _NAME = \"dxVectorMap\";\r\nvar EVENT_START = \"start\";\r\nvar EVENT_MOVE = \"move\";\r\nvar EVENT_END = \"end\";\r\nvar EVENT_ZOOM = \"zoom\";\r\nvar EVENT_HOVER_ON = \"hover-on\";\r\nvar EVENT_HOVER_OFF = \"hover-off\";\r\nvar EVENT_CLICK = \"click\";\r\nvar EVENT_FOCUS_ON = \"focus-on\";\r\nvar EVENT_FOCUS_MOVE = \"focus-move\";\r\nvar EVENT_FOCUS_OFF = \"focus-off\";\r\nvar CLICK_TIME_THRESHOLD = 500;\r\nvar CLICK_COORD_THRESHOLD_MOUSE = 5;\r\nvar CLICK_COORD_THRESHOLD_TOUCH = 20;\r\nvar DRAG_COORD_THRESHOLD_MOUSE = 5;\r\nvar DRAG_COORD_THRESHOLD_TOUCH = 10;\r\nvar FOCUS_OFF_DELAY = 100;\r\nvar WHEEL_COOLDOWN = 50;\r\nvar WHEEL_DIRECTION_COOLDOWN = 300;\r\nvar EVENTS;\r\nvar Focus;\r\nsetupEvents();\r\n\r\nfunction Tracker(parameters) {\r\n var that = this;\r\n that._root = parameters.root;\r\n that._createEventHandlers(parameters.dataKey);\r\n that._createProjectionHandlers(parameters.projection);\r\n that._initEvents();\r\n that._focus = new Focus(function(name, arg) {\r\n that._fire(name, arg)\r\n });\r\n that._attachHandlers()\r\n}\r\nTracker.prototype = {\r\n constructor: Tracker,\r\n dispose: function() {\r\n var that = this;\r\n that._detachHandlers();\r\n that._disposeEvents();\r\n that._focus.dispose();\r\n that._root = that._focus = that._docHandlers = that._rootHandlers = null\r\n },\r\n _eventNames: [EVENT_START, EVENT_MOVE, EVENT_END, EVENT_ZOOM, EVENT_CLICK, EVENT_HOVER_ON, EVENT_HOVER_OFF, EVENT_FOCUS_ON, EVENT_FOCUS_OFF, EVENT_FOCUS_MOVE],\r\n _startClick: function(event, data) {\r\n if (!data) {\r\n return\r\n }\r\n var coords = getEventCoords(event);\r\n this._clickState = {\r\n x: coords.x,\r\n y: coords.y,\r\n threshold: isTouchEvent(event) ? CLICK_COORD_THRESHOLD_TOUCH : CLICK_COORD_THRESHOLD_MOUSE,\r\n time: Date.now()\r\n }\r\n },\r\n _endClick: function(event, data) {\r\n var state = this._clickState;\r\n var threshold;\r\n var coords;\r\n if (!state) {\r\n return\r\n }\r\n if (data && Date.now() - state.time <= CLICK_TIME_THRESHOLD) {\r\n threshold = state.threshold;\r\n coords = getEventCoords(event);\r\n if (_abs(coords.x - state.x) <= threshold && _abs(coords.y - state.y) <= threshold) {\r\n this._fire(EVENT_CLICK, {\r\n data: data,\r\n x: coords.x,\r\n y: coords.y,\r\n $event: event\r\n })\r\n }\r\n }\r\n this._clickState = null\r\n },\r\n _startDrag: function(event, data) {\r\n if (!data) {\r\n return\r\n }\r\n var coords = getEventCoords(event);\r\n var state = this._dragState = {\r\n x: coords.x,\r\n y: coords.y,\r\n data: data\r\n };\r\n this._fire(EVENT_START, {\r\n x: state.x,\r\n y: state.y,\r\n data: state.data\r\n })\r\n },\r\n _moveDrag: function(event, data) {\r\n var state = this._dragState;\r\n if (!state) {\r\n return\r\n }\r\n var coords = getEventCoords(event);\r\n var threshold = isTouchEvent(event) ? DRAG_COORD_THRESHOLD_TOUCH : DRAG_COORD_THRESHOLD_MOUSE;\r\n if (state.active || _abs(coords.x - state.x) > threshold || _abs(coords.y - state.y) > threshold) {\r\n state.x = coords.x;\r\n state.y = coords.y;\r\n state.active = true;\r\n state.data = data || {};\r\n this._fire(EVENT_MOVE, {\r\n x: state.x,\r\n y: state.y,\r\n data: state.data\r\n })\r\n }\r\n },\r\n _endDrag: function() {\r\n var state = this._dragState;\r\n if (!state) {\r\n return\r\n }\r\n this._dragState = null;\r\n this._fire(EVENT_END, {\r\n x: state.x,\r\n y: state.y,\r\n data: state.data\r\n })\r\n },\r\n _wheelZoom: function(event, data) {\r\n if (!data) {\r\n return\r\n }\r\n var that = this;\r\n var lock = that._wheelLock;\r\n var time = Date.now();\r\n if (time - lock.time <= WHEEL_COOLDOWN) {\r\n return\r\n }\r\n if (time - lock.dirTime > WHEEL_DIRECTION_COOLDOWN) {\r\n lock.dir = 0\r\n }\r\n var delta = adjustWheelDelta(event.delta / 120 || 0, lock);\r\n if (0 === delta) {\r\n return\r\n }\r\n var coords = getEventCoords(event);\r\n that._fire(EVENT_ZOOM, {\r\n delta: delta,\r\n x: coords.x,\r\n y: coords.y\r\n });\r\n lock.time = lock.dirTime = time\r\n },\r\n _startZoom: function(event, data) {\r\n if (!isTouchEvent(event) || !data) {\r\n return\r\n }\r\n var state = this._zoomState = this._zoomState || {};\r\n var coords;\r\n var pointer2;\r\n if (state.pointer1 && state.pointer2) {\r\n return\r\n }\r\n if (void 0 === state.pointer1) {\r\n state.pointer1 = getPointerId(event) || 0;\r\n coords = getMultitouchEventCoords(event, state.pointer1);\r\n state.x1 = state.x1_0 = coords.x;\r\n state.y1 = state.y1_0 = coords.y\r\n }\r\n if (void 0 === state.pointer2) {\r\n pointer2 = getPointerId(event) || 1;\r\n if (pointer2 !== state.pointer1) {\r\n coords = getMultitouchEventCoords(event, pointer2);\r\n if (coords) {\r\n state.x2 = state.x2_0 = coords.x;\r\n state.y2 = state.y2_0 = coords.y;\r\n state.pointer2 = pointer2;\r\n state.ready = true;\r\n this._endDrag()\r\n }\r\n }\r\n }\r\n },\r\n _moveZoom: function(event) {\r\n var state = this._zoomState;\r\n var coords;\r\n if (!state || !isTouchEvent(event)) {\r\n return\r\n }\r\n if (void 0 !== state.pointer1) {\r\n coords = getMultitouchEventCoords(event, state.pointer1);\r\n if (coords) {\r\n state.x1 = coords.x;\r\n state.y1 = coords.y\r\n }\r\n }\r\n if (void 0 !== state.pointer2) {\r\n coords = getMultitouchEventCoords(event, state.pointer2);\r\n if (coords) {\r\n state.x2 = coords.x;\r\n state.y2 = coords.y\r\n }\r\n }\r\n },\r\n _endZoom: function(event) {\r\n var state = this._zoomState;\r\n var startDistance;\r\n var currentDistance;\r\n if (!state || !isTouchEvent(event)) {\r\n return\r\n }\r\n if (state.ready) {\r\n startDistance = getDistance(state.x1_0, state.y1_0, state.x2_0, state.y2_0);\r\n currentDistance = getDistance(state.x1, state.y1, state.x2, state.y2);\r\n this._fire(EVENT_ZOOM, {\r\n ratio: currentDistance / startDistance,\r\n x: (state.x1_0 + state.x2_0) / 2,\r\n y: (state.y1_0 + state.y2_0) / 2\r\n })\r\n }\r\n this._zoomState = null\r\n },\r\n _startHover: function(event, data) {\r\n this._doHover(event, data, true)\r\n },\r\n _moveHover: function(event, data) {\r\n this._doHover(event, data, false)\r\n },\r\n _doHover: function(event, data, isTouch) {\r\n var that = this;\r\n if (that._dragState && that._dragState.active || that._zoomState && that._zoomState.ready) {\r\n that._cancelHover();\r\n return\r\n }\r\n if (isTouchEvent(event) !== isTouch || that._hoverTarget === event.target || that._hoverState && that._hoverState.data === data) {\r\n return\r\n }\r\n that._cancelHover();\r\n if (data) {\r\n that._hoverState = {\r\n data: data\r\n };\r\n that._fire(EVENT_HOVER_ON, {\r\n data: data\r\n })\r\n }\r\n that._hoverTarget = event.target\r\n },\r\n _cancelHover: function() {\r\n var state = this._hoverState;\r\n this._hoverState = this._hoverTarget = null;\r\n if (state) {\r\n this._fire(EVENT_HOVER_OFF, {\r\n data: state.data\r\n })\r\n }\r\n },\r\n _startFocus: function(event, data) {\r\n this._doFocus(event, data, true)\r\n },\r\n _moveFocus: function(event, data) {\r\n this._doFocus(event, data, false)\r\n },\r\n _doFocus: function(event, data, isTouch) {\r\n var that = this;\r\n if (that._dragState && that._dragState.active || that._zoomState && that._zoomState.ready) {\r\n that._cancelFocus();\r\n return\r\n }\r\n if (isTouchEvent(event) !== isTouch) {\r\n return\r\n }\r\n that._focus.turnOff();\r\n data && that._focus.turnOn(data, getEventCoords(event))\r\n },\r\n _cancelFocus: function() {\r\n this._focus.cancel()\r\n },\r\n _createEventHandlers: function(DATA_KEY) {\r\n var that = this;\r\n that._docHandlers = {};\r\n that._rootHandlers = {};\r\n that._rootHandlers[EVENTS.start] = that._docHandlers[EVENTS.start] = function(event) {\r\n var isTouch = isTouchEvent(event);\r\n var data = getData(event);\r\n if (isTouch && !that._isTouchEnabled) {\r\n return\r\n }\r\n if (data) {\r\n event.preventDefault();\r\n event.stopPropagation()\r\n }\r\n that._startClick(event, data);\r\n that._startDrag(event, data);\r\n that._startZoom(event, data);\r\n that._startHover(event, data);\r\n that._startFocus(event, data)\r\n };\r\n that._docHandlers[EVENTS.move] = function(event) {\r\n var isTouch = isTouchEvent(event);\r\n var data = getData(event);\r\n if (isTouch && !that._isTouchEnabled) {\r\n return\r\n }\r\n that._moveDrag(event, data);\r\n that._moveZoom(event, data);\r\n that._moveHover(event, data);\r\n that._moveFocus(event, data)\r\n };\r\n that._docHandlers[EVENTS.end] = function(event) {\r\n var isTouch = isTouchEvent(event);\r\n var data = getData(event);\r\n if (isTouch && !that._isTouchEnabled) {\r\n return\r\n }\r\n that._endClick(event, data);\r\n that._endDrag(event, data);\r\n that._endZoom(event, data)\r\n };\r\n that._rootHandlers[EVENTS.wheel] = function(event) {\r\n that._cancelFocus();\r\n if (!that._isWheelEnabled) {\r\n return\r\n }\r\n var data = getData(event);\r\n if (data) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n that._wheelZoom(event, data)\r\n }\r\n };\r\n that._wheelLock = {\r\n dir: 0\r\n };\r\n\r\n function getData(event) {\r\n var target = event.target;\r\n return (\"tspan\" === target.tagName ? target.parentNode : target)[DATA_KEY]\r\n }\r\n },\r\n _createProjectionHandlers: function(projection) {\r\n var that = this;\r\n projection.on({\r\n center: handler,\r\n zoom: handler\r\n });\r\n\r\n function handler() {\r\n that._cancelFocus()\r\n }\r\n },\r\n reset: function() {\r\n var that = this;\r\n that._clickState = null;\r\n that._endDrag();\r\n that._cancelHover();\r\n that._cancelFocus()\r\n },\r\n setOptions: function(options) {\r\n var that = this;\r\n that.reset();\r\n that._detachHandlers();\r\n that._isTouchEnabled = !!(0, _utils.parseScalar)(options.touchEnabled, true);\r\n that._isWheelEnabled = !!(0, _utils.parseScalar)(options.wheelEnabled, true);\r\n that._attachHandlers()\r\n },\r\n _detachHandlers: function() {\r\n var that = this;\r\n if (that._isTouchEnabled) {\r\n that._root.css({\r\n \"touch-action\": \"\",\r\n \"-webkit-user-select\": \"\"\r\n }).off(_addNamespace(\"MSHoldVisual\", _NAME)).off(_addNamespace(\"contextmenu\", _NAME))\r\n }\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), that._docHandlers);\r\n that._root.off(that._rootHandlers)\r\n },\r\n _attachHandlers: function() {\r\n var that = this;\r\n if (that._isTouchEnabled) {\r\n that._root.css({\r\n \"touch-action\": \"none\",\r\n \"-webkit-user-select\": \"none\"\r\n }).on(_addNamespace(\"MSHoldVisual\", _NAME), function(event) {\r\n event.preventDefault()\r\n }).on(_addNamespace(\"contextmenu\", _NAME), function(event) {\r\n isTouchEvent(event) && event.preventDefault()\r\n })\r\n }\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), that._docHandlers);\r\n that._root.on(that._rootHandlers)\r\n }\r\n};\r\nFocus = function(fire) {\r\n var that = this;\r\n var _activeData = null;\r\n var _data = null;\r\n var _disabled = false;\r\n var _offTimer = null;\r\n var _x;\r\n var _y;\r\n that.dispose = function() {\r\n clearTimeout(_offTimer);\r\n that.turnOn = that.turnOff = that.cancel = that.dispose = that = fire = _activeData = _data = _offTimer = null\r\n };\r\n that.turnOn = function(data, coords) {\r\n if (data === _data && _disabled) {\r\n return\r\n }\r\n _disabled = false;\r\n _data = data;\r\n if (_activeData) {\r\n _x = coords.x;\r\n _y = coords.y;\r\n if (_data === _activeData) {\r\n fire(EVENT_FOCUS_MOVE, {\r\n data: _data,\r\n x: _x,\r\n y: _y\r\n });\r\n onCheck(true)\r\n } else {\r\n fire(EVENT_FOCUS_ON, {\r\n data: _data,\r\n x: _x,\r\n y: _y,\r\n done: onCheck\r\n })\r\n }\r\n } else {\r\n _x = coords.x;\r\n _y = coords.y;\r\n fire(EVENT_FOCUS_ON, {\r\n data: _data,\r\n x: _x,\r\n y: _y,\r\n done: onCheck\r\n })\r\n }\r\n\r\n function onCheck(result) {\r\n _disabled = !result;\r\n if (result) {\r\n _activeData = _data;\r\n clearTimeout(_offTimer);\r\n _offTimer = null\r\n }\r\n }\r\n };\r\n that.turnOff = function() {\r\n _data = null;\r\n if (_activeData && !_disabled) {\r\n _offTimer = _offTimer || setTimeout(function() {\r\n _offTimer = null;\r\n fire(EVENT_FOCUS_OFF, {\r\n data: _activeData\r\n });\r\n _activeData = null\r\n }, FOCUS_OFF_DELAY)\r\n }\r\n };\r\n that.cancel = function() {\r\n clearTimeout(_offTimer);\r\n if (_activeData) {\r\n fire(EVENT_FOCUS_OFF, {\r\n data: _activeData\r\n })\r\n }\r\n _activeData = _data = _offTimer = null\r\n }\r\n};\r\n(0, _event_emitter.makeEventEmitter)(Tracker);\r\n\r\nfunction getDistance(x1, y1, x2, y2) {\r\n return _sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2))\r\n}\r\n\r\nfunction isTouchEvent(event) {\r\n var type = event.originalEvent.type;\r\n var pointerType = event.originalEvent.pointerType;\r\n return /^touch/.test(type) || /^MSPointer/.test(type) && 4 !== pointerType || /^pointer/.test(type) && \"mouse\" !== pointerType\r\n}\r\n\r\nfunction selectItem(flags, items) {\r\n var i = 0;\r\n var ii = flags.length;\r\n var item;\r\n for (; i < ii; ++i) {\r\n if (flags[i]) {\r\n item = items[i];\r\n break\r\n }\r\n }\r\n return _addNamespace(item || items[i], _NAME)\r\n}\r\n\r\nfunction setupEvents() {\r\n var flags = [navigator.pointerEnabled, navigator.msPointerEnabled, (0, _window.hasProperty)(\"ontouchstart\")];\r\n EVENTS = {\r\n start: selectItem(flags, [\"pointerdown\", \"MSPointerDown\", \"touchstart mousedown\", \"mousedown\"]),\r\n move: selectItem(flags, [\"pointermove\", \"MSPointerMove\", \"touchmove mousemove\", \"mousemove\"]),\r\n end: selectItem(flags, [\"pointerup\", \"MSPointerUp\", \"touchend mouseup\", \"mouseup\"]),\r\n wheel: _addNamespace(_wheel.name, _NAME)\r\n }\r\n}\r\n\r\nfunction getEventCoords(event) {\r\n var originalEvent = event.originalEvent;\r\n var touch = originalEvent.touches && originalEvent.touches[0] || {};\r\n return {\r\n x: touch.pageX || originalEvent.pageX || event.pageX,\r\n y: touch.pageY || originalEvent.pageY || event.pageY\r\n }\r\n}\r\n\r\nfunction getPointerId(event) {\r\n return event.originalEvent.pointerId\r\n}\r\n\r\nfunction getMultitouchEventCoords(event, pointerId) {\r\n var originalEvent = event.originalEvent;\r\n if (void 0 !== originalEvent.pointerId) {\r\n originalEvent = originalEvent.pointerId === pointerId ? originalEvent : null\r\n } else {\r\n originalEvent = originalEvent.touches[pointerId]\r\n }\r\n return originalEvent ? {\r\n x: originalEvent.pageX || event.pageX,\r\n y: originalEvent.pageY || event.pageY\r\n } : null\r\n}\r\n\r\nfunction adjustWheelDelta(delta, lock) {\r\n if (0 === delta) {\r\n return 0\r\n }\r\n var _delta = _abs(delta);\r\n var sign = _round(delta / _delta);\r\n if (lock.dir && sign !== lock.dir) {\r\n return 0\r\n }\r\n lock.dir = sign;\r\n if (_delta < .1) {\r\n _delta = 0\r\n } else {\r\n if (_delta < 1) {\r\n _delta = 1\r\n } else {\r\n if (_delta > 4) {\r\n _delta = 4\r\n } else {\r\n _delta = _round(_delta)\r\n }\r\n }\r\n }\r\n return sign * _delta\r\n}\r\n","/**\r\n * DevExtreme (viz/vector_map/data_exchanger.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.DataExchanger = DataExchanger;\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction DataExchanger() {\r\n this._store = {}\r\n}\r\nDataExchanger.prototype = {\r\n constructor: DataExchanger,\r\n dispose: function() {\r\n this._store = null;\r\n return this\r\n },\r\n _get: function(category, name) {\r\n var store = this._store[category] || (this._store[category] = {});\r\n return store[name] || (store[name] = {\r\n callbacks: (0, _callbacks.default)()\r\n })\r\n },\r\n set: function(category, name, data) {\r\n var item = this._get(category, name);\r\n item.data = data;\r\n item.callbacks.fire(data);\r\n return this\r\n },\r\n bind: function(category, name, callback) {\r\n var item = this._get(category, name);\r\n item.callbacks.add(callback);\r\n item.data && callback(item.data);\r\n return this\r\n },\r\n unbind: function(category, name, callback) {\r\n var item = this._get(category, name);\r\n item.callbacks.remove(callback);\r\n return this\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/vector_map/legend.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.LegendsControl = LegendsControl;\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _legend = require(\"../components/legend\");\r\nvar _extend = _extend2.extend;\r\nvar _each = _iterator.each;\r\nvar unknownSource = {\r\n category: \"UNKNOWN\",\r\n name: \"UNKNOWN\"\r\n};\r\n\r\nfunction buildData(partition, values, field) {\r\n var i;\r\n var ii = values.length;\r\n var list = [];\r\n var item;\r\n for (i = 0; i < ii; ++i) {\r\n list[i] = item = {\r\n start: partition[i],\r\n end: partition[i + 1],\r\n index: i\r\n };\r\n item[field] = values[i];\r\n item.states = {\r\n normal: {\r\n fill: item.color\r\n }\r\n };\r\n item.visible = true\r\n }\r\n return list\r\n}\r\nvar Legend = function(parameters) {\r\n var that = this;\r\n that._params = parameters;\r\n that._root = parameters.renderer.g().attr({\r\n \"class\": \"dxm-legend\"\r\n }).linkOn(parameters.container, {\r\n name: \"legend\",\r\n after: \"legend-base\"\r\n }).enableLinks().linkAppend();\r\n parameters.layoutControl.addItem(that);\r\n _legend.Legend.call(that, {\r\n renderer: parameters.renderer,\r\n widget: parameters.widget,\r\n group: that._root,\r\n backgroundClass: null,\r\n itemsGroupClass: null,\r\n textField: \"text\",\r\n getFormatObject: function(data) {\r\n return data\r\n }\r\n });\r\n that._onDataChanged = function(data) {\r\n that._updateData(data)\r\n }\r\n};\r\nLegend.prototype = _extend((0, _object.clone)(_legend.Legend.prototype), {\r\n constructor: Legend,\r\n dispose: function() {\r\n var that = this;\r\n that._params.layoutControl.removeItem(that);\r\n that._unbindData();\r\n that._root.linkRemove().linkOff();\r\n that._params = that._root = that._onDataChanged = null;\r\n return _legend.Legend.prototype.dispose.apply(that, arguments)\r\n },\r\n resize: function(size) {\r\n this._params.notifyDirty();\r\n if (null === size) {\r\n this.erase()\r\n } else {\r\n this.draw(size.width, size.height)\r\n }\r\n this._params.notifyReady()\r\n },\r\n locate: _legend.Legend.prototype.shift,\r\n _updateData: function(data) {\r\n this._options.defaultColor = data && data.defaultColor;\r\n this.update(data ? buildData(data.partition, data.values, this._dataName) : [], this._options, this._params.themeManager.theme(\"legend\").title);\r\n this.updateLayout()\r\n },\r\n _unbindData: function() {\r\n if (this._dataCategory) {\r\n this._params.dataExchanger.unbind(this._dataCategory, this._dataName, this._onDataChanged)\r\n }\r\n },\r\n _bindData: function(arg) {\r\n this._params.dataExchanger.bind(this._dataCategory = arg.category, this._dataName = arg.name, this._onDataChanged)\r\n },\r\n setOptions: function(options) {\r\n var that = this;\r\n that.update(that._data, options, this._params.themeManager.theme(\"legend\").title);\r\n that._unbindData();\r\n var source = options.source;\r\n that._bindData(source ? {\r\n category: source.layer,\r\n name: source.grouping\r\n } : unknownSource);\r\n that.updateLayout();\r\n return that\r\n }\r\n});\r\n\r\nfunction LegendsControl(parameters) {\r\n this._params = parameters;\r\n this._items = [];\r\n parameters.container.virtualLink(\"legend-base\")\r\n}\r\nLegendsControl.prototype = {\r\n constructor: LegendsControl,\r\n dispose: function() {\r\n _each(this._items, function(_, item) {\r\n item.dispose()\r\n });\r\n this._params = this._items = null\r\n },\r\n setOptions: function(options) {\r\n var optionList = options && options.length ? options : [];\r\n var items = this._items;\r\n var i;\r\n var ii = optionList.length;\r\n var params = this._params;\r\n var theme = params.themeManager.theme(\"legend\");\r\n for (i = items.length; i < ii; ++i) {\r\n items[i] = new Legend(params)\r\n }\r\n for (i = items.length - 1; i >= ii; --i) {\r\n items[i].dispose();\r\n items.splice(i, 1)\r\n }\r\n params.layoutControl.suspend();\r\n for (i = 0; i < ii; ++i) {\r\n items[i].setOptions(_extend(true, {}, theme, optionList[i]))\r\n }\r\n params.layoutControl.resume()\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/vector_map/layout.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.LayoutControl = LayoutControl;\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _round = Math.round;\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar _each = _iterator.each;\r\nvar _inArray = _array.inArray;\r\nvar horizontalAlignmentMap = {\r\n left: 0,\r\n center: 1,\r\n right: 2\r\n};\r\nvar verticalAlignmentMap = {\r\n top: 0,\r\n bottom: 1\r\n};\r\n\r\nfunction getCellIndex(options) {\r\n return 3 * verticalAlignmentMap[options.verticalAlignment] + horizontalAlignmentMap[options.horizontalAlignment]\r\n}\r\n\r\nfunction createCells(canvas, items) {\r\n var hStep = (canvas.right - canvas.left) / 3;\r\n var vStep = (canvas.bottom - canvas.top) / 2;\r\n var h1 = canvas.left;\r\n var h2 = _round(h1 + hStep);\r\n var h3 = _round(h1 + hStep + hStep);\r\n var h4 = canvas.right;\r\n var v1 = canvas.top;\r\n var v2 = _round(v1 + vStep);\r\n var v3 = canvas.bottom;\r\n var cells = [{\r\n rect: [h1, v1, h2, v2]\r\n }, {\r\n rect: [h2, v1, h3, v2],\r\n center: true\r\n }, {\r\n rect: [h3, v1, h4, v2],\r\n horInversion: true\r\n }, {\r\n rect: [h1, v2, h2, v3],\r\n verInversion: true\r\n }, {\r\n rect: [h2, v2, h3, v3],\r\n center: true,\r\n verInversion: true\r\n }, {\r\n rect: [h3, v2, h4, v3],\r\n horInversion: true,\r\n verInversion: true\r\n }];\r\n var itemsList = [\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n []\r\n ];\r\n _each(items, function(_, item) {\r\n var options = item.getLayoutOptions();\r\n if (options) {\r\n itemsList[getCellIndex(options)].push({\r\n item: item,\r\n width: options.width,\r\n height: options.height\r\n })\r\n }\r\n });\r\n _each(cells, function(i, cell) {\r\n if (itemsList[i].length) {\r\n cell.items = itemsList[i]\r\n } else {\r\n if (cell.center) {\r\n cell.rect[0] = cell.rect[2] = (cell.rect[0] + cell.rect[2]) / 2\r\n } else {\r\n cell.rect[cell.horInversion ? 0 : 2] = cell.rect[cell.horInversion ? 2 : 0]\r\n }\r\n cell.rect[cell.verInversion ? 1 : 3] = cell.rect[cell.verInversion ? 3 : 1]\r\n }\r\n });\r\n return cells\r\n}\r\n\r\nfunction adjustCellSizes(cells) {\r\n _each([0, 1, 2, 3, 4, 5], function(_, index) {\r\n var cell = cells[index];\r\n var otherCell = cells[(index + 3) % 6];\r\n if (cell.items) {\r\n if (!otherCell.items) {\r\n cell.rect[1] = _min(cell.rect[1], otherCell.rect[3]);\r\n cell.rect[3] = _max(cell.rect[3], otherCell.rect[1])\r\n }\r\n }\r\n });\r\n _each([1, 4], function(_, index) {\r\n var cell = cells[index];\r\n var otherCell1 = cells[index - 1];\r\n var otherCell2 = cells[index + 1];\r\n var size1;\r\n var size2;\r\n if (cell.items) {\r\n if (!otherCell1.items && !otherCell2.items) {\r\n size1 = cell.rect[0] - otherCell1.rect[2];\r\n size2 = otherCell2.rect[0] - cell.rect[2];\r\n if (size1 > size2) {\r\n if (size1 / size2 >= 2) {\r\n cell.rect[0] -= size1;\r\n cell.right = true\r\n } else {\r\n cell.rect[0] -= size2;\r\n cell.rect[2] += size2\r\n }\r\n } else {\r\n if (size2 / size1 >= 2) {\r\n cell.rect[2] += size2;\r\n cell.center = null\r\n } else {\r\n cell.rect[0] -= size1;\r\n cell.rect[2] += size1\r\n }\r\n }\r\n }\r\n } else {\r\n if (otherCell1.items) {\r\n otherCell1.rect[2] = (cell.rect[0] + cell.rect[2]) / 2\r\n }\r\n if (otherCell2.items) {\r\n otherCell2.rect[0] = (cell.rect[0] + cell.rect[2]) / 2\r\n }\r\n }\r\n })\r\n}\r\n\r\nfunction adjustCellsAndApplyLayout(cells, forceMode) {\r\n var hasHiddenItems = false;\r\n adjustCellSizes(cells);\r\n _each(cells, function(_, cell) {\r\n if (cell.items) {\r\n hasHiddenItems = applyCellLayout(cell, forceMode) || hasHiddenItems\r\n }\r\n });\r\n return hasHiddenItems\r\n}\r\n\r\nfunction applyCellLayout(cell, forceMode) {\r\n var cellRect = cell.rect;\r\n var cellWidth = cellRect[2] - cellRect[0];\r\n var cellHeight = cellRect[3] - cellRect[1];\r\n var xOffset = 0;\r\n var yOffset = 0;\r\n var currentHeight = 0;\r\n var totalL = cellRect[2];\r\n var totalT = cellRect[3];\r\n var totalR = cellRect[0];\r\n var totalB = cellRect[1];\r\n var moves = [];\r\n var hasHiddenItems = false;\r\n _each(cell.items, function(_, item) {\r\n if (item.width > cellWidth || item.height > cellHeight) {\r\n moves.push(null);\r\n hasHiddenItems = true;\r\n return forceMode || false\r\n }\r\n if (xOffset + item.width > cellWidth) {\r\n yOffset += currentHeight;\r\n xOffset = currentHeight = 0\r\n }\r\n if (yOffset + item.height > cellHeight) {\r\n moves.push(null);\r\n hasHiddenItems = true;\r\n return forceMode || false\r\n }\r\n currentHeight = _max(currentHeight, item.height);\r\n var dx = cell.horInversion ? cellRect[2] - item.width - xOffset : cellRect[0] + xOffset;\r\n var dy = cell.verInversion ? cellRect[3] - item.height - yOffset : cellRect[1] + yOffset;\r\n xOffset += item.width;\r\n totalL = _min(totalL, dx);\r\n totalT = _min(totalT, dy);\r\n totalR = _max(totalR, dx + item.width);\r\n totalB = _max(totalB, dy + item.height);\r\n moves.push([dx, dy])\r\n });\r\n if (forceMode || !hasHiddenItems) {\r\n xOffset = 0;\r\n if (cell.right) {\r\n xOffset = cellRect[2] - cellRect[0] - totalR + totalL\r\n } else {\r\n if (cell.center) {\r\n xOffset = _round((cellRect[2] - cellRect[0] - totalR + totalL) / 2)\r\n }\r\n }\r\n _each(cell.items, function(i, item) {\r\n var move = moves[i];\r\n if (move) {\r\n item.item.locate(move[0] + xOffset, move[1])\r\n } else {\r\n item.item.resize(null)\r\n }\r\n });\r\n cell.rect = [totalL, totalT, totalR, totalB];\r\n cell.items = null\r\n }\r\n return hasHiddenItems\r\n}\r\n\r\nfunction applyLayout(canvas, items) {\r\n var cells = createCells(canvas, items);\r\n if (adjustCellsAndApplyLayout(cells)) {\r\n adjustCellsAndApplyLayout(cells, true)\r\n }\r\n}\r\n\r\nfunction LayoutControl(widget) {\r\n var that = this;\r\n that._items = [];\r\n that._suspended = 0;\r\n that._widget = widget;\r\n that._updateLayout = function() {\r\n that._update()\r\n }\r\n}\r\nLayoutControl.prototype = {\r\n constructor: LayoutControl,\r\n dispose: function() {\r\n this._items = this._updateLayout = null\r\n },\r\n setSize: function(canvas) {\r\n this._canvas = canvas;\r\n this._update()\r\n },\r\n suspend: function() {\r\n ++this._suspended\r\n },\r\n resume: function() {\r\n if (0 === --this._suspended) {\r\n this._update()\r\n }\r\n },\r\n addItem: function(item) {\r\n this._items.push(item);\r\n item.updateLayout = this._updateLayout\r\n },\r\n removeItem: function(item) {\r\n this._items.splice(_inArray(item, this._items), 1);\r\n item.updateLayout = null\r\n },\r\n _update: function() {\r\n var canvas;\r\n if (0 === this._suspended) {\r\n canvas = this._canvas;\r\n _each(this._items, function(_, item) {\r\n item.resize(canvas)\r\n });\r\n this._widget.resolveItemsDeferred(this._items.filter(function(el) {\r\n return el.getTemplatesGroups && el.getTemplatesDef\r\n }));\r\n applyLayout({\r\n left: canvas.left,\r\n top: canvas.top,\r\n right: canvas.width + canvas.left,\r\n bottom: canvas.height + canvas.top\r\n }, this._items)\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/vector_map/map_layer.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getMaxBound = getMaxBound;\r\nexports.MapLayerCollection = MapLayerCollection;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _data_helper = _interopRequireDefault(require(\"../../data_helper\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _utils = require(\"../core/utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _noop = _common.noop;\r\nvar _extend = _extend2.extend;\r\nvar _each = _iterator.each;\r\nvar _concat = Array.prototype.concat;\r\nvar TYPE_AREA = \"area\";\r\nvar TYPE_LINE = \"line\";\r\nvar TYPE_MARKER = \"marker\";\r\nvar STATE_DEFAULT = 0;\r\nvar STATE_HOVERED = 1;\r\nvar STATE_SELECTED = 2;\r\nvar STATE_TO_INDEX = [0, 1, 2, 2];\r\nvar TOLERANCE = 1;\r\nvar SELECTIONS = {\r\n none: null,\r\n single: -1,\r\n multiple: NaN\r\n};\r\nvar _isArray = Array.isArray;\r\nvar _Number = Number;\r\nvar _String = String;\r\nvar _abs = Math.abs;\r\nvar _round = Math.round;\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar _sqrt = Math.sqrt;\r\n\r\nfunction getMaxBound(arr) {\r\n return arr.reduce(function(a, c) {\r\n return c ? [_min(a[0], c[0]), _min(a[1], c[1]), _max(a[2], c[2]), _max(a[3], c[3])] : a\r\n }, arr[0])\r\n}\r\n\r\nfunction getSelection(selectionMode) {\r\n var selection = (0, _utils.normalizeEnum)(selectionMode);\r\n selection = selection in SELECTIONS ? SELECTIONS[selection] : SELECTIONS.single;\r\n if (null !== selection) {\r\n selection = {\r\n state: {},\r\n single: selection\r\n }\r\n }\r\n return selection\r\n}\r\n\r\nfunction getName(opt, index) {\r\n return (opt[index] || {}).name\r\n}\r\n\r\nfunction EmptySource() {}\r\nEmptySource.prototype.count = function() {\r\n return 0\r\n};\r\n\r\nfunction ArraySource(raw) {\r\n this.raw = raw\r\n}\r\nArraySource.prototype = {\r\n constructor: ArraySource,\r\n count: function() {\r\n return this.raw.length\r\n },\r\n item: function(index) {\r\n return this.raw[index]\r\n },\r\n geometry: function(item) {\r\n return {\r\n coordinates: item.coordinates\r\n }\r\n },\r\n attributes: function(item) {\r\n return item.attributes\r\n },\r\n getBBox: function(index) {\r\n return 0 === arguments.length ? void 0 : this.raw[index].bbox\r\n }\r\n};\r\n\r\nfunction GeoJsonSource(raw) {\r\n this.raw = raw\r\n}\r\nGeoJsonSource.prototype = {\r\n constructor: GeoJsonSource,\r\n count: function() {\r\n return this.raw.features.length\r\n },\r\n item: function(index) {\r\n return this.raw.features[index]\r\n },\r\n geometry: function(item) {\r\n return item.geometry\r\n },\r\n attributes: function(item) {\r\n return item.properties\r\n },\r\n getBBox: function(index) {\r\n return 0 === arguments.length ? this.raw.bbox : this.raw.features[index].bbox\r\n }\r\n};\r\n\r\nfunction isGeoJsonObject(obj) {\r\n return _isArray(obj.features)\r\n}\r\n\r\nfunction unwrapFromDataSource(source) {\r\n var sourceType;\r\n if (source) {\r\n if (isGeoJsonObject(source)) {\r\n sourceType = GeoJsonSource\r\n } else {\r\n if (1 === source.length && source[0] && isGeoJsonObject(source[0])) {\r\n sourceType = GeoJsonSource;\r\n source = source[0]\r\n } else {\r\n if (_isArray(source)) {\r\n sourceType = ArraySource\r\n }\r\n }\r\n }\r\n }\r\n sourceType = sourceType || EmptySource;\r\n return new sourceType(source)\r\n}\r\n\r\nfunction wrapToDataSource(option) {\r\n return option ? isGeoJsonObject(option) ? [option] : option : []\r\n}\r\n\r\nfunction customizeHandles(proxies, callback, widget) {\r\n callback.call(widget, proxies)\r\n}\r\n\r\nfunction setAreaLabelVisibility(label) {\r\n label.text.attr({\r\n visibility: label.size[0] / label.spaceSize[0] < TOLERANCE && label.size[1] / label.spaceSize[1] < TOLERANCE ? null : \"hidden\"\r\n })\r\n}\r\n\r\nfunction setLineLabelVisibility(label) {\r\n label.text.attr({\r\n visibility: label.size[0] / label.spaceSize[0] < TOLERANCE || label.size[1] / label.spaceSize[1] < TOLERANCE ? null : \"hidden\"\r\n })\r\n}\r\n\r\nfunction getDataValue(proxy, dataField) {\r\n return proxy.attribute(dataField)\r\n}\r\nvar TYPE_TO_TYPE_MAP = {\r\n Point: TYPE_MARKER,\r\n MultiPoint: TYPE_LINE,\r\n LineString: TYPE_LINE,\r\n MultiLineString: TYPE_LINE,\r\n Polygon: TYPE_AREA,\r\n MultiPolygon: TYPE_AREA\r\n};\r\n\r\nfunction pick(a, b) {\r\n return void 0 !== a ? a : b\r\n}\r\n\r\nfunction guessTypeByData(sample) {\r\n var type = TYPE_TO_TYPE_MAP[sample.type];\r\n var coordinates = sample.coordinates;\r\n if (!type) {\r\n if (\"number\" === typeof coordinates[0]) {\r\n type = TYPE_MARKER\r\n } else {\r\n if (\"number\" === typeof coordinates[0][0]) {\r\n type = TYPE_LINE\r\n } else {\r\n type = TYPE_AREA\r\n }\r\n }\r\n }\r\n return type\r\n}\r\nvar emptyStrategy = {\r\n setup: _noop,\r\n reset: _noop,\r\n arrange: _noop,\r\n updateGrouping: _noop,\r\n getDefaultColor: _noop\r\n};\r\nvar strategiesByType = {};\r\nvar strategiesByGeometry = {};\r\nvar strategiesByElementType = {};\r\nvar groupByColor;\r\nvar groupBySize;\r\nvar selectStrategy = function(options, data) {\r\n var type = (0, _utils.normalizeEnum)(options.type);\r\n var elementType = (0, _utils.normalizeEnum)(options.elementType);\r\n var sample;\r\n var strategy = _extend({}, emptyStrategy);\r\n if (data.count() > 0) {\r\n sample = data.geometry(data.item(0));\r\n type = strategiesByType[type] ? type : guessTypeByData(sample);\r\n _extend(strategy, strategiesByType[type]);\r\n strategy.fullType = strategy.type = type;\r\n if (strategiesByGeometry[type]) {\r\n _extend(strategy, strategiesByGeometry[type](sample))\r\n }\r\n if (strategiesByElementType[type]) {\r\n elementType = strategiesByElementType[type][elementType] ? elementType : strategiesByElementType[type]._default;\r\n _extend(strategy, strategiesByElementType[type][elementType]);\r\n strategy.elementType = elementType;\r\n strategy.fullType += \":\" + elementType\r\n }\r\n }\r\n return strategy\r\n};\r\n\r\nfunction applyElementState(figure, styles, state, field) {\r\n figure[field].attr(styles[field][state])\r\n}\r\nstrategiesByType[TYPE_AREA] = {\r\n projectLabel: projectAreaLabel,\r\n transform: transformPointList,\r\n transformLabel: transformAreaLabel,\r\n draw: function(context, figure, data) {\r\n figure.root = context.renderer.path([], \"area\").data(context.dataKey, data)\r\n },\r\n refresh: _noop,\r\n getLabelOffset: function(label) {\r\n setAreaLabelVisibility(label);\r\n return [0, 0]\r\n },\r\n getStyles: function(settings) {\r\n var color = settings.color || null;\r\n var borderColor = settings.borderColor || null;\r\n var borderWidth = pick(settings.borderWidth, null);\r\n var opacity = pick(settings.opacity, null);\r\n return {\r\n root: [{\r\n \"class\": \"dxm-area\",\r\n stroke: borderColor,\r\n \"stroke-width\": borderWidth,\r\n fill: color,\r\n opacity: opacity\r\n }, {\r\n \"class\": \"dxm-area dxm-area-hovered\",\r\n stroke: settings.hoveredBorderColor || borderColor,\r\n \"stroke-width\": pick(settings.hoveredBorderWidth, borderWidth),\r\n fill: settings.hoveredColor || color,\r\n opacity: pick(settings.hoveredOpacity, opacity)\r\n }, {\r\n \"class\": \"dxm-area dxm-area-selected\",\r\n stroke: settings.selectedBorderColor || borderColor,\r\n \"stroke-width\": pick(settings.selectedBorderWidth, borderWidth),\r\n fill: settings.selectedColor || color,\r\n opacity: pick(settings.selectedOpacity, opacity)\r\n }]\r\n }\r\n },\r\n setState: function(figure, styles, state) {\r\n applyElementState(figure, styles, state, \"root\")\r\n },\r\n hasLabelsGroup: true,\r\n updateGrouping: function(context) {\r\n groupByColor(context)\r\n },\r\n getDefaultColor: _noop\r\n};\r\nstrategiesByType[TYPE_LINE] = {\r\n projectLabel: projectLineLabel,\r\n transform: transformPointList,\r\n transformLabel: transformLineLabel,\r\n draw: function(context, figure, data) {\r\n figure.root = context.renderer.path([], \"line\").data(context.dataKey, data)\r\n },\r\n refresh: _noop,\r\n getLabelOffset: function(label) {\r\n setLineLabelVisibility(label);\r\n return [0, 0]\r\n },\r\n getStyles: function(settings) {\r\n var color = settings.color || settings.borderColor || null;\r\n var width = pick(settings.borderWidth, null);\r\n var opacity = pick(settings.opacity, null);\r\n return {\r\n root: [{\r\n \"class\": \"dxm-line\",\r\n stroke: color,\r\n \"stroke-width\": width,\r\n opacity: opacity\r\n }, {\r\n \"class\": \"dxm-line dxm-line-hovered\",\r\n stroke: settings.hoveredColor || settings.hoveredBorderColor || color,\r\n \"stroke-width\": pick(settings.hoveredBorderWidth, width),\r\n opacity: pick(settings.hoveredOpacity, opacity)\r\n }, {\r\n \"class\": \"dxm-line dxm-line-selected\",\r\n stroke: settings.selectedColor || settings.selectedBorderColor || color,\r\n \"stroke-width\": pick(settings.selectedBorderWidth, width),\r\n opacity: pick(settings.selectedOpacity, opacity)\r\n }]\r\n }\r\n },\r\n setState: function(figure, styles, state) {\r\n applyElementState(figure, styles, state, \"root\")\r\n },\r\n hasLabelsGroup: true,\r\n updateGrouping: function(context) {\r\n groupByColor(context)\r\n },\r\n getDefaultColor: _noop\r\n};\r\nstrategiesByType[TYPE_MARKER] = {\r\n project: projectPoint,\r\n transform: transformPoint,\r\n draw: function(context, figure, data) {\r\n figure.root = context.renderer.g();\r\n this._draw(context, figure, data)\r\n },\r\n refresh: _noop,\r\n hasLabelsGroup: false,\r\n getLabelOffset: function(label, settings) {\r\n return [_round((label.size[0] + _max(settings.size || 0, 0)) / 2) + 2, 0]\r\n },\r\n getStyles: function(settings) {\r\n var styles = {\r\n root: [{\r\n \"class\": \"dxm-marker\"\r\n }, {\r\n \"class\": \"dxm-marker dxm-marker-hovered\"\r\n }, {\r\n \"class\": \"dxm-marker dxm-marker-selected\"\r\n }]\r\n };\r\n this._getStyles(styles, settings);\r\n return styles\r\n },\r\n setState: function(figure, styles, state) {\r\n applyElementState(figure, styles, state, \"root\");\r\n this._setState(figure, styles, state)\r\n },\r\n updateGrouping: function(context) {\r\n groupByColor(context);\r\n groupBySize(context)\r\n },\r\n getDefaultColor: function(ctx, palette) {\r\n return ctx.params.themeManager.getAccentColor(palette)\r\n }\r\n};\r\nstrategiesByGeometry[TYPE_AREA] = function(sample) {\r\n return {\r\n project: function(projection, coordinates) {\r\n return coordinates[0] && coordinates[0][0] && coordinates[0][0][0] && \"number\" === typeof coordinates[0][0][0][0] ? projectMultiPolygon(projection, coordinates) : projectPolygon(projection, coordinates)\r\n }\r\n }\r\n};\r\nstrategiesByGeometry[TYPE_LINE] = function(sample) {\r\n var coordinates = sample.coordinates;\r\n return {\r\n project: coordinates[0] && coordinates[0][0] && \"number\" === typeof coordinates[0][0][0] ? projectPolygon : projectLineString\r\n }\r\n};\r\nstrategiesByElementType[TYPE_MARKER] = {\r\n _default: \"dot\",\r\n dot: {\r\n setup: function(context) {\r\n context.filter = context.renderer.shadowFilter(\"-40%\", \"-40%\", \"180%\", \"200%\", 0, 1, 1, \"#000000\", .2)\r\n },\r\n reset: function(context) {\r\n context.filter.dispose();\r\n context.filter = null\r\n },\r\n _draw: function(ctx, figure, data) {\r\n figure.back = ctx.renderer.circle().sharp().data(ctx.dataKey, data).append(figure.root);\r\n figure.dot = ctx.renderer.circle().sharp().data(ctx.dataKey, data).append(figure.root)\r\n },\r\n refresh: function(ctx, figure, data, proxy, settings) {\r\n figure.dot.attr({\r\n filter: settings.shadow ? ctx.filter.id : null\r\n })\r\n },\r\n _getStyles: function(styles, style) {\r\n var size = style.size > 0 ? _Number(style.size) : 0;\r\n var hoveredSize = size;\r\n var selectedSize = size + (style.selectedStep > 0 ? _Number(style.selectedStep) : 0);\r\n var hoveredBackSize = hoveredSize + (style.backStep > 0 ? _Number(style.backStep) : 0);\r\n var selectedBackSize = selectedSize + (style.backStep > 0 ? _Number(style.backStep) : 0);\r\n var color = style.color || null;\r\n var borderColor = style.borderColor || null;\r\n var borderWidth = pick(style.borderWidth, null);\r\n var opacity = pick(style.opacity, null);\r\n var backColor = style.backColor || null;\r\n var backOpacity = pick(style.backOpacity, null);\r\n styles.dot = [{\r\n r: size / 2,\r\n stroke: borderColor,\r\n \"stroke-width\": borderWidth,\r\n fill: color,\r\n opacity: opacity\r\n }, {\r\n r: hoveredSize / 2,\r\n stroke: style.hoveredBorderColor || borderColor,\r\n \"stroke-width\": pick(style.hoveredBorderWidth, borderWidth),\r\n fill: style.hoveredColor || color,\r\n opacity: pick(style.hoveredOpacity, opacity)\r\n }, {\r\n r: selectedSize / 2,\r\n stroke: style.selectedBorderColor || borderColor,\r\n \"stroke-width\": pick(style.selectedBorderWidth, borderWidth),\r\n fill: style.selectedColor || color,\r\n opacity: pick(style.selectedOpacity, opacity)\r\n }];\r\n styles.back = [{\r\n r: size / 2,\r\n stroke: \"none\",\r\n \"stroke-width\": 0,\r\n fill: backColor,\r\n opacity: backOpacity\r\n }, {\r\n r: hoveredBackSize / 2,\r\n stroke: \"none\",\r\n \"stroke-width\": 0,\r\n fill: backColor,\r\n opacity: backOpacity\r\n }, {\r\n r: selectedBackSize / 2,\r\n stroke: \"none\",\r\n \"stroke-width\": 0,\r\n fill: backColor,\r\n opacity: backOpacity\r\n }]\r\n },\r\n _setState: function(figure, styles, state) {\r\n applyElementState(figure, styles, state, \"dot\");\r\n applyElementState(figure, styles, state, \"back\")\r\n }\r\n },\r\n bubble: {\r\n _draw: function(ctx, figure, data) {\r\n figure.bubble = ctx.renderer.circle().sharp().data(ctx.dataKey, data).append(figure.root)\r\n },\r\n refresh: function(ctx, figure, data, proxy, settings) {\r\n figure.bubble.attr({\r\n r: settings.size / 2\r\n })\r\n },\r\n _getStyles: function(styles, style) {\r\n var color = style.color || null;\r\n var borderColor = style.borderColor || null;\r\n var borderWidth = pick(style.borderWidth, null);\r\n var opacity = pick(style.opacity, null);\r\n styles.bubble = [{\r\n stroke: borderColor,\r\n \"stroke-width\": borderWidth,\r\n fill: color,\r\n opacity: opacity\r\n }, {\r\n stroke: style.hoveredBorderColor || borderColor,\r\n \"stroke-width\": pick(style.hoveredBorderWidth, borderWidth),\r\n fill: style.hoveredColor || style.color,\r\n opacity: pick(style.hoveredOpacity, opacity)\r\n }, {\r\n stroke: style.selectedBorderColor || borderColor,\r\n \"stroke-width\": pick(style.selectedBorderWidth, borderWidth),\r\n fill: style.selectedColor || style.color,\r\n opacity: pick(style.selectedOpacity, opacity)\r\n }]\r\n },\r\n _setState: function(figure, styles, state) {\r\n applyElementState(figure, styles, state, \"bubble\")\r\n },\r\n arrange: function(context, handles) {\r\n var values = [];\r\n var i;\r\n var ii = values.length = handles.length;\r\n var settings = context.settings;\r\n var dataField = settings.dataField;\r\n var minSize = settings.minSize > 0 ? _Number(settings.minSize) : 0;\r\n var maxSize = settings.maxSize > minSize ? _Number(settings.maxSize) : minSize;\r\n if (settings.sizeGroups) {\r\n return\r\n }\r\n for (i = 0; i < ii; ++i) {\r\n values[i] = _max(getDataValue(handles[i].proxy, dataField) || 0, 0)\r\n }\r\n var minValue = _min.apply(null, values);\r\n var maxValue = _max.apply(null, values);\r\n var deltaValue = maxValue - minValue || 1;\r\n var deltaSize = maxSize - minSize;\r\n for (i = 0; i < ii; ++i) {\r\n handles[i]._settings.size = minSize + deltaSize * (values[i] - minValue) / deltaValue\r\n }\r\n },\r\n updateGrouping: function(context) {\r\n var dataField = context.settings.dataField;\r\n strategiesByType[TYPE_MARKER].updateGrouping(context);\r\n groupBySize(context, function(proxy) {\r\n return getDataValue(proxy, dataField)\r\n })\r\n }\r\n },\r\n pie: {\r\n _draw: function(ctx, figure, data) {\r\n figure.pie = ctx.renderer.g().append(figure.root);\r\n figure.border = ctx.renderer.circle().sharp().data(ctx.dataKey, data).append(figure.root)\r\n },\r\n refresh: function(ctx, figure, data, proxy, settings) {\r\n var values = getDataValue(proxy, ctx.settings.dataField) || [];\r\n var colors = settings._colors;\r\n var sum = 0;\r\n var pie = figure.pie;\r\n var renderer = ctx.renderer;\r\n var dataKey = ctx.dataKey;\r\n var r = (settings.size > 0 ? _Number(settings.size) : 0) / 2;\r\n var start = 90;\r\n var end = start;\r\n var zeroSum = false;\r\n sum = values.reduce(function(total, item) {\r\n return total + (item || 0)\r\n }, 0);\r\n if (0 === sum) {\r\n zeroSum = true;\r\n sum = 360 / values.length\r\n }\r\n values.forEach(function(item, i) {\r\n start = end;\r\n end += zeroSum ? sum : (item || 0) / sum * 360;\r\n renderer.arc(0, 0, 0, r, start, end).attr({\r\n \"stroke-linejoin\": \"round\",\r\n fill: colors[i]\r\n }).data(dataKey, data).append(pie)\r\n });\r\n figure.border.attr({\r\n r: r\r\n })\r\n },\r\n _getStyles: function(styles, style) {\r\n var opacity = pick(style.opacity, null);\r\n var borderColor = style.borderColor || null;\r\n var borderWidth = pick(style.borderWidth, null);\r\n styles.pie = [{\r\n opacity: opacity\r\n }, {\r\n opacity: pick(style.hoveredOpacity, opacity)\r\n }, {\r\n opacity: pick(style.selectedOpacity, opacity)\r\n }];\r\n styles.border = [{\r\n stroke: borderColor,\r\n \"stroke-width\": borderWidth\r\n }, {\r\n stroke: style.hoveredBorderColor || borderColor,\r\n \"stroke-width\": pick(style.hoveredBorderWidth, borderWidth)\r\n }, {\r\n stroke: style.selectedBorderColor || borderColor,\r\n \"stroke-width\": pick(style.selectedBorderWidth, borderWidth)\r\n }]\r\n },\r\n _setState: function(figure, styles, state) {\r\n applyElementState(figure, styles, state, \"pie\");\r\n applyElementState(figure, styles, state, \"border\")\r\n },\r\n arrange: function(context, handles) {\r\n var i;\r\n var ii = handles.length;\r\n var dataField = context.settings.dataField;\r\n var values;\r\n var count = 0;\r\n var palette;\r\n for (i = 0; i < ii; ++i) {\r\n values = getDataValue(handles[i].proxy, dataField);\r\n if (values && values.length > count) {\r\n count = values.length\r\n }\r\n }\r\n if (count > 0) {\r\n palette = context.params.themeManager.createPalette(context.settings.palette, {\r\n useHighlight: true,\r\n extensionMode: \"alternate\"\r\n });\r\n values = palette.generateColors(count);\r\n context.settings._colors = values;\r\n context.grouping.color = {\r\n callback: _noop,\r\n field: \"\",\r\n partition: [],\r\n values: []\r\n };\r\n context.params.dataExchanger.set(context.name, \"color\", {\r\n partition: [],\r\n values: values\r\n })\r\n }\r\n }\r\n },\r\n image: {\r\n _draw: function(ctx, figure, data) {\r\n figure.image = ctx.renderer.image(null, null, null, null, null, \"center\").attr({\r\n \"pointer-events\": \"visible\"\r\n }).data(ctx.dataKey, data).append(figure.root)\r\n },\r\n refresh: function(ctx, figure, data, proxy) {\r\n figure.image.attr({\r\n href: getDataValue(proxy, ctx.settings.dataField)\r\n })\r\n },\r\n _getStyles: function(styles, style) {\r\n var size = style.size > 0 ? _Number(style.size) : 0;\r\n var hoveredSize = size + (style.hoveredStep > 0 ? _Number(style.hoveredStep) : 0);\r\n var selectedSize = size + (style.selectedStep > 0 ? _Number(style.selectedStep) : 0);\r\n var opacity = pick(style.opacity, null);\r\n styles.image = [{\r\n x: -size / 2,\r\n y: -size / 2,\r\n width: size,\r\n height: size,\r\n opacity: opacity\r\n }, {\r\n x: -hoveredSize / 2,\r\n y: -hoveredSize / 2,\r\n width: hoveredSize,\r\n height: hoveredSize,\r\n opacity: pick(style.hoveredOpacity, opacity)\r\n }, {\r\n x: -selectedSize / 2,\r\n y: -selectedSize / 2,\r\n width: selectedSize,\r\n height: selectedSize,\r\n opacity: pick(style.selectedOpacity, opacity)\r\n }]\r\n },\r\n _setState: function(figure, styles, state) {\r\n applyElementState(figure, styles, state, \"image\")\r\n }\r\n }\r\n};\r\n\r\nfunction projectPoint(projection, coordinates) {\r\n return projection.project(coordinates)\r\n}\r\n\r\nfunction projectPointList(projection, coordinates) {\r\n var output = [];\r\n var i;\r\n var ii = output.length = coordinates.length;\r\n for (i = 0; i < ii; ++i) {\r\n output[i] = projection.project(coordinates[i])\r\n }\r\n return output\r\n}\r\n\r\nfunction projectLineString(projection, coordinates) {\r\n return [projectPointList(projection, coordinates)]\r\n}\r\n\r\nfunction projectPolygon(projection, coordinates) {\r\n var output = [];\r\n var i;\r\n var ii = output.length = coordinates.length;\r\n for (i = 0; i < ii; ++i) {\r\n output[i] = projectPointList(projection, coordinates[i])\r\n }\r\n return output\r\n}\r\n\r\nfunction projectMultiPolygon(projection, coordinates) {\r\n var output = [];\r\n var i;\r\n var ii = output.length = coordinates.length;\r\n for (i = 0; i < ii; ++i) {\r\n output[i] = projectPolygon(projection, coordinates[i])\r\n }\r\n return _concat.apply([], output)\r\n}\r\n\r\nfunction transformPoint(content, projection, coordinates) {\r\n var data = projection.transform(coordinates);\r\n content.root.attr({\r\n translateX: data[0],\r\n translateY: data[1]\r\n })\r\n}\r\n\r\nfunction transformList(projection, coordinates) {\r\n var output = [];\r\n var i;\r\n var ii = coordinates.length;\r\n var item;\r\n var k = 0;\r\n output.length = 2 * ii;\r\n for (i = 0; i < ii; ++i) {\r\n item = projection.transform(coordinates[i]);\r\n output[k++] = item[0];\r\n output[k++] = item[1]\r\n }\r\n return output\r\n}\r\n\r\nfunction transformPointList(content, projection, coordinates) {\r\n var output = [];\r\n var i;\r\n var ii = output.length = coordinates.length;\r\n for (i = 0; i < ii; ++i) {\r\n output[i] = transformList(projection, coordinates[i])\r\n }\r\n content.root.attr({\r\n points: output\r\n })\r\n}\r\n\r\nfunction transformAreaLabel(label, projection, coordinates) {\r\n var data = projection.transform(coordinates[0]);\r\n label.spaceSize = projection.getSquareSize(coordinates[1]);\r\n label.text.attr({\r\n translateX: data[0],\r\n translateY: data[1]\r\n });\r\n setAreaLabelVisibility(label)\r\n}\r\n\r\nfunction transformLineLabel(label, projection, coordinates) {\r\n var data = projection.transform(coordinates[0]);\r\n label.spaceSize = projection.getSquareSize(coordinates[1]);\r\n label.text.attr({\r\n translateX: data[0],\r\n translateY: data[1]\r\n });\r\n setLineLabelVisibility(label)\r\n}\r\n\r\nfunction getItemSettings(context, proxy, settings) {\r\n var result = combineSettings(context.settings, settings);\r\n applyGrouping(context.grouping, proxy, result);\r\n if (void 0 === settings.color && settings.paletteIndex >= 0) {\r\n result.color = result._colors[settings.paletteIndex]\r\n }\r\n return result\r\n}\r\n\r\nfunction applyGrouping(grouping, proxy, settings) {\r\n _each(grouping, function(name, data) {\r\n var index = findGroupingIndex(data.callback(proxy, data.field), data.partition);\r\n if (index >= 0) {\r\n settings[name] = data.values[index]\r\n }\r\n })\r\n}\r\n\r\nfunction findGroupingIndex(value, partition) {\r\n var start = 0;\r\n var end = partition.length - 1;\r\n var index = -1;\r\n var middle;\r\n if (partition[start] <= value && value <= partition[end]) {\r\n if (value === partition[end]) {\r\n index = end - 1\r\n } else {\r\n while (end - start > 1) {\r\n middle = start + end >> 1;\r\n if (value < partition[middle]) {\r\n end = middle\r\n } else {\r\n start = middle\r\n }\r\n }\r\n index = start\r\n }\r\n }\r\n return index\r\n}\r\n\r\nfunction raiseChanged(context, handle, state, name) {\r\n context.params.eventTrigger(name, {\r\n target: handle.proxy,\r\n state: state\r\n })\r\n}\r\n\r\nfunction combineSettings(common, partial) {\r\n var obj = _extend({}, common, partial);\r\n obj.label = _extend({}, common.label, obj.label);\r\n obj.label.font = _extend({}, common.label.font, obj.label.font);\r\n return obj\r\n}\r\n\r\nfunction processCommonSettings(context, options) {\r\n var themeManager = context.params.themeManager;\r\n var strategy = context.str;\r\n var settings = combineSettings(_extend({\r\n label: {},\r\n color: strategy.getDefaultColor(context, options.palette)\r\n }, themeManager.theme(\"layer:\" + strategy.fullType)), options);\r\n var colors;\r\n var i;\r\n var palette;\r\n if (settings.paletteSize > 0) {\r\n palette = themeManager.createDiscretePalette(settings.palette, settings.paletteSize);\r\n for (i = 0, colors = []; i < settings.paletteSize; ++i) {\r\n colors.push(palette.getColor(i))\r\n }\r\n settings._colors = colors\r\n }\r\n return settings\r\n}\r\n\r\nfunction valueCallback(proxy, dataField) {\r\n return proxy.attribute(dataField)\r\n}\r\nvar performGrouping = function(context, partition, settingField, dataField, valuesCallback) {\r\n var values;\r\n if (dataField && partition && partition.length > 1) {\r\n values = valuesCallback(partition.length - 1);\r\n context.grouping[settingField] = {\r\n callback: (0, _type.isFunction)(dataField) ? dataField : valueCallback,\r\n field: dataField,\r\n partition: partition,\r\n values: values\r\n };\r\n context.params.dataExchanger.set(context.name, settingField, {\r\n partition: partition,\r\n values: values,\r\n defaultColor: context.settings.color\r\n })\r\n }\r\n};\r\n\r\nfunction dropGrouping(context) {\r\n var name = context.name;\r\n var dataExchanger = context.params.dataExchanger;\r\n _each(context.grouping, function(field) {\r\n dataExchanger.set(name, field, null)\r\n });\r\n context.grouping = {}\r\n}\r\ngroupByColor = function(context) {\r\n performGrouping(context, context.settings.colorGroups, \"color\", context.settings.colorGroupingField, function(count) {\r\n var _palette = context.params.themeManager.createDiscretePalette(context.settings.palette, count);\r\n var i;\r\n var list = [];\r\n for (i = 0; i < count; ++i) {\r\n list.push(_palette.getColor(i))\r\n }\r\n return list\r\n })\r\n};\r\ngroupBySize = function(context, valueCallback) {\r\n var settings = context.settings;\r\n performGrouping(context, settings.sizeGroups, \"size\", valueCallback || settings.sizeGroupingField, function(count) {\r\n var minSize = settings.minSize > 0 ? _Number(settings.minSize) : 0;\r\n var maxSize = settings.maxSize >= minSize ? _Number(settings.maxSize) : 0;\r\n var i = 0;\r\n var sizes = [];\r\n if (count > 1) {\r\n for (i = 0; i < count; ++i) {\r\n sizes.push((minSize * (count - i - 1) + maxSize * i) / (count - 1))\r\n }\r\n } else {\r\n if (1 === count) {\r\n sizes.push((minSize + maxSize) / 2)\r\n }\r\n }\r\n return sizes\r\n })\r\n};\r\n\r\nfunction setFlag(flags, flag, state) {\r\n if (state) {\r\n flags |= flag\r\n } else {\r\n flags &= ~flag\r\n }\r\n return flags\r\n}\r\n\r\nfunction hasFlag(flags, flag) {\r\n return !!(flags & flag)\r\n}\r\n\r\nfunction createLayerProxy(layer, name, index) {\r\n var proxy = {\r\n index: index,\r\n name: name,\r\n getElements: function() {\r\n return layer.getProxies()\r\n },\r\n clearSelection: function(_noEvent) {\r\n layer.clearSelection(_noEvent);\r\n return proxy\r\n },\r\n getDataSource: function() {\r\n return layer.getDataSource()\r\n },\r\n getBounds: function() {\r\n return layer.getBounds()\r\n }\r\n };\r\n return proxy\r\n}\r\nvar MapLayerElement;\r\nvar MapLayer = function(params, container, name, index) {\r\n var that = this;\r\n that._params = params;\r\n that._onProjection();\r\n that.proxy = createLayerProxy(that, name, index);\r\n that._context = {\r\n name: name,\r\n layer: that.proxy,\r\n renderer: params.renderer,\r\n projection: params.projection,\r\n params: params,\r\n dataKey: params.dataKey,\r\n str: emptyStrategy,\r\n hover: false,\r\n selection: null,\r\n grouping: {},\r\n root: params.renderer.g().attr({\r\n \"class\": \"dxm-layer\"\r\n }).linkOn(container, name).linkAppend()\r\n };\r\n that._container = container;\r\n that._options = {};\r\n that._handles = [];\r\n that._data = new EmptySource;\r\n that._dataSourceLoaded = null\r\n};\r\nMapLayer.prototype = _extend({\r\n constructor: MapLayer,\r\n getDataReadyCallback: function() {\r\n return this._dataSourceLoaded\r\n },\r\n _onProjection: function() {\r\n var that = this;\r\n that._removeHandlers = that._params.projection.on({\r\n engine: function() {\r\n that._project()\r\n },\r\n screen: function() {\r\n that._transform()\r\n },\r\n center: function() {\r\n that._transformCore()\r\n },\r\n zoom: function() {\r\n that._transform()\r\n }\r\n })\r\n },\r\n getData: function() {\r\n return this._data\r\n },\r\n _dataSourceLoadErrorHandler: function() {\r\n this._dataSourceChangedHandler()\r\n },\r\n _dataSourceChangedHandler: function() {\r\n var that = this;\r\n that._data = unwrapFromDataSource(that._dataSource && that._dataSource.items());\r\n that._update(true)\r\n },\r\n _dataSourceOptions: function() {\r\n return {\r\n paginate: false\r\n }\r\n },\r\n _getSpecificDataSourceOption: function() {\r\n return this._specificDataSourceOption\r\n },\r\n _normalizeDataSource: function(dataSource) {\r\n var store = dataSource.store();\r\n if (\"raw\" === store._loadMode) {\r\n store._loadMode = void 0\r\n }\r\n return dataSource\r\n },\r\n _offProjection: function() {\r\n this._removeHandlers();\r\n this._removeHandlers = null\r\n },\r\n dispose: function() {\r\n var that = this;\r\n that._disposeDataSource();\r\n that._destroyHandles();\r\n dropGrouping(that._context);\r\n that._context.root.linkRemove().linkOff();\r\n that._context.labelRoot && that._context.labelRoot.linkRemove().linkOff();\r\n that._context.str.reset(that._context);\r\n that._offProjection();\r\n that._params = that._container = that._context = that.proxy = null;\r\n return that\r\n },\r\n setOptions: function(options) {\r\n var that = this;\r\n options = that._options = options || {};\r\n that._dataSourceLoaded = new _deferred.Deferred;\r\n if (\"dataSource\" in options && options.dataSource !== that._options_dataSource) {\r\n that._options_dataSource = options.dataSource;\r\n that._params.notifyDirty();\r\n that._specificDataSourceOption = wrapToDataSource(options.dataSource);\r\n that._refreshDataSource()\r\n } else {\r\n if (that._data.count() > 0) {\r\n that._params.notifyDirty();\r\n that._update(void 0 !== options.type && options.type !== that._context.str.type || void 0 !== options.elementType && options.elementType !== that._context.str.elementType)\r\n }\r\n }\r\n that._transformCore()\r\n },\r\n _update: function(isContextChanged) {\r\n var that = this;\r\n var context = that._context;\r\n if (isContextChanged) {\r\n context.str.reset(context);\r\n context.root.clear();\r\n context.labelRoot && context.labelRoot.clear();\r\n that._params.tracker.reset();\r\n that._destroyHandles();\r\n context.str = selectStrategy(that._options, that._data);\r\n context.str.setup(context);\r\n that.proxy.type = context.str.type;\r\n that.proxy.elementType = context.str.elementType\r\n }\r\n context.settings = processCommonSettings(context, that._options);\r\n context.hasSeparateLabel = !!(context.settings.label.enabled && context.str.hasLabelsGroup);\r\n context.hover = !!(0, _utils.parseScalar)(context.settings.hoverEnabled, true);\r\n if (context.selection) {\r\n _each(context.selection.state, function(_, handle) {\r\n handle && handle.resetSelected()\r\n })\r\n }\r\n context.selection = getSelection(context.settings.selectionMode);\r\n if (context.hasSeparateLabel) {\r\n if (!context.labelRoot) {\r\n context.labelRoot = context.renderer.g().attr({\r\n \"class\": \"dxm-layer-labels\"\r\n }).linkOn(that._container, {\r\n name: context.name + \"-labels\",\r\n after: context.name\r\n }).linkAppend();\r\n that._transformCore()\r\n }\r\n } else {\r\n if (context.labelRoot) {\r\n context.labelRoot.linkRemove().linkOff();\r\n context.labelRoot = null\r\n }\r\n }\r\n if (isContextChanged) {\r\n that._createHandles()\r\n }\r\n dropGrouping(context);\r\n context.str.arrange(context, that._handles);\r\n context.str.updateGrouping(context);\r\n that._updateHandles();\r\n that._params.notifyReady();\r\n if (that._dataSourceLoaded) {\r\n that._dataSourceLoaded.resolve();\r\n that._dataSourceLoaded = null\r\n } else {\r\n that._params.dataReady()\r\n }\r\n },\r\n getBounds: function() {\r\n return getMaxBound(this._handles.map(function(_ref) {\r\n var proxy = _ref.proxy;\r\n return proxy.coordinates().map(function(coords) {\r\n if (!_isArray(coords)) {\r\n return\r\n }\r\n var coordsToBoundsSearch = _isArray(coords[0][0]) ? coords.reduce(function(ac, val) {\r\n return ac.concat(val)\r\n }, []) : coords;\r\n var initValue = coordsToBoundsSearch[0];\r\n return coordsToBoundsSearch.reduce(function(min, c) {\r\n return [_min(min[0], c[0]), _min(min[1], c[1]), _max(min[2], c[0]), _max(min[3], c[1])]\r\n }, [initValue[0], initValue[1], initValue[0], initValue[1]])\r\n })\r\n }).map(getMaxBound))\r\n },\r\n _destroyHandles: function() {\r\n this._handles.forEach(function(h) {\r\n return h.dispose()\r\n });\r\n if (this._context.selection) {\r\n this._context.selection.state = {}\r\n }\r\n this._handles = []\r\n },\r\n _createHandles: function() {\r\n var that = this;\r\n var handles = that._handles = [];\r\n var data = that._data;\r\n var i;\r\n var ii = handles.length = data.count();\r\n var context = that._context;\r\n var geometry = data.geometry;\r\n var attributes = data.attributes;\r\n var handle;\r\n var dataItem;\r\n for (i = 0; i < ii; ++i) {\r\n dataItem = data.item(i);\r\n handles[i] = new MapLayerElement(context, i, geometry(dataItem), attributes(dataItem))\r\n }(0, _type.isFunction)(that._options.customize) && customizeHandles(that.getProxies(), that._options.customize, that._params.widget);\r\n for (i = 0; i < ii; ++i) {\r\n handle = handles[i];\r\n handle.project();\r\n handle.draw();\r\n handle.transform()\r\n }\r\n if (context.selection) {\r\n _each(context.selection.state, function(_, handle) {\r\n handle && handle.restoreSelected()\r\n })\r\n }\r\n },\r\n _updateHandles: function() {\r\n var handles = this._handles;\r\n var i;\r\n var ii = handles.length;\r\n for (i = 0; i < ii; ++i) {\r\n handles[i].refresh()\r\n }\r\n if (this._context.settings.label.enabled) {\r\n for (i = 0; i < ii; ++i) {\r\n handles[i].measureLabel()\r\n }\r\n for (i = 0; i < ii; ++i) {\r\n handles[i].adjustLabel()\r\n }\r\n }\r\n },\r\n _transformCore: function() {\r\n var transform = this._params.projection.getTransform();\r\n this._context.root.attr(transform);\r\n this._context.labelRoot && this._context.labelRoot.attr(transform)\r\n },\r\n _project: function() {\r\n var handles = this._handles;\r\n var i;\r\n var ii = handles.length;\r\n for (i = 0; i < ii; ++i) {\r\n handles[i].project()\r\n }\r\n },\r\n _transform: function() {\r\n var handles = this._handles;\r\n var i;\r\n var ii = handles.length;\r\n this._transformCore();\r\n for (i = 0; i < ii; ++i) {\r\n handles[i].transform()\r\n }\r\n },\r\n getProxies: function() {\r\n return this._handles.map(function(p) {\r\n return p.proxy\r\n })\r\n },\r\n getProxy: function(index) {\r\n return this._handles[index].proxy\r\n },\r\n raiseClick: function(i, dxEvent) {\r\n this._params.eventTrigger(\"click\", {\r\n target: this._handles[i].proxy,\r\n event: dxEvent\r\n })\r\n },\r\n hoverItem: function(i, state) {\r\n this._handles[i].setHovered(state)\r\n },\r\n selectItem: function(i, state, _noEvent) {\r\n this._handles[i].setSelected(state, _noEvent)\r\n },\r\n clearSelection: function() {\r\n var selection = this._context.selection;\r\n if (selection) {\r\n _each(selection.state, function(_, handle) {\r\n handle && handle.setSelected(false)\r\n });\r\n selection.state = {}\r\n }\r\n }\r\n}, _data_helper.default);\r\n\r\nfunction createProxy(handle, coords, attrs) {\r\n var proxy = {\r\n coordinates: function() {\r\n return coords\r\n },\r\n attribute: function(name, value) {\r\n if (arguments.length > 1) {\r\n attrs[name] = value;\r\n return proxy\r\n } else {\r\n return arguments.length > 0 ? attrs[name] : attrs\r\n }\r\n },\r\n selected: function(state, _noEvent) {\r\n if (arguments.length > 0) {\r\n handle.setSelected(state, _noEvent);\r\n return proxy\r\n } else {\r\n return handle.isSelected()\r\n }\r\n },\r\n applySettings: function(settings) {\r\n handle.update(settings);\r\n return proxy\r\n }\r\n };\r\n return proxy\r\n}\r\nMapLayerElement = function(context, index, geometry, attributes) {\r\n var that = this;\r\n var proxy = that.proxy = createProxy(that, geometry.coordinates, _extend({}, attributes));\r\n that._ctx = context;\r\n that._index = index;\r\n that._fig = that._label = null;\r\n that._state = STATE_DEFAULT;\r\n that._coordinates = geometry.coordinates;\r\n that._settings = {\r\n label: {}\r\n };\r\n proxy.index = index;\r\n proxy.layer = context.layer;\r\n that._data = {\r\n name: context.name,\r\n index: index\r\n }\r\n};\r\nMapLayerElement.prototype = {\r\n constructor: MapLayerElement,\r\n dispose: function() {\r\n var that = this;\r\n that._ctx = that.proxy = that._settings = that._fig = that._label = that.data = null;\r\n return that\r\n },\r\n project: function() {\r\n var context = this._ctx;\r\n this._projection = context.str.project(context.projection, this._coordinates);\r\n if (context.hasSeparateLabel && this._label) {\r\n this._projectLabel()\r\n }\r\n },\r\n _projectLabel: function() {\r\n this._labelProjection = this._ctx.str.projectLabel(this._projection)\r\n },\r\n draw: function() {\r\n var that = this;\r\n var context = this._ctx;\r\n context.str.draw(context, that._fig = {}, that._data);\r\n that._fig.root.append(context.root)\r\n },\r\n transform: function() {\r\n var that = this;\r\n var context = that._ctx;\r\n context.str.transform(that._fig, context.projection, that._projection);\r\n if (context.hasSeparateLabel && that._label) {\r\n that._transformLabel()\r\n }\r\n },\r\n _transformLabel: function() {\r\n this._ctx.str.transformLabel(this._label, this._ctx.projection, this._labelProjection)\r\n },\r\n refresh: function() {\r\n var that = this;\r\n var strategy = that._ctx.str;\r\n var settings = getItemSettings(that._ctx, that.proxy, that._settings);\r\n that._styles = strategy.getStyles(settings);\r\n strategy.refresh(that._ctx, that._fig, that._data, that.proxy, settings);\r\n that._refreshLabel(settings);\r\n that._setState()\r\n },\r\n _refreshLabel: function(settings) {\r\n var that = this;\r\n var context = that._ctx;\r\n var labelSettings = settings.label;\r\n var label = that._label;\r\n if (context.settings.label.enabled) {\r\n if (!label) {\r\n label = that._label = {\r\n root: context.labelRoot || that._fig.root,\r\n text: context.renderer.text().attr({\r\n \"class\": \"dxm-label\"\r\n }),\r\n size: [0, 0]\r\n };\r\n if (context.hasSeparateLabel) {\r\n that._projectLabel();\r\n that._transformLabel()\r\n }\r\n }\r\n label.value = _String(that.proxy.text || that.proxy.attribute(labelSettings.dataField) || \"\");\r\n if (label.value) {\r\n label.text.attr({\r\n text: label.value,\r\n x: 0,\r\n y: 0\r\n }).css((0, _utils.patchFontOptions)(labelSettings.font)).attr({\r\n align: \"center\",\r\n stroke: labelSettings.stroke,\r\n \"stroke-width\": labelSettings[\"stroke-width\"],\r\n \"stroke-opacity\": labelSettings[\"stroke-opacity\"]\r\n }).data(context.dataKey, that._data).append(label.root);\r\n label.settings = settings\r\n }\r\n } else {\r\n if (label) {\r\n label.text.remove();\r\n that._label = null\r\n }\r\n }\r\n },\r\n measureLabel: function() {\r\n var label = this._label;\r\n var bBox;\r\n if (label.value) {\r\n bBox = label.text.getBBox();\r\n label.size = [bBox.width, bBox.height, -bBox.y - bBox.height / 2]\r\n }\r\n },\r\n adjustLabel: function() {\r\n var label = this._label;\r\n var offset;\r\n if (label.value) {\r\n offset = this._ctx.str.getLabelOffset(label, label.settings);\r\n label.settings = null;\r\n label.text.attr({\r\n x: offset[0],\r\n y: offset[1] + label.size[2]\r\n })\r\n }\r\n },\r\n update: function(settings) {\r\n var that = this;\r\n that._settings = combineSettings(that._settings, settings);\r\n if (that._fig) {\r\n that.refresh();\r\n if (that._label && that._label.value) {\r\n that.measureLabel();\r\n that.adjustLabel()\r\n }\r\n }\r\n },\r\n _setState: function() {\r\n this._ctx.str.setState(this._fig, this._styles, STATE_TO_INDEX[this._state])\r\n },\r\n _setForeground: function() {\r\n var root = this._fig.root;\r\n this._state ? root.toForeground() : root.toBackground()\r\n },\r\n setHovered: function(state) {\r\n var that = this;\r\n var currentState = hasFlag(that._state, STATE_HOVERED);\r\n var newState = !!state;\r\n if (that._ctx.hover && currentState !== newState) {\r\n that._state = setFlag(that._state, STATE_HOVERED, newState);\r\n that._setState();\r\n that._setForeground();\r\n raiseChanged(that._ctx, that, newState, \"hoverChanged\")\r\n }\r\n return that\r\n },\r\n setSelected: function(state, _noEvent) {\r\n var that = this;\r\n var currentState = hasFlag(that._state, STATE_SELECTED);\r\n var newState = !!state;\r\n var selection = that._ctx.selection;\r\n var tmp;\r\n if (selection && currentState !== newState) {\r\n that._state = setFlag(that._state, STATE_SELECTED, newState);\r\n tmp = selection.state[selection.single];\r\n selection.state[selection.single] = null;\r\n if (tmp) {\r\n tmp.setSelected(false)\r\n }\r\n selection.state[selection.single || that._index] = state ? that : null;\r\n if (that._fig) {\r\n that._setState();\r\n that._setForeground();\r\n if (!_noEvent) {\r\n raiseChanged(that._ctx, that, newState, \"selectionChanged\")\r\n }\r\n }\r\n }\r\n },\r\n isSelected: function() {\r\n return hasFlag(this._state, STATE_SELECTED)\r\n },\r\n resetSelected: function() {\r\n this._state = setFlag(this._state, STATE_SELECTED, false)\r\n },\r\n restoreSelected: function() {\r\n this._fig.root.toForeground()\r\n }\r\n};\r\n\r\nfunction calculatePolygonCentroid(coordinates) {\r\n var i;\r\n var length = coordinates.length;\r\n var v1;\r\n var v2 = coordinates[length - 1];\r\n var cross;\r\n var cx = 0;\r\n var cy = 0;\r\n var area = 0;\r\n var minX = 1 / 0;\r\n var maxX = -(1 / 0);\r\n var minY = 1 / 0;\r\n var maxY = -(1 / 0);\r\n for (i = 0; i < length; ++i) {\r\n v1 = v2;\r\n v2 = coordinates[i];\r\n cross = v1[0] * v2[1] - v2[0] * v1[1];\r\n area += cross;\r\n cx += (v1[0] + v2[0]) * cross;\r\n cy += (v1[1] + v2[1]) * cross;\r\n minX = _min(minX, v2[0]);\r\n maxX = _max(maxX, v2[0]);\r\n minY = _min(minY, v2[1]);\r\n maxY = _max(maxY, v2[1])\r\n }\r\n return {\r\n area: _abs(area) / 2,\r\n center: [2 * cx / 3 / area - (minX + maxX) / 2, 2 * cy / 3 / area - (minY + maxY) / 2]\r\n }\r\n}\r\n\r\nfunction calculateLineStringData(coordinates) {\r\n var i;\r\n var ii = coordinates.length;\r\n var v1;\r\n var v2 = coordinates[0] || [];\r\n var totalLength = 0;\r\n var items = [0];\r\n var min0 = v2[0];\r\n var max0 = v2[0];\r\n var min1 = v2[1];\r\n var max1 = v2[1];\r\n for (i = 1; i < ii; ++i) {\r\n v1 = v2;\r\n v2 = coordinates[i];\r\n totalLength += _sqrt((v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]));\r\n items[i] = totalLength;\r\n min0 = _min(min0, v2[0]);\r\n max0 = _max(max0, v2[0]);\r\n min1 = _min(min1, v2[1]);\r\n max1 = _max(max1, v2[1])\r\n }\r\n i = findGroupingIndex(totalLength / 2, items);\r\n v1 = coordinates[i];\r\n v2 = coordinates[i + 1];\r\n var t = (totalLength / 2 - items[i]) / (items[i + 1] - items[i]);\r\n return ii ? [\r\n [v1[0] * (1 - t) + v2[0] * t, v1[1] * (1 - t) + v2[1] * t],\r\n [max0 - min0, max1 - min1], totalLength\r\n ] : []\r\n}\r\n\r\nfunction projectAreaLabel(coordinates) {\r\n var i;\r\n var ii = coordinates.length;\r\n var centroid;\r\n var resultCentroid;\r\n var maxArea = 0;\r\n for (i = 0; i < ii; ++i) {\r\n centroid = calculatePolygonCentroid(coordinates[i]);\r\n if (centroid.area > maxArea) {\r\n maxArea = centroid.area;\r\n resultCentroid = centroid\r\n }\r\n }\r\n return resultCentroid ? [resultCentroid.center, [_sqrt(resultCentroid.area), _sqrt(resultCentroid.area)]] : [\r\n [],\r\n []\r\n ]\r\n}\r\n\r\nfunction projectLineLabel(coordinates) {\r\n var i;\r\n var ii = coordinates.length;\r\n var maxLength = 0;\r\n var data;\r\n var resultData;\r\n for (i = 0; i < ii; ++i) {\r\n data = calculateLineStringData(coordinates[i]);\r\n if (data[2] > maxLength) {\r\n maxLength = data[2];\r\n resultData = data\r\n }\r\n }\r\n return resultData || [\r\n [],\r\n []\r\n ]\r\n}\r\n\r\nfunction MapLayerCollection(params) {\r\n var that = this;\r\n var renderer = params.renderer;\r\n that._params = params;\r\n that._layers = [];\r\n that._layerByName = {};\r\n that._rect = [0, 0, 0, 0];\r\n that._clip = renderer.clipRect();\r\n that._background = renderer.rect().attr({\r\n \"class\": \"dxm-background\"\r\n }).data(params.dataKey, {\r\n name: \"background\"\r\n }).append(renderer.root);\r\n that._container = renderer.g().attr({\r\n \"class\": \"dxm-layers\",\r\n \"clip-path\": that._clip.id\r\n }).append(renderer.root).enableLinks();\r\n that._subscribeToTracker(params.tracker, renderer, params.eventTrigger);\r\n that._dataReady = params.dataReady\r\n}\r\nMapLayerCollection.prototype = {\r\n constructor: MapLayerCollection,\r\n dispose: function() {\r\n var that = this;\r\n that._clip.dispose();\r\n that._layers.forEach(function(l) {\r\n return l.dispose()\r\n });\r\n that._offTracker();\r\n that._params = that._offTracker = that._layers = that._layerByName = that._clip = that._background = that._container = null\r\n },\r\n _subscribeToTracker: function(tracker, renderer, eventTrigger) {\r\n var that = this;\r\n that._offTracker = tracker.on({\r\n click: function(arg) {\r\n var offset = renderer.getRootOffset();\r\n var layer = that.byName(arg.data.name);\r\n arg.$event.x = arg.x - offset.left;\r\n arg.$event.y = arg.y - offset.top;\r\n if (layer) {\r\n layer.raiseClick(arg.data.index, arg.$event)\r\n } else {\r\n if (\"background\" === arg.data.name) {\r\n eventTrigger(\"click\", {\r\n event: arg.$event\r\n })\r\n }\r\n }\r\n },\r\n \"hover-on\": function(arg) {\r\n var layer = that.byName(arg.data.name);\r\n if (layer) {\r\n layer.hoverItem(arg.data.index, true)\r\n }\r\n },\r\n \"hover-off\": function(arg) {\r\n var layer = that.byName(arg.data.name);\r\n if (layer) {\r\n layer.hoverItem(arg.data.index, false)\r\n }\r\n }\r\n })\r\n },\r\n setOptions: function(options) {\r\n var that = this;\r\n var optionList = options ? _isArray(options) ? options : [options] : [];\r\n var layerByName = that._layerByName;\r\n var layers = that._layers;\r\n var readyCallbacks = [];\r\n var needToCreateLayers = optionList.length !== layers.length || layers.some(function(l, i) {\r\n var name = getName(optionList, i);\r\n return (0, _type.isDefined)(name) && name !== l.proxy.name\r\n });\r\n if (needToCreateLayers) {\r\n that._params.tracker.reset();\r\n that._layers.forEach(function(l) {\r\n return l.dispose()\r\n });\r\n that._layerByName = layerByName = {};\r\n that._layers = layers = [];\r\n for (var i = 0, ii = optionList.length; i < ii; ++i) {\r\n var name = getName(optionList, i) || \"map-layer-\" + i;\r\n var layer = layers[i] = new MapLayer(that._params, that._container, name, i);\r\n layerByName[name] = layer\r\n }\r\n }\r\n layers.forEach(function(l, i) {\r\n l.setOptions(optionList[i])\r\n });\r\n readyCallbacks = layers.map(function(l) {\r\n return l.getDataReadyCallback()\r\n });\r\n readyCallbacks.length && _deferred.when.apply(void 0, readyCallbacks).done(that._dataReady)\r\n },\r\n _updateClip: function() {\r\n var rect = this._rect;\r\n var bw = this._borderWidth;\r\n this._clip.attr({\r\n x: rect[0] + bw,\r\n y: rect[1] + bw,\r\n width: _max(rect[2] - 2 * bw, 0),\r\n height: _max(rect[3] - 2 * bw, 0)\r\n })\r\n },\r\n setBackgroundOptions: function(options) {\r\n this._background.attr({\r\n stroke: options.borderColor,\r\n \"stroke-width\": options.borderWidth,\r\n fill: options.color\r\n });\r\n this._borderWidth = _max(options.borderWidth, 0);\r\n this._updateClip()\r\n },\r\n setRect: function(rect) {\r\n this._rect = rect;\r\n this._background.attr({\r\n x: rect[0],\r\n y: rect[1],\r\n width: rect[2],\r\n height: rect[3]\r\n });\r\n this._updateClip()\r\n },\r\n byIndex: function(index) {\r\n return this._layers[index]\r\n },\r\n byName: function(name) {\r\n return this._layerByName[name]\r\n },\r\n items: function() {\r\n return this._layers\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/vector_map/tooltip_viewer.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.TooltipViewer = TooltipViewer;\r\nvar TOOLTIP_OFFSET = 12;\r\n\r\nfunction TooltipViewer(params) {\r\n this._subscribeToTracker(params.tracker, params.tooltip, params.layerCollection)\r\n}\r\nTooltipViewer.prototype = {\r\n constructor: TooltipViewer,\r\n dispose: function() {\r\n this._offTracker();\r\n this._offTracker = null\r\n },\r\n _subscribeToTracker: function(tracker, tooltip, layerCollection) {\r\n this._offTracker = tracker.on({\r\n \"focus-on\": function(arg) {\r\n var layer;\r\n var proxy;\r\n if (tooltip.isEnabled()) {\r\n layer = layerCollection.byName(arg.data.name);\r\n proxy = layer && layer.getProxy(arg.data.index);\r\n var callback = function(result) {\r\n result && arg.done(result)\r\n };\r\n proxy && callback(tooltip.show(proxy, {\r\n x: arg.x,\r\n y: arg.y,\r\n offset: TOOLTIP_OFFSET\r\n }, {\r\n target: proxy\r\n }, void 0, callback))\r\n }\r\n },\r\n \"focus-move\": function(arg) {\r\n tooltip.move(arg.x, arg.y, TOOLTIP_OFFSET)\r\n },\r\n \"focus-off\": function() {\r\n tooltip.hide()\r\n }\r\n })\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/vector_map/vector_map.utils.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.generateDataKey = generateDataKey;\r\nvar nextDataKey = 1;\r\n\r\nfunction generateDataKey() {\r\n return \"vectormap-data-\" + nextDataKey++\r\n}\r\n","/**\r\n * DevExtreme (viz/vector_map/projection.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nObject.defineProperty(exports, \"projection\", {\r\n enumerable: true,\r\n get: function() {\r\n return _projection.projection\r\n }\r\n});\r\nvar _projection = require(\"./projection.main\");\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar _sin = Math.sin;\r\nvar _asin = Math.asin;\r\nvar _tan = Math.tan;\r\nvar _atan = Math.atan;\r\nvar _exp = Math.exp;\r\nvar _log = Math.log;\r\nvar PI = Math.PI;\r\nvar PI_DIV_4 = PI / 4;\r\nvar GEO_LON_BOUND = 180;\r\nvar GEO_LAT_BOUND = 90;\r\nvar RADIANS = PI / 180;\r\nvar MERCATOR_LAT_BOUND = (2 * _atan(_exp(PI)) - PI / 2) / RADIANS;\r\nvar MILLER_LAT_BOUND = (2.5 * _atan(_exp(.8 * PI)) - .625 * PI) / RADIANS;\r\n\r\nfunction clamp(value, threshold) {\r\n return _max(_min(value, +threshold), -threshold)\r\n}\r\n_projection.projection.add(\"mercator\", (0, _projection.projection)({\r\n aspectRatio: 1,\r\n to: function(coordinates) {\r\n return [coordinates[0] / GEO_LON_BOUND, _log(_tan(PI_DIV_4 + clamp(coordinates[1], MERCATOR_LAT_BOUND) * RADIANS / 2)) / PI]\r\n },\r\n from: function(coordinates) {\r\n return [coordinates[0] * GEO_LON_BOUND, (2 * _atan(_exp(coordinates[1] * PI)) - PI / 2) / RADIANS]\r\n }\r\n}));\r\n_projection.projection.add(\"equirectangular\", (0, _projection.projection)({\r\n aspectRatio: 2,\r\n to: function(coordinates) {\r\n return [coordinates[0] / GEO_LON_BOUND, coordinates[1] / GEO_LAT_BOUND]\r\n },\r\n from: function(coordinates) {\r\n return [coordinates[0] * GEO_LON_BOUND, coordinates[1] * GEO_LAT_BOUND]\r\n }\r\n}));\r\n_projection.projection.add(\"lambert\", (0, _projection.projection)({\r\n aspectRatio: 2,\r\n to: function(coordinates) {\r\n return [coordinates[0] / GEO_LON_BOUND, _sin(clamp(coordinates[1], GEO_LAT_BOUND) * RADIANS)]\r\n },\r\n from: function(coordinates) {\r\n return [coordinates[0] * GEO_LON_BOUND, _asin(clamp(coordinates[1], 1)) / RADIANS]\r\n }\r\n}));\r\n_projection.projection.add(\"miller\", (0, _projection.projection)({\r\n aspectRatio: 1,\r\n to: function(coordinates) {\r\n return [coordinates[0] / GEO_LON_BOUND, 1.25 * _log(_tan(PI_DIV_4 + clamp(coordinates[1], MILLER_LAT_BOUND) * RADIANS * .4)) / PI]\r\n },\r\n from: function(coordinates) {\r\n return [coordinates[0] * GEO_LON_BOUND, (2.5 * _atan(_exp(.8 * coordinates[1] * PI)) - .625 * PI) / RADIANS]\r\n }\r\n}));\r\n"],"sourceRoot":""}