{"version":3,"sources":["../node_modules/devextreme/viz/translators/translator2d.js","../node_modules/devextreme/viz/tree_map/common.js","../node_modules/devextreme/viz/translators/translator1d.js","../node_modules/devextreme/viz/tree_map/tiling.squarified.js","../node_modules/devextreme/viz/tree_map/tiling.squarified.base.js","../node_modules/devextreme/viz/tree_map/colorizing.discrete.js","../node_modules/devextreme/viz/tree_map/hover.js","../node_modules/devextreme/viz/tree_map/states.js","../node_modules/devextreme/viz/tree_map/tooltip.js","../node_modules/devextreme/viz/vector_map/projection.main.js","../node_modules/devextreme/viz/vector_map/event_emitter.js","../node_modules/devextreme/viz/translators/category_translator.js","../node_modules/devextreme/viz/translators/interval_translator.js","../node_modules/devextreme/viz/translators/datetime_translator.js","../node_modules/devextreme/viz/translators/logarithmic_translator.js","../node_modules/devextreme/viz/utils.js","../node_modules/devextreme/viz/tree_map.js","../node_modules/devextreme/viz/tree_map/tree_map.js","../node_modules/devextreme/viz/tree_map/tiling.strip.js","../node_modules/devextreme/viz/tree_map/tiling.slice_and_dice.js","../node_modules/devextreme/viz/tree_map/tiling.rotated_slice_and_dice.js","../node_modules/devextreme/viz/tree_map/colorizing.gradient.js","../node_modules/devextreme/viz/tree_map/colorizing.range.js","../node_modules/devextreme/viz/tree_map/selection.js","../node_modules/devextreme/viz/tree_map/tracker.js","../node_modules/devextreme/viz/tree_map/drilldown.js","../node_modules/devextreme/viz/tree_map/plain_data_source.js","../node_modules/devextreme/viz/vector_map.js","../node_modules/devextreme/viz/vector_map/vector_map.js","../node_modules/devextreme/viz/vector_map/control_bar.js","../node_modules/devextreme/viz/vector_map/gesture_handler.js","../node_modules/devextreme/viz/vector_map/tracker.js","../node_modules/devextreme/viz/vector_map/data_exchanger.js","../node_modules/devextreme/viz/vector_map/legend.js","../node_modules/devextreme/viz/vector_map/layout.js","../node_modules/devextreme/viz/vector_map/map_layer.js","../node_modules/devextreme/viz/vector_map/tooltip_viewer.js","../node_modules/devextreme/viz/vector_map/vector_map.utils.js","../node_modules/devextreme/viz/vector_map/projection.js","../node_modules/devextreme/viz/tree_map/tree_map.base.js","../node_modules/devextreme/viz/translators/range.js","../node_modules/devextreme/viz/tree_map/tiling.js","../node_modules/devextreme/viz/tree_map/api.js","../node_modules/devextreme/viz/tree_map/node.js","../node_modules/devextreme/viz/tree_map/colorizing.js"],"names":["exports","Translator2D","_extend","require","_iterator","_range","_category_translator","_interopRequireDefault","_interval_translator","_datetime_translator","_logarithmic_translator","_utils","_type","_math","_date","obj","__esModule","_abs","Math","abs","CANVAS_PROP","dummyTranslator","to","value","coord","this","_canvasOptions","startPoint","_options","conversionValue","round","endPoint","from","validateCanvas","canvas","each","_","prop","parseInt","getCheckingMethodsAboutBreaks","inverted","isStartSide","pos","breaks","start","end","length","isEndSide","isInBreak","br","isBetweenBreaks","prevBreak","getLength","lastBreak","getBreaksSize","cumulativeWidth","_Translator2d","businessRange","options","update","prototype","constructor","reinit","that","range","_businessRange","categories","script","canvasOptions","_prepareCanvasOptions","visibleCategories","getCategoriesInfo","minVisible","maxVisible","categoriesLength","isEmpty","axisType","default","ratioOfCanvasRange","canvasLength","addInterval","rangeMaxVisible","interval","rangeMinVisible","_categories","_getDiscreteInterval","addSpiderCategory","_categoriesToPoints","categoriesToPoints","forEach","item","i","valueOf","makeCategoriesToPoints","startPointIndex","dataType","_oldMethods","methodName","Object","keys","extend","_conversionValue","sc","_checkingMethodsAboutBreaks","isInverted","_translateBreaks","_calculateSpecialValues","b","_breaks","size","breaksSize","translate","gapSize","_checkValueAboutBreaks","methods","inBreak","break","isHorizontal","invert","correctedCategoriesCount","stick","min","max","getLogExt","base","allowNegatives","linearThreshold","rangeMin","rangeMax","getCanvasBounds","_canvas","startPadding","endPadding","left","width","right","top","height","bottom","rangeDoubleError","pow","getPower","updateCanvas","updateBusinessRange","_userBreaks","userBreaks","validate","valueSelector","baseValueSelector","isDefined","Range","validateBusinessRange","transformFrom","transformTo","transform","array","sum","push","trFrom","trTo","prepareBreaks","getBusinessRange","getEventScale","zoomEvent","deltaScale","getCanvasVisibleArea","canvas_position_default","canvas_position_center_middle","canvas_position_left","canvas_position_top","canvas_position_center","canvas_position_middle","canvas_position_right","canvas_position_bottom","canvas_position_start","canvas_position_end","translateSpecialCase","_calculateProjection","distance","_calculateUnProjection","getMinBarSize","minBarSize","visibleArea","minValue","checkMinBarSize","minShownValue","stackValue","bp","direction","specialValue","isNaN","getInterval","_interval","zoom","scale","wholeRange","zoomZeroLengthRange","newStart","newEnd","minPoint","endValue","startValue","maxPoint","adjust","_correctValueAboutBreaks","filter","correction","isDateTime","isDate","isLogarithmic","newMin","newMax","raiseToExt","Date","getMinScale","_this$_businessRange","getDateTimeMinScale","getScale","val1","val2","_fromValue","isValid","co","getCorrectValue","_toValue","shiftZeroValue","commonBreakSize","isValueProlonged","getRange","getScreenRange","add","diff","dir","_add","coeff","Number","convert","getRangeByMinZoomValue","minZoom","visualRange","buildRectAppearance","option","border","fill","color","opacity","stroke","hatching","buildTextAppearance","attr","css","patchFontOptions","font","Translator1D","_Number","setDomain","arguments","setCodomain","setInverted","domain1","domain2","_domain1","_domain2","_domainDelta","codomain1","codomain2","_codomain1","_codomain2","_codomainDelta","state","getDomain","getCodomain","getDomainStart","getDomainEnd","getCodomainStart","getCodomainEnd","getDomainRange","getCodomainRange","ratio","NaN","result","_tilingSquarified","_tiling","_max","accumulate","total","current","squarified","data","addAlgorithm","_default","module","isFixedStaticSide","items","ii","context","rect","directions","staticSideIndex","getStaticSideIndex","sort","compare","doStep","_round","a","nodes","head","sidesData","buildSidesData","area","rowData","nextAspectRatio","nextSum","j","totalAspectRatio","bestAspectRatio","areaToValue","staticSide","count","side","findAppropriateCollection","variedSide","calculateRectangles","discreteColorizer","themeManager","root","palette","createPalette","useHighlight","extensionMode","paletteExtensionMode","colorizeGroups","getNodesCount","getLeafsCount","discreteGroupColorizer","discreteLeafColorizer","node","allNodes","slice","isNode","colors","generateColors","index","concat","parent","_id","getNextColor","prepareDiscreteGroupColors","addColorizer","_tree_map","_node","_helpers","_common","proto","nodeProto","_eventsMap","onHoverChanged","name","expand","_handlers","states","hoverStyle","addChange","code","handler","hoverEnabled","parseScalar","_getOption","clearHover","_hoverEnabled","isThemeDependent","isOptionChange","statesMap","additionalStates","setHover","_hoverNode","isHovered","_hoverIndex","_groupHoverEnabled","_applyHoverState","setNodeStateRecursive","setState","_nodes","_eventTrigger","proxy","currentIndex","_context","suspend","resume","_extend2","handlers","_calculateState","calculateState","_buildState","0","calculateAdditionalStates","noop","extra","source","list","buildAdditionalStates","_getState","ctx","change","_tooltip","getCoords","coords","renderer","offset","getRootOffset","showTooltip","_showTooltip","_tooltipIndex","hide","_moveTooltip","tooltip","callback","xy","_renderer","show","valueText","formatValue","x","y","move","hideTooltip","addPlugin","plugin","projection","Projection","_event_emitter","_slicedToArray","arr","Array","isArray","_arrayWithHoles","_i","Symbol","iterator","_s","_e","_arr","_n","_d","call","next","done","err","return","_iterableToArrayLimit","o","minLen","_arrayLikeToArray","n","toString","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","len","arr2","_min","_ln","log","_pow","TWO_TO_LN2","LN2","DEFAULT_CENTER","floatsEqual","f1","f2","arraysEqual","a1","a2","parseAndClamp","maxValue","defaultValue","val","isFinite","parseAndClampArray","getEngine","engine","Engine","get","parameters","_initEvents","_params","_engine","_center","center","_adjustCenter","selectFarthestPoint","point1","point2","basePoint1","basePoint2","basePoint","selectClosestPoint","setMinMax","p1","p2","_findMinMax","findMinMax","returnArray","_minZoom","_maxZoom","_zoom","_scale","dispose","_disposeEvents","setEngine","_fire","_changeCenter","_triggerCenterChanged","_changeZoom","_triggerZoomChanged","_setupScreen","setBounds","bounds","original","aspectRatio","ar","_x0","_y0","project","screenAR","boundsAR","_xRadius","_yRadius","setSize","getCanvas","_toScreen","coordinates","_fromScreen","_toTransformed","_xCenter","_yCenter","_toTransformedFast","_fromTransformed","isInvertible","getSquareSize","getZoom","isChanged","setZoom","getScaledZoom","setScaledZoom","scaledZoom","changeScaledZoom","deltaZoom","getZoomScalePartition","_setupScaling","k","step","setMaxZoom","maxZoom","MAX_VALUE","getCenter","setCenter","centerChanged","zoomChanged","setCenterByPoint","screenPosition","p","q","unproject","beginMoveCenter","_moveCenter","endMoveCenter","moveCenter","shift","toScreenPoint","fromScreenPoint","getViewport","lt","lb","rt","rb","minMax","setViewport","viewport","l","r","t","getZoomAndCenterFromViewport","getTransform","translateX","translateY","_eventNames","makeEventEmitter","method","arg","invertVerticalAxis","createUnprojectMethod","returnValue","_proto","_aspectRatio","_bounds","b1","b2","delta","x0","y0","_project2","p0","createProjectUnprojectMethods","pair","projectionsCache","target","eventEmitterMethods","_callbacks","names","events","_events","empty","on","remove","fire","getValue","category","directionOffset","categoryIndex","stickInterval","stickDelta","endCategoryIndex","translateCategories","visibleCount","startCategoryIndex","newVisibleCategories","newInterval","stickOffset","position","startIndex","indexOf","endIndex","floor","_intervalize","isNumeric","getTime","correctDateWithUnitBeginning","firstDayOfWeek","_parse","v1","v2","res","_to","rMin","rMax","origInterval","dateToMilliseconds","parse","addDateInterval","initialValue","updateValue","prevValue","baseMethod","prepareSegmentRectPoints","defineProperty","enumerable","refreshPaths","borderOptions","segmentSequence","maxSW","sw","newSW","points","segments","visiblyOpt","prevSegmentVisibility","allSegment","seg","visibility","segmentVisibility","segment","pathType","_export","_title","_loading_indicator","strip","sliceAndDice","isRotated","sliceAndDiceAlgorithm","getAlgorithm","_colorizing","getRangeData","createGuessingColorizer","getColor","ranges","codes","apply","calculateRange","gradientColorizer","createGradientPalette","createColorCodeGetter","createSimpleColorizer","rangeColorizer","createDiscretePalette","middle","getPaletteIndex","_array","onSelectionChanged","selectionStyle","_selectionList","select","_selectNode","isSelected","inArray","tmp","normalizeEnum","selectionList","mode","pop","clearSelection","_selectionMode","tileToFront","tile","bringSelectedTilesToForeground","content","toForeground","outer","inner","_applySelectionState","splice","_tracker","dataKeyModifier","onClick","dataKey","getProxy","Tracker","widget","getNode","id","isLeaf","getParent","isActive","getData","e","tagName","parentNode","click","setTrackerData","element","onDrill","drillDown","_drillToNode","_drilldownIndex","_root","_topNode","resetDrillDown","drillUp","getCurrentNode","_optionChangesMap","idField","parentField","_processDataSourceItems","currentItem","parentId","tmpItems","struct","rootNodes","isPlain","treeFiller","_projection","_control_bar","_gesture_handler","_data_exchanger","_legend","_layout","_map_layer","_tooltip_viewer","_vector_map","_base_widget","_component_registrator","_annotations","RE_STARTS_LAYERS","RE_ENDS_DATA_SOURCE","mergeBounds","sumBounds","dataBounds","dxVectorMap","inherit","onCenterChanged","onZoomFactorChanged","_rootClassPrefix","_rootClass","_themeSection","_fontFields","_initLayerCollection","_layerCollection","MapLayerCollection","_themeManager","tracker","eventTrigger","dataExchanger","_dataExchanger","notifyDirty","_notifyDirty","notifyReady","_notifyReady","dataReady","_preventProjectionEvents","_getBoundsFromData","_allowProjectionEvents","ceil","longitudeLength","latitudeLength","_getBoundingBoxFromDataSource","boundsByData","getMaxBound","getLayers","map","getBounds","_initLegendsControl","_legendsControl","LegendsControl","container","layoutControl","_layoutControl","_initControlBar","_controlBar","ControlBar","_initElements","preventProjectionEvents","generateDataKey","notifyCounter","_resetIsReady","_drawn","DataExchanger","zoomFactor","_gestureHandler","GestureHandler","LayoutControl","_createHtmlStructure","_prepareExtraElements","_tooltipViewer","TooltipViewer","layerCollection","_change_RESUME_LAYOUT","_initialChanges","_layoutChangesOrder","_customChangesOrder","_initCore","align","cursor","_disposeCore","_setupInteraction","centeringEnabled","zoomingEnabled","setInteraction","_getDefaultSize","_applySize","layout","setRect","_requestChange","_optionChanging","currentValue","nextValue","dataSource","_applyChanges","callBase","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","infinityBounds","resultBBox","reduce","sumBBox","layerData","itemCount","rootBBox","getBBox","getLayerByIndex","layer","byIndex","getLayerByName","byName","_noEvent","convertCoordinates","convertToGeo","convertToXY","longitude","latitude","plugins","core","vectorMap","_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","finish","ResetCommand","owner","_command","MoveCommand","timeout","dx","dy","_stop","clearTimeout","endMove","beginMove","setTimeout","ZoomCommand","dZoom","_adjustZoom","_zoomFactor","ZoomDragCommand","_pos","_flags","removeItem","linkRemove","linkOff","_offProjection","_offTracker","updateZoom","_update","_zoomPartition","_sliderUnitLength","_sliderLineLength","_processStart","_processMove","_processEnd","reset","isCenter","isZoom","g","linkOn","buttonsGroups","_buttonsGroup","append","trackersGroup","_createButtons","_createTrackers","group","offset1","offset2","directionOptions","circle","path","_zoomLine","_zoomDrag","size2","_zoomDragTracker","resize","_isActive","getLayoutOptions","_layoutOptions","locate","_margin","_isEnabled","linkAppend","updateLayout","interaction","enabled","margin","horizontalAlignment","verticalAlignment","borderWidth","borderColor","h","_applyZoom","commandType","flags","FLAG_CENTERING","_LN2","params","_x","_y","_processZoom","_centeringEnabled","_zoomingEnabled","_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","getEventCoords","touch","touches","pageX","pageY","getPointerId","pointerId","getMultitouchEventCoords","pointerEnabled","msPointerEnabled","hasProperty","wheel","setupEvents","_detachHandlers","_docHandlers","_rootHandlers","_startClick","_clickState","threshold","time","now","_endClick","$event","_startDrag","_dragState","_moveDrag","active","_endDrag","_wheelZoom","lock","_wheelLock","dirTime","_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","_isTouchEnabled","preventDefault","stopPropagation","_isWheelEnabled","off","getDocument","_activeData","_data","_disabled","_offTimer","onCheck","_store","_get","store","callbacks","set","bind","unbind","_object","_each","unknownSource","Legend","after","enableLinks","backgroundClass","itemsGroupClass","textField","getFormatObject","_onDataChanged","_updateData","_items","virtualLink","clone","_unbindData","erase","draw","defaultColor","partition","values","field","normal","visible","buildData","_dataName","theme","title","_dataCategory","_bindData","grouping","optionList","_inArray","horizontalAlignmentMap","verticalAlignmentMap","createCells","hStep","vStep","h1","h2","h3","h4","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","el","getTemplatesGroups","getTemplatesDef","applyLayout","_data_helper","_deferred","_noop","_concat","STATE_TO_INDEX","SELECTIONS","none","single","multiple","_isArray","_String","String","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","elementType","strategy","guessTypeByData","fullType","applyElementState","figure","styles","projectPointList","output","projectLineString","projectPolygon","transformList","transformPointList","getItemSettings","settings","combineSettings","findGroupingIndex","applyGrouping","paletteIndex","_colors","raiseChanged","handle","common","partial","valueCallback","projectLabel","centroid","resultCentroid","maxArea","calculatePolygonCentroid","transformLabel","refresh","getLabelOffset","getStyles","hoveredBorderColor","hoveredBorderWidth","hoveredColor","hoveredOpacity","selectedBorderColor","selectedBorderWidth","selectedColor","selectedOpacity","hasLabelsGroup","resultData","maxLength","calculateLineStringData","_draw","_getStyles","_setState","getAccentColor","projectMultiPolygon","dot","shadowFilter","back","sharp","shadow","style","hoveredSize","selectedSize","selectedStep","hoveredBackSize","backStep","selectedBackSize","backColor","backOpacity","bubble","handles","minSize","maxSize","sizeGroups","deltaValue","deltaSize","_settings","pie","zeroSum","arc","image","href","hoveredStep","MapLayerElement","performGrouping","settingField","valuesCallback","isFunction","dropGrouping","setFlag","flag","hasFlag","colorGroups","colorGroupingField","_palette","sizeGroupingField","sizes","MapLayer","_onProjection","getElements","getProxies","getDataSource","createLayerProxy","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","unwrapFromDataSource","_dataSource","_dataSourceOptions","paginate","_getSpecificDataSourceOption","_specificDataSourceOption","_normalizeDataSource","_loadMode","_disposeDataSource","_destroyHandles","labelRoot","Deferred","_options_dataSource","_refreshDataSource","isContextChanged","clear","paletteSize","processCommonSettings","hasSeparateLabel","resetSelected","selectionMode","getSelection","_createHandles","_updateHandles","resolve","_ref","coordsToBoundsSearch","ac","initValue","dataItem","proxies","customize","restoreSelected","measureLabel","adjustLabel","raiseClick","dxEvent","hoverItem","setHovered","setSelected","attrs","selected","applySettings","createProxy","_ctx","_fig","_label","_state","_coordinates","_projectLabel","_labelProjection","_transformLabel","_styles","_refreshLabel","labelSettings","bBox","_setForeground","toBackground","currentState","newState","readyCallbacks","some","layerByName","when","_updateClip","bw","_borderWidth","isEnabled","nextDataKey","_sin","sin","_asin","asin","_tan","tan","_atan","atan","_exp","exp","_log","PI","PI_DIV_4","RADIANS","MERCATOR_LAT_BOUND","MILLER_LAT_BOUND","clamp","_common2","_data_source","lefttoprightbottom","leftbottomrighttop","righttopleftbottom","rightbottomlefttop","pickPositiveInteger","setDefaultAlgorithm","setDefaultColorizer","dxTreeMap","beginBuildNodes","buildNode","endBuildNodes","_init","_rectOffsets","create","_applyingChanges","_suspendChanges","_resumeChanges","_change","calculateLabelState","_createProxyType","_tilesGroup","_labelsGroup","_filter","_tilingRect","valueField","childrenField","colorField","colorizer","labelField","maxDepth","layoutAlgorithm","layoutDirection","_changeDataSource","_isDataExpected","_isSyncData","_updateDataSource","_change_DATA_SOURCE","_change_TILE_SETTINGS","_changeTileSettings","_change_GROUP_SETTINGS","_changeGroupSettings","_change_MAX_DEPTH","_changeMaxDepth","_change_NODES_CREATE","_buildNodes","_change_NODES_RESET","_resetNodes","_change_TILES","_applyTilesAppearance","_change_LABELS","_applyLabelsAppearance","_change_TILING","_performTiling","_change_LABELS_LAYOUT","_performLabelsLayout","forceReset","level","processedData","_dataSourceItems","traverseDataItems","dataItems","totalValue","itemsField","_onNodesCreated","offsets","edgeOffset","innerOffset","labelOptions","_calculateLabelSettings","tileEdge","tileInner","headerHeight","groupPadding","padding","labelParams","paddingTopBottom","_headerHeight","_groupPadding","headerEdge","headerInner","_getTextBBox","paddingLeftRight","tileLabelOptions","groupLabelOptions","labelState","rtlEnabled","tileLabelWordWrap","wordWrap","tileLabelOverflow","textOverflow","groupLabelOverflow","_maxDepth","initHatching","minLevel","maxLevel","_processNodes","process","processNodes","getColorizer","processTileAppearance","processLabelAppearance","algorithm","toLowerCase","rectOffsets","innerRect","calculateRects","processTiling","_onTilingPerformed","processLabelsLayout","fontOptions","_textForCalculations","createTile","simpleRect","updateStyles","applyState","updateLabelStyle","currentNode","textData","customLabel","createLabel","emptyRect","rects","setRectAttrs","buildTileRect","marginateRect","effectiveWidth","setMaxSize","hideOverflowEllipsis","layoutTextNode","_isDefined","_isDate","_isFunction","otherLessThan","thisValue","otherValue","otherGreaterThan","compareAndReplace","setValue","otherValueDefined","_Range","addRange","otherRange","otherCategories","isDiscrete","compareAndReplaceByField","controlValuesByVisibleBounds","visibleValueField","checkField","unique","correctValueZeroLevel","setZeroLevel","sortCategories","sortValues","filteredSeriesCategories","notAFunction","algorithms","_staticSideIndex","variedSideIndex","staticSideDirection","variedSideDirection","staticSideIndexOffsets","directionToIndexOffsets","variedSideIndexOffsets","static1","static2","varied1","varied2","staticDir","variedDir","totalRect","variedSidePart","defaultAlgorithm","onNodesInitialized","onNodesRendering","Proxy","getChild","getChildrenCount","getAllChildren","getAllNodes","collectNodes","_custom","_partialState","_partialLabelState","resetCustomization","_extendProxyType","_updateStyles","_updateLabelStyle","custom","calculatePartialLabelState","getRootNode","resetNodes","Node","updateTile","smartAttr","colorizers","colorCodeField","getValueAsColorCode","defaultColorizerName","wrapGroupColorGetter","wrapLeafColorGetter","getter","_groupColor"],"mappings":"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","file":"static/js/main~76fc0ea4.2db162b5.chunk.js","sourcesContent":["/**\r\n * DevExtreme (viz/translators/translator2d.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.Translator2D = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _range = require(\"./range\");\r\nvar _category_translator = _interopRequireDefault(require(\"./category_translator\"));\r\nvar _interval_translator = _interopRequireDefault(require(\"./interval_translator\"));\r\nvar _datetime_translator = _interopRequireDefault(require(\"./datetime_translator\"));\r\nvar _logarithmic_translator = _interopRequireDefault(require(\"./logarithmic_translator\"));\r\nvar _utils = require(\"../core/utils\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _abs = Math.abs;\r\nvar CANVAS_PROP = [\"width\", \"height\", \"left\", \"top\", \"bottom\", \"right\"];\r\nvar dummyTranslator = {\r\n to: function(value) {\r\n var coord = this._canvasOptions.startPoint + (this._options.conversionValue ? value : Math.round(value));\r\n return coord > this._canvasOptions.endPoint ? this._canvasOptions.endPoint : coord\r\n },\r\n from: function(value) {\r\n return value - this._canvasOptions.startPoint\r\n }\r\n};\r\nvar validateCanvas = function(canvas) {\r\n (0, _iterator.each)(CANVAS_PROP, function(_, prop) {\r\n canvas[prop] = parseInt(canvas[prop]) || 0\r\n });\r\n return canvas\r\n};\r\nvar makeCategoriesToPoints = function(categories) {\r\n var categoriesToPoints = {};\r\n categories.forEach(function(item, i) {\r\n categoriesToPoints[item.valueOf()] = i\r\n });\r\n return categoriesToPoints\r\n};\r\nvar validateBusinessRange = function(businessRange) {\r\n if (!(businessRange instanceof _range.Range)) {\r\n businessRange = new _range.Range(businessRange)\r\n }\r\n\r\n function validate(valueSelector, baseValueSelector) {\r\n if (!(0, _type.isDefined)(businessRange[valueSelector]) && (0, _type.isDefined)(businessRange[baseValueSelector])) {\r\n businessRange[valueSelector] = businessRange[baseValueSelector]\r\n }\r\n }\r\n validate(\"minVisible\", \"min\");\r\n validate(\"maxVisible\", \"max\");\r\n return businessRange\r\n};\r\n\r\nfunction prepareBreaks(breaks, range) {\r\n var transform = \"logarithmic\" === range.axisType ? function(value) {\r\n return (0, _utils.getLogExt)(value, range.base)\r\n } : function(value) {\r\n return value\r\n };\r\n var array = [];\r\n var br;\r\n var transformFrom;\r\n var transformTo;\r\n var i;\r\n var length = breaks.length;\r\n var sum = 0;\r\n for (i = 0; i < length; i++) {\r\n br = breaks[i];\r\n transformFrom = transform(br.from);\r\n transformTo = transform(br.to);\r\n sum += transformTo - transformFrom;\r\n array.push({\r\n trFrom: transformFrom,\r\n trTo: transformTo,\r\n from: br.from,\r\n to: br.to,\r\n length: sum,\r\n cumulativeWidth: br.cumulativeWidth\r\n })\r\n }\r\n return array\r\n}\r\n\r\nfunction getCanvasBounds(range) {\r\n var min = range.min;\r\n var max = range.max;\r\n var minVisible = range.minVisible;\r\n var maxVisible = range.maxVisible;\r\n var isLogarithmic = \"logarithmic\" === range.axisType;\r\n if (isLogarithmic) {\r\n maxVisible = (0, _utils.getLogExt)(maxVisible, range.base, range.allowNegatives, range.linearThreshold);\r\n minVisible = (0, _utils.getLogExt)(minVisible, range.base, range.allowNegatives, range.linearThreshold);\r\n min = (0, _utils.getLogExt)(min, range.base, range.allowNegatives, range.linearThreshold);\r\n max = (0, _utils.getLogExt)(max, range.base, range.allowNegatives, range.linearThreshold)\r\n }\r\n return {\r\n base: range.base,\r\n rangeMin: min,\r\n rangeMax: max,\r\n rangeMinVisible: minVisible,\r\n rangeMaxVisible: maxVisible\r\n }\r\n}\r\n\r\nfunction getCheckingMethodsAboutBreaks(inverted) {\r\n return {\r\n isStartSide: !inverted ? function(pos, breaks, start, end) {\r\n return pos < breaks[0][start]\r\n } : function(pos, breaks, start, end) {\r\n return pos <= breaks[breaks.length - 1][end]\r\n },\r\n isEndSide: !inverted ? function(pos, breaks, start, end) {\r\n return pos >= breaks[breaks.length - 1][end]\r\n } : function(pos, breaks, start, end) {\r\n return pos > breaks[0][start]\r\n },\r\n isInBreak: !inverted ? function(pos, br, start, end) {\r\n return pos >= br[start] && pos < br[end]\r\n } : function(pos, br, start, end) {\r\n return pos > br[end] && pos <= br[start]\r\n },\r\n isBetweenBreaks: !inverted ? function(pos, br, prevBreak, start, end) {\r\n return pos < br[start] && pos >= prevBreak[end]\r\n } : function(pos, br, prevBreak, start, end) {\r\n return pos >= br[end] && pos < prevBreak[start]\r\n },\r\n getLength: !inverted ? function(br) {\r\n return br.length\r\n } : function(br, lastBreak) {\r\n return lastBreak.length - br.length\r\n },\r\n getBreaksSize: !inverted ? function(br) {\r\n return br.cumulativeWidth\r\n } : function(br, lastBreak) {\r\n return lastBreak.cumulativeWidth - br.cumulativeWidth\r\n }\r\n }\r\n}\r\nvar _Translator2d = function(businessRange, canvas, options) {\r\n this.update(businessRange, canvas, options)\r\n};\r\nexports.Translator2D = _Translator2d;\r\n_Translator2d.prototype = {\r\n constructor: _Translator2d,\r\n reinit: function() {\r\n var that = this;\r\n var options = that._options;\r\n var range = that._businessRange;\r\n var categories = range.categories || [];\r\n var script = {};\r\n var canvasOptions = that._prepareCanvasOptions();\r\n var visibleCategories = (0, _utils.getCategoriesInfo)(categories, range.minVisible, range.maxVisible).categories;\r\n var categoriesLength = visibleCategories.length;\r\n if (range.isEmpty()) {\r\n script = dummyTranslator\r\n } else {\r\n switch (range.axisType) {\r\n case \"logarithmic\":\r\n script = _logarithmic_translator.default;\r\n break;\r\n case \"semidiscrete\":\r\n script = _interval_translator.default;\r\n canvasOptions.ratioOfCanvasRange = canvasOptions.canvasLength / (_date.default.addInterval(canvasOptions.rangeMaxVisible, options.interval) - canvasOptions.rangeMinVisible);\r\n break;\r\n case \"discrete\":\r\n script = _category_translator.default;\r\n that._categories = categories;\r\n canvasOptions.interval = that._getDiscreteInterval(options.addSpiderCategory ? categoriesLength + 1 : categoriesLength, canvasOptions);\r\n that._categoriesToPoints = makeCategoriesToPoints(categories);\r\n if (categoriesLength) {\r\n canvasOptions.startPointIndex = that._categoriesToPoints[visibleCategories[0].valueOf()];\r\n that.visibleCategories = visibleCategories\r\n }\r\n break;\r\n default:\r\n if (\"datetime\" === range.dataType) {\r\n script = _datetime_translator.default\r\n }\r\n }\r\n }(that._oldMethods || []).forEach(function(methodName) {\r\n delete that[methodName]\r\n });\r\n that._oldMethods = Object.keys(script);\r\n (0, _extend.extend)(that, script);\r\n that._conversionValue = options.conversionValue ? function(value) {\r\n return value\r\n } : function(value) {\r\n return Math.round(value)\r\n };\r\n that.sc = {};\r\n that._checkingMethodsAboutBreaks = [getCheckingMethodsAboutBreaks(false), getCheckingMethodsAboutBreaks(that.isInverted())];\r\n that._translateBreaks();\r\n that._calculateSpecialValues()\r\n },\r\n _translateBreaks: function() {\r\n var breaks = this._breaks;\r\n var size = this._options.breaksSize;\r\n var i;\r\n var b;\r\n var end;\r\n var length;\r\n if (void 0 === breaks) {\r\n return\r\n }\r\n for (i = 0, length = breaks.length; i < length; i++) {\r\n b = breaks[i];\r\n end = this.translate(b.to);\r\n b.end = end;\r\n b.start = !b.gapSize ? !this.isInverted() ? end - size : end + size : end\r\n }\r\n },\r\n _checkValueAboutBreaks: function(breaks, pos, start, end, methods) {\r\n var i;\r\n var length;\r\n var prop = {\r\n length: 0,\r\n breaksSize: void 0,\r\n inBreak: false\r\n };\r\n var br;\r\n var prevBreak;\r\n var lastBreak = breaks[breaks.length - 1];\r\n if (methods.isStartSide(pos, breaks, start, end)) {\r\n return prop\r\n } else {\r\n if (methods.isEndSide(pos, breaks, start, end)) {\r\n return {\r\n length: lastBreak.length,\r\n breaksSize: lastBreak.cumulativeWidth,\r\n inBreak: false\r\n }\r\n }\r\n }\r\n for (i = 0, length = breaks.length; i < length; i++) {\r\n br = breaks[i];\r\n prevBreak = breaks[i - 1];\r\n if (methods.isInBreak(pos, br, start, end)) {\r\n prop.inBreak = true;\r\n prop.break = br;\r\n break\r\n }\r\n if (prevBreak && methods.isBetweenBreaks(pos, br, prevBreak, start, end)) {\r\n prop = {\r\n length: methods.getLength(prevBreak, lastBreak),\r\n breaksSize: methods.getBreaksSize(prevBreak, lastBreak),\r\n inBreak: false\r\n };\r\n break\r\n }\r\n }\r\n return prop\r\n },\r\n isInverted: function() {\r\n return !(this._options.isHorizontal ^ this._businessRange.invert)\r\n },\r\n _getDiscreteInterval: function(categoriesLength, canvasOptions) {\r\n var correctedCategoriesCount = categoriesLength - (this._options.stick ? 1 : 0);\r\n return correctedCategoriesCount > 0 ? canvasOptions.canvasLength / correctedCategoriesCount : canvasOptions.canvasLength\r\n },\r\n _prepareCanvasOptions: function() {\r\n var that = this;\r\n var businessRange = that._businessRange;\r\n var canvasOptions = that._canvasOptions = getCanvasBounds(businessRange);\r\n var canvas = that._canvas;\r\n var breaks = that._breaks;\r\n var length;\r\n canvasOptions.startPadding = canvas.startPadding || 0;\r\n canvasOptions.endPadding = canvas.endPadding || 0;\r\n if (that._options.isHorizontal) {\r\n canvasOptions.startPoint = canvas.left + canvasOptions.startPadding;\r\n length = canvas.width;\r\n canvasOptions.endPoint = canvas.width - canvas.right - canvasOptions.endPadding;\r\n canvasOptions.invert = businessRange.invert\r\n } else {\r\n canvasOptions.startPoint = canvas.top + canvasOptions.startPadding;\r\n length = canvas.height;\r\n canvasOptions.endPoint = canvas.height - canvas.bottom - canvasOptions.endPadding;\r\n canvasOptions.invert = !businessRange.invert\r\n }\r\n that.canvasLength = canvasOptions.canvasLength = canvasOptions.endPoint - canvasOptions.startPoint;\r\n canvasOptions.rangeDoubleError = Math.pow(10, (0, _utils.getPower)(canvasOptions.rangeMax - canvasOptions.rangeMin) - (0, _utils.getPower)(length) - 2);\r\n canvasOptions.ratioOfCanvasRange = canvasOptions.canvasLength / (canvasOptions.rangeMaxVisible - canvasOptions.rangeMinVisible);\r\n if (void 0 !== breaks) {\r\n canvasOptions.ratioOfCanvasRange = (canvasOptions.canvasLength - breaks[breaks.length - 1].cumulativeWidth) / (canvasOptions.rangeMaxVisible - canvasOptions.rangeMinVisible - breaks[breaks.length - 1].length)\r\n }\r\n return canvasOptions\r\n },\r\n updateCanvas: function(canvas) {\r\n this._canvas = validateCanvas(canvas);\r\n this.reinit()\r\n },\r\n updateBusinessRange: function(businessRange) {\r\n var that = this;\r\n var breaks = businessRange.breaks || [];\r\n that._userBreaks = businessRange.userBreaks || [];\r\n that._businessRange = validateBusinessRange(businessRange);\r\n that._breaks = breaks.length ? prepareBreaks(breaks, that._businessRange) : void 0;\r\n that.reinit()\r\n },\r\n update: function(businessRange, canvas, options) {\r\n var that = this;\r\n that._options = (0, _extend.extend)(that._options || {}, options);\r\n that._canvas = validateCanvas(canvas);\r\n that.updateBusinessRange(businessRange)\r\n },\r\n getBusinessRange: function() {\r\n return this._businessRange\r\n },\r\n getEventScale: function(zoomEvent) {\r\n return zoomEvent.deltaScale || 1\r\n },\r\n getCanvasVisibleArea: function() {\r\n return {\r\n min: this._canvasOptions.startPoint,\r\n max: this._canvasOptions.endPoint\r\n }\r\n },\r\n _calculateSpecialValues: function() {\r\n var that = this;\r\n var canvasOptions = that._canvasOptions;\r\n var startPoint = canvasOptions.startPoint - canvasOptions.startPadding;\r\n var endPoint = canvasOptions.endPoint + canvasOptions.endPadding;\r\n var range = that._businessRange;\r\n var minVisible = range.minVisible;\r\n var maxVisible = range.maxVisible;\r\n var canvas_position_center_middle = startPoint + canvasOptions.canvasLength / 2;\r\n var canvas_position_default;\r\n if (minVisible < 0 && maxVisible > 0 && minVisible !== maxVisible) {\r\n canvas_position_default = that.translate(0, 1)\r\n }\r\n if (!(0, _type.isDefined)(canvas_position_default)) {\r\n var invert = range.invert ^ (minVisible < 0 && maxVisible <= 0);\r\n if (that._options.isHorizontal) {\r\n canvas_position_default = invert ? endPoint : startPoint\r\n } else {\r\n canvas_position_default = invert ? startPoint : endPoint\r\n }\r\n }\r\n that.sc = {\r\n canvas_position_default: canvas_position_default,\r\n canvas_position_left: startPoint,\r\n canvas_position_top: startPoint,\r\n canvas_position_center: canvas_position_center_middle,\r\n canvas_position_middle: canvas_position_center_middle,\r\n canvas_position_right: endPoint,\r\n canvas_position_bottom: endPoint,\r\n canvas_position_start: canvasOptions.invert ? endPoint : startPoint,\r\n canvas_position_end: canvasOptions.invert ? startPoint : endPoint\r\n }\r\n },\r\n translateSpecialCase: function(value) {\r\n return this.sc[value]\r\n },\r\n _calculateProjection: function(distance) {\r\n var canvasOptions = this._canvasOptions;\r\n return canvasOptions.invert ? canvasOptions.endPoint - distance : canvasOptions.startPoint + distance\r\n },\r\n _calculateUnProjection: function(distance) {\r\n var canvasOptions = this._canvasOptions;\r\n \"datetime\" === this._businessRange.dataType && (distance = Math.round(distance));\r\n return canvasOptions.invert ? canvasOptions.rangeMaxVisible.valueOf() - distance : canvasOptions.rangeMinVisible.valueOf() + distance\r\n },\r\n getMinBarSize: function(minBarSize) {\r\n var visibleArea = this.getCanvasVisibleArea();\r\n var minValue = this.from(visibleArea.min + minBarSize);\r\n return _abs(this.from(visibleArea.min) - (!(0, _type.isDefined)(minValue) ? this.from(visibleArea.max) : minValue))\r\n },\r\n checkMinBarSize: function(value, minShownValue, stackValue) {\r\n return _abs(value) < minShownValue ? value >= 0 ? minShownValue : -minShownValue : value\r\n },\r\n translate: function(bp, direction) {\r\n var specialValue = this.translateSpecialCase(bp);\r\n if ((0, _type.isDefined)(specialValue)) {\r\n return Math.round(specialValue)\r\n }\r\n if (isNaN(bp)) {\r\n return null\r\n }\r\n return this.to(bp, direction)\r\n },\r\n getInterval: function(interval) {\r\n var _interval;\r\n var canvasOptions = this._canvasOptions;\r\n interval = null !== (_interval = interval) && void 0 !== _interval ? _interval : this._businessRange.interval;\r\n if (interval) {\r\n return Math.round(canvasOptions.ratioOfCanvasRange * interval)\r\n }\r\n return Math.round(canvasOptions.endPoint - canvasOptions.startPoint)\r\n },\r\n zoom: function(translate, scale, wholeRange) {\r\n var canvasOptions = this._canvasOptions;\r\n if (canvasOptions.rangeMinVisible.valueOf() === canvasOptions.rangeMaxVisible.valueOf() && 0 !== translate) {\r\n return this.zoomZeroLengthRange(translate, scale)\r\n }\r\n var startPoint = canvasOptions.startPoint;\r\n var endPoint = canvasOptions.endPoint;\r\n var isInverted = this.isInverted();\r\n var newStart = (startPoint + translate) / scale;\r\n var newEnd = (endPoint + translate) / scale;\r\n wholeRange = wholeRange || {};\r\n var minPoint = this.to(isInverted ? wholeRange.endValue : wholeRange.startValue);\r\n var maxPoint = this.to(isInverted ? wholeRange.startValue : wholeRange.endValue);\r\n var min;\r\n var max;\r\n if (minPoint > newStart) {\r\n newEnd -= newStart - minPoint;\r\n newStart = minPoint;\r\n min = isInverted ? wholeRange.endValue : wholeRange.startValue\r\n }\r\n if (maxPoint < newEnd) {\r\n newStart -= newEnd - maxPoint;\r\n newEnd = maxPoint;\r\n max = isInverted ? wholeRange.startValue : wholeRange.endValue\r\n }\r\n if (maxPoint - minPoint < newEnd - newStart) {\r\n newStart = minPoint;\r\n newEnd = maxPoint\r\n }\r\n translate = (endPoint - startPoint) * newStart / (newEnd - newStart) - startPoint;\r\n scale = (startPoint + translate) / newStart || 1;\r\n min = (0, _type.isDefined)(min) ? min : (0, _math.adjust)(this.from(newStart, 1));\r\n max = (0, _type.isDefined)(max) ? max : (0, _math.adjust)(this.from(newEnd, -1));\r\n if (scale <= 1) {\r\n min = this._correctValueAboutBreaks(min, 1 === scale ? translate : -1);\r\n max = this._correctValueAboutBreaks(max, 1 === scale ? translate : 1)\r\n }\r\n if (min > max) {\r\n min = min > wholeRange.endValue ? wholeRange.endValue : min;\r\n max = max < wholeRange.startValue ? wholeRange.startValue : max\r\n } else {\r\n min = min < wholeRange.startValue ? wholeRange.startValue : min;\r\n max = max > wholeRange.endValue ? wholeRange.endValue : max\r\n }\r\n return {\r\n min: min,\r\n max: max,\r\n translate: (0, _math.adjust)(translate),\r\n scale: (0, _math.adjust)(scale)\r\n }\r\n },\r\n _correctValueAboutBreaks: function(value, direction) {\r\n var br = this._userBreaks.filter(function(br) {\r\n return value >= br.from && value <= br.to\r\n });\r\n if (br.length) {\r\n return direction > 0 ? br[0].to : br[0].from\r\n } else {\r\n return value\r\n }\r\n },\r\n zoomZeroLengthRange: function(translate, scale) {\r\n var canvasOptions = this._canvasOptions;\r\n var min = canvasOptions.rangeMin;\r\n var max = canvasOptions.rangeMax;\r\n var correction = (max.valueOf() !== min.valueOf() ? max.valueOf() - min.valueOf() : _abs(canvasOptions.rangeMinVisible.valueOf() - min.valueOf())) / canvasOptions.canvasLength;\r\n var isDateTime = (0, _type.isDate)(max) || (0, _type.isDate)(min);\r\n var isLogarithmic = \"logarithmic\" === this._businessRange.axisType;\r\n var newMin = canvasOptions.rangeMinVisible.valueOf() - correction;\r\n var newMax = canvasOptions.rangeMaxVisible.valueOf() + correction;\r\n newMin = isLogarithmic ? (0, _math.adjust)((0, _utils.raiseToExt)(newMin, canvasOptions.base)) : isDateTime ? new Date(newMin) : newMin;\r\n newMax = isLogarithmic ? (0, _math.adjust)((0, _utils.raiseToExt)(newMax, canvasOptions.base)) : isDateTime ? new Date(newMax) : newMax;\r\n return {\r\n min: newMin,\r\n max: newMax,\r\n translate: translate,\r\n scale: scale\r\n }\r\n },\r\n getMinScale: function(zoom) {\r\n var _this$_businessRange = this._businessRange,\r\n dataType = _this$_businessRange.dataType,\r\n interval = _this$_businessRange.interval;\r\n if (\"datetime\" === dataType && 1 === interval) {\r\n return this.getDateTimeMinScale(zoom)\r\n }\r\n return zoom ? 1.1 : .9\r\n },\r\n getDateTimeMinScale: function(zoom) {\r\n var canvasOptions = this._canvasOptions;\r\n var length = canvasOptions.canvasLength / canvasOptions.ratioOfCanvasRange;\r\n length += (parseInt(.1 * length) || 1) * (zoom ? -2 : 2);\r\n return canvasOptions.canvasLength / (Math.max(length, 1) * canvasOptions.ratioOfCanvasRange)\r\n },\r\n getScale: function(val1, val2) {\r\n var canvasOptions = this._canvasOptions;\r\n if (canvasOptions.rangeMax === canvasOptions.rangeMin) {\r\n return 1\r\n }\r\n val1 = (0, _type.isDefined)(val1) ? this._fromValue(val1) : canvasOptions.rangeMin;\r\n val2 = (0, _type.isDefined)(val2) ? this._fromValue(val2) : canvasOptions.rangeMax;\r\n return (canvasOptions.rangeMax - canvasOptions.rangeMin) / Math.abs(val1 - val2)\r\n },\r\n isValid: function(value) {\r\n var co = this._canvasOptions;\r\n value = this._fromValue(value);\r\n return null !== value && !isNaN(value) && value.valueOf() + co.rangeDoubleError >= co.rangeMin && value.valueOf() - co.rangeDoubleError <= co.rangeMax\r\n },\r\n getCorrectValue: function(value, direction) {\r\n var that = this;\r\n var breaks = that._breaks;\r\n var prop;\r\n value = that._fromValue(value);\r\n if (that._breaks) {\r\n prop = that._checkValueAboutBreaks(breaks, value, \"trFrom\", \"trTo\", that._checkingMethodsAboutBreaks[0]);\r\n if (true === prop.inBreak) {\r\n return that._toValue(direction > 0 ? prop.break.trTo : prop.break.trFrom)\r\n }\r\n }\r\n return that._toValue(value)\r\n },\r\n to: function(bp, direction) {\r\n var range = this.getBusinessRange();\r\n if ((0, _type.isDefined)(range.maxVisible) && (0, _type.isDefined)(range.minVisible) && range.maxVisible.valueOf() === range.minVisible.valueOf()) {\r\n if (!(0, _type.isDefined)(bp) || range.maxVisible.valueOf() !== bp.valueOf()) {\r\n return null\r\n }\r\n return this.translateSpecialCase(0 === bp && this._options.shiftZeroValue ? \"canvas_position_default\" : \"canvas_position_middle\")\r\n }\r\n bp = this._fromValue(bp);\r\n var that = this;\r\n var canvasOptions = that._canvasOptions;\r\n var breaks = that._breaks;\r\n var prop = {\r\n length: 0\r\n };\r\n var commonBreakSize = 0;\r\n if (void 0 !== breaks) {\r\n prop = that._checkValueAboutBreaks(breaks, bp, \"trFrom\", \"trTo\", that._checkingMethodsAboutBreaks[0]);\r\n commonBreakSize = (0, _type.isDefined)(prop.breaksSize) ? prop.breaksSize : 0\r\n }\r\n if (true === prop.inBreak) {\r\n if (direction > 0) {\r\n return prop.break.start\r\n } else {\r\n if (direction < 0) {\r\n return prop.break.end\r\n } else {\r\n return null\r\n }\r\n }\r\n }\r\n return that._conversionValue(that._calculateProjection((bp - canvasOptions.rangeMinVisible - prop.length) * canvasOptions.ratioOfCanvasRange + commonBreakSize))\r\n },\r\n from: function(pos, direction) {\r\n var that = this;\r\n var breaks = that._breaks;\r\n var prop = {\r\n length: 0\r\n };\r\n var canvasOptions = that._canvasOptions;\r\n var startPoint = canvasOptions.startPoint;\r\n var commonBreakSize = 0;\r\n if (void 0 !== breaks) {\r\n prop = that._checkValueAboutBreaks(breaks, pos, \"start\", \"end\", that._checkingMethodsAboutBreaks[1]);\r\n commonBreakSize = (0, _type.isDefined)(prop.breaksSize) ? prop.breaksSize : 0\r\n }\r\n if (true === prop.inBreak) {\r\n if (direction > 0) {\r\n return that._toValue(prop.break.trTo)\r\n } else {\r\n if (direction < 0) {\r\n return that._toValue(prop.break.trFrom)\r\n } else {\r\n return null\r\n }\r\n }\r\n }\r\n return that._toValue(that._calculateUnProjection((pos - startPoint - commonBreakSize) / canvasOptions.ratioOfCanvasRange + prop.length))\r\n },\r\n isValueProlonged: false,\r\n getRange: function() {\r\n return [this._toValue(this._canvasOptions.rangeMin), this._toValue(this._canvasOptions.rangeMax)]\r\n },\r\n getScreenRange: function() {\r\n return [this._canvasOptions.startPoint, this._canvasOptions.endPoint]\r\n },\r\n add: function(value, diff, dir) {\r\n return this._add(value, diff, (this._businessRange.invert ? -1 : 1) * dir)\r\n },\r\n _add: function(value, diff, coeff) {\r\n return this._toValue(this._fromValue(value) + diff * coeff)\r\n },\r\n _fromValue: function(value) {\r\n return null !== value ? Number(value) : null\r\n },\r\n _toValue: function(value) {\r\n return null !== value ? Number(value) : null\r\n },\r\n ratioOfCanvasRange: function() {\r\n return this._canvasOptions.ratioOfCanvasRange\r\n },\r\n convert: function(value) {\r\n return value\r\n },\r\n getRangeByMinZoomValue: function(minZoom, visualRange) {\r\n if (visualRange.minVisible + minZoom <= this._businessRange.max) {\r\n return [visualRange.minVisible, visualRange.minVisible + minZoom]\r\n } else {\r\n return [visualRange.maxVisible - minZoom, visualRange.maxVisible]\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/tree_map/common.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.buildRectAppearance = buildRectAppearance;\r\nexports.buildTextAppearance = buildTextAppearance;\r\nvar _utils = require(\"../core/utils\");\r\n\r\nfunction buildRectAppearance(option) {\r\n var border = option.border || {};\r\n return {\r\n fill: option.color,\r\n opacity: option.opacity,\r\n stroke: border.color,\r\n \"stroke-width\": border.width,\r\n \"stroke-opacity\": border.opacity,\r\n hatching: option.hatching\r\n }\r\n}\r\n\r\nfunction buildTextAppearance(options, filter) {\r\n return {\r\n attr: {\r\n filter: filter\r\n },\r\n css: (0, _utils.patchFontOptions)(options.font)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (viz/translators/translator1d.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.Translator1D = Translator1D;\r\nvar _Number = Number;\r\n\r\nfunction Translator1D() {\r\n this.setDomain(arguments[0], arguments[1]).setCodomain(arguments[2], arguments[3]).setInverted(false)\r\n}\r\nTranslator1D.prototype = {\r\n constructor: Translator1D,\r\n setDomain: function(domain1, domain2) {\r\n var that = this;\r\n that._domain1 = _Number(domain1);\r\n that._domain2 = _Number(domain2);\r\n that._domainDelta = that._domain2 - that._domain1;\r\n return that\r\n },\r\n setCodomain: function(codomain1, codomain2) {\r\n var that = this;\r\n that._codomain1 = _Number(codomain1);\r\n that._codomain2 = _Number(codomain2);\r\n that._codomainDelta = that._codomain2 - that._codomain1;\r\n return that\r\n },\r\n setInverted: function(state) {\r\n this.inverted = state\r\n },\r\n getDomain: function() {\r\n return [this._domain1, this._domain2]\r\n },\r\n getCodomain: function() {\r\n return [this._codomain1, this._codomain2]\r\n },\r\n getDomainStart: function() {\r\n return this._domain1\r\n },\r\n getDomainEnd: function() {\r\n return this._domain2\r\n },\r\n getCodomainStart: function() {\r\n return this._codomain1\r\n },\r\n getCodomainEnd: function() {\r\n return this._codomain2\r\n },\r\n getDomainRange: function() {\r\n return this._domainDelta\r\n },\r\n getCodomainRange: function() {\r\n return this._codomainDelta\r\n },\r\n translate: function(value) {\r\n var ratio = (_Number(value) - this._domain1) / this._domainDelta;\r\n this.inverted && (ratio = 1 - ratio);\r\n return 0 <= ratio && ratio <= 1 ? this._codomain1 + ratio * this._codomainDelta : NaN\r\n },\r\n adjust: function(value) {\r\n var ratio = (_Number(value) - this._domain1) / this._domainDelta;\r\n var result = NaN;\r\n if (ratio < 0) {\r\n result = this._domain1\r\n } else {\r\n if (ratio > 1) {\r\n result = this._domain2\r\n } else {\r\n if (0 <= ratio && ratio <= 1) {\r\n result = _Number(value)\r\n }\r\n }\r\n }\r\n return result\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/tree_map/tiling.squarified.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 _tilingSquarified = _interopRequireDefault(require(\"./tiling.squarified.base\"));\r\nvar _tiling = require(\"./tiling\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _max = Math.max;\r\n\r\nfunction accumulate(total, current) {\r\n return _max(total, current)\r\n}\r\n\r\nfunction squarified(data) {\r\n return (0, _tilingSquarified.default)(data, accumulate, false)\r\n}(0, _tiling.addAlgorithm)(\"squarified\", squarified);\r\nvar _default = squarified;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/tree_map/tiling.squarified.base.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 = _default;\r\nvar _tiling = require(\"./tiling\");\r\nvar _max = Math.max;\r\nvar _round = Math.round;\r\n\r\nfunction compare(a, b) {\r\n return b.value - a.value\r\n}\r\n\r\nfunction getAspectRatio(value) {\r\n return _max(value, 1 / value)\r\n}\r\n\r\nfunction findAppropriateCollection(nodes, head, context) {\r\n var bestAspectRatio = 1 / 0;\r\n var nextAspectRatio;\r\n var sum = 0;\r\n var nextSum;\r\n var i;\r\n var j;\r\n var ii = nodes.length;\r\n var coeff = context.areaToValue / context.staticSide;\r\n var totalAspectRatio;\r\n for (i = head; i < ii;) {\r\n nextSum = sum + nodes[i].value;\r\n totalAspectRatio = context.staticSide / coeff / nextSum;\r\n nextAspectRatio = 0;\r\n for (j = head; j <= i; ++j) {\r\n nextAspectRatio = context.accumulate(nextAspectRatio, getAspectRatio(totalAspectRatio * nodes[j].value / nextSum), j - head + 1)\r\n }\r\n if (nextAspectRatio < bestAspectRatio) {\r\n bestAspectRatio = nextAspectRatio;\r\n sum = nextSum;\r\n ++i\r\n } else {\r\n break\r\n }\r\n }\r\n return {\r\n sum: sum,\r\n count: i - head,\r\n side: _round(coeff * sum)\r\n }\r\n}\r\n\r\nfunction getArea(rect) {\r\n return (rect[2] - rect[0]) * (rect[3] - rect[1])\r\n}\r\n\r\nfunction doStep(nodes, head, context) {\r\n var sidesData = (0, _tiling.buildSidesData)(context.rect, context.directions, context.staticSideIndex);\r\n var area = getArea(context.rect);\r\n var rowData = area > 0 ? findAppropriateCollection(nodes, head, {\r\n areaToValue: area / context.sum,\r\n accumulate: context.accumulate,\r\n staticSide: sidesData.staticSide\r\n }) : {\r\n sum: 1,\r\n side: sidesData.variedSide,\r\n count: nodes.length - head\r\n };\r\n (0, _tiling.calculateRectangles)(nodes, head, context.rect, sidesData, rowData);\r\n context.sum -= rowData.sum;\r\n return head + rowData.count\r\n}\r\n\r\nfunction _default(data, accumulate, isFixedStaticSide) {\r\n var items = data.items;\r\n var ii = items.length;\r\n var i;\r\n var context = {\r\n sum: data.sum,\r\n rect: data.rect,\r\n directions: data.directions,\r\n accumulate: accumulate\r\n };\r\n if (isFixedStaticSide) {\r\n context.staticSideIndex = (0, _tiling.getStaticSideIndex)(context.rect)\r\n }\r\n items.sort(compare);\r\n for (i = 0; i < ii;) {\r\n i = doStep(items, i, context)\r\n }\r\n}\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/tree_map/colorizing.discrete.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 _colorizing = require(\"./colorizing\");\r\n\r\nfunction discreteColorizer(options, themeManager, root) {\r\n var palette = themeManager.createPalette(options.palette, {\r\n useHighlight: true,\r\n extensionMode: options.paletteExtensionMode,\r\n count: options.colorizeGroups ? getNodesCount(root) : getLeafsCount(root)\r\n });\r\n return (options.colorizeGroups ? discreteGroupColorizer : discreteLeafColorizer)(palette, root)\r\n}\r\n\r\nfunction getLeafsCount(root) {\r\n var allNodes = root.nodes.slice();\r\n var i;\r\n var ii = allNodes.length;\r\n var count = 0;\r\n var node;\r\n for (i = 0; i < ii; ++i) {\r\n node = allNodes[i];\r\n if (node.isNode()) {\r\n count = Math.max(count, getLeafsCount(node))\r\n } else {\r\n count += 1\r\n }\r\n }\r\n return count\r\n}\r\n\r\nfunction discreteLeafColorizer(palette) {\r\n var colors = palette.generateColors();\r\n return function(node) {\r\n return colors[node.index]\r\n }\r\n}\r\n\r\nfunction getNodesCount(root) {\r\n var allNodes = root.nodes.slice();\r\n var i;\r\n var ii = allNodes.length;\r\n var count = 0;\r\n var node;\r\n for (i = 0; i < ii; ++i) {\r\n node = allNodes[i];\r\n if (node.isNode()) {\r\n count += getNodesCount(node) + 1\r\n }\r\n }\r\n return count\r\n}\r\n\r\nfunction prepareDiscreteGroupColors(palette, root) {\r\n var colors = {};\r\n var allNodes = root.nodes.slice();\r\n var i;\r\n var ii = allNodes.length;\r\n var node;\r\n for (i = 0; i < ii; ++i) {\r\n node = allNodes[i];\r\n if (node.isNode()) {\r\n allNodes = allNodes.concat(node.nodes);\r\n ii = allNodes.length\r\n } else {\r\n if (!colors[node.parent._id]) {\r\n colors[node.parent._id] = palette.getNextColor()\r\n }\r\n }\r\n }\r\n return colors\r\n}\r\n\r\nfunction discreteGroupColorizer(palette, root) {\r\n var colors = prepareDiscreteGroupColors(palette, root);\r\n return function(node) {\r\n return colors[node._id]\r\n }\r\n}(0, _colorizing.addColorizer)(\"discrete\", discreteColorizer);\r\nvar _default = discreteColorizer;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/tree_map/hover.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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\nvar _tree_map = _interopRequireDefault(require(\"./tree_map.base\"));\r\nvar _node = _interopRequireDefault(require(\"./node\"));\r\nvar _helpers = require(\"../core/helpers\");\r\nvar _common = require(\"./common\");\r\nvar _utils = require(\"../core/utils\");\r\nrequire(\"./api\");\r\nrequire(\"./states\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar proto = _tree_map.default.prototype;\r\nvar nodeProto = _node.default.prototype;\r\nvar STATE_CODE = 1;\r\nproto._eventsMap.onHoverChanged = {\r\n name: \"hoverChanged\"\r\n};\r\n(0, _helpers.expand)(proto._handlers, \"calculateAdditionalStates\", function(states, options) {\r\n states[1] = options.hoverStyle ? (0, _common.buildRectAppearance)(options.hoverStyle) : {}\r\n});\r\n_tree_map.default.addChange({\r\n code: \"HOVER_ENABLED\",\r\n handler: function() {\r\n var hoverEnabled = (0, _utils.parseScalar)(this._getOption(\"hoverEnabled\", true), true);\r\n if (!hoverEnabled) {\r\n this.clearHover()\r\n }\r\n this._hoverEnabled = hoverEnabled\r\n },\r\n isThemeDependent: true,\r\n isOptionChange: true,\r\n option: \"hoverEnabled\"\r\n});\r\nnodeProto.statesMap[1] = 1;\r\nnodeProto.additionalStates.push(1);\r\n(0, _helpers.expand)(proto, \"_extendProxyType\", function(proto) {\r\n var that = this;\r\n proto.setHover = function() {\r\n that._hoverNode(this._id)\r\n };\r\n proto.isHovered = function() {\r\n return that._hoverIndex === this._id\r\n }\r\n});\r\n(0, _helpers.expand)(proto, \"_onNodesCreated\", function() {\r\n this._hoverIndex = -1\r\n});\r\n(0, _helpers.expand)(proto, \"_changeGroupSettings\", function() {\r\n var that = this;\r\n that._groupHoverEnabled = (0, _utils.parseScalar)(that._getOption(\"group\").hoverEnabled, true);\r\n if (!that._groupHoverEnabled) {\r\n that.clearHover()\r\n }\r\n});\r\nproto._applyHoverState = function(index, state) {\r\n setNodeStateRecursive(this._nodes[index], STATE_CODE, state);\r\n this._eventTrigger(\"hoverChanged\", {\r\n node: this._nodes[index].proxy\r\n })\r\n};\r\n\r\nfunction setNodeStateRecursive(node, code, state) {\r\n var nodes = node.isNode() && node.nodes;\r\n var i;\r\n var ii = nodes && nodes.length;\r\n node.setState(code, state);\r\n for (i = 0; i < ii; ++i) {\r\n setNodeStateRecursive(nodes[i], code, state)\r\n }\r\n}\r\nproto._hoverNode = function(index) {\r\n var that = this;\r\n var currentIndex = that._hoverIndex;\r\n if (that._hoverEnabled && currentIndex !== index) {\r\n if (!that._groupHoverEnabled && index >= 0 && that._nodes[index].isNode()) {\r\n that.clearHover();\r\n return\r\n }\r\n that._context.suspend();\r\n that._hoverIndex = -1;\r\n if (currentIndex >= 0) {\r\n that._applyHoverState(currentIndex, false)\r\n }\r\n that._hoverIndex = index;\r\n if (index >= 0) {\r\n that._applyHoverState(index, true)\r\n }\r\n that._context.resume()\r\n }\r\n};\r\nproto.clearHover = function() {\r\n this._hoverNode(-1)\r\n};\r\n","/**\r\n * DevExtreme (viz/tree_map/states.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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\nvar _tree_map = _interopRequireDefault(require(\"./tree_map.base\"));\r\nvar _node = _interopRequireDefault(require(\"./node\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar proto = _tree_map.default.prototype;\r\nvar nodeProto = _node.default.prototype;\r\nvar handlers = proto._handlers;\r\nvar _calculateState = handlers.calculateState;\r\nvar _buildState = nodeProto._buildState;\r\nhandlers.calculateState = function(options) {\r\n var states = {\r\n 0: _calculateState(options)\r\n };\r\n handlers.calculateAdditionalStates(states, options);\r\n return states\r\n};\r\nhandlers.calculateAdditionalStates = _common.noop;\r\nnodeProto.code = 0;\r\nnodeProto.statesMap = {\r\n 0: 0\r\n};\r\nnodeProto.additionalStates = [];\r\nnodeProto._buildState = function(state, extra) {\r\n var states = {\r\n 0: _buildState(state[0], extra)\r\n };\r\n if (this.additionalStates.length) {\r\n buildAdditionalStates(states, states[0], state, this.additionalStates)\r\n }\r\n return states\r\n};\r\nnodeProto._getState = function() {\r\n return this.state[this.statesMap[this.code]]\r\n};\r\nnodeProto.setState = function(code, state) {\r\n if (state) {\r\n this.code |= code\r\n } else {\r\n this.code &= ~code\r\n }\r\n this.ctx.change([\"TILES\"])\r\n};\r\n\r\nfunction buildAdditionalStates(states, base, source, list) {\r\n var i;\r\n var ii = list.length;\r\n for (i = 0; i < ii; ++i) {\r\n states[list[i]] = (0, _extend2.extend)({}, base, source[list[i]])\r\n }\r\n}\r\n","/**\r\n * DevExtreme (viz/tree_map/tooltip.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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\nvar _helpers = require(\"../core/helpers\");\r\nvar _tree_map = _interopRequireDefault(require(\"./tree_map.base\"));\r\nrequire(\"./api\");\r\nvar _tooltip = require(\"../core/tooltip\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar proto = _tree_map.default.prototype;\r\n(0, _helpers.expand)(proto, \"_extendProxyType\", function(proto) {\r\n var that = this;\r\n proto.showTooltip = function(coords) {\r\n that._showTooltip(this._id, coords)\r\n }\r\n});\r\n(0, _helpers.expand)(proto, \"_onNodesCreated\", function() {\r\n if (this._tooltipIndex >= 0) {\r\n this._tooltip.hide()\r\n }\r\n this._tooltipIndex = -1\r\n});\r\n(0, _helpers.expand)(proto, \"_onTilingPerformed\", function() {\r\n if (this._tooltipIndex >= 0) {\r\n this._moveTooltip(this._nodes[this._tooltipIndex])\r\n }\r\n});\r\n\r\nfunction getCoords(coords, rect, renderer) {\r\n var offset = renderer.getRootOffset();\r\n return coords || rect && [(rect[0] + rect[2]) / 2 + offset.left, (rect[1] + rect[3]) / 2 + offset.top] || [-1e3, -1e3]\r\n}\r\nproto._showTooltip = function(index, coords) {\r\n var that = this;\r\n var tooltip = that._tooltip;\r\n var node = that._nodes[index];\r\n if (that._tooltipIndex === index) {\r\n that._moveTooltip(node, coords);\r\n return\r\n }\r\n var callback = function(result) {\r\n if (void 0 === result) {\r\n return\r\n }\r\n if (!result) {\r\n tooltip.hide()\r\n }\r\n that._tooltipIndex = result ? index : -1\r\n };\r\n var xy = getCoords(coords, node.rect, this._renderer);\r\n callback(tooltip.show({\r\n value: node.value,\r\n valueText: tooltip.formatValue(node.value),\r\n node: node.proxy\r\n }, {\r\n x: xy[0],\r\n y: xy[1],\r\n offset: 0\r\n }, {\r\n node: node.proxy\r\n }, void 0, callback))\r\n};\r\nproto._moveTooltip = function(node, coords) {\r\n var xy = getCoords(coords, node.rect, this._renderer);\r\n this._tooltip.move(xy[0], xy[1], 0)\r\n};\r\nproto.hideTooltip = function() {\r\n if (this._tooltipIndex >= 0) {\r\n this._tooltipIndex = -1;\r\n this._tooltip.hide()\r\n }\r\n};\r\n_tree_map.default.addPlugin(_tooltip.plugin);\r\n","/**\r\n * DevExtreme (viz/vector_map/projection.main.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 = null == arr ? null : \"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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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/translators/category_translator.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 _type = require(\"../../core/utils/type\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar round = Math.round;\r\n\r\nfunction getValue(value) {\r\n return value\r\n}\r\nvar _default = {\r\n translate: function(category, directionOffset) {\r\n var that = this;\r\n var canvasOptions = that._canvasOptions;\r\n var categoryIndex = that._categoriesToPoints[null === category || void 0 === category ? void 0 : category.valueOf()];\r\n var specialValue = that.translateSpecialCase(category);\r\n var startPointIndex = canvasOptions.startPointIndex || 0;\r\n var stickInterval = that._options.stick ? 0 : .5;\r\n if ((0, _type.isDefined)(specialValue)) {\r\n return round(specialValue)\r\n }\r\n if (!categoryIndex && 0 !== categoryIndex) {\r\n return null\r\n }\r\n directionOffset = directionOffset || 0;\r\n var stickDelta = categoryIndex + stickInterval - startPointIndex + .5 * directionOffset;\r\n return round(that._calculateProjection(canvasOptions.interval * stickDelta))\r\n },\r\n getInterval: function() {\r\n return this._canvasOptions.interval\r\n },\r\n getEventScale: function(zoomEvent) {\r\n var scale = zoomEvent.deltaScale || 1;\r\n return 1 - (1 - scale) / (.75 + this.visibleCategories.length / this._categories.length)\r\n },\r\n zoom: function(translate, scale) {\r\n var that = this;\r\n var categories = that._categories;\r\n var canvasOptions = that._canvasOptions;\r\n var stick = that._options.stick;\r\n var invert = canvasOptions.invert;\r\n var interval = canvasOptions.interval * scale;\r\n var translateCategories = translate / interval;\r\n var visibleCount = (that.visibleCategories || []).length;\r\n var startCategoryIndex = parseInt((canvasOptions.startPointIndex || 0) + translateCategories + .5);\r\n var categoriesLength = parseInt((0, _math.adjust)(canvasOptions.canvasLength / interval) + (stick ? 1 : 0)) || 1;\r\n var endCategoryIndex;\r\n if (invert) {\r\n startCategoryIndex = parseInt((canvasOptions.startPointIndex || 0) + visibleCount - translateCategories + .5) - categoriesLength\r\n }\r\n if (startCategoryIndex < 0) {\r\n startCategoryIndex = 0\r\n }\r\n endCategoryIndex = startCategoryIndex + categoriesLength;\r\n if (endCategoryIndex > categories.length) {\r\n endCategoryIndex = categories.length;\r\n startCategoryIndex = endCategoryIndex - categoriesLength;\r\n if (startCategoryIndex < 0) {\r\n startCategoryIndex = 0\r\n }\r\n }\r\n var newVisibleCategories = categories.slice(parseInt(startCategoryIndex), parseInt(endCategoryIndex));\r\n var newInterval = that._getDiscreteInterval(newVisibleCategories.length, canvasOptions);\r\n scale = newInterval / canvasOptions.interval;\r\n translate = that.translate(!invert ? newVisibleCategories[0] : newVisibleCategories[newVisibleCategories.length - 1]) * scale - (canvasOptions.startPoint + (stick ? 0 : newInterval / 2));\r\n return {\r\n min: newVisibleCategories[0],\r\n max: newVisibleCategories[newVisibleCategories.length - 1],\r\n translate: translate,\r\n scale: scale\r\n }\r\n },\r\n getMinScale: function(zoom) {\r\n var that = this;\r\n var canvasOptions = that._canvasOptions;\r\n var categoriesLength = (that.visibleCategories || that._categories).length;\r\n categoriesLength += (parseInt(.1 * categoriesLength) || 1) * (zoom ? -2 : 2);\r\n return canvasOptions.canvasLength / (Math.max(categoriesLength, 1) * canvasOptions.interval)\r\n },\r\n getScale: function(min, max) {\r\n var that = this;\r\n var canvasOptions = that._canvasOptions;\r\n var visibleArea = that.getCanvasVisibleArea();\r\n var stickOffset = !that._options.stick && 1;\r\n var minPoint = (0, _type.isDefined)(min) ? that.translate(min, -stickOffset) : null;\r\n var maxPoint = (0, _type.isDefined)(max) ? that.translate(max, +stickOffset) : null;\r\n if (null === minPoint) {\r\n minPoint = canvasOptions.invert ? visibleArea.max : visibleArea.min\r\n }\r\n if (null === maxPoint) {\r\n maxPoint = canvasOptions.invert ? visibleArea.min : visibleArea.max\r\n }\r\n return that.canvasLength / Math.abs(maxPoint - minPoint)\r\n },\r\n isValid: function(value) {\r\n return (0, _type.isDefined)(value) ? this._categoriesToPoints[value.valueOf()] >= 0 : false\r\n },\r\n getCorrectValue: getValue,\r\n to: function(value, direction) {\r\n var canvasOptions = this._canvasOptions;\r\n var categoryIndex = this._categoriesToPoints[null === value || void 0 === value ? void 0 : value.valueOf()];\r\n var startPointIndex = canvasOptions.startPointIndex || 0;\r\n var stickDelta = categoryIndex + (this._options.stick ? 0 : .5) - startPointIndex + (this._businessRange.invert ? -1 : 1) * direction * .5;\r\n return round(this._calculateProjection(canvasOptions.interval * stickDelta))\r\n },\r\n from: function(position) {\r\n var direction = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\r\n var canvasOptions = this._canvasOptions;\r\n var startPoint = canvasOptions.startPoint;\r\n var categories = this.visibleCategories || this._categories;\r\n var categoriesLength = categories.length;\r\n var stickInterval = this._options.stick ? .5 : 0;\r\n var result = round((position - startPoint) / canvasOptions.interval + stickInterval - .5 - .5 * direction);\r\n if (result >= categoriesLength) {\r\n result = categoriesLength - 1\r\n }\r\n if (result < 0) {\r\n result = 0\r\n }\r\n if (canvasOptions.invert) {\r\n result = categoriesLength - result - 1\r\n }\r\n return categories[result]\r\n },\r\n _add: function() {\r\n return NaN\r\n },\r\n _toValue: getValue,\r\n isValueProlonged: true,\r\n getRangeByMinZoomValue: function(minZoom, visualRange) {\r\n var categories = this._categories;\r\n var minVisibleIndex = categories.indexOf(visualRange.minVisible);\r\n var maxVisibleIndex = categories.indexOf(visualRange.maxVisible);\r\n var startIndex = minVisibleIndex + minZoom - 1;\r\n var endIndex = maxVisibleIndex - minZoom + 1;\r\n if (categories[startIndex]) {\r\n return [visualRange.minVisible, categories[startIndex]]\r\n } else {\r\n return [categories[endIndex], visualRange.maxVisible]\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/translators/interval_translator.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 _type = require(\"../../core/utils/type\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _math = require(\"../../core/utils/math\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar floor = Math.floor;\r\nvar _default = {\r\n _intervalize: function(value, interval) {\r\n if (!(0, _type.isDefined)(value)) {\r\n return\r\n }\r\n if (\"datetime\" === this._businessRange.dataType) {\r\n if ((0, _type.isNumeric)(value)) {\r\n value = new Date(value)\r\n } else {\r\n value = new Date(value.getTime())\r\n }\r\n value = _date.default.correctDateWithUnitBeginning(value, interval, null, this._options.firstDayOfWeek)\r\n } else {\r\n value = (0, _math.adjust)(floor((0, _math.adjust)(value / interval)) * interval, interval)\r\n }\r\n return value\r\n },\r\n translate: function(bp, direction, interval) {\r\n var that = this;\r\n var specialValue = that.translateSpecialCase(bp);\r\n if ((0, _type.isDefined)(specialValue)) {\r\n return Math.round(specialValue)\r\n }\r\n interval = interval || that._options.interval;\r\n if (!that.isValid(bp, interval)) {\r\n return null\r\n }\r\n return that.to(bp, direction, interval)\r\n },\r\n getInterval: function() {\r\n return Math.round(this._canvasOptions.ratioOfCanvasRange * (this._businessRange.interval || Math.abs(this._canvasOptions.rangeMax - this._canvasOptions.rangeMin)))\r\n },\r\n zoom: function() {},\r\n getMinScale: function() {},\r\n getScale: function() {},\r\n _parse: function(value) {\r\n return \"datetime\" === this._businessRange.dataType ? new Date(value) : Number(value)\r\n },\r\n _fromValue: function(value) {\r\n return this._parse(value)\r\n },\r\n _toValue: function(value) {\r\n return this._parse(value)\r\n },\r\n isValid: function(value, interval) {\r\n var that = this;\r\n var co = that._canvasOptions;\r\n var rangeMin = co.rangeMin;\r\n var rangeMax = co.rangeMax;\r\n interval = interval || that._options.interval;\r\n if (null === value || isNaN(value)) {\r\n return false\r\n }\r\n value = \"datetime\" === that._businessRange.dataType && (0, _type.isNumeric)(value) ? new Date(value) : value;\r\n if (interval !== that._options.interval) {\r\n rangeMin = that._intervalize(rangeMin, interval);\r\n rangeMax = that._intervalize(rangeMax, interval)\r\n }\r\n if (value.valueOf() < rangeMin || value.valueOf() >= _date.default.addInterval(rangeMax, interval)) {\r\n return false\r\n }\r\n return true\r\n },\r\n to: function(bp, direction, interval) {\r\n var that = this;\r\n interval = interval || that._options.interval;\r\n var v1 = that._intervalize(bp, interval);\r\n var v2 = _date.default.addInterval(v1, interval);\r\n var res = that._to(v1);\r\n var p2 = that._to(v2);\r\n if (!direction) {\r\n res = floor((res + p2) / 2)\r\n } else {\r\n if (direction > 0) {\r\n res = p2\r\n }\r\n }\r\n return res\r\n },\r\n _to: function(value) {\r\n var co = this._canvasOptions;\r\n var rMin = co.rangeMinVisible;\r\n var rMax = co.rangeMaxVisible;\r\n var offset = value - rMin;\r\n if (value < rMin) {\r\n offset = 0\r\n } else {\r\n if (value > rMax) {\r\n offset = _date.default.addInterval(rMax, this._options.interval) - rMin\r\n }\r\n }\r\n return this._conversionValue(this._calculateProjection(offset * this._canvasOptions.ratioOfCanvasRange))\r\n },\r\n from: function(position, direction) {\r\n var that = this;\r\n var origInterval = that._options.interval;\r\n var interval = origInterval;\r\n var co = that._canvasOptions;\r\n var rMin = co.rangeMinVisible;\r\n var rMax = co.rangeMaxVisible;\r\n var value;\r\n if (\"datetime\" === that._businessRange.dataType) {\r\n interval = _date.default.dateToMilliseconds(origInterval)\r\n }\r\n value = that._calculateUnProjection((position - that._canvasOptions.startPoint) / that._canvasOptions.ratioOfCanvasRange);\r\n value = that._intervalize(_date.default.addInterval(value, interval / 2, direction > 0), origInterval);\r\n if (value < rMin) {\r\n value = rMin\r\n } else {\r\n if (value > rMax) {\r\n value = rMax\r\n }\r\n }\r\n return value\r\n },\r\n _add: function() {\r\n return NaN\r\n },\r\n isValueProlonged: true\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/translators/datetime_translator.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 _date = _interopRequireDefault(require(\"../../core/utils/date\"));\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 parse(value) {\r\n return null !== value ? new Date(value) : value\r\n}\r\nvar _default = {\r\n _fromValue: parse,\r\n _toValue: parse,\r\n _add: _date.default.addDateInterval,\r\n convert: _date.default.dateToMilliseconds\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/translators/logarithmic_translator.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 _type = require(\"../../core/utils/type\");\r\nvar _default = {\r\n _fromValue: function(value) {\r\n return null !== value ? (0, _utils.getLogExt)(value, this._canvasOptions.base, this._businessRange.allowNegatives, this._businessRange.linearThreshold) : value\r\n },\r\n _toValue: function(value) {\r\n return null !== value ? (0, _utils.raiseToExt)(value, this._canvasOptions.base, this._businessRange.allowNegatives, this._businessRange.linearThreshold) : value\r\n },\r\n getMinBarSize: function(minBarSize) {\r\n var visibleArea = this.getCanvasVisibleArea();\r\n var minValue = this.from(visibleArea.min + minBarSize);\r\n var canvasOptions = this._canvasOptions;\r\n return Math.pow(canvasOptions.base, canvasOptions.rangeMinVisible + this._fromValue(this.from(visibleArea.min)) - this._fromValue(!(0, _type.isDefined)(minValue) ? this.from(visibleArea.max) : minValue))\r\n },\r\n checkMinBarSize: function(initialValue, minShownValue, stackValue) {\r\n var canvasOptions = this._canvasOptions;\r\n var prevValue = stackValue - initialValue;\r\n var baseMethod = this.constructor.prototype.checkMinBarSize;\r\n var minBarSize;\r\n var updateValue;\r\n if ((0, _type.isDefined)(minShownValue) && prevValue > 0) {\r\n minBarSize = baseMethod(this._fromValue(stackValue / prevValue), this._fromValue(minShownValue) - canvasOptions.rangeMinVisible);\r\n updateValue = Math.pow(canvasOptions.base, this._fromValue(prevValue) + minBarSize) - prevValue\r\n } else {\r\n updateValue = baseMethod(initialValue, minShownValue)\r\n }\r\n return updateValue\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/utils.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.prepareSegmentRectPoints = void 0;\r\nObject.defineProperty(exports, \"refreshPaths\", {\r\n enumerable: true,\r\n get: function() {\r\n return _renderer.refreshPaths\r\n }\r\n});\r\nvar _renderer = require(\"./core/renderers/renderer\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar prepareSegmentRectPoints = function(left, top, width, height, borderOptions) {\r\n var maxSW = ~~((width < height ? width : height) / 2);\r\n var sw = borderOptions.width || 0;\r\n var newSW = sw < maxSW ? sw : maxSW;\r\n left += newSW / 2;\r\n top += newSW / 2;\r\n width -= newSW;\r\n height -= newSW;\r\n var right = left + width;\r\n var bottom = top + height;\r\n var points = [];\r\n var segments = [];\r\n var segmentSequence;\r\n var visiblyOpt = 0;\r\n var prevSegmentVisibility = 0;\r\n var allSegment = {\r\n top: [\r\n [left, top],\r\n [right, top]\r\n ],\r\n right: [\r\n [right, top],\r\n [right, bottom]\r\n ],\r\n bottom: [\r\n [right, bottom],\r\n [left, bottom]\r\n ],\r\n left: [\r\n [left, bottom],\r\n [left, top]\r\n ]\r\n };\r\n (0, _iterator.each)(allSegment, function(seg) {\r\n var visibility = !!borderOptions[seg];\r\n visiblyOpt = 2 * visiblyOpt + ~~visibility\r\n });\r\n switch (visiblyOpt) {\r\n case 13:\r\n case 9:\r\n segmentSequence = [\"left\", \"top\", \"right\", \"bottom\"];\r\n break;\r\n case 11:\r\n segmentSequence = [\"bottom\", \"left\", \"top\", \"right\"];\r\n break;\r\n default:\r\n segmentSequence = [\"top\", \"right\", \"bottom\", \"left\"]\r\n }(0, _iterator.each)(segmentSequence, function(_, seg) {\r\n var segmentVisibility = !!borderOptions[seg];\r\n if (!prevSegmentVisibility && segments.length) {\r\n points.push(segments);\r\n segments = []\r\n }\r\n if (segmentVisibility) {\r\n (0, _iterator.each)(allSegment[seg].slice(prevSegmentVisibility), function(_, segment) {\r\n segments = segments.concat(segment)\r\n })\r\n }\r\n prevSegmentVisibility = ~~segmentVisibility\r\n });\r\n segments.length && points.push(segments);\r\n 1 === points.length && (points = points[0]);\r\n return {\r\n points: points,\r\n pathType: 15 === visiblyOpt ? \"area\" : \"line\"\r\n }\r\n};\r\nexports.prepareSegmentRectPoints = prepareSegmentRectPoints;\r\n","/**\r\n * DevExtreme (viz/tree_map.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 _tree_map = _interopRequireDefault(require(\"./tree_map/tree_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 = _tree_map.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/tree_map/tree_map.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 _tree_map = _interopRequireDefault(require(\"./tree_map.base\"));\r\nrequire(\"./tiling.squarified\");\r\nrequire(\"./tiling.strip\");\r\nrequire(\"./tiling.slice_and_dice\");\r\nrequire(\"./tiling.rotated_slice_and_dice\");\r\nrequire(\"./colorizing.discrete\");\r\nrequire(\"./colorizing.gradient\");\r\nrequire(\"./colorizing.range\");\r\nrequire(\"./api\");\r\nrequire(\"./hover\");\r\nrequire(\"./selection\");\r\nrequire(\"./tooltip\");\r\nrequire(\"./tracker\");\r\nrequire(\"./drilldown\");\r\nrequire(\"./plain_data_source\");\r\nvar _export = require(\"../core/export\");\r\nvar _title = require(\"../core/title\");\r\nvar _loading_indicator = require(\"../core/loading_indicator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _tree_map.default;\r\nexports.default = _default;\r\n_tree_map.default.addPlugin(_export.plugin);\r\n_tree_map.default.addPlugin(_title.plugin);\r\n_tree_map.default.addPlugin(_loading_indicator.plugin);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/tree_map/tiling.strip.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 _tilingSquarified = _interopRequireDefault(require(\"./tiling.squarified.base\"));\r\nvar _tiling = require(\"./tiling\");\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 accumulate(total, current, count) {\r\n return ((count - 1) * total + current) / count\r\n}\r\n\r\nfunction strip(data) {\r\n return (0, _tilingSquarified.default)(data, accumulate, true)\r\n}(0, _tiling.addAlgorithm)(\"strip\", strip);\r\nvar _default = strip;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/tree_map/tiling.slice_and_dice.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 _tiling = require(\"./tiling\");\r\n\r\nfunction sliceAndDice(data) {\r\n var items = data.items;\r\n var sidesData = (0, _tiling.buildSidesData)(data.rect, data.directions, data.isRotated ? 1 : 0);\r\n (0, _tiling.calculateRectangles)(items, 0, data.rect, sidesData, {\r\n sum: data.sum,\r\n count: items.length,\r\n side: sidesData.variedSide\r\n })\r\n}(0, _tiling.addAlgorithm)(\"sliceanddice\", sliceAndDice);\r\nvar _default = sliceAndDice;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/tree_map/tiling.rotated_slice_and_dice.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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\nvar _tiling = require(\"./tiling\");\r\nvar sliceAndDiceAlgorithm = (0, _tiling.getAlgorithm)(\"sliceanddice\");\r\n\r\nfunction rotatedSliceAndDice(data) {\r\n data.isRotated = !data.isRotated;\r\n return sliceAndDiceAlgorithm.call(this, data)\r\n}(0, _tiling.addAlgorithm)(\"rotatedsliceanddice\", rotatedSliceAndDice);\r\n","/**\r\n * DevExtreme (viz/tree_map/colorizing.gradient.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 _colorizing = require(\"./colorizing\");\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\n\r\nfunction createSimpleColorizer(getColor, range) {\r\n return function(node) {\r\n return getColor(node, range)\r\n }\r\n}\r\n\r\nfunction getRangeData(range) {\r\n return [Number(range[0]) || 0, range[1] - range[0] || 1]\r\n}\r\n\r\nfunction calculateRange(nodes, getValue) {\r\n var i;\r\n var ii = nodes.length;\r\n var codes = [];\r\n var code;\r\n for (i = 0; i < ii; ++i) {\r\n code = getValue(nodes[i]);\r\n if (isFinite(code)) {\r\n codes.push(code)\r\n }\r\n }\r\n return getRangeData([_min.apply(null, codes), _max.apply(null, codes)])\r\n}\r\n\r\nfunction createGuessingColorizer(getColor, getValue) {\r\n var ranges = {};\r\n return function(node) {\r\n var parent = node.parent;\r\n return getColor(node, ranges[parent._id] || (ranges[parent._id] = calculateRange(parent.nodes, getValue)))\r\n }\r\n}\r\n\r\nfunction gradientColorizer(options, themeManager) {\r\n var palette = themeManager.createGradientPalette(options.palette);\r\n var getValue = (0, _colorizing.createColorCodeGetter)(options);\r\n return \"range\" in options ? createSimpleColorizer(getColor, getRangeData(options.range || [])) : createGuessingColorizer(getColor, getValue);\r\n\r\n function getColor(node, arg) {\r\n return palette.getColor((getValue(node) - arg[0]) / arg[1])\r\n }\r\n}(0, _colorizing.addColorizer)(\"gradient\", gradientColorizer);\r\nvar _default = gradientColorizer;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/tree_map/colorizing.range.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 _colorizing = require(\"./colorizing\");\r\n\r\nfunction getPaletteIndex(value, items) {\r\n var start = 0;\r\n var end = items.length - 1;\r\n var index = -1;\r\n var middle;\r\n if (items[start] <= value && value <= items[end]) {\r\n if (value === items[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 < items[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 rangeColorizer(options, themeManager) {\r\n var range = options.range || [];\r\n var palette = themeManager.createDiscretePalette(options.palette, range.length - 1);\r\n var getValue = (0, _colorizing.createColorCodeGetter)(options);\r\n return function(node) {\r\n return palette.getColor(getPaletteIndex(getValue(node), range))\r\n }\r\n}(0, _colorizing.addColorizer)(\"range\", rangeColorizer);\r\nvar _default = rangeColorizer;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/tree_map/selection.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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\nvar _tree_map = _interopRequireDefault(require(\"./tree_map.base\"));\r\nvar _node = _interopRequireDefault(require(\"./node\"));\r\nvar _helpers = require(\"../core/helpers\");\r\nvar _common = require(\"./common\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _array = require(\"../../core/utils/array\");\r\nrequire(\"./api\");\r\nrequire(\"./states\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar proto = _tree_map.default.prototype;\r\nvar nodeProto = _node.default.prototype;\r\nvar MODE_NONE = 0;\r\nvar MODE_SINGLE = 1;\r\nvar MODE_MULTIPLE = 2;\r\nvar STATE_CODE = 2;\r\nproto._eventsMap.onSelectionChanged = {\r\n name: \"selectionChanged\"\r\n};\r\n(0, _helpers.expand)(proto._handlers, \"calculateAdditionalStates\", function(states, options) {\r\n states[2] = options.selectionStyle ? (0, _common.buildRectAppearance)(options.selectionStyle) : {}\r\n});\r\nnodeProto.statesMap[2] = nodeProto.statesMap[3] = STATE_CODE;\r\nnodeProto.additionalStates.push(2);\r\n(0, _helpers.expand)(proto, \"_onNodesCreated\", function() {\r\n this._selectionList.length = 0\r\n});\r\n(0, _helpers.expand)(proto, \"_extendProxyType\", function(proto) {\r\n var that = this;\r\n proto.select = function(state) {\r\n that._selectNode(this._id, !!state)\r\n };\r\n proto.isSelected = function() {\r\n return (0, _array.inArray)(this._id, that._selectionList) >= 0\r\n };\r\n that._selectionList = []\r\n});\r\n_tree_map.default.addChange({\r\n code: \"SELECTION_MODE\",\r\n handler: function() {\r\n var that = this;\r\n var option = (0, _utils.normalizeEnum)(that._getOption(\"selectionMode\", true));\r\n var selectionList = that._selectionList;\r\n var tmp;\r\n var mode = \"none\" === option ? MODE_NONE : \"multiple\" === option ? MODE_MULTIPLE : MODE_SINGLE;\r\n if (mode === MODE_SINGLE && selectionList.length > 1) {\r\n tmp = selectionList.pop();\r\n that.clearSelection();\r\n selectionList.push(tmp)\r\n } else {\r\n if (mode === MODE_NONE) {\r\n that.clearSelection()\r\n }\r\n }\r\n that._selectionMode = mode\r\n },\r\n isThemeDependent: true,\r\n isOptionChange: true,\r\n option: \"selectionMode\"\r\n});\r\n(0, _helpers.expand)(proto, \"_applyTilesAppearance\", function() {\r\n if (this._selectionList.length) {\r\n bringSelectedTilesToForeground(this._nodes, this._selectionList)\r\n }\r\n});\r\nvar tileToFront = [leafToFront, groupToFront];\r\n\r\nfunction bringSelectedTilesToForeground(nodes, selectionList) {\r\n var i;\r\n var ii = selectionList.length;\r\n var node;\r\n for (i = 0; i < ii; ++i) {\r\n node = nodes[selectionList[i]];\r\n tileToFront[Number(node.isNode())](node.tile)\r\n }\r\n}\r\n\r\nfunction leafToFront(content) {\r\n content.toForeground()\r\n}\r\n\r\nfunction groupToFront(content) {\r\n content.outer.toForeground();\r\n content.inner.toForeground()\r\n}\r\nproto._applySelectionState = function(index, state) {\r\n var node = this._nodes[index];\r\n node.setState(STATE_CODE, state);\r\n this._eventTrigger(\"selectionChanged\", {\r\n node: node.proxy\r\n })\r\n};\r\nproto._selectNode = function(index, state) {\r\n var that = this;\r\n var selectionList;\r\n var k;\r\n var tmp;\r\n if (that._selectionMode !== MODE_NONE) {\r\n that._context.suspend();\r\n selectionList = that._selectionList;\r\n k = (0, _array.inArray)(index, selectionList);\r\n if (state && k === -1) {\r\n if (that._selectionMode === MODE_SINGLE) {\r\n if (selectionList.length) {\r\n tmp = selectionList.pop();\r\n that._applySelectionState(tmp, false)\r\n }\r\n }\r\n selectionList.push(index);\r\n that._applySelectionState(index, true)\r\n } else {\r\n if (!state && k >= 0) {\r\n selectionList.splice(k, 1);\r\n that._applySelectionState(index, false)\r\n }\r\n }\r\n that._context.resume()\r\n }\r\n};\r\nproto.clearSelection = function() {\r\n var that = this;\r\n var selectionList = that._selectionList;\r\n var i;\r\n var ii = selectionList.length;\r\n if (that._selectionMode !== MODE_NONE) {\r\n that._context.suspend();\r\n for (i = 0; i < ii; ++i) {\r\n that._applySelectionState(selectionList[i], false)\r\n }\r\n selectionList.length = 0;\r\n that._context.resume()\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/tree_map/tracker.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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\nvar _tree_map = _interopRequireDefault(require(\"./tree_map.base\"));\r\nvar _tracker = require(\"../components/tracker\");\r\nvar _helpers = require(\"../core/helpers\");\r\nvar _utils = require(\"../core/utils\");\r\nrequire(\"./api\");\r\nrequire(\"./hover\");\r\nrequire(\"./tooltip\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DATA_KEY_BASE = \"__treemap_data_\";\r\nvar dataKeyModifier = 0;\r\nvar proto = _tree_map.default.prototype;\r\nproto._eventsMap.onClick = {\r\n name: \"click\"\r\n};\r\nvar getDataKey = function() {\r\n var dataKey = DATA_KEY_BASE + dataKeyModifier++;\r\n return dataKey\r\n};\r\n(0, _helpers.expand)(proto, \"_initCore\", function() {\r\n var that = this;\r\n var dataKey = getDataKey();\r\n var getProxy = function(index) {\r\n return that._nodes[index].proxy\r\n };\r\n that._tracker = new _tracker.Tracker({\r\n widget: that,\r\n root: that._renderer.root,\r\n getNode: function(id) {\r\n var proxy = getProxy(id);\r\n var interactWithGroup = (0, _utils.parseScalar)(that._getOption(\"interactWithGroup\", true));\r\n return interactWithGroup && proxy.isLeaf() && proxy.getParent().isActive() ? proxy.getParent() : proxy\r\n },\r\n getData: function(e) {\r\n var target = e.target;\r\n return (\"tspan\" === target.tagName ? target.parentNode : target)[dataKey]\r\n },\r\n getProxy: getProxy,\r\n click: function(e) {\r\n that._eventTrigger(\"click\", e)\r\n }\r\n });\r\n that._handlers.setTrackerData = function(node, element) {\r\n element.data(dataKey, node._id)\r\n }\r\n});\r\n(0, _helpers.expand)(proto, \"_disposeCore\", function() {\r\n this._tracker.dispose()\r\n});\r\n","/**\r\n * DevExtreme (viz/tree_map/drilldown.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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\nvar _tree_map = _interopRequireDefault(require(\"./tree_map.base\"));\r\nvar _helpers = require(\"../core/helpers\");\r\nrequire(\"./api\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar proto = _tree_map.default.prototype;\r\nproto._eventsMap.onDrill = {\r\n name: \"drill\"\r\n};\r\n(0, _helpers.expand)(proto, \"_extendProxyType\", function(proto) {\r\n var that = this;\r\n proto.drillDown = function() {\r\n that._drillToNode(this._id)\r\n }\r\n});\r\n(0, _helpers.expand)(proto, \"_onNodesCreated\", function() {\r\n this._drilldownIndex = -1\r\n});\r\nproto._drillToNode = function(index) {\r\n var that = this;\r\n var node;\r\n if (that._drilldownIndex !== index) {\r\n node = that._nodes[index] || that._root;\r\n if (node.nodes) {\r\n that._drilldownIndex = index;\r\n that._topNode = node;\r\n that._context.suspend();\r\n that._context.change([\"MAX_DEPTH\", \"NODES_RESET\"]);\r\n that._context.resume();\r\n that._eventTrigger(\"drill\", {\r\n node: node.proxy\r\n })\r\n }\r\n }\r\n};\r\nproto.resetDrillDown = function() {\r\n this._drillToNode(-1);\r\n return this\r\n};\r\nproto.drillUp = function() {\r\n this._drillToNode(this._topNode.parent._id || -1);\r\n return this\r\n};\r\nproto.getCurrentNode = function() {\r\n return this._topNode.proxy\r\n};\r\n","/**\r\n * DevExtreme (viz/tree_map/plain_data_source.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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\nvar _tree_map = _interopRequireDefault(require(\"./tree_map.base\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar proto = _tree_map.default.prototype;\r\nproto._optionChangesMap.idField = proto._optionChangesMap.parentField = \"NODES_CREATE\";\r\nproto._processDataSourceItems = function(items) {\r\n var i;\r\n var struct = {};\r\n var currentItem;\r\n var idField = this._getOption(\"idField\", true);\r\n var parentField = this._getOption(\"parentField\", true);\r\n var parentId;\r\n var rootNodes = [];\r\n var tmpItems;\r\n var item;\r\n if (!idField || !parentField || 0 === items.length) {\r\n return {\r\n items: items,\r\n isPlain: false\r\n }\r\n }\r\n for (i = 0; i < items.length; i++) {\r\n currentItem = items[i];\r\n parentId = currentItem[parentField];\r\n if (parentId) {\r\n struct[parentId] = struct[parentId] || {\r\n items: []\r\n };\r\n tmpItems = struct[parentId].items\r\n } else {\r\n tmpItems = rootNodes\r\n }\r\n tmpItems.push(currentItem)\r\n }\r\n treeFiller({\r\n struct: struct,\r\n idField: idField\r\n }, rootNodes);\r\n for (item in struct) {\r\n struct[item] && rootNodes.push(struct[item])\r\n }\r\n return {\r\n items: rootNodes,\r\n isPlain: true\r\n }\r\n};\r\n\r\nfunction treeFiller(context, items) {\r\n var currentItem;\r\n var i;\r\n var struct = context.struct;\r\n var id;\r\n for (i = 0; i < items.length; i++) {\r\n currentItem = items[i];\r\n id = currentItem[context.idField];\r\n if (struct[id]) {\r\n currentItem.items = struct[id].items;\r\n struct[id] = null;\r\n treeFiller(context, currentItem.items)\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (viz/vector_map.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.MapLayerCollection = MapLayerCollection;\r\nexports.getMaxBound = getMaxBound;\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 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 var layerByName = that._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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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","/**\r\n * DevExtreme (viz/tree_map/tree_map.base.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 _common = require(\"./common\");\r\nvar _node = _interopRequireDefault(require(\"./node\"));\r\nvar _tiling = require(\"./tiling\");\r\nvar _colorizing = require(\"./colorizing\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _common2 = require(\"../../core/utils/common\");\r\nvar _base_widget = _interopRequireDefault(require(\"../core/base_widget\"));\r\nrequire(\"./tiling.squarified\");\r\nrequire(\"./colorizing.discrete\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _data_source = require(\"../core/data_source\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _max = Math.max;\r\nvar directions = {\r\n lefttoprightbottom: [1, 1],\r\n leftbottomrighttop: [1, -1],\r\n righttopleftbottom: [-1, 1],\r\n rightbottomlefttop: [-1, -1]\r\n};\r\n(0, _tiling.setDefaultAlgorithm)(\"squarified\");\r\n(0, _colorizing.setDefaultColorizer)(\"discrete\");\r\n\r\nfunction pickPositiveInteger(val) {\r\n return val > 0 ? Math.round(val) : 0\r\n}\r\nvar dxTreeMap = _base_widget.default.inherit({\r\n _handlers: {\r\n beginBuildNodes: _common2.noop,\r\n buildNode: _common2.noop,\r\n endBuildNodes: _common2.noop,\r\n setTrackerData: _common2.noop,\r\n calculateState: function(options) {\r\n return (0, _common.buildRectAppearance)(options)\r\n }\r\n },\r\n _rootClass: \"dxtm-tree-map\",\r\n _rootClassPrefix: \"dxtm\",\r\n _getDefaultSize: function() {\r\n return {\r\n width: 400,\r\n height: 400\r\n }\r\n },\r\n _themeSection: \"treeMap\",\r\n _fontFields: [\"tile.label.font\", \"group.label.font\"],\r\n _init: function() {\r\n var that = this;\r\n that._rectOffsets = {};\r\n that._handlers = Object.create(that._handlers);\r\n that._context = {\r\n suspend: function() {\r\n if (!that._applyingChanges) {\r\n that._suspendChanges()\r\n }\r\n },\r\n resume: function() {\r\n if (!that._applyingChanges) {\r\n that._resumeChanges()\r\n }\r\n },\r\n change: function(codes) {\r\n that._change(codes)\r\n },\r\n settings: [{}, {}],\r\n calculateState: that._handlers.calculateState,\r\n calculateLabelState: _common.buildTextAppearance\r\n };\r\n that._root = that._topNode = {\r\n nodes: []\r\n };\r\n that.callBase.apply(that, arguments)\r\n },\r\n _initialChanges: [\"DATA_SOURCE\"],\r\n _initCore: function() {\r\n var that = this;\r\n var renderer = that._renderer;\r\n that._createProxyType();\r\n that._tilesGroup = renderer.g().linkOn(renderer.root, \"tiles\").linkAppend();\r\n that._labelsGroup = renderer.g().linkOn(renderer.root, \"labels\").linkAppend()\r\n },\r\n _createProxyType: _common2.noop,\r\n _disposeCore: function() {\r\n var that = this;\r\n that._filter && that._filter.dispose();\r\n that._labelsGroup.linkOff();\r\n that._tilesGroup.linkOff()\r\n },\r\n _applySize: function(rect) {\r\n this._tilingRect = rect.slice();\r\n this._change([\"TILING\"])\r\n },\r\n _optionChangesMap: {\r\n dataSource: \"DATA_SOURCE\",\r\n valueField: \"NODES_CREATE\",\r\n childrenField: \"NODES_CREATE\",\r\n colorField: \"TILES\",\r\n colorizer: \"TILES\",\r\n labelField: \"LABELS\",\r\n tile: \"TILE_SETTINGS\",\r\n group: \"GROUP_SETTINGS\",\r\n maxDepth: \"MAX_DEPTH\",\r\n layoutAlgorithm: \"TILING\",\r\n layoutDirection: \"TILING\"\r\n },\r\n _themeDependentChanges: [\"TILE_SETTINGS\", \"GROUP_SETTINGS\", \"MAX_DEPTH\"],\r\n _changeDataSource: function() {\r\n var that = this;\r\n that._isDataExpected = that._isSyncData = true;\r\n that._updateDataSource();\r\n that._isSyncData = false;\r\n if (that._isDataExpected) {\r\n that._suspendChanges()\r\n }\r\n },\r\n _dataSourceChangedHandler: function() {\r\n var that = this;\r\n if (that._isDataExpected) {\r\n that._isDataExpected = false;\r\n that._change([\"NODES_CREATE\"]);\r\n if (!that._isSyncData) {\r\n that._resumeChanges()\r\n }\r\n } else {\r\n that._requestChange([\"NODES_CREATE\"])\r\n }\r\n },\r\n _optionChangesOrder: [\"DATA_SOURCE\", \"TILE_SETTINGS\", \"GROUP_SETTINGS\", \"MAX_DEPTH\"],\r\n _change_DATA_SOURCE: function() {\r\n this._changeDataSource()\r\n },\r\n _change_TILE_SETTINGS: function() {\r\n this._changeTileSettings()\r\n },\r\n _change_GROUP_SETTINGS: function() {\r\n this._changeGroupSettings()\r\n },\r\n _change_MAX_DEPTH: function() {\r\n this._changeMaxDepth()\r\n },\r\n _customChangesOrder: [\"NODES_CREATE\", \"NODES_RESET\", \"TILES\", \"LABELS\", \"TILING\", \"LABELS_LAYOUT\"],\r\n _change_NODES_CREATE: function() {\r\n this._buildNodes()\r\n },\r\n _change_NODES_RESET: function() {\r\n this._resetNodes()\r\n },\r\n _change_TILES: function() {\r\n this._applyTilesAppearance()\r\n },\r\n _change_LABELS: function() {\r\n this._applyLabelsAppearance()\r\n },\r\n _change_TILING: function() {\r\n this._performTiling()\r\n },\r\n _change_LABELS_LAYOUT: function() {\r\n this._performLabelsLayout()\r\n },\r\n _applyChanges: function() {\r\n var that = this;\r\n that.callBase.apply(that, arguments);\r\n if (!that._isDataExpected) {\r\n that._drawn()\r\n }\r\n that._context.forceReset = false\r\n },\r\n _buildNodes: function() {\r\n var that = this;\r\n var root = that._root = that._topNode = new _node.default;\r\n root._id = 0;\r\n root.parent = {};\r\n root.data = {};\r\n root.level = root.index = -1;\r\n root.ctx = that._context;\r\n root.label = null;\r\n that._nodes = [root];\r\n that._handlers.beginBuildNodes();\r\n var processedData = that._processDataSourceItems(that._dataSourceItems() || []);\r\n traverseDataItems(root, processedData.items, 0, {\r\n itemsField: !processedData.isPlain && that._getOption(\"childrenField\", true) || \"items\",\r\n valueField: that._getOption(\"valueField\", true) || \"value\",\r\n buildNode: that._handlers.buildNode,\r\n ctx: that._context,\r\n nodes: that._nodes\r\n });\r\n that._onNodesCreated();\r\n that._handlers.endBuildNodes();\r\n that._change([\"NODES_RESET\"])\r\n },\r\n _onNodesCreated: _common2.noop,\r\n _processDataSourceItems: function(items) {\r\n return {\r\n items: items,\r\n isPlain: false\r\n }\r\n },\r\n _changeTileSettings: function() {\r\n var that = this;\r\n var options = that._getOption(\"tile\");\r\n var offsets = that._rectOffsets;\r\n var borderWidth = pickPositiveInteger(options.border.width);\r\n var edgeOffset = borderWidth / 2;\r\n var innerOffset = 1 & borderWidth ? .5 : 0;\r\n var labelOptions = options.label;\r\n var settings = that._context.settings[0];\r\n that._change([\"TILES\", \"LABELS\"]);\r\n settings.state = that._handlers.calculateState(options);\r\n that._filter = that._filter || that._renderer.shadowFilter(\"-50%\", \"-50%\", \"200%\", \"200%\");\r\n that._filter.attr(labelOptions.shadow);\r\n that._calculateLabelSettings(settings, labelOptions, that._filter.id);\r\n if (offsets.tileEdge !== edgeOffset || offsets.tileInner !== innerOffset) {\r\n offsets.tileEdge = edgeOffset;\r\n offsets.tileInner = innerOffset;\r\n that._change([\"TILING\"])\r\n }\r\n },\r\n _changeGroupSettings: function() {\r\n var that = this;\r\n var options = that._getOption(\"group\");\r\n var labelOptions = options.label;\r\n var offsets = that._rectOffsets;\r\n var borderWidth = pickPositiveInteger(options.border.width);\r\n var edgeOffset = borderWidth / 2;\r\n var innerOffset = 1 & borderWidth ? .5 : 0;\r\n var headerHeight = 0;\r\n var groupPadding = pickPositiveInteger(options.padding);\r\n var settings = that._context.settings[1];\r\n that._change([\"TILES\", \"LABELS\"]);\r\n settings.state = that._handlers.calculateState(options);\r\n that._calculateLabelSettings(settings, labelOptions);\r\n if (options.headerHeight >= 0) {\r\n headerHeight = pickPositiveInteger(options.headerHeight)\r\n } else {\r\n headerHeight = settings.labelParams.height + 2 * pickPositiveInteger(labelOptions.paddingTopBottom)\r\n }\r\n if (that._headerHeight !== headerHeight) {\r\n that._headerHeight = headerHeight;\r\n that._change([\"TILING\"])\r\n }\r\n if (that._groupPadding !== groupPadding) {\r\n that._groupPadding = groupPadding;\r\n that._change([\"TILING\"])\r\n }\r\n if (offsets.headerEdge !== edgeOffset || offsets.headerInner !== innerOffset) {\r\n offsets.headerEdge = edgeOffset;\r\n offsets.headerInner = innerOffset;\r\n that._change([\"TILING\"])\r\n }\r\n },\r\n _calculateLabelSettings: function(settings, options, filter) {\r\n var bBox = this._getTextBBox(options.font);\r\n var paddingLeftRight = pickPositiveInteger(options.paddingLeftRight);\r\n var paddingTopBottom = pickPositiveInteger(options.paddingTopBottom);\r\n var tileLabelOptions = this._getOption(\"tile.label\");\r\n var groupLabelOptions = this._getOption(\"group.label\");\r\n settings.labelState = (0, _common.buildTextAppearance)(options, filter);\r\n settings.labelState.visible = !(\"visible\" in options) || !!options.visible;\r\n settings.labelParams = {\r\n height: bBox.height,\r\n rtlEnabled: this._getOption(\"rtlEnabled\", true),\r\n paddingTopBottom: paddingTopBottom,\r\n paddingLeftRight: paddingLeftRight,\r\n tileLabelWordWrap: tileLabelOptions.wordWrap,\r\n tileLabelOverflow: tileLabelOptions.textOverflow,\r\n groupLabelOverflow: groupLabelOptions.textOverflow\r\n }\r\n },\r\n _changeMaxDepth: function() {\r\n var maxDepth = this._getOption(\"maxDepth\", true);\r\n maxDepth = maxDepth >= 1 ? Math.round(maxDepth) : 1 / 0;\r\n if (this._maxDepth !== maxDepth) {\r\n this._maxDepth = maxDepth;\r\n this._change([\"NODES_RESET\"])\r\n }\r\n },\r\n _resetNodes: function() {\r\n var that = this;\r\n that._tilesGroup.clear();\r\n that._renderer.initHatching();\r\n that._context.forceReset = true;\r\n that._context.minLevel = that._topNode.level + 1;\r\n that._context.maxLevel = that._context.minLevel + that._maxDepth - 1;\r\n that._change([\"TILES\", \"LABELS\", \"TILING\"])\r\n },\r\n _processNodes: function(context, process) {\r\n processNodes(context, this._topNode, process)\r\n },\r\n _applyTilesAppearance: function() {\r\n var that = this;\r\n var colorizer = (0, _colorizing.getColorizer)(that._getOption(\"colorizer\"), that._themeManager, that._topNode);\r\n that._processNodes({\r\n renderer: that._renderer,\r\n group: that._tilesGroup,\r\n setTrackerData: that._handlers.setTrackerData,\r\n colorField: that._getOption(\"colorField\", true) || \"color\",\r\n getColor: colorizer\r\n }, processTileAppearance)\r\n },\r\n _applyLabelsAppearance: function() {\r\n var that = this;\r\n that._labelsGroup.clear();\r\n that._processNodes({\r\n renderer: that._renderer,\r\n group: that._labelsGroup,\r\n setTrackerData: that._handlers.setTrackerData,\r\n labelField: that._getOption(\"labelField\", true) || \"name\"\r\n }, processLabelAppearance);\r\n that._change([\"LABELS_LAYOUT\"])\r\n },\r\n _performTiling: function() {\r\n var that = this;\r\n var context = {\r\n algorithm: (0, _tiling.getAlgorithm)(that._getOption(\"layoutAlgorithm\", true)),\r\n directions: directions[String(that._getOption(\"layoutDirection\", true)).toLowerCase()] || directions.lefttoprightbottom,\r\n headerHeight: that._headerHeight,\r\n groupPadding: that._groupPadding,\r\n rectOffsets: that._rectOffsets\r\n };\r\n that._topNode.innerRect = that._tilingRect;\r\n calculateRects(context, that._topNode);\r\n that._processNodes(context, processTiling);\r\n that._change([\"LABELS_LAYOUT\"]);\r\n that._onTilingPerformed()\r\n },\r\n _onTilingPerformed: _common2.noop,\r\n _performLabelsLayout: function() {\r\n this._processNodes(null, processLabelsLayout)\r\n },\r\n _getTextBBox: function(fontOptions) {\r\n var renderer = this._renderer;\r\n var text = this._textForCalculations || renderer.text(\"0\", 0, 0);\r\n this._textForCalculations = text;\r\n text.css((0, _utils.patchFontOptions)(fontOptions)).append(renderer.root);\r\n var bBox = text.getBBox();\r\n text.remove();\r\n return bBox\r\n }\r\n});\r\n\r\nfunction traverseDataItems(root, dataItems, level, params) {\r\n var nodes = [];\r\n var allNodes = params.nodes;\r\n var node;\r\n var i;\r\n var ii = dataItems.length;\r\n var dataItem;\r\n var totalValue = 0;\r\n var items;\r\n for (i = 0; i < ii; ++i) {\r\n var _items;\r\n dataItem = dataItems[i];\r\n node = new _node.default;\r\n node._id = allNodes.length;\r\n node.ctx = params.ctx;\r\n node.parent = root;\r\n node.level = level;\r\n node.index = nodes.length;\r\n node.data = dataItem;\r\n params.buildNode(node);\r\n allNodes.push(node);\r\n nodes.push(node);\r\n items = dataItem[params.itemsField];\r\n if (null !== (_items = items) && void 0 !== _items && _items.length) {\r\n traverseDataItems(node, items, level + 1, params)\r\n }\r\n if (dataItem[params.valueField] > 0) {\r\n node.value = Number(dataItem[params.valueField])\r\n }\r\n totalValue += node.value\r\n }\r\n root.nodes = nodes;\r\n root.value = totalValue\r\n}\r\n\r\nfunction processNodes(context, root, process) {\r\n var nodes = root.nodes;\r\n var node;\r\n var i;\r\n var ii = nodes.length;\r\n for (i = 0; i < ii; ++i) {\r\n node = nodes[i];\r\n process(context, node);\r\n if (node.isNode()) {\r\n processNodes(context, node, process)\r\n }\r\n }\r\n}\r\nvar createTile = [createLeaf, createGroup];\r\n\r\nfunction processTileAppearance(context, node) {\r\n node.color = node.data[context.colorField] || context.getColor(node) || node.parent.color;\r\n node.updateStyles();\r\n node.tile = !node.ctx.forceReset && node.tile || createTile[Number(node.isNode())](context, node);\r\n node.applyState()\r\n}\r\n\r\nfunction createLeaf(context, node) {\r\n var tile = context.renderer.simpleRect().append(context.group);\r\n context.setTrackerData(node, tile);\r\n return tile\r\n}\r\n\r\nfunction createGroup(context, node) {\r\n var outer = context.renderer.simpleRect().append(context.group);\r\n var inner = context.renderer.simpleRect().append(context.group);\r\n context.setTrackerData(node, inner);\r\n return {\r\n outer: outer,\r\n inner: inner\r\n }\r\n}\r\n\r\nfunction processLabelAppearance(context, node) {\r\n node.updateLabelStyle();\r\n if (node.labelState.visible) {\r\n createLabel(context, node, node.labelState, node.labelParams)\r\n }\r\n}\r\n\r\nfunction createLabel(context, currentNode, settings, params) {\r\n var textData = currentNode.data[context.labelField];\r\n currentNode.label = textData ? String(textData) : null;\r\n textData = currentNode.customLabel || currentNode.label;\r\n if (textData) {\r\n currentNode.text = context.renderer.text(textData).attr(settings.attr).css(settings.css).append(context.group);\r\n context.setTrackerData(currentNode, currentNode.text)\r\n }\r\n}\r\nvar emptyRect = [0, 0, 0, 0];\r\n\r\nfunction calculateRects(context, root) {\r\n var nodes = root.nodes;\r\n var items = [];\r\n var rects = [];\r\n var sum = 0;\r\n var i;\r\n var ii = items.length = rects.length = nodes.length;\r\n for (i = 0; i < ii; ++i) {\r\n sum += nodes[i].value;\r\n items[i] = {\r\n value: nodes[i].value,\r\n i: i\r\n }\r\n }\r\n if (sum > 0) {\r\n context.algorithm({\r\n items: items.slice(),\r\n sum: sum,\r\n rect: root.innerRect.slice(),\r\n isRotated: 1 & nodes[0].level,\r\n directions: context.directions\r\n })\r\n }\r\n for (i = 0; i < ii; ++i) {\r\n rects[i] = items[i].rect || emptyRect\r\n }\r\n root.rects = rects\r\n}\r\n\r\nfunction processTiling(context, node) {\r\n var rect = node.parent.rects[node.index];\r\n var rectOffsets = context.rectOffsets;\r\n var headerHeight;\r\n if (node.isNode()) {\r\n setRectAttrs(node.tile.outer, buildTileRect(rect, node.parent.innerRect, rectOffsets.headerEdge, rectOffsets.headerInner));\r\n rect = marginateRect(rect, context.groupPadding);\r\n headerHeight = Math.min(context.headerHeight, rect[3] - rect[1]);\r\n node.rect = [rect[0], rect[1], rect[2], rect[1] + headerHeight];\r\n setRectAttrs(node.tile.inner, marginateRect(node.rect, rectOffsets.headerEdge));\r\n rect[1] += headerHeight;\r\n node.innerRect = rect;\r\n calculateRects(context, node)\r\n } else {\r\n node.rect = rect;\r\n setRectAttrs(node.tile, buildTileRect(rect, node.parent.innerRect, rectOffsets.tileEdge, rectOffsets.tileInner))\r\n }\r\n}\r\n\r\nfunction marginateRect(rect, margin) {\r\n return [rect[0] + margin, rect[1] + margin, rect[2] - margin, rect[3] - margin]\r\n}\r\n\r\nfunction buildTileRect(rect, outer, edgeOffset, innerOffset) {\r\n return [rect[0] + (rect[0] === outer[0] ? edgeOffset : +innerOffset), rect[1] + (rect[1] === outer[1] ? edgeOffset : +innerOffset), rect[2] - (rect[2] === outer[2] ? edgeOffset : -innerOffset), rect[3] - (rect[3] === outer[3] ? edgeOffset : -innerOffset)]\r\n}\r\n\r\nfunction setRectAttrs(element, rect) {\r\n element.attr({\r\n x: rect[0],\r\n y: rect[1],\r\n width: _max(rect[2] - rect[0], 0),\r\n height: _max(rect[3] - rect[1], 0)\r\n })\r\n}\r\n\r\nfunction processLabelsLayout(context, node) {\r\n if (node.text && node.labelState.visible) {\r\n layoutTextNode(node, node.labelParams)\r\n }\r\n}\r\n\r\nfunction layoutTextNode(node, params) {\r\n var rect = node.rect;\r\n var text = node.text;\r\n var bBox = text.getBBox();\r\n var paddingLeftRight = params.paddingLeftRight;\r\n var paddingTopBottom = params.paddingTopBottom;\r\n var effectiveWidth = rect[2] - rect[0] - 2 * paddingLeftRight;\r\n text.setMaxSize(effectiveWidth, rect[3] - rect[1] - paddingTopBottom, node.isNode() ? {\r\n textOverflow: params.groupLabelOverflow,\r\n wordWrap: \"none\"\r\n } : {\r\n textOverflow: params.tileLabelOverflow,\r\n wordWrap: params.tileLabelWordWrap,\r\n hideOverflowEllipsis: true\r\n });\r\n text.move(params.rtlEnabled ? rect[2] - paddingLeftRight - bBox.x - bBox.width : rect[0] + paddingLeftRight - bBox.x, rect[1] + paddingTopBottom - bBox.y)\r\n}(0, _component_registrator.default)(\"dxTreeMap\", dxTreeMap);\r\nvar _default = dxTreeMap;\r\nexports.default = _default;\r\ndxTreeMap.addPlugin(_data_source.plugin);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/translators/range.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.Range = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _isDefined = _type.isDefined;\r\nvar _isDate = _type.isDate;\r\nvar _isFunction = _type.isFunction;\r\nvar minSelector = \"min\";\r\nvar maxSelector = \"max\";\r\nvar minVisibleSelector = \"minVisible\";\r\nvar maxVisibleSelector = \"maxVisible\";\r\nvar baseSelector = \"base\";\r\nvar axisTypeSelector = \"axisType\";\r\n\r\nfunction otherLessThan(thisValue, otherValue) {\r\n return otherValue < thisValue\r\n}\r\n\r\nfunction otherGreaterThan(thisValue, otherValue) {\r\n return otherValue > thisValue\r\n}\r\n\r\nfunction compareAndReplace(thisValue, otherValue, setValue, compare) {\r\n var otherValueDefined = _isDefined(otherValue);\r\n if (_isDefined(thisValue)) {\r\n if (otherValueDefined && compare(thisValue, otherValue)) {\r\n setValue(otherValue)\r\n }\r\n } else {\r\n if (otherValueDefined) {\r\n setValue(otherValue)\r\n }\r\n }\r\n}\r\nvar Range = function(range) {\r\n range && (0, _extend.extend)(this, range)\r\n};\r\nexports.Range = Range;\r\nvar _Range = Range;\r\n_Range.prototype = {\r\n constructor: _Range,\r\n addRange: function(otherRange) {\r\n var that = this;\r\n var categories = that.categories;\r\n var otherCategories = otherRange.categories;\r\n var isDiscrete = \"discrete\" === that[axisTypeSelector];\r\n var compareAndReplaceByField = function(field, compare) {\r\n compareAndReplace(that[field], otherRange[field], function(value) {\r\n that[field] = value\r\n }, compare)\r\n };\r\n var controlValuesByVisibleBounds = function(valueField, visibleValueField, compare) {\r\n compareAndReplace(that[valueField], that[visibleValueField], function(value) {\r\n _isDefined(that[valueField]) && (that[valueField] = value)\r\n }, compare)\r\n };\r\n var checkField = function(field) {\r\n that[field] = that[field] || otherRange[field]\r\n };\r\n checkField(\"invert\");\r\n checkField(axisTypeSelector);\r\n checkField(\"dataType\");\r\n checkField(\"isSpacedMargin\");\r\n if (\"logarithmic\" === that[axisTypeSelector]) {\r\n checkField(baseSelector)\r\n } else {\r\n that[baseSelector] = void 0\r\n }\r\n compareAndReplaceByField(minSelector, otherLessThan);\r\n compareAndReplaceByField(maxSelector, otherGreaterThan);\r\n if (isDiscrete) {\r\n checkField(minVisibleSelector);\r\n checkField(maxVisibleSelector)\r\n } else {\r\n compareAndReplaceByField(minVisibleSelector, otherLessThan);\r\n compareAndReplaceByField(maxVisibleSelector, otherGreaterThan)\r\n }\r\n compareAndReplaceByField(\"interval\", otherLessThan);\r\n if (!isDiscrete) {\r\n controlValuesByVisibleBounds(minSelector, minVisibleSelector, otherLessThan);\r\n controlValuesByVisibleBounds(minSelector, maxVisibleSelector, otherLessThan);\r\n controlValuesByVisibleBounds(maxSelector, maxVisibleSelector, otherGreaterThan);\r\n controlValuesByVisibleBounds(maxSelector, minVisibleSelector, otherGreaterThan)\r\n }\r\n if (void 0 === categories) {\r\n that.categories = otherCategories\r\n } else {\r\n that.categories = otherCategories ? (0, _utils.unique)(categories.concat(otherCategories)) : categories\r\n }\r\n if (\"logarithmic\" === that[axisTypeSelector]) {\r\n checkField(\"allowNegatives\");\r\n compareAndReplaceByField(\"linearThreshold\", otherLessThan)\r\n }\r\n return that\r\n },\r\n isEmpty: function() {\r\n return (!_isDefined(this[minSelector]) || !_isDefined(this[maxSelector])) && (!this.categories || 0 === this.categories.length)\r\n },\r\n correctValueZeroLevel: function() {\r\n var that = this;\r\n if (\"logarithmic\" === that[axisTypeSelector] || _isDate(that[maxSelector]) || _isDate(that[minSelector])) {\r\n return that\r\n }\r\n\r\n function setZeroLevel(min, max) {\r\n that[min] < 0 && that[max] < 0 && (that[max] = 0);\r\n that[min] > 0 && that[max] > 0 && (that[min] = 0)\r\n }\r\n setZeroLevel(minSelector, maxSelector);\r\n setZeroLevel(minVisibleSelector, maxVisibleSelector);\r\n return that\r\n },\r\n sortCategories: function(sort) {\r\n if (false === sort || !this.categories) {\r\n return\r\n }\r\n if (Array.isArray(sort)) {\r\n var sortValues = sort.map(function(item) {\r\n return item.valueOf()\r\n });\r\n var filteredSeriesCategories = this.categories.filter(function(item) {\r\n return sortValues.indexOf(item.valueOf()) === -1\r\n });\r\n this.categories = sort.concat(filteredSeriesCategories)\r\n } else {\r\n var notAFunction = !_isFunction(sort);\r\n if (notAFunction && \"string\" !== this.dataType) {\r\n sort = function(a, b) {\r\n return a.valueOf() - b.valueOf()\r\n }\r\n } else {\r\n if (notAFunction) {\r\n sort = false\r\n }\r\n }\r\n sort && this.categories.sort(sort)\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/tree_map/tiling.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.addAlgorithm = addAlgorithm;\r\nexports.buildSidesData = buildSidesData;\r\nexports.calculateRectangles = calculateRectangles;\r\nexports.getAlgorithm = getAlgorithm;\r\nexports.getStaticSideIndex = void 0;\r\nexports.setDefaultAlgorithm = setDefaultAlgorithm;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _round = Math.round;\r\nvar algorithms = {};\r\nvar defaultAlgorithm;\r\n\r\nfunction getAlgorithm(value) {\r\n return algorithms[(0, _utils.normalizeEnum)(value)] || (0, _type.isFunction)(value) && value || defaultAlgorithm\r\n}\r\n\r\nfunction addAlgorithm(name, callback) {\r\n algorithms[name] = callback\r\n}\r\n\r\nfunction setDefaultAlgorithm(name) {\r\n defaultAlgorithm = algorithms[name]\r\n}\r\nvar directionToIndexOffsets = {};\r\ndirectionToIndexOffsets[-1] = [2, 0];\r\ndirectionToIndexOffsets[1] = [0, 2];\r\nvar getStaticSideIndex = function(rect) {\r\n return rect[2] - rect[0] < rect[3] - rect[1] ? 0 : 1\r\n};\r\nexports.getStaticSideIndex = getStaticSideIndex;\r\n\r\nfunction buildSidesData(rect, directions, _staticSideIndex) {\r\n var staticSideIndex = void 0 !== _staticSideIndex ? _staticSideIndex : getStaticSideIndex(rect);\r\n var variedSideIndex = 1 - staticSideIndex;\r\n var staticSideDirection = directions[staticSideIndex];\r\n var variedSideDirection = directions[variedSideIndex];\r\n var staticSideIndexOffsets = directionToIndexOffsets[staticSideDirection];\r\n var variedSideIndexOffsets = directionToIndexOffsets[variedSideDirection];\r\n return {\r\n staticSide: rect[2 + staticSideIndex] - rect[staticSideIndex],\r\n variedSide: rect[2 + variedSideIndex] - rect[variedSideIndex],\r\n static1: staticSideIndex + staticSideIndexOffsets[0],\r\n static2: staticSideIndex + staticSideIndexOffsets[1],\r\n varied1: variedSideIndex + variedSideIndexOffsets[0],\r\n varied2: variedSideIndex + variedSideIndexOffsets[1],\r\n staticDir: staticSideDirection,\r\n variedDir: variedSideDirection\r\n }\r\n}\r\n\r\nfunction calculateRectangles(nodes, head, totalRect, sidesData, rowData) {\r\n var i;\r\n var ii;\r\n var variedSidePart = [0, 0, 0, 0];\r\n var static1 = sidesData.static1;\r\n var static2 = sidesData.static2;\r\n var position = totalRect[static1];\r\n var dir = sidesData.staticDir;\r\n var side = sidesData.staticSide;\r\n var sum = rowData.sum;\r\n var rect;\r\n var delta;\r\n variedSidePart[sidesData.varied1] = totalRect[sidesData.varied1];\r\n variedSidePart[sidesData.varied2] = totalRect[sidesData.varied1] + sidesData.variedDir * rowData.side;\r\n for (i = head, ii = head + rowData.count; i < ii; ++i) {\r\n rect = variedSidePart.slice();\r\n rect[static1] = position;\r\n delta = _round(side * nodes[i].value / sum) || 0;\r\n sum -= nodes[i].value;\r\n side -= delta;\r\n position += dir * delta;\r\n rect[static2] = position;\r\n nodes[i].rect = rect\r\n }\r\n totalRect[sidesData.varied1] = variedSidePart[sidesData.varied2]\r\n}\r\n","/**\r\n * DevExtreme (viz/tree_map/api.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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\nvar _tree_map = _interopRequireDefault(require(\"./tree_map.base\"));\r\nvar _node = _interopRequireDefault(require(\"./node\"));\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar proto = _tree_map.default.prototype;\r\nvar nodeProto = _node.default.prototype;\r\nproto._eventsMap.onNodesInitialized = {\r\n name: \"nodesInitialized\"\r\n};\r\nproto._eventsMap.onNodesRendering = {\r\n name: \"nodesRendering\"\r\n};\r\nproto._createProxyType = function() {\r\n var that = this;\r\n var nodes;\r\n Proxy.prototype = {\r\n constructor: Proxy,\r\n getParent: function() {\r\n return nodes[this._id].parent.proxy || null\r\n },\r\n getChild: function(index) {\r\n var _nodes = nodes[this._id].nodes;\r\n return _nodes ? _nodes[index].proxy : null\r\n },\r\n getChildrenCount: function() {\r\n var _nodes = nodes[this._id].nodes;\r\n return _nodes ? _nodes.length : 0\r\n },\r\n getAllChildren: function() {\r\n var _nodes = nodes[this._id].nodes;\r\n var i;\r\n var ii = _nodes && _nodes.length;\r\n var list = [];\r\n for (i = 0; i < ii; ++i) {\r\n list.push(_nodes[i].proxy)\r\n }\r\n return list\r\n },\r\n getAllNodes: function() {\r\n var list = [];\r\n collectNodes(nodes[this._id], list);\r\n return list\r\n },\r\n isLeaf: function() {\r\n return !nodes[this._id].isNode()\r\n },\r\n isActive: function() {\r\n return nodes[this._id].isActive()\r\n },\r\n value: function(arg) {\r\n var node = nodes[this._id];\r\n var result;\r\n if (void 0 !== arg) {\r\n updateValue(node, arg > 0 ? Number(arg) : 0);\r\n change(node, [\"TILING\"]);\r\n result = this\r\n } else {\r\n result = node.value\r\n }\r\n return result\r\n },\r\n label: function(arg) {\r\n var node = nodes[this._id];\r\n var result;\r\n if (void 0 !== arg) {\r\n node.customLabel = arg ? String(arg) : null;\r\n change(node, [\"LABELS\"]);\r\n result = this\r\n } else {\r\n result = node.customLabel || node.label\r\n }\r\n return result\r\n },\r\n customize: function(settings) {\r\n var node = nodes[this._id];\r\n if (settings) {\r\n node._custom = node._custom || {};\r\n (0, _extend2.extend)(true, node._custom, settings);\r\n node._partialState = node._partialLabelState = null\r\n }\r\n change(node, [\"TILES\", \"LABELS\"]);\r\n return this\r\n },\r\n resetCustomization: function() {\r\n var node = nodes[this._id];\r\n node._custom = node._partialState = node._partialLabelState = null;\r\n change(node, [\"TILES\", \"LABELS\"]);\r\n return this\r\n }\r\n };\r\n that._extendProxyType(Proxy.prototype);\r\n\r\n function Proxy(node) {\r\n var that = this;\r\n node.proxy = that;\r\n that._id = node._id;\r\n that.level = node.level;\r\n that.index = node.index;\r\n that.data = node.data\r\n }\r\n that._handlers.beginBuildNodes = function() {\r\n nodes = that._nodes;\r\n new Proxy(that._root)\r\n };\r\n that._handlers.buildNode = function(node) {\r\n new Proxy(node)\r\n };\r\n that._handlers.endBuildNodes = function() {\r\n that._eventTrigger(\"nodesInitialized\", {\r\n root: that._root.proxy\r\n })\r\n }\r\n};\r\n\r\nfunction change(node, codes) {\r\n var ctx = node.ctx;\r\n ctx.suspend();\r\n ctx.change(codes);\r\n ctx.resume()\r\n}\r\n\r\nfunction collectNodes(node, list) {\r\n var nodes = node.nodes;\r\n var i;\r\n var ii = nodes && nodes.length;\r\n for (i = 0; i < ii; ++i) {\r\n list.push(nodes[i].proxy);\r\n collectNodes(nodes[i], list)\r\n }\r\n}\r\n\r\nfunction updateValue(node, value) {\r\n var delta = value - node.value;\r\n while (node) {\r\n node.value += delta;\r\n node = node.parent\r\n }\r\n}\r\nproto._extendProxyType = _common.noop;\r\nvar _resetNodes = proto._resetNodes;\r\nproto._resetNodes = function() {\r\n _resetNodes.call(this);\r\n this._eventTrigger(\"nodesRendering\", {\r\n node: this._topNode.proxy\r\n })\r\n};\r\nvar _updateStyles = nodeProto.updateStyles;\r\nnodeProto.updateStyles = function() {\r\n var that = this;\r\n _updateStyles.call(that);\r\n if (that._custom) {\r\n that._partialState = !that.ctx.forceReset && that._partialState || that.ctx.calculateState(that._custom);\r\n (0, _extend2.extend)(true, that.state, that._partialState)\r\n }\r\n};\r\nvar _updateLabelStyle = nodeProto.updateLabelStyle;\r\nnodeProto.updateLabelStyle = function() {\r\n var that = this;\r\n var custom = that._custom;\r\n _updateLabelStyle.call(that);\r\n if (custom && custom.label) {\r\n that._partialLabelState = !that.ctx.forceReset && that._partialLabelState || calculatePartialLabelState(that, custom.label);\r\n that.labelState = (0, _extend2.extend)(true, {}, that.labelState, that._partialLabelState)\r\n }\r\n};\r\n\r\nfunction calculatePartialLabelState(node, settings) {\r\n var state = node.ctx.calculateLabelState(settings);\r\n if (\"visible\" in settings) {\r\n state.visible = !!settings.visible\r\n }\r\n return state\r\n}\r\nproto.getRootNode = function() {\r\n return this._root.proxy\r\n};\r\nproto.resetNodes = function() {\r\n var context = this._context;\r\n context.suspend();\r\n context.change([\"NODES_CREATE\"]);\r\n context.resume();\r\n return this\r\n};\r\n","/**\r\n * DevExtreme (viz/tree_map/node.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 _extend2 = require(\"../../core/utils/extend\");\r\n\r\nfunction Node() {}\r\nvar updateTile = [updateLeaf, updateGroup];\r\n(0, _extend2.extend)(Node.prototype, {\r\n value: 0,\r\n isNode: function() {\r\n return !!(this.nodes && this.level < this.ctx.maxLevel)\r\n },\r\n isActive: function() {\r\n var ctx = this.ctx;\r\n return this.level >= ctx.minLevel && this.level <= ctx.maxLevel\r\n },\r\n updateStyles: function() {\r\n var that = this;\r\n var isNode = Number(that.isNode());\r\n that.state = that._buildState(that.ctx.settings[isNode].state, !isNode && that.color && {\r\n fill: that.color\r\n })\r\n },\r\n _buildState: function(state, extra) {\r\n var base = (0, _extend2.extend)({}, state);\r\n return extra ? (0, _extend2.extend)(base, extra) : base\r\n },\r\n updateLabelStyle: function() {\r\n var settings = this.ctx.settings[Number(this.isNode())];\r\n this.labelState = settings.labelState;\r\n this.labelParams = settings.labelParams\r\n },\r\n _getState: function() {\r\n return this.state\r\n },\r\n applyState: function() {\r\n updateTile[Number(this.isNode())](this.tile, this._getState())\r\n }\r\n});\r\n\r\nfunction updateLeaf(content, attrs) {\r\n content.smartAttr(attrs)\r\n}\r\n\r\nfunction updateGroup(content, attrs) {\r\n content.outer.attr({\r\n stroke: attrs.stroke,\r\n \"stroke-width\": attrs[\"stroke-width\"],\r\n \"stroke-opacity\": attrs[\"stroke-opacity\"]\r\n });\r\n content.inner.smartAttr({\r\n fill: attrs.fill,\r\n opacity: attrs.opacity,\r\n hatching: attrs.hatching\r\n })\r\n}\r\nvar _default = Node;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/tree_map/colorizing.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.addColorizer = addColorizer;\r\nexports.createColorCodeGetter = createColorCodeGetter;\r\nexports.getColorizer = getColorizer;\r\nexports.setDefaultColorizer = setDefaultColorizer;\r\nvar _utils = require(\"../core/utils\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar colorizers = {};\r\nvar defaultColorizerName;\r\n\r\nfunction wrapLeafColorGetter(getter) {\r\n return function(node) {\r\n return !node.isNode() ? getter(node) : void 0\r\n }\r\n}\r\n\r\nfunction wrapGroupColorGetter(getter) {\r\n return function(node) {\r\n var parent = !node.isNode() && node.parent;\r\n return parent ? parent._groupColor = parent._groupColor || getter(parent) : void 0\r\n }\r\n}\r\n\r\nfunction getColorizer(options, themeManager, root) {\r\n var type = (0, _utils.normalizeEnum)(options.type || defaultColorizerName);\r\n var colorizer = colorizers[type] && colorizers[type](options, themeManager, root);\r\n return colorizer ? (options.colorizeGroups ? wrapGroupColorGetter : wrapLeafColorGetter)(colorizer) : _common.noop\r\n}\r\n\r\nfunction addColorizer(name, colorizer) {\r\n colorizers[name] = colorizer\r\n}\r\n\r\nfunction setDefaultColorizer(name) {\r\n defaultColorizerName = name\r\n}\r\n\r\nfunction getValueAsColorCode(node) {\r\n return node.value\r\n}\r\n\r\nfunction createColorCode(colorCodeField) {\r\n return function(node) {\r\n return Number(node.data[colorCodeField])\r\n }\r\n}\r\n\r\nfunction createColorCodeGetter(options) {\r\n return options.colorCodeField ? createColorCode(options.colorCodeField) : getValueAsColorCode\r\n}\r\n"],"sourceRoot":""}