{"version":3,"sources":["webpack:///./node_modules/devextreme/viz/series/points/pie_point.js","webpack:///./node_modules/devextreme/viz/series/points/range_symbol_point.js","webpack:///./node_modules/devextreme/viz/series/points/candlestick_point.js","webpack:///./node_modules/devextreme/viz/sankey/sankey.js","webpack:///./node_modules/devextreme/viz/sankey/constants.js","webpack:///./node_modules/devextreme/viz/sankey/graph.js","webpack:///./node_modules/devextreme/viz/series/points/base_point.js","webpack:///./node_modules/devextreme/viz/series/points/bubble_point.js","webpack:///./node_modules/devextreme/viz/series/points/range_bar_point.js","webpack:///./node_modules/devextreme/viz/series/points/stock_point.js","webpack:///./node_modules/devextreme/viz/series/points/polar_point.js","webpack:///./node_modules/devextreme/viz/series/range_series.js","webpack:///./node_modules/devextreme/viz/series/bubble_series.js","webpack:///./node_modules/devextreme/viz/series/pie_series.js","webpack:///./node_modules/devextreme/viz/series/financial_series.js","webpack:///./node_modules/devextreme/viz/series/stacked_series.js","webpack:///./node_modules/devextreme/viz/sankey.js","webpack:///./node_modules/devextreme/viz/sankey/node_item.js","webpack:///./node_modules/devextreme/viz/sankey/link_item.js","webpack:///./node_modules/devextreme/viz/sankey/layout.js","webpack:///./node_modules/devextreme/viz/sankey/data_validator.js","webpack:///./node_modules/devextreme/viz/sankey/tooltip.js","webpack:///./node_modules/devextreme/viz/sankey/tracker.js","webpack:///./node_modules/devextreme/viz/series/scatter_series.js","webpack:///./node_modules/devextreme/viz/series/points/symbol_point.js","webpack:///./node_modules/devextreme/viz/series/bar_series.js","webpack:///./node_modules/devextreme/viz/series/area_series.js","webpack:///./node_modules/devextreme/viz/series/points/bar_point.js","webpack:///./node_modules/devextreme/viz/series/helpers/range_data_calculator.js","webpack:///./node_modules/devextreme/viz/series/line_series.js","webpack:///./node_modules/devextreme/viz/series/base_series.js","webpack:///./node_modules/devextreme/viz/series/points/label.js"],"names":["exports","default","_extend2","_symbol_point","_interopRequireDefault","_utils","_type","_consts","obj","__esModule","_extend","extend","_round","Math","round","_sqrt","sqrt","_acos","acos","DEG","PI","_abs","abs","RADIAL_LABEL_INDENT","radialLabelIndent","_default","_updateData","data","argumentChanged","call","this","isDefined","_visible","minValue","initialMinValue","originalMinValue","animate","complete","duration","delay","graphic","x","centerX","y","centerY","outerRadius","radiusOuter","innerRadius","radiusInner","startAngle","toAngle","endAngle","fromAngle","partitionDuration","correctPosition","correction","correctRadius","correctLabelRadius","radiusLabels","correctValue","percent","base","value","normalInitialValue","_label","setDataField","_updateLabelData","setData","_getLabelFormatObject","_getShiftLabelCoords","bBox","getBoundingRect","coord","_getLabelCoords","visibleArea","_getVisibleArea","_isLabelDrawingWithoutPoints","_checkLabelPosition","_getLabelExtraCoord","_checkVerticalLabelPosition","_getLabelPosition","options","position","getAnnotationCoords","location","_getElementCoords","elementRadius","radialOffset","rad","arguments","length","width","height","that","angleFunctions","getCosAndSin","middleAngle","columnsPosition","cos","sin","label","getLayoutOptions","_correctLabelCoord","moveLabelsFromCenter","labelWidth","rightBorderX","maxX","leftBorderX","minX","angleOfPoint","normalizeAngle","connectorOffset","drawLabel","translate","_drawLabel","updateLabelCoord","_checkHorizontalLabelPosition","shift","box","maxY","minY","shiftCoord","getVerticallyShiftedAngularCoords","applyWordWrap","rowCountChanged","series","index","floor","fit","setLabelTrackerData","setTrackerData","_getLabelConnector","seriesStyle","_options","styles","normal","strokeWidthBy2","borderWidth","getOptions","containerBackgroundColor","stroke","angle","_drawMarker","renderer","group","animationEnabled","firstDrawing","shiftedAngle","arc","attr","smartAttr","_getStyle","sharp","append","getTooltipParams","offset","_translate","translator","_getValTranslator","isVisible","getMarkerVisibility","_updateMarker","style","_","callback","getLegendStyles","_styles","legendStyles","isInVisibleArea","hide","hideTooltip","visibilityChanged","show","setInvisibility","draw","_getFormatObject","tooltip","formatObject","percentText","formatValue","getColor","fill","coordsIn","lx","ly","r","module","_iterator","_common","_math","_min","min","_max","max","deleteLabel","_topLabel","dispose","_bottomLabel","hideMarker","type","marker","visibility","clearVisibility","topMarker","bottomMarker","clearMarker","emptySettings","_emptySettings","markerType","labelsInside","rotated","_getLabelMinFormatObject","argument","initialArgument","seriesName","name","originalValue","originalArgument","point","maxFormatObject","_updateLabelOptions","_createLabel","setOptions","_renderer","labelsGroup","_labelsGroup","Label","_getGraphicBBox","images","_getImage","image","_checkImage","top","bottom","_getPositionFromLocation","visible","_getImageBBox","_getSymbolBBox","isTop","_checkOverlay","bottomCoord","topCoord","topValue","_getOverlayCorrections","topCoords","bottomCoords","coordSelector","valueSelector","getValueAxis","getVisibleArea","minBound","maxBound","delta","coord1","coord2","_checkLabelsOverlay","topLocation","corrections","labels","notInverted","customVisibility","_getCustomLabelVisibility","topLabel","bottomLabel","pointPosition","getLabelVisibility","hasValue","visibleTopMarker","push","visibleBottomMarker","each","imageOption","url","rangeMaxPoint","rangeMinPoint","_checkSymbol","oldOptions","newOptions","oldSymbol","symbol","newSymbol","symbolChanged","oldImages","newImages","topImageChanged","bottomImageChanged","_getSettingsForTwoMarkers","settings","radius","points","_populatePointShape","translateX","translateY","_hasGraphic","_drawOneMarker","imageSettings","_updateOneMarker","_createMarker","_getImageSettings","g","_getSettingsForTracker","tmp","maxValue","visibleRangeArea","visibleArgArea","getArgumentAxis","visibleValArea","notVisibleByArg","notVisibleByVal","side","minVisible","maxVisible","hasCoords","href","toString","getCrosshairData","vx","vy","coords","axis","yValue","xValue","initialValue","argumentText","valueText","rangeValue1Text","rangeValue2Text","rangeValue1","rangeValue2","getLabel","getLabels","noop","trackerRadius","_storeTrackerR","xCond","yCond","getMaxValue","valueAxisType","getMinValue","_bar_point","_getContinuousPoints","openCoord","closeCoord","createPoint","highCoord","highY","concat","lowY","closeY","_getCrockPoints","_getPoints","openY","_isReduction","reduction","color","_drawMarkerInGroup","attributes","path","_fillStyle","_isPositive","reductionPositive","positive","_getMinTrackerWidth","correctCoordinates","correctOptions","minWidth","xCorrection","_getMarkerGroup","reductionPositiveMarkersGroup","reductionMarkersGroup","defaultPositiveMarkersGroup","defaultMarkersGroup","valVisibleArea","_truncateCoord","centerCoord","getCenterCoord","center","highValue","lowValue","valTranslator","_getArgTranslator","openValue","closeValue","centerValue","_calculateVisibility","origY","reductionColor","reductionValue","originalLowValue","originalHighValue","originalOpenValue","originalCloseValue","isReduction","setColor","highValueText","openValueText","closeValueText","lowValueText","_constants","_node_item","_link_item","_layout","_base_widget","_component_registrator","_data_source","getConnectedLinks","layout","nodeName","linkType","result","attrName","invertedAttrName","links","map","link","_name","forEach","connected","idx","weight","_weight","node","dxSankey","inherit","_rootClass","_rootClassPrefix","_proxyData","_optionChangesMap","dataSource","sortData","alignment","palette","paletteExtensionMode","_themeDependentChanges","_getDefaultSize","_themeSection","_fontFields","_optionChangesOrder","_initialChanges","_initCore","_groupLinks","root","_groupNodes","_groupLabels","_drawLabels","_nodes","_links","_gradients","_disposeCore","_applySize","rect","_rect","slice","adaptiveLayout","_getOption","keepLabels","_change","_eventsMap","onNodeHoverChanged","onLinkHoverChanged","_customChangesOrder","_dataSourceChangedHandler","_requestChange","_change_DRAWN","_drawn","_change_DATA_SOURCE","_updateDataSource","_change_LABELS","_applyLabelsAppearance","_change_BUILD_LAYOUT","clear","_buildLayout","_change_NODES_DRAW","element","_applyNodesAppearance","_change_LINKS_DRAW","overlayElement","d","_applyLinksAppearance","_suspend","_applyingChanges","_suspendChanges","_resume","_resumeChanges","_showTooltip","clearHover","isHovered","hover","isAdjacentNodeHovered","adjacentNodeHover","state","getState","states","overlayStates","_hitTestTargets","some","_getData","_dataSourceItems","sourceField","targetField","weightField","processedData","item","hasItemOwnProperty","Object","prototype","hasOwnProperty","bind","isString","isNumeric","_incidentOccurred","_this","availableRect","nodeOptions","layoutBuilder","computeLayout","nodePadding","padding","nodeWidth","nodeAlign","_layoutMap","nodeColors","nodeIdx","linkOptions","totalNodesNum","nodes","reduce","previousValue","currentValue","_themeManager","createPalette","useHighlight","extensionMode","count","gradient","_shadowFilter","cascadeNodes","getNextColor","nodeItem","id","linksIn","linksOut","colorMode","COLOR_MODE_GRADIENT","linearGradient","_from","_to","COLOR_MODE_SOURCE","COLOR_MODE_TARGET","linkItem","boundingRect","_boundingRect","connection","source","target","initHatching","labelOptions","availableWidth","shadowFilter","shadow","availableLabelWidth","horizontalOffset","cascades","getBBox","labelText","applyEllipsis","verticalOffset","labelOffsetY","labelOffsetX","moveLabel","overlappingBehavior","thisNode","thisBox","otherNode","otherBox","overlap","remove","filter","textData","customizeText","getLabelAttributes","text","css","_getMinSize","getAllNodes","getAllLinks","addPlugin","plugin","COLOR_MODE_NONE","routines","maxOfArray","arr","m","callback_function","v","i","getVertices","vert","indexOf","getAdjacentVertices","vertex","avert","getReverseAdjacentVertices","struct","_hasCycle","_sortedList","hasCycle","vertices","allVertices","_depthFirstSearch","reverse","averts","a","lp","incoming","outgoing","computeLongestPaths","sortedVertices","maxLP","adjacentVertex","sv","Point","_bubble_point","_pie_point","_range_symbol_point","_range_bar_point","_candlestick_point","_stock_point","_polar_point","mixins","statesConsts","SELECTED_STATE","selectedMark","HOVER_STATE","hoverMark","NORMAL_STATE","normalMark","HOVER","NORMAL","SELECTION","selection","pointTypes","chart","scatter","line","spline","stepline","stackedline","fullstackedline","stackedspline","fullstackedspline","stackedsplinearea","fullstackedsplinearea","area","splinearea","steparea","stackedarea","fullstackedarea","rangearea","bar","stackedbar","fullstackedbar","rangebar","bubble","stock","candlestick","pie","doughnut","donut","polar","isNoneMode","mode","normalizeEnum","dataItem","fullState","update","_viewCounters","dashStyle","symbolPoint","barPoint","bubblePoint","piePoint","rangeSymbolPoint","rangeBarPoint","candlestickPoint","stockPoint","polarSymbolPoint","polarBarPoint","constructor","usePointCustomOptions","customizePoint","_dataItem","_currentStyle","updateOptions","updateData","argumentWasChanged","tag","lowError","highError","aggregationInfo","deleteMarker","groups","_needDeletingOnDraw","autoHidePointMarkers","isSelected","_needClearingOnDraw","markers","_drawErrorBar","errorBars","_getViewStyle","selectionMode","hoverMode","applyView","legendCallback","getRenderer","getMarkersGroup","toForeground","setView","resetView","viewCounters","releaseHoverState","toBackground","select","selectPoint","clearSelection","deselectPoint","hoverPoint","clearPointHover","showTooltip","showPointTooltip","hidePointTooltip","_checkLabelsChanging","oldType","newType","isNewRange","isOldRange","widgetType","newPointTypeMixin","_resetType","_setType","_checkCustomize","translated","useLabelCustomOptions","methods","methodName","inVisibleArea","getCoords","getDefaultCoords","defaultX","defaultY","setDefaultCoords","getTranslator","isArgumentCorrect","_argumentChecker","isValueCorrect","valueChecker","_valueChecker","getPointRadius","getMarkerCoords","resetCorrection","resetValue","setPercentValue","correctLabelPosition","_errorBar","getTooltipFormatObject","stackPoints","tooltipFormatObject","sharedTooltipValuesArray","tooltipStackPointsFormatObject","join","stackName","getStackName","rangeText","formatRange","intervalStart","intervalEnd","aggregationInterval","setHole","holeValue","isFinite","leftHole","minLeftHole","rightHole","minRightHole","resetHoles","diameter","bubbleSize","circle","size","initialSize","sizeText","_getLabelCoordOfPosition","edgeLocation","_isNumeric","openYExist","closeYExist","_moveLabelOnCanvas","labelBBox","_getCoords","getAngles","convertPolarToXY","getCenter","maxRadius","normalizedRadius","_translateErrorBars","_checkRadiusForVisibleArea","_lowErrorCoord","_highErrorCoord","_errorBarPos","_baseErrorBarPos","_getTranslates","cosSin","_addLabelAlignmentAndOffset","graphicBBox","_isPointInVisibleArea","_getErrorBarSettings","errorBarOptions","rotate","rotateX","rotateY","businessRange","getBusinessRange","defaultRadius","middleAngleCorrection","_getErrorBarBaseEdgeLength","interval","start","val","convertXYToPolar","isBetweenAngles","phi","_scatter_series","_bar_series","_area_series","_defineProperty","key","defineProperty","enumerable","configurable","writable","barSeries","areaSeries","baseRangeSeries","areErrorBarsVisible","_createErrorBarGroup","_checkData","skippedFields","valueFields","getValueFields","getValueRangeInitialValue","_getPointDataSelector","val1Field","val2Field","tagField","getTagField","argumentField","getArgumentField","_processEmptyValue","_defaultAggregator","_aggregators","range","_ref","_data$reduce","val1","val2","rangeValue1Field","rangeValue2Field","getSeriesPairCoord","isArgument","oppositeCoord","isOpposite","coordName","minCoordName","oppositeCoordName","getPoints","p","tmpCoord","_checkAxisVisibleAreaCoord","_drawPoint","_drawnPoints","_prepareSegment","processedPoints","_processSinglePointsAreaSegment","processedMinPointsCoords","pt","bottomLine","singlePointSegment","_getDefaultSegment","segment","defaultSegment","_removeElement","_drawElement","drawnElement","_bordersGroup","_createBorderElement","border","_applyStyle","elementsGroup","_elementsGroup","bordersGroup","elements","_graphics","_updateElement","bottomLineParams","bottomBorderElement","apply","_line_series","lineSeries","chartBarSeries","polarBarSeries","_each","_noop","_calculateErrorBars","_getMainColor","_createPointStyles","_updatePointsVisibility","_getOptionsForPoint","_applyMarkerClipRect","_applyElementsClipRect","_parsePointStyle","_createLegendState","_setMarkerGroupSettings","getSizeField","sizeField","baseGetter","pointData","avg","_ref2","valueField","aggregate","_animate","lastPointIndex","labelAnimFunc","opacity","_defaultDuration","_patchMarginOptions","processBubbleSize","chartScatterSeries","_map","_isFinite","_setGroupsSettings","_legendCallback","_getOldPoint","oldPointsByArgument","_points","valueOf","adjustLabels","drawLabelsWOPoints","_extGroups","getPointsCount","_data","setMaxPointsCount","_pointsCount","_getCreatingPointOptions","dataIndex","_getPointOptions","_updateOptions","labelSpace","paintNullPoints","_createGroups","_markersGroup","pointsByArg","getPointsByArg","argumentIndex","mainSeriesColor","_parsePointOptions","_preparePointOptions","_getRangeData","_rangeData","pointOptions","mainColor","hoverStyle","selectionStyle","_getArrangeMinShownValue","total","minSegmentSize","totalMinSegmentSize","totalNotMinValues","_applyArrangeCorrection","minShownValue","isClockWise","segmentsDirection","zeroTotalCorrection","el","updatedZeroValue","_removePoint","splice","arrangePoints","originalPoints","isAllPointsNegative","len","canvas","setVisibleArea","labelRadius","_visibleArea","left","right","_applyVisibleArea","animatePoint","pointsCount","completeFunc","_animateComplete","getVisiblePoints","getPointsByKeys","arg","_forceClipping","_paneClipRectID","_widePaneClipRectID","markersGroup","_getMarkerGroupOptions","defaultStyle","defaultPositiveStyle","reductionStyle","reductionPositiveStyle","markerSettings","_createGroup","defaultPointOptions","creatingPointOptions","_predefinedPointOptions","level","prevLevelValue","openValueField","highValueField","lowValueField","closeValueField","defaultColor","innerColor","_getDefaultStyle","mainPointColor","_getReductionStyle","hatching","positiveStyle","_endUpdateData","ohlc","sizePointNormalState","usePointsToDefineAutoHiding","_object","chartAreaSeries","baseStackedSeries","_stackName","stackedBar","stack","clonePoint","clone","preparePointsForStackedAreaSegment","array","_appendInGroup","_group","seriesGroup","areaSegment","_prevSeries","forwardPoints","_calculateBezierPoints","backwardPoints","prevSeriesForwardPoints","pointByArg","_segments","_segmentByArg","prevSeriesPoints","prevSeries","getPointsByArgFromPrevSeries","_areaPointsToSplineAreaPoints","_sankey","_tooltip","_export","_title","_tracker","_tooltip2","_loading_indicator","setTooltipCustomOptions","_compileAttrs","itemOptions","itemBaseOptions","baseBorder","borderVisible","borderOpacity","Node","widget","params","widgetOffset","getRootOffset","code","title","compileAttrs","setState","adjacentLink","setAdjacentNodeHover","_eventTrigger","setHover","info","weightIn","weightOut","labelSettings","_patchFontOptions","patchFontOptions","useNodeColors","font","borderColor","compileLabelAttrs","Link","_graph","_data_validator","_weightPerPixel","_getCascadeIdx","nodeTitle","cascadesConfig","nodeInfo","c","_getInWeightForNode","w","_getOutWeightForNode","_computeCascades","maxCascade","cascade","keys","inWeight","outWeight","maxWeight","_getWeightForCascade","cascadeIdx","wMax","_getMaxWeightThroughCascades","mW","_computeNodes","_this2","rects","maxNodeNum","nodesInCascade","heightAvailable","cascadeRects","cascadeHeight","cascadeAlign","Array","isArray","sort","_sort","b","_findRectByName","_findIndexByName","_computeLinks","_this3","yOffsets","paths","out","rectsOfCascade","nodeRect","rectFrom","linksFromNode","rectTo","yOffsetFrom","yOffsetTo","in","heightFrom","heightTo","from","to","_spline","_fitAllNodesHeight","_fitNodeHeight","nodeRects","targetRect","heightOfLinksSummaryIn","heightOfLinksSummaryOut","rectLeft","rectRight","p_UpLeft","p_DownLeft","p_UpRight","p_DownRight","curve_width","linksData","incidentOccurred","validateResult","validate","error","box1","box2","sankey","_setTooltipOptions","linkTemplate","nodeTemplate","linkTooltipTemplate","_getTemplate","nodeTooltipTemplate","customizeTooltip","args","skipTemplate","generateCustomCallback","customizeNodeTooltip","defaultCustomizeNodeTooltip","customizeLinkTooltip","defaultCustomizeLinkTooltip","contentTemplate","div","templateArgs","model","container","render","enabled","html","customCallback","defaultCallback","objectInfo","res","isFunction","proto","dataKeyModifier","onNodeClick","onLinkClick","init","dataKey","Tracker","getData","e","getNode","click","eventName","event","_dataKey","extenders","_extend3","_array","_range_data_calculator","math","sum","variance","expectedValue","getMinMaxAggregator","compare","targetData","baseScatterMethods","_defaultTrackerWidth","_parseStyle","_drawSegment","styleOptions","direction","groupName","parent","_applyClearingSettings","scale","class","valueErrorBar","_errorBarsEnabled","displayMode","inArray","groupPointsByCoords","cat","pointCoord","parseInt","lineWidth","_setLabelGroupSettings","normalStyle","defaultBorderColor","defaultSize","sizeValue","containerColor","fieldsToCheck","allFieldsIsValid","field","selector","checkFields","getRangeData","valueType","hasAnimation","animationSettings","_errorBarGroup","_calculateAvgErrorBar","aggregationResult","errorBarsOptions","fusionData","calculateAvgErrorBars","_ref3","_calculateSumErrorBar","calculateSumErrorBars","_ref4","_ref5","valueArray","valueArrayLength","meanValue","processDataItem","errorBarType","floatErrorValue","parseFloat","addSubError","_i","maxSize","drawTrackers","trackers","trackersGroup","segments","_trackers","_trackersGroup","_updateTrackerElement","_drawTrackerElement","_trackersTranslator","checkSeriesViewportCoord","_getNearestPoints","nextPoint","_getBezierPoints","_getNearestPointsByCoord","allPoints","bezierPoints","nearestPoints","getNeighborPoint","minDistance","pCoord","nCoord","distance","visibleX","visibleY","getPointCenterByArg","category","pos","getCanvas","paramName","tmpPoint","_window","window","getWindow","_floor","_ceil","ceil","imageChanged","getSquareMarkerCoords","getPolygonMarkerCoords","getTriangleDownMarkerCoords","getTriangleUpMarkerCoords","floorHalfRadius","ceilHalfRadius","getCrossMarkerCoords","properValue","validateUnit","_createImageMarker","_createSymbolMarker","pointSettings","hideInsideLabel","_showForZeroValues","setFigureToDrawConnector","w2","h2","fullGraphicBBox","isInside","translates","high","low","isHighDisplayMode","isLowDisplayMode","highErrorOnly","lowErrorOnly","edgeLength","absTotal","leftHoleTotal","rightHoleTotal","valuePercent","minValuePercent","isFullStackedSeries","navigator","minTrackerSize","hasProperty","msPointerEnabled","msMaxTouchPoints","pointerEnabled","maxTouchPoints","trackerR","argTranslator","isSquare","isTriangle","lowErrorValue","highErrorValue","labelFormatObject","totalText","noErrorBar","_typeof","Symbol","iterator","scatterSeries","cache","_getRequireWildcardCache","has","get","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set","_interopRequireWildcard","WeakMap","chartSeries","polarSeries","baseBarSeriesMethods","_getAffineCoordOptions","scaleX","scaleY","_animatePoints","drawnPoints","checkInterval","_defineDrawingState","animateFunc","isArgumentAxis","getViewport","categories","inverted","markersSettings","groupSettings","argAxis","getTranslatedAngle","chartLineSeries","polarLineSeries","calculateBezierPoints","baseAreaMethods","_createMainElement","showZero","lineParams","areaParams","borderElement","borderOptions","borderStyle","_parseLineOptions","_areBordersVisible","_getTrackerSettings","_getMainPointsFromSegment","areaPoints","createAreaPoints","getAxisPosition","argAxisPosition","axisOptions","edgeOffset","getAxisShift","p1","lastSegment","_closeSegment","stepLineSeries","_calculateStepLinePoints","previousMiddlePoint","middlePoint","areaDefaultSegment","obtainCubicBezierTCoef","getLabelOrientation","invert","isDiscreteValue","isFullStacked","yCorrection","resolveLabelsOverlapping","showForZeroValues","cornerRadius","_that$getMarkerCoords","rx","ry","getGraphicSettings","_getEdgeTooltipParams","xCoord","yCoord","isPositive","invertedBusinessRange","bounds","argVisibleArea","minVal","valAxis","valIntervalName","argIntervalName","toUpperCase","isStartFromAxis","continuousRangeCalculator","createGetLogFunction","axisType","logarithmBase","log","getLog","getRangeCalculator","rangeCalculator","calculateInterval","prevValue","minInterval","minArgs","linearThreshold","getInitialRange","dataType","firstValue","processCategories","unique","calculateRangeBetweenPoints","prevPoint","bound","extraPoint","y1","y2","x1","Date","getValueForArgument","isLineSeries","toLowerCase","getViewportReducer","argumentAxis","viewport","visualRange","calculatePointBetweenPoints","getMarginOptions","add","getAddFunction","startValue","endValue","viewportFilter","getViewPortFilter","startCalc","endCalc","dictionary","getArgumentRange","argumentAxisType","i1","i2","useAggregation","argumentCalculator","valueRangeCalculator","viewportReducer","argumentType","argumentRange","reducer","getPointsInViewPort","argumentViewPortFilter","valueViewPort","valueViewPortFilter","addValue","values","isEdge","isMinValueInViewPort","isMaxValueInViewPort","addEdgePoints","pow","newX","newY","newAngle","getTangentPoint","centerPoint","tan","nextStepAngle","correctAngle","lineMethods","autoHidePointMarkersEnabled","_applyGroupSettings","animationComplete","lineElement","lastIndex","elem","_sortPoints","p2","segmentCount","defaultTrackerWidth","strokeWidthFromElements","needValueCoord","k","step","src","pointsCopy","checkExtremum","otherPointCoord","controlCoord","curPoint","leftControlX","leftControlY","rightControlX","rightControlY","x2","xCur","yCur","leftPoint","rightPoint","bezierCoordName","bezierOppositeCoordName","_loop","p0","p3","solveCubicEquation","t","seg","preparedPoints","_getTangentPoints","_getRemainingAngle","normAngle","_modifyReflectedPoint","lastPoint","differenceAngle","tangentPoints","betweenAngle","coordParam","isInsideInterval","getRadius","neighborPoints","getNeighborPoints","stepAngle","k1","b1","k2","quarter","trunc","y0","param","closed","firstPointCopy","lastPointCopy","rearwardRefPoint","forwardRefPoint","unshift","Series","_base_point","_range_series","_bubble_series","pieSeries","financialSeries","stackedSeries","seriesNS","APPLY_SELECTED","applySelected","APPLY_HOVER","applyHover","RESET_ITEM","resetItem","triggerEvent","trigger","includePointsMode","mergePointOptionsCore","extra","eventTrigger","_eventPipe","eventPipe","getValueChecker","allowNegatives","_createStyles","setClippingParams","baseId","wideId","forceClipping","clipLabels","_clipLabels","applyClip","resetClip","_createPoint","oldPoint","pointsByArgument","lastSelectionMode","pointByArgument","_deleteGroup","_checkType","_checkPolarBarType","isUpdated","_firstDrawing","_pointOptions","pane","_seriesModes","commonSeriesModes","_valueAxis","valueAxis","_argumentAxis","barOverlapGroup","ignoreEmptyPoints","_disposePoints","updateDataType","nameField","_canRenderCompleteHandle","dataSelector","itemsWithoutArgument","pointDataItem","nameFieldValue","_resample","getAggregationInfo","_useAllAggregatedPoints","aggregation","createPoints","useAllAggregatedPoints","_normalizeUsingAllAggregatedPoints","_createPoints","pointIndex","_removeOldSegments","startIndex","_drawElements","translateAllPoints","closeSegment","groupForPoint","hideLayoutLabels","_resetApplyingAnimation","hideLabels","_changeStyle","lastHoverMode","spiderWidget","seriesType","_setPointsView","view","_resetPointsView","_resetNearestPoint","_nearestPoint","_setSelectedState","_releaseSelectedState","isStackedSeries","resetApplyingAnimation","isFirstDrawing","isFinancialSeries","_canChangeView","skipPoints","updateHover","currentNearestPoint","_getMainAxisName","areLabelsVisible","maxLabelCount","customizeObject","customLabelOptions","customOptions","customizeLabel","isEmptyObject","_changeVisibility","parsedOptions","opt","labelFont","labelBorder","labelConnector","connector","backgroundAttr","backgroundColor","connectorAttr","format","argumentFormat","background","rotationAngle","wordWrap","textOverflow","cssClass","getLabelOptions","_getAggregationMethod","isDiscrete","aggregateByCategory","aggregator","method","customAggregator","calculate","ticks","addAggregatedData","processData","aggregationMethod","dataInInterval","aggregatedData","canRenderCompleteHandle","getAllPoints","_createAllAggregatedPoints","getPointByPos","setPointSelectedState","action","releasePointSelectedState","setPointHoverState","currentPoint","skipPointsCreation","argValue","notify","seriesModes","targetOptions","pointHoverMode","selectionModeOfPoint","_hoverPointHandler","notifyLegend","_clearPointHoverHandler","seriesSelectionMode","pointSelectionMode","_selectPointHandler","_deselectPointHandler","_deletePoints","_deleteTrackers","tracker","percentStick","getOpacity","getBarOverlapGroup","getPointByCoord","_format_helper","_format","getClosestCoord","closestCoord","closestDistance","getCrossCoord","indexOffset","barPointStrategy","isLabelInside","labelPoint","figure","xc","yc","prepareLabelPoints","rotatedBBox","isHorizontal","figureCenter","isRectangular","getFigureCenter","findFigurePoint","adjustPoints","lineIsVertical","symbolPointStrategy","atan2","piePointStrategy","_0","_1","isOutside","xl","xr","yt","yb","pair","point1x","point1y","point2x","point2y","labelX","degreesToRadians","selectStrategy","disposeItem","checkBackground","checkConnector","renderSettings","_container","_point","_strategy","strategy","_rowCount","_color","fieldName","fieldValue","_figure","_textContent","_insideGroup","_text","_background","_connector","_setVisibility","holdInvisible","_holdVisibility","_hide","holdVisible","_show","precision","percentPrecision","reductionValueText","formatText","align","textAlignment","_updateBackground","_getLabelVisibility","_bBoxWithoutRotation","rotateBBox","_bBox","_getConnectorPoints","_shiftBBox","maxWidth","setMaxSize","rowCount","textIsEmpty","resetEllipsis","restoreText","getPoint","_x","_y"],"mappings":"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","file":"vendors~0a80b795.e67438f992dc586fcc65.bundle.js","sourcesContent":["/**\r\n * DevExtreme (viz/series/points/pie_point.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\nvar _utils = require(\"../../core/utils\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _consts = _interopRequireDefault(require(\"../../components/consts\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar _round = Math.round;\r\nvar _sqrt = Math.sqrt;\r\nvar _acos = Math.acos;\r\nvar DEG = 180 / Math.PI;\r\nvar _abs = Math.abs;\r\nvar RADIAL_LABEL_INDENT = _consts.default.radialLabelIndent;\r\nvar _default = _extend({}, _symbol_point.default, {\r\n _updateData: function(data, argumentChanged) {\r\n var that = this;\r\n _symbol_point.default._updateData.call(this, data);\r\n if (argumentChanged || !(0, _type.isDefined)(that._visible)) {\r\n that._visible = true\r\n }\r\n that.minValue = that.initialMinValue = that.originalMinValue = (0, _type.isDefined)(data.minValue) ? data.minValue : 0\r\n },\r\n animate: function(complete, duration, delay) {\r\n var that = this;\r\n that.graphic.animate({\r\n x: that.centerX,\r\n y: that.centerY,\r\n outerRadius: that.radiusOuter,\r\n innerRadius: that.radiusInner,\r\n startAngle: that.toAngle,\r\n endAngle: that.fromAngle\r\n }, {\r\n delay: delay,\r\n partitionDuration: duration\r\n }, complete)\r\n },\r\n correctPosition: function(correction) {\r\n var that = this;\r\n that.correctRadius(correction);\r\n that.correctLabelRadius(correction.radiusOuter + RADIAL_LABEL_INDENT);\r\n that.centerX = correction.centerX;\r\n that.centerY = correction.centerY\r\n },\r\n correctRadius: function(correction) {\r\n this.radiusInner = correction.radiusInner;\r\n this.radiusOuter = correction.radiusOuter\r\n },\r\n correctLabelRadius: function(radiusLabels) {\r\n this.radiusLabels = radiusLabels\r\n },\r\n correctValue: function(correction, percent, base) {\r\n var that = this;\r\n that.value = (base || that.normalInitialValue) + correction;\r\n that.minValue = correction;\r\n that.percent = percent;\r\n that._label.setDataField(\"percent\", percent)\r\n },\r\n _updateLabelData: function() {\r\n this._label.setData(this._getLabelFormatObject())\r\n },\r\n _getShiftLabelCoords: function() {\r\n var that = this;\r\n var bBox = that._label.getBoundingRect();\r\n var coord = that._getLabelCoords(that._label);\r\n var visibleArea = that._getVisibleArea();\r\n if (that._isLabelDrawingWithoutPoints) {\r\n return that._checkLabelPosition(coord, bBox, visibleArea)\r\n } else {\r\n return that._getLabelExtraCoord(coord, that._checkVerticalLabelPosition(coord, bBox, visibleArea), bBox)\r\n }\r\n },\r\n _getLabelPosition: function(options) {\r\n return options.position\r\n },\r\n getAnnotationCoords: function(location) {\r\n return this._getElementCoords(\"edge\" !== location ? \"inside\" : \"outside\", this.radiusOuter, 0)\r\n },\r\n _getElementCoords: function(position, elementRadius, radialOffset) {\r\n var bBox = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n };\r\n var that = this;\r\n var angleFunctions = (0, _utils.getCosAndSin)(that.middleAngle);\r\n var radiusInner = that.radiusInner;\r\n var radiusOuter = that.radiusOuter;\r\n var columnsPosition = \"columns\" === position;\r\n var rad;\r\n var x;\r\n if (\"inside\" === position) {\r\n rad = radiusInner + (radiusOuter - radiusInner) / 2 + radialOffset;\r\n x = that.centerX + rad * angleFunctions.cos - bBox.width / 2\r\n } else {\r\n rad = elementRadius + radialOffset;\r\n if (angleFunctions.cos > .1 || columnsPosition && angleFunctions.cos >= 0) {\r\n x = that.centerX + rad * angleFunctions.cos\r\n } else {\r\n if (angleFunctions.cos < -.1 || columnsPosition && angleFunctions.cos < 0) {\r\n x = that.centerX + rad * angleFunctions.cos - bBox.width\r\n } else {\r\n x = that.centerX + rad * angleFunctions.cos - bBox.width / 2\r\n }\r\n }\r\n }\r\n return {\r\n x: x,\r\n y: _round(that.centerY - rad * angleFunctions.sin - bBox.height / 2)\r\n }\r\n },\r\n _getLabelCoords: function(label) {\r\n var that = this;\r\n var bBox = label.getBoundingRect();\r\n var options = label.getLayoutOptions();\r\n var position = that._getLabelPosition(options);\r\n return that._getElementCoords(position, that.radiusLabels, options.radialOffset, bBox)\r\n },\r\n _correctLabelCoord: function(coord, moveLabelsFromCenter) {\r\n var that = this;\r\n var label = that._label;\r\n var bBox = label.getBoundingRect();\r\n var labelWidth = bBox.width;\r\n var options = label.getLayoutOptions();\r\n var visibleArea = that._getVisibleArea();\r\n var rightBorderX = visibleArea.maxX - labelWidth;\r\n var leftBorderX = visibleArea.minX;\r\n var angleOfPoint = (0, _utils.normalizeAngle)(that.middleAngle);\r\n var centerX = that.centerX;\r\n var connectorOffset = options.connectorOffset;\r\n var x = coord.x;\r\n if (\"columns\" === options.position) {\r\n if (angleOfPoint <= 90 || angleOfPoint >= 270) {\r\n x = rightBorderX\r\n } else {\r\n x = leftBorderX\r\n }\r\n coord.x = x\r\n } else {\r\n if (\"inside\" !== options.position && moveLabelsFromCenter) {\r\n if (angleOfPoint <= 90 || angleOfPoint >= 270) {\r\n if (x - connectorOffset < centerX) {\r\n x = centerX + connectorOffset\r\n }\r\n } else {\r\n if (x + labelWidth + connectorOffset > centerX) {\r\n x = centerX - labelWidth - connectorOffset\r\n }\r\n }\r\n coord.x = x\r\n }\r\n }\r\n return coord\r\n },\r\n drawLabel: function() {\r\n this.translate();\r\n this._isLabelDrawingWithoutPoints = true;\r\n this._drawLabel();\r\n this._isLabelDrawingWithoutPoints = false\r\n },\r\n updateLabelCoord: function(moveLabelsFromCenter) {\r\n var that = this;\r\n var bBox = that._label.getBoundingRect();\r\n var coord = that._correctLabelCoord(bBox, moveLabelsFromCenter);\r\n coord = that._checkHorizontalLabelPosition(coord, bBox, that._getVisibleArea());\r\n that._label.shift(_round(coord.x), _round(bBox.y))\r\n },\r\n _checkVerticalLabelPosition: function(coord, box, visibleArea) {\r\n var x = coord.x;\r\n var y = coord.y;\r\n if (coord.y + box.height > visibleArea.maxY) {\r\n y = visibleArea.maxY - box.height\r\n } else {\r\n if (coord.y < visibleArea.minY) {\r\n y = visibleArea.minY\r\n }\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _getLabelExtraCoord: function(coord, shiftCoord, box) {\r\n return coord.y !== shiftCoord.y ? (0, _utils.getVerticallyShiftedAngularCoords)({\r\n x: coord.x,\r\n y: coord.y,\r\n width: box.width,\r\n height: box.height\r\n }, shiftCoord.y - coord.y, {\r\n x: this.centerX,\r\n y: this.centerY\r\n }) : coord\r\n },\r\n _checkHorizontalLabelPosition: function(coord, box, visibleArea) {\r\n var x = coord.x;\r\n var y = coord.y;\r\n if (coord.x + box.width > visibleArea.maxX) {\r\n x = visibleArea.maxX - box.width\r\n } else {\r\n if (coord.x < visibleArea.minX) {\r\n x = visibleArea.minX\r\n }\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n applyWordWrap: function(moveLabelsFromCenter) {\r\n var that = this;\r\n var label = that._label;\r\n var box = label.getBoundingRect();\r\n var visibleArea = that._getVisibleArea();\r\n var position = label.getLayoutOptions().position;\r\n var width = box.width;\r\n var rowCountChanged = false;\r\n if (\"columns\" === position && that.series.index > 0) {\r\n width = visibleArea.maxX - that.centerX - that.radiusLabels\r\n } else {\r\n if (\"inside\" === position) {\r\n if (width > visibleArea.maxX - visibleArea.minX) {\r\n width = visibleArea.maxX - visibleArea.minX\r\n }\r\n } else {\r\n if (moveLabelsFromCenter && box.x < that.centerX && box.width + box.x > that.centerX) {\r\n width = Math.floor((visibleArea.maxX - visibleArea.minX) / 2)\r\n } else {\r\n if (box.x + width > visibleArea.maxX) {\r\n width = visibleArea.maxX - box.x\r\n } else {\r\n if (box.x < visibleArea.minX) {\r\n width = box.x + width - visibleArea.minX\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (width < box.width) {\r\n rowCountChanged = label.fit(width)\r\n }\r\n return rowCountChanged\r\n },\r\n setLabelTrackerData: function() {\r\n this._label.setTrackerData(this)\r\n },\r\n _checkLabelPosition: function(coord, bBox, visibleArea) {\r\n coord = this._checkHorizontalLabelPosition(coord, bBox, visibleArea);\r\n return this._checkVerticalLabelPosition(coord, bBox, visibleArea)\r\n },\r\n _getLabelConnector: function() {\r\n var that = this;\r\n var rad = that.radiusOuter;\r\n var seriesStyle = that._options.styles.normal;\r\n var strokeWidthBy2 = seriesStyle[\"stroke-width\"] / 2;\r\n var borderWidth = that.series.getOptions().containerBackgroundColor === seriesStyle.stroke ? _round(strokeWidthBy2) : _round(-strokeWidthBy2);\r\n var angleFunctions = (0, _utils.getCosAndSin)(_round(that.middleAngle));\r\n return {\r\n x: _round(that.centerX + (rad - borderWidth) * angleFunctions.cos),\r\n y: _round(that.centerY - (rad - borderWidth) * angleFunctions.sin),\r\n angle: that.middleAngle\r\n }\r\n },\r\n _drawMarker: function(renderer, group, animationEnabled, firstDrawing) {\r\n var that = this;\r\n var radiusOuter = that.radiusOuter;\r\n var radiusInner = that.radiusInner;\r\n var fromAngle = that.fromAngle;\r\n var toAngle = that.toAngle;\r\n if (animationEnabled) {\r\n radiusInner = radiusOuter = 0;\r\n if (!firstDrawing) {\r\n fromAngle = toAngle = that.shiftedAngle\r\n }\r\n }\r\n that.graphic = renderer.arc(that.centerX, that.centerY, radiusInner, radiusOuter, toAngle, fromAngle).attr({\r\n \"stroke-linejoin\": \"round\"\r\n }).smartAttr(that._getStyle()).data({\r\n \"chart-data-point\": that\r\n }).sharp().append(group)\r\n },\r\n getTooltipParams: function() {\r\n var that = this;\r\n var angleFunctions = (0, _utils.getCosAndSin)(that.middleAngle);\r\n var radiusInner = that.radiusInner;\r\n var radiusOuter = that.radiusOuter;\r\n return {\r\n x: that.centerX + (radiusInner + (radiusOuter - radiusInner) / 2) * angleFunctions.cos,\r\n y: that.centerY - (radiusInner + (radiusOuter - radiusInner) / 2) * angleFunctions.sin,\r\n offset: 0\r\n }\r\n },\r\n _translate: function() {\r\n var that = this;\r\n var angle = that.shiftedAngle || 0;\r\n var value = that.value;\r\n var minValue = that.minValue;\r\n var translator = that._getValTranslator();\r\n that.fromAngle = translator.translate(minValue) + angle;\r\n that.toAngle = translator.translate(value) + angle;\r\n that.middleAngle = translator.translate((value - minValue) / 2 + minValue) + angle;\r\n if (!that.isVisible()) {\r\n that.middleAngle = that.toAngle = that.fromAngle = that.fromAngle || angle\r\n }\r\n },\r\n getMarkerVisibility: function() {\r\n return true\r\n },\r\n _updateMarker: function(animationEnabled, style, _, callback) {\r\n var that = this;\r\n if (!animationEnabled) {\r\n style = _extend({\r\n x: that.centerX,\r\n y: that.centerY,\r\n outerRadius: that.radiusOuter,\r\n innerRadius: that.radiusInner,\r\n startAngle: that.toAngle,\r\n endAngle: that.fromAngle\r\n }, style)\r\n }\r\n that.graphic.smartAttr(style).sharp();\r\n callback && callback()\r\n },\r\n getLegendStyles: function() {\r\n return this._styles.legendStyles\r\n },\r\n isInVisibleArea: function() {\r\n return true\r\n },\r\n hide: function() {\r\n var that = this;\r\n if (that._visible) {\r\n that._visible = false;\r\n that.hideTooltip();\r\n that._options.visibilityChanged()\r\n }\r\n },\r\n show: function() {\r\n var that = this;\r\n if (!that._visible) {\r\n that._visible = true;\r\n that._options.visibilityChanged()\r\n }\r\n },\r\n setInvisibility: function() {\r\n this._label.draw(false)\r\n },\r\n isVisible: function() {\r\n return this._visible\r\n },\r\n _getFormatObject: function(tooltip) {\r\n var formatObject = _symbol_point.default._getFormatObject.call(this, tooltip);\r\n var percent = this.percent;\r\n formatObject.percent = percent;\r\n formatObject.percentText = tooltip.formatValue(percent, \"percent\");\r\n return formatObject\r\n },\r\n getColor: function() {\r\n return this._styles.normal.fill\r\n },\r\n coordsIn: function(x, y) {\r\n var that = this;\r\n var lx = x - that.centerX;\r\n var ly = y - that.centerY;\r\n var r = _sqrt(lx * lx + ly * ly);\r\n var fromAngle = that.fromAngle % 360;\r\n var toAngle = that.toAngle % 360;\r\n var angle;\r\n if (r < that.radiusInner || r > that.radiusOuter || 0 === r) {\r\n return false\r\n }\r\n angle = _acos(lx / r) * DEG * (ly > 0 ? -1 : 1);\r\n if (angle < 0) {\r\n angle += 360\r\n }\r\n if (fromAngle === toAngle && _abs(that.toAngle - that.fromAngle) > 1e-4) {\r\n return true\r\n } else {\r\n return fromAngle >= toAngle ? angle <= fromAngle && angle >= toAngle : !(angle >= fromAngle && angle <= toAngle)\r\n }\r\n }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/range_symbol_point.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _label = require(\"./label\");\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\nvar _type = require(\"../../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar _math = Math;\r\nvar _abs = _math.abs;\r\nvar _min = _math.min;\r\nvar _max = _math.max;\r\nvar _round = _math.round;\r\nvar DEFAULT_IMAGE_WIDTH = 20;\r\nvar DEFAULT_IMAGE_HEIGHT = 20;\r\nvar _default = _extend({}, _symbol_point.default, {\r\n deleteLabel: function() {\r\n var that = this;\r\n that._topLabel.dispose();\r\n that._topLabel = null;\r\n that._bottomLabel.dispose();\r\n that._bottomLabel = null\r\n },\r\n hideMarker: function(type) {\r\n var graphic = this.graphic;\r\n var marker = graphic && graphic[type + \"Marker\"];\r\n var label = this[\"_\" + type + \"Label\"];\r\n if (marker && \"hidden\" !== marker.attr(\"visibility\")) {\r\n marker.attr({\r\n visibility: \"hidden\"\r\n })\r\n }\r\n label.draw(false)\r\n },\r\n setInvisibility: function() {\r\n this.hideMarker(\"top\");\r\n this.hideMarker(\"bottom\")\r\n },\r\n clearVisibility: function() {\r\n var that = this;\r\n var graphic = that.graphic;\r\n var topMarker = graphic && graphic.topMarker;\r\n var bottomMarker = graphic && graphic.bottomMarker;\r\n if (topMarker && topMarker.attr(\"visibility\")) {\r\n topMarker.attr({\r\n visibility: null\r\n })\r\n }\r\n if (bottomMarker && bottomMarker.attr(\"visibility\")) {\r\n bottomMarker.attr({\r\n visibility: null\r\n })\r\n }\r\n },\r\n clearMarker: function() {\r\n var that = this;\r\n var graphic = that.graphic;\r\n var topMarker = graphic && graphic.topMarker;\r\n var bottomMarker = graphic && graphic.bottomMarker;\r\n var emptySettings = that._emptySettings;\r\n topMarker && topMarker.attr(emptySettings);\r\n bottomMarker && bottomMarker.attr(emptySettings)\r\n },\r\n _getLabelPosition: function(markerType) {\r\n var position;\r\n var labelsInside = \"inside\" === this._options.label.position;\r\n if (!this._options.rotated) {\r\n position = \"top\" === markerType ^ labelsInside ? \"top\" : \"bottom\"\r\n } else {\r\n position = \"top\" === markerType ^ labelsInside ? \"right\" : \"left\"\r\n }\r\n return position\r\n },\r\n _getLabelMinFormatObject: function() {\r\n var that = this;\r\n return {\r\n index: 0,\r\n argument: that.initialArgument,\r\n value: that.initialMinValue,\r\n seriesName: that.series.name,\r\n originalValue: that.originalMinValue,\r\n originalArgument: that.originalArgument,\r\n point: that\r\n }\r\n },\r\n _updateLabelData: function() {\r\n var maxFormatObject = this._getLabelFormatObject();\r\n maxFormatObject.index = 1;\r\n this._topLabel.setData(maxFormatObject);\r\n this._bottomLabel.setData(this._getLabelMinFormatObject())\r\n },\r\n _updateLabelOptions: function() {\r\n var that = this;\r\n var options = this._options.label;\r\n (!that._topLabel || !that._bottomLabel) && that._createLabel();\r\n that._topLabel.setOptions(options);\r\n that._bottomLabel.setOptions(options)\r\n },\r\n _createLabel: function() {\r\n var options = {\r\n renderer: this.series._renderer,\r\n labelsGroup: this.series._labelsGroup,\r\n point: this\r\n };\r\n this._topLabel = new _label.Label(options);\r\n this._bottomLabel = new _label.Label(options)\r\n },\r\n _getGraphicBBox: function(location) {\r\n var options = this._options;\r\n var images = this._getImage(options.image);\r\n var image = \"top\" === location ? this._checkImage(images.top) : this._checkImage(images.bottom);\r\n var bBox;\r\n var coord = this._getPositionFromLocation(location);\r\n if (options.visible) {\r\n bBox = image ? this._getImageBBox(coord.x, coord.y) : this._getSymbolBBox(coord.x, coord.y, options.styles.normal.r)\r\n } else {\r\n bBox = {\r\n x: coord.x,\r\n y: coord.y,\r\n width: 0,\r\n height: 0\r\n }\r\n }\r\n return bBox\r\n },\r\n _getPositionFromLocation: function(location) {\r\n var x;\r\n var y;\r\n var isTop = \"top\" === location;\r\n if (!this._options.rotated) {\r\n x = this.x;\r\n y = isTop ? _min(this.y, this.minY) : _max(this.y, this.minY)\r\n } else {\r\n x = isTop ? _max(this.x, this.minX) : _min(this.x, this.minX);\r\n y = this.y\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _checkOverlay: function(bottomCoord, topCoord, topValue) {\r\n return bottomCoord < topCoord + topValue\r\n },\r\n _getOverlayCorrections: function(topCoords, bottomCoords) {\r\n var rotated = this._options.rotated;\r\n var coordSelector = !rotated ? \"y\" : \"x\";\r\n var valueSelector = !rotated ? \"height\" : \"width\";\r\n var visibleArea = this.series.getValueAxis().getVisibleArea();\r\n var minBound = visibleArea[0];\r\n var maxBound = visibleArea[1];\r\n var delta = _round((topCoords[coordSelector] + topCoords[valueSelector] - bottomCoords[coordSelector]) / 2);\r\n var coord1 = topCoords[coordSelector] - delta;\r\n var coord2 = bottomCoords[coordSelector] + delta;\r\n if (coord1 < minBound) {\r\n delta = minBound - coord1;\r\n coord1 += delta;\r\n coord2 += delta\r\n } else {\r\n if (coord2 + bottomCoords[valueSelector] > maxBound) {\r\n delta = maxBound - coord2 - bottomCoords[valueSelector];\r\n coord1 += delta;\r\n coord2 += delta\r\n }\r\n }\r\n return {\r\n coord1: coord1,\r\n coord2: coord2\r\n }\r\n },\r\n _checkLabelsOverlay: function(topLocation) {\r\n var that = this;\r\n var topCoords = that._topLabel.getBoundingRect();\r\n var bottomCoords = that._bottomLabel.getBoundingRect();\r\n var corrections = {};\r\n if (!that._options.rotated) {\r\n if (\"top\" === topLocation) {\r\n if (this._checkOverlay(bottomCoords.y, topCoords.y, topCoords.height)) {\r\n corrections = this._getOverlayCorrections(topCoords, bottomCoords);\r\n that._topLabel.shift(topCoords.x, corrections.coord1);\r\n that._bottomLabel.shift(bottomCoords.x, corrections.coord2)\r\n }\r\n } else {\r\n if (this._checkOverlay(topCoords.y, bottomCoords.y, bottomCoords.height)) {\r\n corrections = this._getOverlayCorrections(bottomCoords, topCoords);\r\n that._topLabel.shift(topCoords.x, corrections.coord2);\r\n that._bottomLabel.shift(bottomCoords.x, corrections.coord1)\r\n }\r\n }\r\n } else {\r\n if (\"top\" === topLocation) {\r\n if (this._checkOverlay(topCoords.x, bottomCoords.x, bottomCoords.width)) {\r\n corrections = this._getOverlayCorrections(bottomCoords, topCoords);\r\n that._topLabel.shift(corrections.coord2, topCoords.y);\r\n that._bottomLabel.shift(corrections.coord1, bottomCoords.y)\r\n }\r\n } else {\r\n if (this._checkOverlay(bottomCoords.x, topCoords.x, topCoords.width)) {\r\n corrections = this._getOverlayCorrections(topCoords, bottomCoords);\r\n that._topLabel.shift(corrections.coord1, topCoords.y);\r\n that._bottomLabel.shift(corrections.coord2, bottomCoords.y)\r\n }\r\n }\r\n }\r\n },\r\n _drawLabel: function() {\r\n var that = this;\r\n var labels = [];\r\n var notInverted = that._options.rotated ? that.x >= that.minX : that.y < that.minY;\r\n var customVisibility = that._getCustomLabelVisibility();\r\n var topLabel = that._topLabel;\r\n var bottomLabel = that._bottomLabel;\r\n topLabel.pointPosition = notInverted ? \"top\" : \"bottom\";\r\n bottomLabel.pointPosition = notInverted ? \"bottom\" : \"top\";\r\n if ((that.series.getLabelVisibility() || customVisibility) && that.hasValue() && false !== customVisibility) {\r\n false !== that.visibleTopMarker && labels.push(topLabel);\r\n false !== that.visibleBottomMarker && labels.push(bottomLabel);\r\n (0, _iterator.each)(labels, function(_, label) {\r\n label.draw(true)\r\n });\r\n that._checkLabelsOverlay(that._topLabel.pointPosition)\r\n } else {\r\n topLabel.draw(false);\r\n bottomLabel.draw(false)\r\n }\r\n },\r\n _getImage: function(imageOption) {\r\n var image = {};\r\n if ((0, _type.isDefined)(imageOption)) {\r\n if (\"string\" === typeof imageOption) {\r\n image.top = image.bottom = imageOption\r\n } else {\r\n image.top = {\r\n url: \"string\" === typeof imageOption.url ? imageOption.url : imageOption.url && imageOption.url.rangeMaxPoint,\r\n width: \"number\" === typeof imageOption.width ? imageOption.width : imageOption.width && imageOption.width.rangeMaxPoint,\r\n height: \"number\" === typeof imageOption.height ? imageOption.height : imageOption.height && imageOption.height.rangeMaxPoint\r\n };\r\n image.bottom = {\r\n url: \"string\" === typeof imageOption.url ? imageOption.url : imageOption.url && imageOption.url.rangeMinPoint,\r\n width: \"number\" === typeof imageOption.width ? imageOption.width : imageOption.width && imageOption.width.rangeMinPoint,\r\n height: \"number\" === typeof imageOption.height ? imageOption.height : imageOption.height && imageOption.height.rangeMinPoint\r\n }\r\n }\r\n }\r\n return image\r\n },\r\n _checkSymbol: function(oldOptions, newOptions) {\r\n var that = this;\r\n var oldSymbol = oldOptions.symbol;\r\n var newSymbol = newOptions.symbol;\r\n var symbolChanged = \"circle\" === oldSymbol && \"circle\" !== newSymbol || \"circle\" !== oldSymbol && \"circle\" === newSymbol;\r\n var oldImages = that._getImage(oldOptions.image);\r\n var newImages = that._getImage(newOptions.image);\r\n var topImageChanged = that._checkImage(oldImages.top) !== that._checkImage(newImages.top);\r\n var bottomImageChanged = that._checkImage(oldImages.bottom) !== that._checkImage(newImages.bottom);\r\n return symbolChanged || topImageChanged || bottomImageChanged\r\n },\r\n _getSettingsForTwoMarkers: function(style) {\r\n var that = this;\r\n var options = that._options;\r\n var settings = {};\r\n var x = options.rotated ? _min(that.x, that.minX) : that.x;\r\n var y = options.rotated ? that.y : _min(that.y, that.minY);\r\n var radius = style.r;\r\n var points = that._populatePointShape(options.symbol, radius);\r\n settings.top = _extend({\r\n translateX: x + that.width,\r\n translateY: y,\r\n r: radius\r\n }, style);\r\n settings.bottom = _extend({\r\n translateX: x,\r\n translateY: y + that.height,\r\n r: radius\r\n }, style);\r\n if (points) {\r\n settings.top.points = settings.bottom.points = points\r\n }\r\n return settings\r\n },\r\n _hasGraphic: function() {\r\n return this.graphic && this.graphic.topMarker && this.graphic.bottomMarker\r\n },\r\n _drawOneMarker: function(renderer, markerType, imageSettings, settings) {\r\n var that = this;\r\n var graphic = that.graphic;\r\n if (graphic[markerType]) {\r\n that._updateOneMarker(markerType, settings)\r\n } else {\r\n graphic[markerType] = that._createMarker(renderer, graphic, imageSettings, settings)\r\n }\r\n },\r\n _drawMarker: function(renderer, group, animationEnabled, firstDrawing, style) {\r\n var that = this;\r\n var settings = that._getSettingsForTwoMarkers(style || that._getStyle());\r\n var image = that._getImage(that._options.image);\r\n if (that._checkImage(image.top)) {\r\n settings.top = that._getImageSettings(settings.top, image.top)\r\n }\r\n if (that._checkImage(image.bottom)) {\r\n settings.bottom = that._getImageSettings(settings.bottom, image.bottom)\r\n }\r\n that.graphic = that.graphic || renderer.g().append(group);\r\n that.visibleTopMarker && that._drawOneMarker(renderer, \"topMarker\", image.top, settings.top);\r\n that.visibleBottomMarker && that._drawOneMarker(renderer, \"bottomMarker\", image.bottom, settings.bottom)\r\n },\r\n _getSettingsForTracker: function(radius) {\r\n var that = this;\r\n var rotated = that._options.rotated;\r\n return {\r\n translateX: rotated ? _min(that.x, that.minX) - radius : that.x - radius,\r\n translateY: rotated ? that.y - radius : _min(that.y, that.minY) - radius,\r\n width: that.width + 2 * radius,\r\n height: that.height + 2 * radius\r\n }\r\n },\r\n isInVisibleArea: function() {\r\n var that = this;\r\n var rotated = that._options.rotated;\r\n var argument = !rotated ? that.x : that.y;\r\n var maxValue = !rotated ? _max(that.minY, that.y) : _max(that.minX, that.x);\r\n var minValue = !rotated ? _min(that.minY, that.y) : _min(that.minX, that.x);\r\n var tmp;\r\n var visibleTopMarker = true;\r\n var visibleBottomMarker = true;\r\n var visibleRangeArea = true;\r\n var visibleArgArea = that.series.getArgumentAxis().getVisibleArea();\r\n var visibleValArea = that.series.getValueAxis().getVisibleArea();\r\n var notVisibleByArg = visibleArgArea[1] < argument || visibleArgArea[0] > argument;\r\n var notVisibleByVal = visibleValArea[0] > minValue && visibleValArea[0] > maxValue || visibleValArea[1] < minValue && visibleValArea[1] < maxValue;\r\n if (notVisibleByArg || notVisibleByVal) {\r\n visibleTopMarker = visibleBottomMarker = visibleRangeArea = false\r\n } else {\r\n visibleTopMarker = visibleValArea[0] <= minValue && visibleValArea[1] > minValue;\r\n visibleBottomMarker = visibleValArea[0] < maxValue && visibleValArea[1] >= maxValue;\r\n if (rotated) {\r\n tmp = visibleTopMarker;\r\n visibleTopMarker = visibleBottomMarker;\r\n visibleBottomMarker = tmp\r\n }\r\n }\r\n that.visibleTopMarker = visibleTopMarker;\r\n that.visibleBottomMarker = visibleBottomMarker;\r\n return visibleRangeArea\r\n },\r\n getTooltipParams: function() {\r\n var that = this;\r\n var x;\r\n var y;\r\n var rotated = that._options.rotated;\r\n var minValue = !rotated ? _min(that.y, that.minY) : _min(that.x, that.minX);\r\n var side = !rotated ? \"height\" : \"width\";\r\n var visibleArea = that._getVisibleArea();\r\n var minVisible = rotated ? visibleArea.minX : visibleArea.minY;\r\n var maxVisible = rotated ? visibleArea.maxX : visibleArea.maxY;\r\n var min = _max(minVisible, minValue);\r\n var max = _min(maxVisible, minValue + that[side]);\r\n if (!rotated) {\r\n x = that.x;\r\n y = min + (max - min) / 2\r\n } else {\r\n y = that.y;\r\n x = min + (max - min) / 2\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n offset: 0\r\n }\r\n },\r\n _translate: function() {\r\n var that = this;\r\n var rotated = that._options.rotated;\r\n _symbol_point.default._translate.call(that);\r\n that.height = rotated ? 0 : _abs(that.minY - that.y);\r\n that.width = rotated ? _abs(that.x - that.minX) : 0\r\n },\r\n hasCoords: function() {\r\n return _symbol_point.default.hasCoords.call(this) && !(null === this.minX || null === this.minY)\r\n },\r\n _updateData: function(data) {\r\n var that = this;\r\n _symbol_point.default._updateData.call(that, data);\r\n that.minValue = that.initialMinValue = that.originalMinValue = data.minValue\r\n },\r\n _getImageSettings: function(settings, image) {\r\n return {\r\n href: image.url || image.toString(),\r\n width: image.width || DEFAULT_IMAGE_WIDTH,\r\n height: image.height || DEFAULT_IMAGE_HEIGHT,\r\n translateX: settings.translateX,\r\n translateY: settings.translateY\r\n }\r\n },\r\n getCrosshairData: function(x, y) {\r\n var that = this;\r\n var rotated = that._options.rotated;\r\n var minX = that.minX;\r\n var minY = that.minY;\r\n var vx = that.vx;\r\n var vy = that.vy;\r\n var value = that.value;\r\n var minValue = that.minValue;\r\n var argument = that.argument;\r\n var coords = {\r\n axis: that.series.axis,\r\n x: vx,\r\n y: vy,\r\n yValue: value,\r\n xValue: argument\r\n };\r\n if (rotated) {\r\n coords.yValue = argument;\r\n if (_abs(vx - x) < _abs(minX - x)) {\r\n coords.xValue = value\r\n } else {\r\n coords.x = minX;\r\n coords.xValue = minValue\r\n }\r\n } else {\r\n if (_abs(vy - y) >= _abs(minY - y)) {\r\n coords.y = minY;\r\n coords.yValue = minValue\r\n }\r\n }\r\n return coords\r\n },\r\n _updateOneMarker: function(markerType, settings) {\r\n this.graphic && this.graphic[markerType] && this.graphic[markerType].attr(settings)\r\n },\r\n _updateMarker: function(animationEnabled, style) {\r\n this._drawMarker(void 0, void 0, false, false, style)\r\n },\r\n _getFormatObject: function(tooltip) {\r\n var that = this;\r\n var initialMinValue = that.initialMinValue;\r\n var initialValue = that.initialValue;\r\n var initialArgument = that.initialArgument;\r\n var minValue = tooltip.formatValue(initialMinValue);\r\n var value = tooltip.formatValue(initialValue);\r\n return {\r\n argument: initialArgument,\r\n argumentText: tooltip.formatValue(initialArgument, \"argument\"),\r\n valueText: minValue + \" - \" + value,\r\n rangeValue1Text: minValue,\r\n rangeValue2Text: value,\r\n rangeValue1: initialMinValue,\r\n rangeValue2: initialValue,\r\n seriesName: that.series.name,\r\n point: that,\r\n originalMinValue: that.originalMinValue,\r\n originalValue: that.originalValue,\r\n originalArgument: that.originalArgument\r\n }\r\n },\r\n getLabel: function() {\r\n return [this._topLabel, this._bottomLabel]\r\n },\r\n getLabels: function() {\r\n return [this._topLabel, this._bottomLabel]\r\n },\r\n getBoundingRect: _common.noop,\r\n coordsIn: function(x, y) {\r\n var trackerRadius = this._storeTrackerR();\r\n var xCond = x >= this.x - trackerRadius && x <= this.x + trackerRadius;\r\n var yCond = y >= this.y - trackerRadius && y <= this.y + trackerRadius;\r\n if (this._options.rotated) {\r\n return yCond && (xCond || x >= this.minX - trackerRadius && x <= this.minX + trackerRadius)\r\n } else {\r\n return xCond && (yCond || y >= this.minY - trackerRadius && y <= this.minY + trackerRadius)\r\n }\r\n },\r\n getMaxValue: function() {\r\n if (\"discrete\" !== this.series.valueAxisType) {\r\n return this.minValue > this.value ? this.minValue : this.value\r\n }\r\n return this.value\r\n },\r\n getMinValue: function() {\r\n if (\"discrete\" !== this.series.valueAxisType) {\r\n return this.minValue < this.value ? this.minValue : this.value\r\n }\r\n return this.minValue\r\n }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/candlestick_point.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\nvar _bar_point = _interopRequireDefault(require(\"./bar_point\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _math = Math;\r\nvar _abs = _math.abs;\r\nvar _min = _math.min;\r\nvar _max = _math.max;\r\nvar _round = _math.round;\r\nvar DEFAULT_FINANCIAL_TRACKER_MARGIN = 2;\r\nvar _default = (0, _extend2.extend)({}, _bar_point.default, {\r\n _getContinuousPoints: function(openCoord, closeCoord) {\r\n var that = this;\r\n var x = that.x;\r\n var createPoint = that._options.rotated ? function(x, y) {\r\n return [y, x]\r\n } : function(x, y) {\r\n return [x, y]\r\n };\r\n var width = that.width;\r\n var highCoord = that.highY;\r\n var max = _abs(highCoord - openCoord) < _abs(highCoord - closeCoord) ? openCoord : closeCoord;\r\n var min = max === closeCoord ? openCoord : closeCoord;\r\n var points;\r\n if (min === max) {\r\n points = [].concat(createPoint(x, that.highY)).concat(createPoint(x, that.lowY)).concat(createPoint(x, that.closeY)).concat(createPoint(x - width / 2, that.closeY)).concat(createPoint(x + width / 2, that.closeY)).concat(createPoint(x, that.closeY))\r\n } else {\r\n points = [].concat(createPoint(x, that.highY)).concat(createPoint(x, max)).concat(createPoint(x + width / 2, max)).concat(createPoint(x + width / 2, min)).concat(createPoint(x, min)).concat(createPoint(x, that.lowY)).concat(createPoint(x, min)).concat(createPoint(x - width / 2, min)).concat(createPoint(x - width / 2, max)).concat(createPoint(x, max))\r\n }\r\n return points\r\n },\r\n _getCrockPoints: function(y) {\r\n var that = this;\r\n var x = that.x;\r\n var createPoint = that._options.rotated ? function(x, y) {\r\n return [y, x]\r\n } : function(x, y) {\r\n return [x, y]\r\n };\r\n return [].concat(createPoint(x, that.highY)).concat(createPoint(x, that.lowY)).concat(createPoint(x, y)).concat(createPoint(x - that.width / 2, y)).concat(createPoint(x + that.width / 2, y)).concat(createPoint(x, y))\r\n },\r\n _getPoints: function() {\r\n var that = this;\r\n var points;\r\n var closeCoord = that.closeY;\r\n var openCoord = that.openY;\r\n if (null !== closeCoord && null !== openCoord) {\r\n points = that._getContinuousPoints(openCoord, closeCoord)\r\n } else {\r\n if (openCoord === closeCoord) {\r\n points = [that.x, that.highY, that.x, that.lowY]\r\n } else {\r\n points = that._getCrockPoints(null !== openCoord ? openCoord : closeCoord)\r\n }\r\n }\r\n return points\r\n },\r\n getColor: function() {\r\n var that = this;\r\n return that._isReduction ? that._options.reduction.color : that._styles.normal.stroke || that.series.getColor()\r\n },\r\n _drawMarkerInGroup: function(group, attributes, renderer) {\r\n var that = this;\r\n that.graphic = renderer.path(that._getPoints(), \"area\").attr({\r\n \"stroke-linecap\": \"square\"\r\n }).attr(attributes).data({\r\n \"chart-data-point\": that\r\n }).sharp().append(group)\r\n },\r\n _fillStyle: function() {\r\n var that = this;\r\n var styles = that._options.styles;\r\n if (that._isReduction && that._isPositive) {\r\n that._styles = styles.reductionPositive\r\n } else {\r\n if (that._isReduction) {\r\n that._styles = styles.reduction\r\n } else {\r\n if (that._isPositive) {\r\n that._styles = styles.positive\r\n } else {\r\n that._styles = styles\r\n }\r\n }\r\n }\r\n },\r\n _getMinTrackerWidth: function() {\r\n return 2 + 2 * this._styles.normal[\"stroke-width\"]\r\n },\r\n correctCoordinates: function(correctOptions) {\r\n var minWidth = this._getMinTrackerWidth();\r\n var maxWidth = 10;\r\n var width = correctOptions.width;\r\n width = width < minWidth ? minWidth : width > maxWidth ? maxWidth : width;\r\n this.width = width + width % 2;\r\n this.xCorrection = correctOptions.offset\r\n },\r\n _getMarkerGroup: function(group) {\r\n var that = this;\r\n var markerGroup;\r\n if (that._isReduction && that._isPositive) {\r\n markerGroup = group.reductionPositiveMarkersGroup\r\n } else {\r\n if (that._isReduction) {\r\n markerGroup = group.reductionMarkersGroup\r\n } else {\r\n if (that._isPositive) {\r\n markerGroup = group.defaultPositiveMarkersGroup\r\n } else {\r\n markerGroup = group.defaultMarkersGroup\r\n }\r\n }\r\n }\r\n return markerGroup\r\n },\r\n _drawMarker: function(renderer, group) {\r\n this._drawMarkerInGroup(this._getMarkerGroup(group), this._getStyle(), renderer)\r\n },\r\n _getSettingsForTracker: function() {\r\n var that = this;\r\n var highY = that.highY;\r\n var lowY = that.lowY;\r\n var rotated = that._options.rotated;\r\n var x;\r\n var y;\r\n var width;\r\n var height;\r\n if (highY === lowY) {\r\n highY = rotated ? highY + DEFAULT_FINANCIAL_TRACKER_MARGIN : highY - DEFAULT_FINANCIAL_TRACKER_MARGIN;\r\n lowY = rotated ? lowY - DEFAULT_FINANCIAL_TRACKER_MARGIN : lowY + DEFAULT_FINANCIAL_TRACKER_MARGIN\r\n }\r\n if (rotated) {\r\n x = _min(lowY, highY);\r\n y = that.x - that.width / 2;\r\n width = _abs(lowY - highY);\r\n height = that.width\r\n } else {\r\n x = that.x - that.width / 2;\r\n y = _min(lowY, highY);\r\n width = that.width;\r\n height = _abs(lowY - highY)\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n width: width,\r\n height: height\r\n }\r\n },\r\n _getGraphicBBox: function(location) {\r\n var that = this;\r\n var rotated = that._options.rotated;\r\n var x = that.x;\r\n var width = that.width;\r\n var lowY = that.lowY;\r\n var highY = that.highY;\r\n if (location) {\r\n var valVisibleArea = that.series.getValueAxis().getVisibleArea();\r\n highY = that._truncateCoord(highY, valVisibleArea);\r\n lowY = that._truncateCoord(lowY, valVisibleArea)\r\n }\r\n var bBox = {\r\n x: !rotated ? x - _round(width / 2) : lowY,\r\n y: !rotated ? highY : x - _round(width / 2),\r\n width: !rotated ? width : highY - lowY,\r\n height: !rotated ? lowY - highY : width\r\n };\r\n if (location) {\r\n var isTop = \"top\" === location;\r\n if (!this._options.rotated) {\r\n bBox.y = isTop ? bBox.y : bBox.y + bBox.height;\r\n bBox.height = 0\r\n } else {\r\n bBox.x = isTop ? bBox.x + bBox.width : bBox.x;\r\n bBox.width = 0\r\n }\r\n }\r\n return bBox\r\n },\r\n getTooltipParams: function(location) {\r\n var that = this;\r\n if (that.graphic) {\r\n var minValue = _min(that.lowY, that.highY);\r\n var maxValue = _max(that.lowY, that.highY);\r\n var visibleArea = that._getVisibleArea();\r\n var rotated = that._options.rotated;\r\n var minVisible = rotated ? visibleArea.minX : visibleArea.minY;\r\n var maxVisible = rotated ? visibleArea.maxX : visibleArea.maxY;\r\n var min = _max(minVisible, minValue);\r\n var max = _min(maxVisible, maxValue);\r\n var centerCoord = that.getCenterCoord();\r\n if (\"edge\" === location) {\r\n centerCoord[rotated ? \"x\" : \"y\"] = rotated ? max : min\r\n }\r\n centerCoord.offset = 0;\r\n return centerCoord\r\n }\r\n },\r\n getCenterCoord: function() {\r\n if (this.graphic) {\r\n var that = this;\r\n var x;\r\n var y;\r\n var minValue = _min(that.lowY, that.highY);\r\n var maxValue = _max(that.lowY, that.highY);\r\n var visibleArea = that._getVisibleArea();\r\n var rotated = that._options.rotated;\r\n var minVisible = rotated ? visibleArea.minX : visibleArea.minY;\r\n var maxVisible = rotated ? visibleArea.maxX : visibleArea.maxY;\r\n var min = _max(minVisible, minValue);\r\n var max = _min(maxVisible, maxValue);\r\n var center = min + (max - min) / 2;\r\n if (rotated) {\r\n y = that.x;\r\n x = center\r\n } else {\r\n x = that.x;\r\n y = center\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n }\r\n },\r\n hasValue: function() {\r\n return null !== this.highValue && null !== this.lowValue\r\n },\r\n hasCoords: function() {\r\n return null !== this.x && null !== this.lowY && null !== this.highY\r\n },\r\n _translate: function() {\r\n var that = this;\r\n var rotated = that._options.rotated;\r\n var valTranslator = that._getValTranslator();\r\n var x = that._getArgTranslator().translate(that.argument);\r\n that.vx = that.vy = that.x = null === x ? x : x + (that.xCorrection || 0);\r\n that.openY = null !== that.openValue ? valTranslator.translate(that.openValue) : null;\r\n that.highY = valTranslator.translate(that.highValue);\r\n that.lowY = valTranslator.translate(that.lowValue);\r\n that.closeY = null !== that.closeValue ? valTranslator.translate(that.closeValue) : null;\r\n var centerValue = _min(that.lowY, that.highY) + _abs(that.lowY - that.highY) / 2;\r\n that._calculateVisibility(!rotated ? that.x : centerValue, !rotated ? centerValue : that.x)\r\n },\r\n getCrosshairData: function(x, y) {\r\n var that = this;\r\n var rotated = that._options.rotated;\r\n var origY = rotated ? x : y;\r\n var yValue;\r\n var argument = that.argument;\r\n var coords;\r\n var coord = \"low\";\r\n if (_abs(that.lowY - origY) < _abs(that.closeY - origY)) {\r\n yValue = that.lowY\r\n } else {\r\n yValue = that.closeY;\r\n coord = \"close\"\r\n }\r\n if (_abs(yValue - origY) >= _abs(that.openY - origY)) {\r\n yValue = that.openY;\r\n coord = \"open\"\r\n }\r\n if (_abs(yValue - origY) >= _abs(that.highY - origY)) {\r\n yValue = that.highY;\r\n coord = \"high\"\r\n }\r\n if (rotated) {\r\n coords = {\r\n y: that.vy,\r\n x: yValue,\r\n xValue: that[coord + \"Value\"],\r\n yValue: argument\r\n }\r\n } else {\r\n coords = {\r\n x: that.vx,\r\n y: yValue,\r\n xValue: argument,\r\n yValue: that[coord + \"Value\"]\r\n }\r\n }\r\n coords.axis = that.series.axis;\r\n return coords\r\n },\r\n _updateData: function(data) {\r\n var that = this;\r\n var label = that._label;\r\n var reductionColor = this._options.reduction.color;\r\n that.value = that.initialValue = data.reductionValue;\r\n that.originalValue = data.value;\r\n that.lowValue = that.originalLowValue = data.lowValue;\r\n that.highValue = that.originalHighValue = data.highValue;\r\n that.openValue = that.originalOpenValue = data.openValue;\r\n that.closeValue = that.originalCloseValue = data.closeValue;\r\n that._isPositive = data.openValue < data.closeValue;\r\n that._isReduction = data.isReduction;\r\n if (that._isReduction) {\r\n label.setColor(reductionColor)\r\n }\r\n },\r\n _updateMarker: function(animationEnabled, style, group) {\r\n var that = this;\r\n var graphic = that.graphic;\r\n graphic.attr({\r\n points: that._getPoints()\r\n }).smartAttr(style).sharp();\r\n group && graphic.append(that._getMarkerGroup(group))\r\n },\r\n _getLabelFormatObject: function() {\r\n var that = this;\r\n return {\r\n openValue: that.openValue,\r\n highValue: that.highValue,\r\n lowValue: that.lowValue,\r\n closeValue: that.closeValue,\r\n reductionValue: that.initialValue,\r\n argument: that.initialArgument,\r\n value: that.initialValue,\r\n seriesName: that.series.name,\r\n originalOpenValue: that.originalOpenValue,\r\n originalCloseValue: that.originalCloseValue,\r\n originalLowValue: that.originalLowValue,\r\n originalHighValue: that.originalHighValue,\r\n originalArgument: that.originalArgument,\r\n point: that\r\n }\r\n },\r\n _getFormatObject: function(tooltip) {\r\n var that = this;\r\n var highValue = tooltip.formatValue(that.highValue);\r\n var openValue = tooltip.formatValue(that.openValue);\r\n var closeValue = tooltip.formatValue(that.closeValue);\r\n var lowValue = tooltip.formatValue(that.lowValue);\r\n var symbolMethods = _symbol_point.default;\r\n var formatObject = symbolMethods._getFormatObject.call(that, tooltip);\r\n return (0, _extend2.extend)({}, formatObject, {\r\n valueText: \"h: \" + highValue + (\"\" !== openValue ? \" o: \" + openValue : \"\") + (\"\" !== closeValue ? \" c: \" + closeValue : \"\") + \" l: \" + lowValue,\r\n highValueText: highValue,\r\n openValueText: openValue,\r\n closeValueText: closeValue,\r\n lowValueText: lowValue\r\n })\r\n },\r\n getMaxValue: function() {\r\n return this.highValue\r\n },\r\n getMinValue: function() {\r\n return this.lowValue\r\n }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/sankey/sankey.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _constants = require(\"./constants\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _node_item = _interopRequireDefault(require(\"./node_item\"));\r\nvar _link_item = _interopRequireDefault(require(\"./link_item\"));\r\nvar _layout = _interopRequireDefault(require(\"./layout\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _base_widget = _interopRequireDefault(require(\"../core/base_widget\"));\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\n\r\nfunction moveLabel(node, labelOptions, availableLabelWidth, rect) {\r\n if (node._label.getBBox().width > availableLabelWidth) {\r\n node.labelText.applyEllipsis(availableLabelWidth)\r\n }\r\n var bBox = node._label.getBBox();\r\n var verticalOffset = labelOptions.verticalOffset;\r\n var horizontalOffset = labelOptions.horizontalOffset;\r\n var labelOffsetY = Math.round(node.rect.y + node.rect.height / 2 - bBox.y - bBox.height / 2) + verticalOffset;\r\n var labelOffsetX = node.rect.x + horizontalOffset + node.rect.width - bBox.x;\r\n if (labelOffsetX + bBox.width >= rect[2] - rect[0]) {\r\n labelOffsetX = node.rect.x - horizontalOffset - bBox.x - bBox.width\r\n }\r\n if (labelOffsetY >= rect[3]) {\r\n labelOffsetY = rect[3]\r\n }\r\n if (labelOffsetY - bBox.height < rect[1]) {\r\n labelOffsetY = node.rect.y - bBox.y + verticalOffset\r\n }\r\n node.labelText.attr({\r\n translateX: labelOffsetX,\r\n translateY: labelOffsetY\r\n })\r\n}\r\n\r\nfunction getConnectedLinks(layout, nodeName, linkType) {\r\n var result = [];\r\n var attrName = \"in\" === linkType ? \"_to\" : \"_from\";\r\n var invertedAttrName = \"in\" === linkType ? \"_from\" : \"_to\";\r\n layout.links.map(function(link) {\r\n return link[attrName]._name === nodeName\r\n }).forEach(function(connected, idx) {\r\n connected && result.push({\r\n index: idx,\r\n weight: layout.links[idx]._weight,\r\n node: layout.links[idx][invertedAttrName]._name\r\n })\r\n });\r\n return result\r\n}\r\nvar dxSankey = _base_widget.default.inherit({\r\n _rootClass: \"dxs-sankey\",\r\n _rootClassPrefix: \"dxs\",\r\n _proxyData: [],\r\n _optionChangesMap: {\r\n dataSource: \"DATA_SOURCE\",\r\n sortData: \"DATA_SOURCE\",\r\n alignment: \"DATA_SOURCE\",\r\n node: \"BUILD_LAYOUT\",\r\n link: \"BUILD_LAYOUT\",\r\n palette: \"BUILD_LAYOUT\",\r\n paletteExtensionMode: \"BUILD_LAYOUT\"\r\n },\r\n _themeDependentChanges: [\"BUILD_LAYOUT\"],\r\n _getDefaultSize: function() {\r\n return {\r\n width: 400,\r\n height: 400\r\n }\r\n },\r\n _themeSection: \"sankey\",\r\n _fontFields: [\"label.font\"],\r\n _optionChangesOrder: [\"DATA_SOURCE\"],\r\n _initialChanges: [\"DATA_SOURCE\"],\r\n _initCore: function() {\r\n this._groupLinks = this._renderer.g().append(this._renderer.root);\r\n this._groupNodes = this._renderer.g().append(this._renderer.root);\r\n this._groupLabels = this._renderer.g().attr({\r\n \"class\": this._rootClassPrefix + \"-labels\"\r\n }).append(this._renderer.root);\r\n this._drawLabels = true;\r\n this._nodes = [];\r\n this._links = [];\r\n this._gradients = []\r\n },\r\n _disposeCore: _common.noop,\r\n _applySize: function(rect) {\r\n this._rect = rect.slice();\r\n var adaptiveLayout = this._getOption(\"adaptiveLayout\");\r\n if (adaptiveLayout.keepLabels || this._rect[2] - this._rect[0] > adaptiveLayout.width) {\r\n this._drawLabels = true\r\n } else {\r\n this._drawLabels = false\r\n }\r\n this._change([\"BUILD_LAYOUT\"]);\r\n return this._rect\r\n },\r\n _eventsMap: {\r\n onNodeHoverChanged: {\r\n name: \"nodeHoverChanged\"\r\n },\r\n onLinkHoverChanged: {\r\n name: \"linkHoverChanged\"\r\n }\r\n },\r\n _customChangesOrder: [\"BUILD_LAYOUT\", \"NODES_DRAW\", \"LINKS_DRAW\", \"LABELS\", \"DRAWN\"],\r\n _dataSourceChangedHandler: function() {\r\n this._requestChange([\"BUILD_LAYOUT\"])\r\n },\r\n _change_DRAWN: function() {\r\n this._drawn()\r\n },\r\n _change_DATA_SOURCE: function() {\r\n this._change([\"DRAWN\"]);\r\n this._updateDataSource()\r\n },\r\n _change_LABELS: function() {\r\n this._applyLabelsAppearance()\r\n },\r\n _change_BUILD_LAYOUT: function() {\r\n this._groupNodes.clear();\r\n this._groupLinks.clear();\r\n this._groupLabels.clear();\r\n this._buildLayout()\r\n },\r\n _change_NODES_DRAW: function() {\r\n var that = this;\r\n var nodes = that._nodes;\r\n nodes.forEach(function(node, index) {\r\n var element = that._renderer.rect().attr(node.rect).append(that._groupNodes);\r\n node.element = element\r\n });\r\n this._applyNodesAppearance()\r\n },\r\n _change_LINKS_DRAW: function() {\r\n var that = this;\r\n var links = that._links;\r\n links.forEach(function(link, index) {\r\n var group = that._renderer.g().attr({\r\n \"class\": \"link\",\r\n \"data-link-idx\": index\r\n }).append(that._groupLinks);\r\n link.overlayElement = that._renderer.path([], \"area\").attr({\r\n d: link.d\r\n }).append(group);\r\n link.element = that._renderer.path([], \"area\").attr({\r\n d: link.d\r\n }).append(group)\r\n });\r\n this._applyLinksAppearance()\r\n },\r\n _suspend: function() {\r\n if (!this._applyingChanges) {\r\n this._suspendChanges()\r\n }\r\n },\r\n _resume: function() {\r\n if (!this._applyingChanges) {\r\n this._resumeChanges()\r\n }\r\n },\r\n _showTooltip: _common.noop,\r\n hideTooltip: _common.noop,\r\n clearHover: function() {\r\n this._suspend();\r\n this._nodes.forEach(function(node) {\r\n node.isHovered() && node.hover(false)\r\n });\r\n this._links.forEach(function(link) {\r\n link.isHovered() && link.hover(false);\r\n link.isAdjacentNodeHovered() && link.adjacentNodeHover(false)\r\n });\r\n this._resume()\r\n },\r\n _applyNodesAppearance: function() {\r\n this._nodes.forEach(function(node) {\r\n var state = node.getState();\r\n node.element.smartAttr(node.states[state])\r\n })\r\n },\r\n _applyLinksAppearance: function() {\r\n this._links.forEach(function(link) {\r\n var state = link.getState();\r\n link.element.smartAttr(link.states[state]);\r\n link.overlayElement.smartAttr(link.overlayStates[state])\r\n })\r\n },\r\n _hitTestTargets: function(x, y) {\r\n var that = this;\r\n var data;\r\n this._proxyData.some(function(callback) {\r\n data = callback.call(that, x, y);\r\n if (data) {\r\n return true\r\n }\r\n });\r\n return data\r\n },\r\n _getData: function() {\r\n var that = this;\r\n var data = that._dataSourceItems() || [];\r\n var sourceField = that._getOption(\"sourceField\", true);\r\n var targetField = that._getOption(\"targetField\", true);\r\n var weightField = that._getOption(\"weightField\", true);\r\n var processedData = [];\r\n data.forEach(function(item) {\r\n var hasItemOwnProperty = Object.prototype.hasOwnProperty.bind(item);\r\n if (!hasItemOwnProperty(sourceField)) {\r\n that._incidentOccurred(\"E2007\", sourceField)\r\n } else {\r\n if (!hasItemOwnProperty(targetField)) {\r\n that._incidentOccurred(\"E2007\", targetField)\r\n } else {\r\n if (!hasItemOwnProperty(weightField)) {\r\n that._incidentOccurred(\"E2007\", weightField)\r\n } else {\r\n if (!(0, _type.isString)(item[sourceField])) {\r\n that._incidentOccurred(\"E2008\", sourceField)\r\n } else {\r\n if (!(0, _type.isString)(item[targetField])) {\r\n that._incidentOccurred(\"E2008\", targetField)\r\n } else {\r\n if (!(0, _type.isNumeric)(item[weightField]) || item[weightField] <= 0) {\r\n that._incidentOccurred(\"E2009\", weightField)\r\n } else {\r\n processedData.push([item[sourceField], item[targetField], item[weightField]])\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n return processedData\r\n },\r\n _buildLayout: function() {\r\n var _this = this;\r\n var that = this;\r\n var data = that._getData();\r\n var availableRect = this._rect;\r\n var nodeOptions = that._getOption(\"node\");\r\n var sortData = that._getOption(\"sortData\");\r\n var layoutBuilder = that._getOption(\"layoutBuilder\", true) || _layout.default;\r\n var rect = {\r\n x: availableRect[0],\r\n y: availableRect[1],\r\n width: availableRect[2] - availableRect[0],\r\n height: availableRect[3] - availableRect[1]\r\n };\r\n var layout = layoutBuilder.computeLayout(data, sortData, {\r\n availableRect: rect,\r\n nodePadding: nodeOptions.padding,\r\n nodeWidth: nodeOptions.width,\r\n nodeAlign: that._getOption(\"alignment\", true)\r\n }, that._incidentOccurred);\r\n that._layoutMap = layout;\r\n if (!Object.prototype.hasOwnProperty.call(layout, \"error\")) {\r\n var nodeColors = {};\r\n var nodeIdx = 0;\r\n var linkOptions = that._getOption(\"link\");\r\n var totalNodesNum = layout.nodes.map(function(item) {\r\n return item.length\r\n }).reduce(function(previousValue, currentValue) {\r\n return previousValue + currentValue\r\n }, 0);\r\n var palette = that._themeManager.createPalette(that._getOption(\"palette\", true), {\r\n useHighlight: true,\r\n extensionMode: that._getOption(\"paletteExtensionMode\", true),\r\n count: totalNodesNum\r\n });\r\n that._nodes = [];\r\n that._links = [];\r\n that._gradients.forEach(function(gradient) {\r\n gradient.dispose()\r\n });\r\n that._gradients = [];\r\n that._shadowFilter && that._shadowFilter.dispose();\r\n layout.nodes.forEach(function(cascadeNodes) {\r\n cascadeNodes.forEach(function(node) {\r\n var color = nodeOptions.color || palette.getNextColor();\r\n var nodeItem = new _node_item.default(that, {\r\n id: nodeIdx,\r\n color: color,\r\n rect: node,\r\n options: nodeOptions,\r\n linksIn: getConnectedLinks(layout, node._name, \"in\"),\r\n linksOut: getConnectedLinks(layout, node._name, \"out\")\r\n });\r\n that._nodes.push(nodeItem);\r\n nodeIdx++;\r\n nodeColors[node._name] = color\r\n })\r\n });\r\n layout.links.forEach(function(link) {\r\n var gradient = null;\r\n if (linkOptions.colorMode === _constants.COLOR_MODE_GRADIENT) {\r\n gradient = that._renderer.linearGradient([{\r\n offset: \"0%\",\r\n \"stop-color\": nodeColors[link._from._name]\r\n }, {\r\n offset: \"100%\",\r\n \"stop-color\": nodeColors[link._to._name]\r\n }]);\r\n _this._gradients.push(gradient)\r\n }\r\n var color = linkOptions.color;\r\n if (linkOptions.colorMode === _constants.COLOR_MODE_SOURCE) {\r\n color = nodeColors[link._from._name]\r\n } else {\r\n if (linkOptions.colorMode === _constants.COLOR_MODE_TARGET) {\r\n color = nodeColors[link._to._name]\r\n }\r\n }\r\n var linkItem = new _link_item.default(that, {\r\n d: link.d,\r\n boundingRect: link._boundingRect,\r\n color: color,\r\n options: linkOptions,\r\n connection: {\r\n source: link._from._name,\r\n target: link._to._name,\r\n weight: link._weight\r\n },\r\n gradient: gradient\r\n });\r\n that._links.push(linkItem)\r\n });\r\n that._renderer.initHatching();\r\n that._change([\"NODES_DRAW\", \"LINKS_DRAW\", \"LABELS\"])\r\n }\r\n that._change([\"DRAWN\"])\r\n },\r\n _applyLabelsAppearance: function() {\r\n var that = this;\r\n var labelOptions = that._getOption(\"label\");\r\n var availableWidth = that._rect[2] - that._rect[0];\r\n var nodeOptions = that._getOption(\"node\");\r\n that._shadowFilter = that._renderer.shadowFilter(\"-50%\", \"-50%\", \"200%\", \"200%\").attr(labelOptions.shadow);\r\n that._groupLabels.clear();\r\n if (that._drawLabels && labelOptions.visible) {\r\n var availableLabelWidth = (availableWidth - (nodeOptions.width + labelOptions.horizontalOffset) - that._layoutMap.cascades.length * nodeOptions.width) / (that._layoutMap.cascades.length - 1) - labelOptions.horizontalOffset;\r\n that._nodes.forEach(function(node) {\r\n that._createLabel(node, labelOptions, that._shadowFilter.id);\r\n moveLabel(node, labelOptions, availableLabelWidth, that._rect)\r\n });\r\n if (\"none\" !== labelOptions.overlappingBehavior) {\r\n that._nodes.forEach(function(thisNode) {\r\n var thisBox = thisNode._label.getBBox();\r\n that._nodes.forEach(function(otherNode) {\r\n var otherBox = otherNode._label.getBBox();\r\n if (thisNode.id !== otherNode.id && _layout.default.overlap(thisBox, otherBox)) {\r\n if (\"ellipsis\" === labelOptions.overlappingBehavior) {\r\n thisNode.labelText.applyEllipsis(otherBox.x - thisBox.x)\r\n } else {\r\n if (\"hide\" === labelOptions.overlappingBehavior) {\r\n thisNode.labelText.remove()\r\n }\r\n }\r\n }\r\n })\r\n })\r\n }\r\n }\r\n },\r\n _createLabel: function(node, labelOptions, filter) {\r\n var textData = labelOptions.customizeText(node);\r\n var settings = node.getLabelAttributes(labelOptions, filter);\r\n if (textData) {\r\n node._label = this._renderer.g().append(this._groupLabels);\r\n node.labelText = this._renderer.text(textData).attr(settings.attr).css(settings.css);\r\n node.labelText.append(node._label)\r\n }\r\n },\r\n _getMinSize: function() {\r\n var adaptiveLayout = this._getOption(\"adaptiveLayout\");\r\n return [adaptiveLayout.width, adaptiveLayout.height]\r\n },\r\n getAllNodes: function() {\r\n return this._nodes.slice()\r\n },\r\n getAllLinks: function() {\r\n return this._links.slice()\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxSankey\", dxSankey);\r\nvar _default = dxSankey;\r\nexports.default = _default;\r\ndxSankey.addPlugin(_data_source.plugin);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/sankey/constants.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.COLOR_MODE_NONE = exports.COLOR_MODE_TARGET = exports.COLOR_MODE_SOURCE = exports.COLOR_MODE_GRADIENT = void 0;\r\nvar COLOR_MODE_GRADIENT = \"gradient\";\r\nexports.COLOR_MODE_GRADIENT = COLOR_MODE_GRADIENT;\r\nvar COLOR_MODE_SOURCE = \"source\";\r\nexports.COLOR_MODE_SOURCE = COLOR_MODE_SOURCE;\r\nvar COLOR_MODE_TARGET = \"target\";\r\nexports.COLOR_MODE_TARGET = COLOR_MODE_TARGET;\r\nvar COLOR_MODE_NONE = \"none\";\r\nexports.COLOR_MODE_NONE = COLOR_MODE_NONE;\r\n","/**\r\n * DevExtreme (viz/sankey/graph.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar WHITE = \"white\";\r\nvar GRAY = \"gray\";\r\nvar BLACK = \"black\";\r\nvar routines = {\r\n maxOfArray: function(arr, callback) {\r\n var m = 0;\r\n var callback_function = function(v) {\r\n return v\r\n };\r\n if (callback) {\r\n callback_function = callback\r\n }\r\n for (var i = 0; i < arr.length; i++) {\r\n if (callback_function(arr[i]) > m) {\r\n m = callback_function(arr[i])\r\n }\r\n }\r\n return m\r\n }\r\n};\r\nvar getVertices = function(links) {\r\n var vert = [];\r\n links.forEach(function(link) {\r\n if (vert.indexOf(link[0]) === -1) {\r\n vert.push(link[0])\r\n }\r\n if (vert.indexOf(link[1]) === -1) {\r\n vert.push(link[1])\r\n }\r\n });\r\n return vert\r\n};\r\nvar getAdjacentVertices = function(links, vertex) {\r\n var avert = [];\r\n links.forEach(function(link) {\r\n if (link[0] === vertex && avert.indexOf(link[1]) === -1) {\r\n avert.push(link[1])\r\n }\r\n });\r\n return avert\r\n};\r\nvar getReverseAdjacentVertices = function(links, vertex) {\r\n var avert = [];\r\n links.forEach(function(link) {\r\n if (link[1] === vertex && avert.indexOf(link[0]) === -1) {\r\n avert.push(link[0])\r\n }\r\n });\r\n return avert\r\n};\r\nvar struct = {\r\n _hasCycle: false,\r\n _sortedList: [],\r\n hasCycle: function(links) {\r\n var _this = this;\r\n this._hasCycle = false;\r\n this._sortedList = [];\r\n var vertices = {};\r\n var allVertices = getVertices(links);\r\n allVertices.forEach(function(vertex) {\r\n vertices[vertex] = {\r\n color: WHITE\r\n }\r\n });\r\n allVertices.forEach(function(vertex) {\r\n if (vertices[vertex].color === WHITE) {\r\n _this._depthFirstSearch(links, vertices, vertex)\r\n }\r\n });\r\n this._sortedList.reverse();\r\n return this._hasCycle\r\n },\r\n _depthFirstSearch: function(links, vertices, vertex) {\r\n vertices[vertex].color = GRAY;\r\n var averts = getAdjacentVertices(links, vertex);\r\n for (var a = 0; a < averts.length; a++) {\r\n if (vertices[averts[a]].color === WHITE) {\r\n this._depthFirstSearch(links, vertices, averts[a])\r\n } else {\r\n if (vertices[averts[a]].color === GRAY) {\r\n this._hasCycle = true\r\n }\r\n }\r\n }\r\n this._sortedList.push({\r\n name: vertex,\r\n lp: null,\r\n incoming: getReverseAdjacentVertices(links, vertex),\r\n outgoing: getAdjacentVertices(links, vertex)\r\n });\r\n vertices[vertex].color = BLACK\r\n },\r\n computeLongestPaths: function(links) {\r\n var sortedVertices = this._sortedList;\r\n sortedVertices.forEach(function(vertex) {\r\n var averts = getReverseAdjacentVertices(links, vertex.name);\r\n if (0 === averts.length) {\r\n vertex.lp = 0\r\n } else {\r\n var maxLP = [];\r\n averts.forEach(function(adjacentVertex) {\r\n maxLP.push(sortedVertices.filter(function(sv) {\r\n return sv.name === adjacentVertex\r\n })[0].lp)\r\n });\r\n vertex.lp = routines.maxOfArray(maxLP) + 1\r\n }\r\n });\r\n return this._sortedList\r\n }\r\n};\r\nvar _default = {\r\n struct: struct,\r\n routines: routines,\r\n getVertices: getVertices,\r\n getAdjacentVertices: getAdjacentVertices,\r\n getReverseAdjacentVertices: getReverseAdjacentVertices\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/base_point.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.Point = Point;\r\nvar _consts = _interopRequireDefault(require(\"../../components/consts\"));\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\nvar _bar_point = _interopRequireDefault(require(\"./bar_point\"));\r\nvar _bubble_point = _interopRequireDefault(require(\"./bubble_point\"));\r\nvar _pie_point = _interopRequireDefault(require(\"./pie_point\"));\r\nvar _range_symbol_point = _interopRequireDefault(require(\"./range_symbol_point\"));\r\nvar _range_bar_point = _interopRequireDefault(require(\"./range_bar_point\"));\r\nvar _candlestick_point = _interopRequireDefault(require(\"./candlestick_point\"));\r\nvar _stock_point = _interopRequireDefault(require(\"./stock_point\"));\r\nvar _polar_point = require(\"./polar_point\");\r\nvar _utils = require(\"../../core/utils\");\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _type = require(\"../../../core/utils/type\");\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 mixins = {};\r\nvar _extend = _extend2.extend;\r\nvar statesConsts = _consts.default.states;\r\nvar SYMBOL_POINT = \"symbolPoint\";\r\nvar POLAR_SYMBOL_POINT = \"polarSymbolPoint\";\r\nvar BAR_POINT = \"barPoint\";\r\nvar POLAR_BAR_POINT = \"polarBarPoint\";\r\nvar PIE_POINT = \"piePoint\";\r\nvar SELECTED_STATE = statesConsts.selectedMark;\r\nvar HOVER_STATE = statesConsts.hoverMark;\r\nvar NORMAL_STATE = statesConsts.normalMark;\r\nvar HOVER = statesConsts.hover;\r\nvar NORMAL = statesConsts.normal;\r\nvar SELECTION = statesConsts.selection;\r\nvar pointTypes = {\r\n chart: {\r\n scatter: SYMBOL_POINT,\r\n line: SYMBOL_POINT,\r\n spline: SYMBOL_POINT,\r\n stepline: SYMBOL_POINT,\r\n stackedline: SYMBOL_POINT,\r\n fullstackedline: SYMBOL_POINT,\r\n stackedspline: SYMBOL_POINT,\r\n fullstackedspline: SYMBOL_POINT,\r\n stackedsplinearea: SYMBOL_POINT,\r\n fullstackedsplinearea: SYMBOL_POINT,\r\n area: SYMBOL_POINT,\r\n splinearea: SYMBOL_POINT,\r\n steparea: SYMBOL_POINT,\r\n stackedarea: SYMBOL_POINT,\r\n fullstackedarea: SYMBOL_POINT,\r\n rangearea: \"rangeSymbolPoint\",\r\n bar: BAR_POINT,\r\n stackedbar: BAR_POINT,\r\n fullstackedbar: BAR_POINT,\r\n rangebar: \"rangeBarPoint\",\r\n bubble: \"bubblePoint\",\r\n stock: \"stockPoint\",\r\n candlestick: \"candlestickPoint\"\r\n },\r\n pie: {\r\n pie: PIE_POINT,\r\n doughnut: PIE_POINT,\r\n donut: PIE_POINT\r\n },\r\n polar: {\r\n scatter: POLAR_SYMBOL_POINT,\r\n line: POLAR_SYMBOL_POINT,\r\n area: POLAR_SYMBOL_POINT,\r\n bar: POLAR_BAR_POINT,\r\n stackedbar: POLAR_BAR_POINT\r\n }\r\n};\r\n\r\nfunction isNoneMode(mode) {\r\n return \"none\" === (0, _utils.normalizeEnum)(mode)\r\n}\r\n\r\nfunction Point(series, dataItem, options) {\r\n this.fullState = NORMAL_STATE;\r\n this.series = series;\r\n this.update(dataItem, options);\r\n this._viewCounters = {\r\n hover: 0,\r\n selection: 0\r\n };\r\n this._emptySettings = {\r\n fill: null,\r\n stroke: null,\r\n dashStyle: null\r\n }\r\n}\r\nmixins.symbolPoint = _symbol_point.default;\r\nmixins.barPoint = _bar_point.default;\r\nmixins.bubblePoint = _bubble_point.default;\r\nmixins.piePoint = _pie_point.default;\r\nmixins.rangeSymbolPoint = _range_symbol_point.default;\r\nmixins.rangeBarPoint = _range_bar_point.default;\r\nmixins.candlestickPoint = _candlestick_point.default;\r\nmixins.stockPoint = _stock_point.default;\r\nmixins.polarSymbolPoint = _polar_point.polarSymbolPoint;\r\nmixins.polarBarPoint = _polar_point.polarBarPoint;\r\nPoint.prototype = {\r\n constructor: Point,\r\n getColor: function() {\r\n if (!this.hasValue() && !this._styles.usePointCustomOptions) {\r\n this.series.customizePoint(this, this._dataItem)\r\n }\r\n return this._styles.normal.fill || this.series.getColor()\r\n },\r\n _getStyle: function() {\r\n return this._styles[this._currentStyle || \"normal\"]\r\n },\r\n update: function(dataItem, options) {\r\n this.updateOptions(options);\r\n this.updateData(dataItem)\r\n },\r\n updateData: function(dataItem) {\r\n var that = this;\r\n var argumentWasChanged = that.argument !== dataItem.argument;\r\n that.argument = that.initialArgument = that.originalArgument = dataItem.argument;\r\n that.tag = dataItem.tag;\r\n that.index = dataItem.index;\r\n that._dataItem = dataItem;\r\n that.data = dataItem.data;\r\n that.lowError = dataItem.lowError;\r\n that.highError = dataItem.highError;\r\n that.aggregationInfo = dataItem.aggregationInfo;\r\n that._updateData(dataItem, argumentWasChanged);\r\n !that.hasValue() && that.setInvisibility();\r\n that._fillStyle();\r\n that._updateLabelData()\r\n },\r\n deleteMarker: function() {\r\n var that = this;\r\n if (that.graphic) {\r\n that.graphic.dispose()\r\n }\r\n that.graphic = null\r\n },\r\n draw: function(renderer, groups, animationEnabled, firstDrawing) {\r\n var that = this;\r\n if (that._needDeletingOnDraw || that.series.autoHidePointMarkers && !that.isSelected()) {\r\n that.deleteMarker();\r\n that._needDeletingOnDraw = false\r\n }\r\n if (that._needClearingOnDraw) {\r\n that.clearMarker();\r\n that._needClearingOnDraw = false\r\n }\r\n if (!that._hasGraphic()) {\r\n that.getMarkerVisibility() && !that.series.autoHidePointMarkers && that._drawMarker(renderer, groups.markers, animationEnabled, firstDrawing)\r\n } else {\r\n that._updateMarker(animationEnabled, this._getStyle(), groups.markers)\r\n }\r\n that._drawLabel();\r\n that._drawErrorBar(renderer, groups.errorBars, animationEnabled);\r\n return that\r\n },\r\n _getViewStyle: function() {\r\n var state = NORMAL_STATE;\r\n var fullState = this.fullState;\r\n var styles = [NORMAL, HOVER, SELECTION, SELECTION];\r\n if (this._viewCounters.hover) {\r\n state |= HOVER_STATE\r\n }\r\n if (this._viewCounters.selection) {\r\n state |= SELECTED_STATE\r\n }\r\n if (isNoneMode(this.getOptions().selectionMode)) {\r\n fullState &= ~SELECTED_STATE\r\n }\r\n if (isNoneMode(this.getOptions().hoverMode)) {\r\n fullState &= ~HOVER_STATE\r\n }\r\n state |= fullState;\r\n return styles[state]\r\n },\r\n applyView: function(legendCallback) {\r\n var style = this._getViewStyle();\r\n var that = this;\r\n that._currentStyle = style;\r\n if (!that.graphic && that.series.autoHidePointMarkers && (style === SELECTION || style === HOVER)) {\r\n that._drawMarker(that.series.getRenderer(), that.series.getMarkersGroup())\r\n }\r\n if (that.graphic) {\r\n if (that.series.autoHidePointMarkers && style !== SELECTION && style !== HOVER) {\r\n that.deleteMarker()\r\n } else {\r\n if (\"normal\" === style) {\r\n that.clearMarker()\r\n } else {\r\n that.graphic.toForeground()\r\n }\r\n that._updateMarker(true, that._styles[style], void 0, legendCallback)\r\n }\r\n }\r\n },\r\n setView: function(style) {\r\n this._viewCounters[style]++;\r\n this.applyView()\r\n },\r\n resetView: function(style) {\r\n var viewCounters = this._viewCounters;\r\n --viewCounters[style];\r\n if (viewCounters[style] < 0) {\r\n viewCounters[style] = 0\r\n }\r\n this.applyView()\r\n },\r\n releaseHoverState: function() {\r\n var that = this;\r\n if (that.graphic && !that.isSelected()) {\r\n that.graphic.toBackground()\r\n }\r\n },\r\n select: function() {\r\n this.series.selectPoint(this)\r\n },\r\n clearSelection: function() {\r\n this.series.deselectPoint(this)\r\n },\r\n hover: function() {\r\n this.series.hoverPoint(this)\r\n },\r\n clearHover: function() {\r\n this.series.clearPointHover()\r\n },\r\n showTooltip: function() {\r\n this.series.showPointTooltip(this)\r\n },\r\n hideTooltip: function() {\r\n this.series.hidePointTooltip(this)\r\n },\r\n _checkLabelsChanging: function(oldType, newType) {\r\n var isNewRange = ~newType.indexOf(\"range\");\r\n var isOldRange = ~oldType.indexOf(\"range\");\r\n return isOldRange && !isNewRange || !isOldRange && isNewRange\r\n },\r\n updateOptions: function(newOptions) {\r\n if (!newOptions) {\r\n return\r\n }\r\n var that = this;\r\n var oldOptions = that._options;\r\n var widgetType = newOptions.widgetType;\r\n var oldType = oldOptions && oldOptions.type;\r\n var newType = newOptions.type;\r\n var newPointTypeMixin = pointTypes[widgetType][newType];\r\n if (oldType !== newType) {\r\n that._needDeletingOnDraw = true;\r\n that._needClearingOnDraw = false;\r\n if (oldType) {\r\n that._checkLabelsChanging(oldType, newType) && that.deleteLabel();\r\n that._resetType(mixins[pointTypes[oldType]])\r\n }\r\n that._setType(mixins[newPointTypeMixin])\r\n } else {\r\n that._needDeletingOnDraw = that._checkSymbol(oldOptions, newOptions);\r\n that._needClearingOnDraw = that._checkCustomize(oldOptions, newOptions)\r\n }\r\n that._options = newOptions;\r\n that._fillStyle();\r\n that._updateLabelOptions(newPointTypeMixin)\r\n },\r\n translate: function() {\r\n if (this.hasValue()) {\r\n this._translate();\r\n this.translated = true\r\n }\r\n },\r\n _checkCustomize: function(oldOptions, newOptions) {\r\n return oldOptions.styles.usePointCustomOptions && !newOptions.styles.usePointCustomOptions\r\n },\r\n _getCustomLabelVisibility: function() {\r\n return this._styles.useLabelCustomOptions ? !!this._options.label.visible : null\r\n },\r\n getBoundingRect: function() {\r\n return this._getGraphicBBox()\r\n },\r\n _resetType: function(methods) {\r\n for (var methodName in methods) {\r\n delete this[methodName]\r\n }\r\n },\r\n _setType: function(methods) {\r\n for (var methodName in methods) {\r\n this[methodName] = methods[methodName]\r\n }\r\n },\r\n isInVisibleArea: function() {\r\n return this.inVisibleArea\r\n },\r\n isSelected: function() {\r\n return !!(this.fullState & SELECTED_STATE)\r\n },\r\n isHovered: function() {\r\n return !!(this.fullState & HOVER_STATE)\r\n },\r\n getOptions: function() {\r\n return this._options\r\n },\r\n animate: function(complete, settings, partitionDuration) {\r\n if (!this.graphic) {\r\n complete && complete();\r\n return\r\n }\r\n this.graphic.animate(settings, {\r\n partitionDuration: partitionDuration\r\n }, complete)\r\n },\r\n getCoords: function(min) {\r\n var that = this;\r\n if (!min) {\r\n return {\r\n x: that.x,\r\n y: that.y\r\n }\r\n }\r\n if (!that._options.rotated) {\r\n return {\r\n x: that.x,\r\n y: that.minY + (that.y - that.minY ? 0 : 1)\r\n }\r\n }\r\n return {\r\n x: that.minX - (that.x - that.minX ? 0 : 1),\r\n y: that.y\r\n }\r\n },\r\n getDefaultCoords: function() {\r\n var that = this;\r\n return !that._options.rotated ? {\r\n x: that.x,\r\n y: that.defaultY\r\n } : {\r\n x: that.defaultX,\r\n y: that.y\r\n }\r\n },\r\n setDefaultCoords: function() {\r\n var coords = this.getDefaultCoords();\r\n this.x = coords.x;\r\n this.y = coords.y\r\n },\r\n _getVisibleArea: function() {\r\n return this.series.getVisibleArea()\r\n },\r\n _getArgTranslator: function() {\r\n return this.series.getArgumentAxis().getTranslator()\r\n },\r\n _getValTranslator: function() {\r\n return this.series.getValueAxis().getTranslator()\r\n },\r\n _calculateVisibility: function(x, y, width, height) {\r\n var that = this;\r\n var visibleArea = that._getVisibleArea();\r\n var rotated = that._options.rotated;\r\n if (visibleArea.minX > x + (width || 0) || visibleArea.maxX < x || visibleArea.minY > y + (height || 0) || visibleArea.maxY < y || rotated && (0, _type.isDefined)(width) && 0 !== width && (visibleArea.minX === x + width || visibleArea.maxX === x) || !rotated && (0, _type.isDefined)(height) && 0 !== height && (visibleArea.minY === y + height || visibleArea.maxY === y)) {\r\n that.inVisibleArea = false\r\n } else {\r\n that.inVisibleArea = true\r\n }\r\n },\r\n isArgumentCorrect: function() {\r\n return this.series._argumentChecker(this.argument)\r\n },\r\n isValueCorrect: function() {\r\n var valueChecker = this.series._valueChecker;\r\n return valueChecker(this.getMinValue()) && valueChecker(this.getMaxValue())\r\n },\r\n hasValue: function() {\r\n return null !== this.value && null !== this.minValue && this.isArgumentCorrect() && this.isValueCorrect()\r\n },\r\n hasCoords: _common.noop,\r\n correctPosition: _common.noop,\r\n correctRadius: _common.noop,\r\n correctLabelRadius: _common.noop,\r\n getCrosshairData: _common.noop,\r\n getPointRadius: _common.noop,\r\n _populatePointShape: _common.noop,\r\n _checkSymbol: _common.noop,\r\n getMarkerCoords: _common.noop,\r\n hide: _common.noop,\r\n show: _common.noop,\r\n hideMarker: _common.noop,\r\n setInvisibility: _common.noop,\r\n clearVisibility: _common.noop,\r\n isVisible: _common.noop,\r\n resetCorrection: _common.noop,\r\n correctValue: _common.noop,\r\n resetValue: _common.noop,\r\n setPercentValue: _common.noop,\r\n correctCoordinates: _common.noop,\r\n coordsIn: _common.noop,\r\n getTooltipParams: _common.noop,\r\n applyWordWrap: _common.noop,\r\n setLabelTrackerData: _common.noop,\r\n updateLabelCoord: _common.noop,\r\n drawLabel: _common.noop,\r\n correctLabelPosition: _common.noop,\r\n getMinValue: _common.noop,\r\n getMaxValue: _common.noop,\r\n _drawErrorBar: _common.noop,\r\n getMarkerVisibility: _common.noop,\r\n dispose: function() {\r\n var that = this;\r\n that.deleteMarker();\r\n that.deleteLabel();\r\n that._errorBar && this._errorBar.dispose();\r\n that._options = that._styles = that.series = that._errorBar = null\r\n },\r\n getTooltipFormatObject: function(tooltip, stackPoints) {\r\n var that = this;\r\n var tooltipFormatObject = that._getFormatObject(tooltip);\r\n var sharedTooltipValuesArray = [];\r\n var tooltipStackPointsFormatObject = [];\r\n if (stackPoints) {\r\n stackPoints.forEach(function(point) {\r\n if (!point.isVisible()) {\r\n return\r\n }\r\n var formatObject = point._getFormatObject(tooltip);\r\n tooltipStackPointsFormatObject.push(formatObject);\r\n sharedTooltipValuesArray.push(formatObject.seriesName + \": \" + formatObject.valueText)\r\n });\r\n _extend(tooltipFormatObject, {\r\n points: tooltipStackPointsFormatObject,\r\n valueText: sharedTooltipValuesArray.join(\"\\n\"),\r\n stackName: that.series.getStackName() || null\r\n })\r\n }\r\n var aggregationInfo = that.aggregationInfo;\r\n if (aggregationInfo) {\r\n var axis = that.series.getArgumentAxis();\r\n var rangeText = axis.formatRange(aggregationInfo.intervalStart, aggregationInfo.intervalEnd, aggregationInfo.aggregationInterval);\r\n if (rangeText) {\r\n tooltipFormatObject.valueText += \"\\n\".concat(rangeText)\r\n }\r\n }\r\n return tooltipFormatObject\r\n },\r\n setHole: function(holeValue, position) {\r\n var that = this;\r\n var minValue = isFinite(that.minValue) ? that.minValue : 0;\r\n if ((0, _type.isDefined)(holeValue)) {\r\n if (\"left\" === position) {\r\n that.leftHole = that.value - holeValue;\r\n that.minLeftHole = minValue - holeValue\r\n } else {\r\n that.rightHole = that.value - holeValue;\r\n that.minRightHole = minValue - holeValue\r\n }\r\n }\r\n },\r\n resetHoles: function() {\r\n this.leftHole = null;\r\n this.minLeftHole = null;\r\n this.rightHole = null;\r\n this.minRightHole = null\r\n },\r\n getLabel: function() {\r\n return this._label\r\n },\r\n getLabels: function() {\r\n return [this._label]\r\n },\r\n getCenterCoord: function() {\r\n return {\r\n x: this.x,\r\n y: this.y\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/series/points/bubble_point.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar MIN_BUBBLE_HEIGHT = 20;\r\nvar _default = _extend({}, _symbol_point.default, {\r\n correctCoordinates: function(diameter) {\r\n this.bubbleSize = diameter / 2\r\n },\r\n _drawMarker: function(renderer, group, animationEnabled) {\r\n var that = this;\r\n var attr = _extend({\r\n translateX: that.x,\r\n translateY: that.y\r\n }, that._getStyle());\r\n that.graphic = renderer.circle(0, 0, animationEnabled ? 0 : that.bubbleSize).smartAttr(attr).data({\r\n \"chart-data-point\": that\r\n }).append(group)\r\n },\r\n getTooltipParams: function(location) {\r\n var that = this;\r\n var graphic = that.graphic;\r\n if (!graphic) {\r\n return\r\n }\r\n var height = graphic.getBBox().height;\r\n return {\r\n x: that.x,\r\n y: that.y,\r\n offset: height < MIN_BUBBLE_HEIGHT || \"edge\" === location ? height / 2 : 0\r\n }\r\n },\r\n _getLabelFormatObject: function() {\r\n var formatObject = _symbol_point.default._getLabelFormatObject.call(this);\r\n formatObject.size = this.initialSize;\r\n return formatObject\r\n },\r\n _updateData: function(data) {\r\n _symbol_point.default._updateData.call(this, data);\r\n this.size = this.initialSize = data.size\r\n },\r\n _getGraphicBBox: function() {\r\n var that = this;\r\n return that._getSymbolBBox(that.x, that.y, that.bubbleSize)\r\n },\r\n _updateMarker: function(animationEnabled, style) {\r\n var that = this;\r\n if (!animationEnabled) {\r\n style = _extend({\r\n r: that.bubbleSize,\r\n translateX: that.x,\r\n translateY: that.y\r\n }, style)\r\n }\r\n that.graphic.smartAttr(style)\r\n },\r\n _getFormatObject: function(tooltip) {\r\n var formatObject = _symbol_point.default._getFormatObject.call(this, tooltip);\r\n formatObject.sizeText = tooltip.formatValue(this.initialSize);\r\n return formatObject\r\n },\r\n _storeTrackerR: function() {\r\n return this.bubbleSize\r\n },\r\n _getLabelCoords: function(label) {\r\n var coords;\r\n if (\"inside\" === label.getLayoutOptions().position) {\r\n coords = this._getLabelCoordOfPosition(label, \"inside\")\r\n } else {\r\n coords = _symbol_point.default._getLabelCoords.call(this, label)\r\n }\r\n return coords\r\n }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/range_bar_point.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _bar_point = _interopRequireDefault(require(\"./bar_point\"));\r\nvar _range_symbol_point = _interopRequireDefault(require(\"./range_symbol_point\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar _default = _extend({}, _bar_point.default, {\r\n deleteLabel: _range_symbol_point.default.deleteLabel,\r\n _getFormatObject: _range_symbol_point.default._getFormatObject,\r\n clearVisibility: function() {\r\n var graphic = this.graphic;\r\n if (graphic && graphic.attr(\"visibility\")) {\r\n graphic.attr({\r\n visibility: null\r\n })\r\n }\r\n },\r\n setInvisibility: function() {\r\n var graphic = this.graphic;\r\n if (graphic && \"hidden\" !== graphic.attr(\"visibility\")) {\r\n graphic.attr({\r\n visibility: \"hidden\"\r\n })\r\n }\r\n this._topLabel.draw(false);\r\n this._bottomLabel.draw(false)\r\n },\r\n getTooltipParams: function(location) {\r\n var that = this;\r\n var edgeLocation = \"edge\" === location;\r\n var x;\r\n var y;\r\n if (that._options.rotated) {\r\n x = edgeLocation ? that.x + that.width : that.x + that.width / 2;\r\n y = that.y + that.height / 2\r\n } else {\r\n x = that.x + that.width / 2;\r\n y = edgeLocation ? that.y : that.y + that.height / 2\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n offset: 0\r\n }\r\n },\r\n _translate: function() {\r\n var that = this;\r\n var barMethods = _bar_point.default;\r\n barMethods._translate.call(that);\r\n if (that._options.rotated) {\r\n that.width = that.width || 1\r\n } else {\r\n that.height = that.height || 1\r\n }\r\n },\r\n hasCoords: _range_symbol_point.default.hasCoords,\r\n _updateData: _range_symbol_point.default._updateData,\r\n _getLabelPosition: _range_symbol_point.default._getLabelPosition,\r\n _getLabelMinFormatObject: _range_symbol_point.default._getLabelMinFormatObject,\r\n _updateLabelData: _range_symbol_point.default._updateLabelData,\r\n _updateLabelOptions: _range_symbol_point.default._updateLabelOptions,\r\n getCrosshairData: _range_symbol_point.default.getCrosshairData,\r\n _createLabel: _range_symbol_point.default._createLabel,\r\n _checkOverlay: _range_symbol_point.default._checkOverlay,\r\n _checkLabelsOverlay: _range_symbol_point.default._checkLabelsOverlay,\r\n _getOverlayCorrections: _range_symbol_point.default._getOverlayCorrections,\r\n _drawLabel: _range_symbol_point.default._drawLabel,\r\n _getLabelCoords: _range_symbol_point.default._getLabelCoords,\r\n getLabel: _range_symbol_point.default.getLabel,\r\n getLabels: _range_symbol_point.default.getLabels,\r\n getBoundingRect: _common.noop,\r\n getMinValue: _range_symbol_point.default.getMinValue,\r\n getMaxValue: _range_symbol_point.default.getMaxValue\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/stock_point.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _candlestick_point = _interopRequireDefault(require(\"./candlestick_point\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar _isNumeric = _type.isNumeric;\r\nvar _default = _extend({}, _candlestick_point.default, {\r\n _getPoints: function() {\r\n var that = this;\r\n var createPoint = that._options.rotated ? function(x, y) {\r\n return [y, x]\r\n } : function(x, y) {\r\n return [x, y]\r\n };\r\n var openYExist = _isNumeric(that.openY);\r\n var closeYExist = _isNumeric(that.closeY);\r\n var x = that.x;\r\n var width = that.width;\r\n var points = [].concat(createPoint(x, that.highY));\r\n openYExist && (points = points.concat(createPoint(x, that.openY)));\r\n openYExist && (points = points.concat(createPoint(x - width / 2, that.openY)));\r\n openYExist && (points = points.concat(createPoint(x, that.openY)));\r\n closeYExist && (points = points.concat(createPoint(x, that.closeY)));\r\n closeYExist && (points = points.concat(createPoint(x + width / 2, that.closeY)));\r\n closeYExist && (points = points.concat(createPoint(x, that.closeY)));\r\n points = points.concat(createPoint(x, that.lowY));\r\n return points\r\n },\r\n _drawMarkerInGroup: function(group, attributes, renderer) {\r\n this.graphic = renderer.path(this._getPoints(), \"line\").attr({\r\n \"stroke-linecap\": \"square\"\r\n }).attr(attributes).data({\r\n \"chart-data-point\": this\r\n }).sharp().append(group)\r\n },\r\n _getMinTrackerWidth: function() {\r\n var width = 2 + this._styles.normal[\"stroke-width\"];\r\n return width + width % 2\r\n }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/points/polar_point.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.polarBarPoint = exports.polarSymbolPoint = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\nvar _bar_point = _interopRequireDefault(require(\"./bar_point\"));\r\nvar _pie_point = _interopRequireDefault(require(\"./pie_point\"));\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _utils = require(\"../../core/utils\");\r\nvar _consts = _interopRequireDefault(require(\"../../components/consts\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar _math = Math;\r\nvar _max = _math.max;\r\nvar RADIAL_LABEL_INDENT = _consts.default.radialLabelIndent;\r\nvar ERROR_BARS_ANGLE_OFFSET = 90;\r\nvar CANVAS_POSITION_END = \"canvas_position_end\";\r\nvar CANVAS_POSITION_DEFAULT = \"canvas_position_default\";\r\nvar polarSymbolPoint = _extend({}, _symbol_point.default, {\r\n _getLabelCoords: _pie_point.default._getLabelCoords,\r\n _getElementCoords: _pie_point.default._getElementCoords,\r\n _moveLabelOnCanvas: function(coord, visibleArea, labelBBox) {\r\n var x = coord.x;\r\n var y = coord.y;\r\n if (visibleArea.minX > x) {\r\n x = visibleArea.minX\r\n }\r\n if (visibleArea.maxX < x + labelBBox.width) {\r\n x = visibleArea.maxX - labelBBox.width\r\n }\r\n if (visibleArea.minY > y) {\r\n y = visibleArea.minY\r\n }\r\n if (visibleArea.maxY < y + labelBBox.height) {\r\n y = visibleArea.maxY - labelBBox.height\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _getLabelPosition: function() {\r\n return \"outside\"\r\n },\r\n _getCoords: function(argument, value) {\r\n var axis = this.series.getValueAxis();\r\n var startAngle = axis.getAngles()[0];\r\n var angle = this._getArgTranslator().translate(argument);\r\n var radius = this._getValTranslator().translate(value);\r\n var coords = (0, _utils.convertPolarToXY)(axis.getCenter(), axis.getAngles()[0], angle, radius);\r\n coords.angle = angle + startAngle - 90, coords.radius = radius;\r\n return coords\r\n },\r\n _translate: function() {\r\n var that = this;\r\n var center = that.series.getValueAxis().getCenter();\r\n var coord = that._getCoords(that.argument, that.value);\r\n var maxRadius = that._getValTranslator().translate(CANVAS_POSITION_END);\r\n var normalizedRadius = (0, _type.isDefined)(coord.radius) && coord.radius >= 0 ? coord.radius : null;\r\n that.vx = (0, _utils.normalizeAngle)(coord.angle);\r\n that.vy = that.radiusOuter = that.radiusLabels = normalizedRadius;\r\n that.radiusLabels += RADIAL_LABEL_INDENT;\r\n that.radius = normalizedRadius;\r\n that.middleAngle = -coord.angle;\r\n that.angle = -coord.angle;\r\n that.x = coord.x;\r\n that.y = coord.y;\r\n that.defaultX = that.centerX = center.x;\r\n that.defaultY = that.centerY = center.y;\r\n that._translateErrorBars();\r\n that.inVisibleArea = that._checkRadiusForVisibleArea(normalizedRadius, maxRadius)\r\n },\r\n _checkRadiusForVisibleArea: function(radius, maxRadius) {\r\n return (0, _type.isDefined)(radius) && radius <= maxRadius\r\n },\r\n _translateErrorBars: function() {\r\n var that = this;\r\n var errorBars = that._options.errorBars;\r\n var translator = that._getValTranslator();\r\n if (!errorBars) {\r\n return\r\n }(0, _type.isDefined)(that.lowError) && (that._lowErrorCoord = that.centerY - translator.translate(that.lowError));\r\n (0, _type.isDefined)(that.highError) && (that._highErrorCoord = that.centerY - translator.translate(that.highError));\r\n that._errorBarPos = that.centerX;\r\n that._baseErrorBarPos = \"stdDeviation\" === errorBars.type ? that._lowErrorCoord + (that._highErrorCoord - that._lowErrorCoord) / 2 : that.centerY - that.radius\r\n },\r\n _getTranslates: function(animationEnabled) {\r\n return animationEnabled ? this.getDefaultCoords() : {\r\n x: this.x,\r\n y: this.y\r\n }\r\n },\r\n getDefaultCoords: function() {\r\n var cosSin = (0, _utils.getCosAndSin)(-this.angle);\r\n var radius = this._getValTranslator().translate(CANVAS_POSITION_DEFAULT);\r\n var x = this.defaultX + radius * cosSin.cos;\r\n var y = this.defaultY + radius * cosSin.sin;\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _addLabelAlignmentAndOffset: function(label, coord) {\r\n return coord\r\n },\r\n _checkLabelPosition: function(label, coord) {\r\n var that = this;\r\n var visibleArea = that._getVisibleArea();\r\n var graphicBBox = that._getGraphicBBox();\r\n if (that._isPointInVisibleArea(visibleArea, graphicBBox)) {\r\n coord = that._moveLabelOnCanvas(coord, visibleArea, label.getBoundingRect())\r\n }\r\n return coord\r\n },\r\n _getErrorBarSettings: function(errorBarOptions, animationEnabled) {\r\n var settings = _symbol_point.default._getErrorBarSettings.call(this, errorBarOptions, animationEnabled);\r\n settings.rotate = ERROR_BARS_ANGLE_OFFSET - this.angle;\r\n settings.rotateX = this.centerX;\r\n settings.rotateY = this.centerY;\r\n return settings\r\n },\r\n getCoords: function(min) {\r\n return min ? this.getDefaultCoords() : {\r\n x: this.x,\r\n y: this.y\r\n }\r\n }\r\n});\r\nexports.polarSymbolPoint = polarSymbolPoint;\r\nvar polarBarPoint = _extend({}, _bar_point.default, {\r\n _translateErrorBars: polarSymbolPoint._translateErrorBars,\r\n _getErrorBarSettings: polarSymbolPoint._getErrorBarSettings,\r\n _moveLabelOnCanvas: polarSymbolPoint._moveLabelOnCanvas,\r\n _getLabelCoords: _pie_point.default._getLabelCoords,\r\n _getElementCoords: _pie_point.default._getElementCoords,\r\n _getLabelConnector: _pie_point.default._getLabelConnector,\r\n getTooltipParams: _pie_point.default.getTooltipParams,\r\n _getLabelPosition: _pie_point.default._getLabelPosition,\r\n _getCoords: polarSymbolPoint._getCoords,\r\n _translate: function() {\r\n var that = this;\r\n var translator = that._getValTranslator();\r\n var businessRange = translator.getBusinessRange();\r\n var maxRadius = translator.translate(CANVAS_POSITION_END);\r\n that.radiusInner = translator.translate(that.minValue);\r\n polarSymbolPoint._translate.call(that);\r\n if (null === that.radiusInner) {\r\n that.radiusInner = that.radius = maxRadius\r\n } else {\r\n if (null === that.radius) {\r\n that.radius = that.value >= businessRange.minVisible ? maxRadius : 0\r\n } else {\r\n if (that.radius > maxRadius) {\r\n that.radius = maxRadius\r\n }\r\n }\r\n }\r\n that.radiusOuter = that.radiusLabels = _max(that.radiusInner, that.radius);\r\n that.radiusLabels += RADIAL_LABEL_INDENT;\r\n that.radiusInner = that.defaultRadius = _math.min(that.radiusInner, that.radius);\r\n that.middleAngle = that.angle = -(0, _utils.normalizeAngle)(that.middleAngleCorrection - that.angle)\r\n },\r\n _checkRadiusForVisibleArea: function(radius) {\r\n return (0, _type.isDefined)(radius) || this._getValTranslator().translate(this.minValue) > 0\r\n },\r\n _getErrorBarBaseEdgeLength: function() {\r\n var coord = this.getMarkerCoords();\r\n return _math.PI * coord.outerRadius * _math.abs(coord.startAngle - coord.endAngle) / 180\r\n },\r\n getMarkerCoords: function() {\r\n return {\r\n x: this.centerX,\r\n y: this.centerY,\r\n outerRadius: this.radiusOuter,\r\n innerRadius: this.defaultRadius,\r\n startAngle: this.middleAngle - this.interval / 2,\r\n endAngle: this.middleAngle + this.interval / 2\r\n }\r\n },\r\n _drawMarker: function(renderer, group, animationEnabled) {\r\n var that = this;\r\n var styles = that._getStyle();\r\n var coords = that.getMarkerCoords();\r\n var innerRadius = coords.innerRadius;\r\n var outerRadius = coords.outerRadius;\r\n var start = that._getCoords(that.argument, CANVAS_POSITION_DEFAULT);\r\n var x = coords.x;\r\n var y = coords.y;\r\n if (animationEnabled) {\r\n innerRadius = 0;\r\n outerRadius = 0;\r\n x = start.x;\r\n y = start.y\r\n }\r\n that.graphic = renderer.arc(x, y, innerRadius, outerRadius, coords.startAngle, coords.endAngle).attr(styles).data({\r\n \"chart-data-point\": that\r\n }).append(group)\r\n },\r\n _checkLabelPosition: function(label, coord) {\r\n var that = this;\r\n var visibleArea = that._getVisibleArea();\r\n var angleFunctions = (0, _utils.getCosAndSin)(that.middleAngle);\r\n var x = that.centerX + that.defaultRadius * angleFunctions.cos;\r\n var y = that.centerY - that.defaultRadius * angleFunctions.sin;\r\n if (x > visibleArea.minX && x < visibleArea.maxX && y > visibleArea.minY && y < visibleArea.maxY) {\r\n coord = that._moveLabelOnCanvas(coord, visibleArea, label.getBoundingRect())\r\n }\r\n return coord\r\n },\r\n _addLabelAlignmentAndOffset: function(label, coord) {\r\n return coord\r\n },\r\n correctCoordinates: function(correctOptions) {\r\n this.middleAngleCorrection = correctOptions.offset;\r\n this.interval = correctOptions.width\r\n },\r\n coordsIn: function(x, y) {\r\n var val = (0, _utils.convertXYToPolar)(this.series.getValueAxis().getCenter(), x, y);\r\n var coords = this.getMarkerCoords();\r\n var isBetweenAngles = coords.startAngle < coords.endAngle ? -val.phi >= coords.startAngle && -val.phi <= coords.endAngle : -val.phi <= coords.startAngle && -val.phi >= coords.endAngle;\r\n return val.r >= coords.innerRadius && val.r <= coords.outerRadius && isBetweenAngles\r\n }\r\n});\r\nexports.polarBarPoint = polarBarPoint;\r\n","/**\r\n * DevExtreme (viz/series/range_series.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.chart = void 0;\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _scatter_series = require(\"./scatter_series\");\r\nvar _bar_series = require(\"./bar_series\");\r\nvar _area_series = require(\"./area_series\");\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\nvar _extend = _extend2.extend;\r\nvar barSeries = _bar_series.chart.bar;\r\nvar areaSeries = _area_series.chart.area;\r\nvar chart = {};\r\nexports.chart = chart;\r\nvar baseRangeSeries = {\r\n areErrorBarsVisible: _common.noop,\r\n _createErrorBarGroup: _common.noop,\r\n _checkData: function(data, skippedFields) {\r\n var valueFields = this.getValueFields();\r\n return _scatter_series.chart._checkData.call(this, data, skippedFields, {\r\n minValue: valueFields[0],\r\n value: valueFields[1]\r\n }) && data.minValue === data.minValue\r\n },\r\n getValueRangeInitialValue: _scatter_series.chart.getValueRangeInitialValue,\r\n _getPointDataSelector: function(data) {\r\n var _this = this;\r\n var valueFields = this.getValueFields();\r\n var val1Field = valueFields[0];\r\n var val2Field = valueFields[1];\r\n var tagField = this.getTagField();\r\n var argumentField = this.getArgumentField();\r\n return function(data) {\r\n return {\r\n tag: data[tagField],\r\n minValue: _this._processEmptyValue(data[val1Field]),\r\n value: _this._processEmptyValue(data[val2Field]),\r\n argument: data[argumentField],\r\n data: data\r\n }\r\n }\r\n },\r\n _defaultAggregator: \"range\",\r\n _aggregators: {\r\n range: function(_ref, series) {\r\n var _data$reduce;\r\n var intervalStart = _ref.intervalStart,\r\n data = _ref.data;\r\n if (!data.length) {\r\n return\r\n }\r\n var valueFields = series.getValueFields();\r\n var val1Field = valueFields[0];\r\n var val2Field = valueFields[1];\r\n var result = data.reduce(function(result, item) {\r\n var val1 = item[val1Field];\r\n var val2 = item[val2Field];\r\n if (!(0, _type.isDefined)(val1) || !(0, _type.isDefined)(val2)) {\r\n return result\r\n }\r\n result[val1Field] = Math.min(result[val1Field], Math.min(val1, val2));\r\n result[val2Field] = Math.max(result[val2Field], Math.max(val1, val2));\r\n return result\r\n }, (_data$reduce = {}, _defineProperty(_data$reduce, val1Field, 1 / 0), _defineProperty(_data$reduce, val2Field, -(1 / 0)), _defineProperty(_data$reduce, series.getArgumentField(), intervalStart), _data$reduce));\r\n if (!isFinite(result[val1Field]) || !isFinite(result[val2Field])) {\r\n if (data.filter(function(i) {\r\n return null === i[val1Field] && null === i[val2Field]\r\n }).length === data.length) {\r\n result[val1Field] = result[val2Field] = null\r\n } else {\r\n return\r\n }\r\n }\r\n return result\r\n }\r\n },\r\n getValueFields: function() {\r\n return [this._options.rangeValue1Field || \"val1\", this._options.rangeValue2Field || \"val2\"]\r\n },\r\n getSeriesPairCoord: function(coord, isArgument) {\r\n var oppositeCoord = null;\r\n var rotated = this._options.rotated;\r\n var isOpposite = !isArgument && !rotated || isArgument && rotated;\r\n var coordName = isOpposite ? \"vy\" : \"vx\";\r\n var minCoordName = rotated ? \"minX\" : \"minY\";\r\n var oppositeCoordName = isOpposite ? \"vx\" : \"vy\";\r\n var points = this.getPoints();\r\n for (var i = 0; i < points.length; i++) {\r\n var p = points[i];\r\n var tmpCoord = void 0;\r\n if (isArgument) {\r\n tmpCoord = p.getCenterCoord()[coordName[1]] === coord ? p[oppositeCoordName] : void 0\r\n } else {\r\n var coords = [Math.min(p[coordName], p[minCoordName]), Math.max(p[coordName], p[minCoordName])];\r\n tmpCoord = coord >= coords[0] && coord <= coords[1] ? p[oppositeCoordName] : void 0\r\n }\r\n if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {\r\n oppositeCoord = tmpCoord;\r\n break\r\n }\r\n }\r\n return oppositeCoord\r\n }\r\n};\r\nchart.rangebar = _extend({}, barSeries, baseRangeSeries);\r\nchart.rangearea = _extend({}, areaSeries, {\r\n _drawPoint: function(options) {\r\n var point = options.point;\r\n if (point.isInVisibleArea()) {\r\n point.clearVisibility();\r\n point.draw(this._renderer, options.groups);\r\n this._drawnPoints.push(point);\r\n if (!point.visibleTopMarker) {\r\n point.hideMarker(\"top\")\r\n }\r\n if (!point.visibleBottomMarker) {\r\n point.hideMarker(\"bottom\")\r\n }\r\n } else {\r\n point.setInvisibility()\r\n }\r\n },\r\n _prepareSegment: function(points, rotated) {\r\n var processedPoints = this._processSinglePointsAreaSegment(points, rotated);\r\n var processedMinPointsCoords = (0, _utils.map)(processedPoints, function(pt) {\r\n return pt.getCoords(true)\r\n });\r\n return {\r\n line: processedPoints,\r\n bottomLine: processedMinPointsCoords,\r\n area: (0, _utils.map)(processedPoints, function(pt) {\r\n return pt.getCoords()\r\n }).concat(processedMinPointsCoords.slice().reverse()),\r\n singlePointSegment: processedPoints !== points\r\n }\r\n },\r\n _getDefaultSegment: function(segment) {\r\n var defaultSegment = areaSeries._getDefaultSegment.call(this, segment);\r\n defaultSegment.bottomLine = defaultSegment.line;\r\n return defaultSegment\r\n },\r\n _removeElement: function(element) {\r\n areaSeries._removeElement.call(this, element);\r\n element.bottomLine && element.bottomLine.remove()\r\n },\r\n _drawElement: function(segment, group) {\r\n var that = this;\r\n var drawnElement = areaSeries._drawElement.call(that, segment, group);\r\n drawnElement.bottomLine = that._bordersGroup && that._createBorderElement(segment.bottomLine, {\r\n \"stroke-width\": that._styles.normal.border[\"stroke-width\"]\r\n }).append(that._bordersGroup);\r\n return drawnElement\r\n },\r\n _applyStyle: function(style) {\r\n var that = this;\r\n var elementsGroup = that._elementsGroup;\r\n var bordersGroup = that._bordersGroup;\r\n elementsGroup && elementsGroup.smartAttr(style.elements);\r\n bordersGroup && bordersGroup.attr(style.border);\r\n (that._graphics || []).forEach(function(graphic) {\r\n graphic.line && graphic.line.attr({\r\n \"stroke-width\": style.border[\"stroke-width\"]\r\n });\r\n graphic.bottomLine && graphic.bottomLine.attr({\r\n \"stroke-width\": style.border[\"stroke-width\"]\r\n })\r\n })\r\n },\r\n _updateElement: function(element, segment, animate, complete) {\r\n var bottomLineParams = {\r\n points: segment.bottomLine\r\n };\r\n var bottomBorderElement = element.bottomLine;\r\n areaSeries._updateElement.apply(this, arguments);\r\n if (bottomBorderElement) {\r\n animate ? bottomBorderElement.animate(bottomLineParams) : bottomBorderElement.attr(bottomLineParams)\r\n }\r\n }\r\n}, baseRangeSeries);\r\n","/**\r\n * DevExtreme (viz/series/bubble_series.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.chart = void 0;\r\nvar _line_series = require(\"./line_series\");\r\nvar _scatter_series = require(\"./scatter_series\");\r\nvar _area_series = require(\"./area_series\");\r\nvar _bar_series = require(\"./bar_series\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\nvar lineSeries = _line_series.chart.line;\r\nvar areaSeries = _area_series.chart.area;\r\nvar chartBarSeries = _bar_series.chart.bar;\r\nvar polarBarSeries = _bar_series.polar.bar;\r\nvar _extend = _extend2.extend;\r\nvar _each = _iterator.each;\r\nvar _noop = _common.noop;\r\nvar chart = {};\r\nexports.chart = chart;\r\nchart.bubble = _extend({}, _scatter_series.chart, {\r\n _calculateErrorBars: _noop,\r\n _getMainColor: chartBarSeries._getMainColor,\r\n _createPointStyles: chartBarSeries._createPointStyles,\r\n _updatePointsVisibility: chartBarSeries._updatePointsVisibility,\r\n _getOptionsForPoint: chartBarSeries._getOptionsForPoint,\r\n _applyMarkerClipRect: lineSeries._applyElementsClipRect,\r\n _parsePointStyle: polarBarSeries._parsePointStyle,\r\n _createLegendState: areaSeries._createLegendState,\r\n _setMarkerGroupSettings: polarBarSeries._setMarkerGroupSettings,\r\n areErrorBarsVisible: _noop,\r\n _createErrorBarGroup: _noop,\r\n _checkData: function(data, skippedFields) {\r\n return _scatter_series.chart._checkData.call(this, data, skippedFields, {\r\n value: this.getValueFields()[0],\r\n size: this.getSizeField()\r\n })\r\n },\r\n _getPointDataSelector: function(data, options) {\r\n var sizeField = this.getSizeField();\r\n var baseGetter = _scatter_series.chart._getPointDataSelector.call(this);\r\n return function(data) {\r\n var pointData = baseGetter(data);\r\n pointData.size = data[sizeField];\r\n return pointData\r\n }\r\n },\r\n _aggregators: {\r\n avg: function(_ref, series) {\r\n var _ref2;\r\n var data = _ref.data,\r\n intervalStart = _ref.intervalStart;\r\n if (!data.length) {\r\n return\r\n }\r\n var valueField = series.getValueFields()[0];\r\n var sizeField = series.getSizeField();\r\n var aggregate = data.reduce(function(result, item) {\r\n result[0] += item[valueField];\r\n result[1] += item[sizeField];\r\n result[2]++;\r\n return result\r\n }, [0, 0, 0]);\r\n return _ref2 = {}, _defineProperty(_ref2, valueField, aggregate[0] / aggregate[2]), _defineProperty(_ref2, sizeField, aggregate[1] / aggregate[2]), _defineProperty(_ref2, series.getArgumentField(), intervalStart), _ref2\r\n }\r\n },\r\n getValueFields: function() {\r\n return [this._options.valueField || \"val\"]\r\n },\r\n getSizeField: function() {\r\n return this._options.sizeField || \"size\"\r\n },\r\n _animate: function() {\r\n var that = this;\r\n var lastPointIndex = that._drawnPoints.length - 1;\r\n var labelsGroup = that._labelsGroup;\r\n var labelAnimFunc = function() {\r\n labelsGroup && labelsGroup.animate({\r\n opacity: 1\r\n }, {\r\n duration: that._defaultDuration\r\n })\r\n };\r\n _each(that._drawnPoints || [], function(i, p) {\r\n p.animate(i === lastPointIndex ? labelAnimFunc : void 0, {\r\n r: p.bubbleSize,\r\n translateX: p.x,\r\n translateY: p.y\r\n })\r\n })\r\n },\r\n _patchMarginOptions: function(options) {\r\n options.processBubbleSize = true;\r\n return options\r\n }\r\n});\r\n","/**\r\n * DevExtreme (viz/series/pie_series.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.donut = exports.doughnut = exports.pie = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _scatter_series = require(\"./scatter_series\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _bar_series = require(\"./bar_series\");\r\nvar chartScatterSeries = _scatter_series.chart;\r\nvar barSeries = _bar_series.chart.bar;\r\nvar _extend = _extend2.extend;\r\nvar _each = _iterator.each;\r\nvar _noop = _common.noop;\r\nvar _map = _utils.map;\r\nvar _isFinite = isFinite;\r\nvar _max = Math.max;\r\nvar ANIMATION_DURATION = .7;\r\nvar INSIDE = \"inside\";\r\nvar pie = _extend({}, barSeries, {\r\n _setGroupsSettings: function() {\r\n chartScatterSeries._setGroupsSettings.apply(this, arguments);\r\n this._labelsGroup.attr({\r\n \"pointer-events\": null\r\n })\r\n },\r\n _createErrorBarGroup: _noop,\r\n _drawPoint: function(options) {\r\n var point = options.point;\r\n var legendCallback = this._legendCallback;\r\n chartScatterSeries._drawPoint.call(this, options);\r\n !point.isVisible() && point.setInvisibility();\r\n point.isSelected() && legendCallback()\r\n },\r\n _getOldPoint: function(data, oldPointsByArgument, index) {\r\n var point = (this._points || [])[index];\r\n if (point) {\r\n oldPointsByArgument[point.argument.valueOf()] = oldPointsByArgument[point.argument.valueOf()].filter(function(p) {\r\n return p !== point\r\n })\r\n }\r\n return point\r\n },\r\n adjustLabels: function(moveLabelsFromCenter) {\r\n return (this._points || []).reduce(function(r, p) {\r\n if (p._label.isVisible()) {\r\n p.setLabelTrackerData();\r\n r = p.applyWordWrap(moveLabelsFromCenter) || r;\r\n p.updateLabelCoord(moveLabelsFromCenter);\r\n return r\r\n }\r\n }, false)\r\n },\r\n _applyElementsClipRect: _noop,\r\n getColor: _noop,\r\n areErrorBarsVisible: _noop,\r\n drawLabelsWOPoints: function() {\r\n var that = this;\r\n if (that._options.label.position === INSIDE) {\r\n return false\r\n }\r\n that._labelsGroup.append(that._extGroups.labelsGroup);\r\n (that._points || []).forEach(function(point) {\r\n point.drawLabel()\r\n });\r\n return true\r\n },\r\n getPointsCount: function() {\r\n var _this = this;\r\n return this._data.filter(function(d) {\r\n return _this._checkData(d)\r\n }).length\r\n },\r\n setMaxPointsCount: function(count) {\r\n this._pointsCount = count\r\n },\r\n _getCreatingPointOptions: function(data, dataIndex) {\r\n return this._getPointOptions(data, dataIndex)\r\n },\r\n _updateOptions: function(options) {\r\n this.labelSpace = 0;\r\n this.innerRadius = \"pie\" === this.type ? 0 : options.innerRadius\r\n },\r\n _checkData: function(data, skippedFields) {\r\n var base = barSeries._checkData.call(this, data, skippedFields, {\r\n value: this.getValueFields()[0]\r\n });\r\n return this._options.paintNullPoints ? base : base && null !== data.value\r\n },\r\n _createGroups: chartScatterSeries._createGroups,\r\n _setMarkerGroupSettings: function() {\r\n this._markersGroup.attr({\r\n \"class\": \"dxc-markers\"\r\n })\r\n },\r\n _getMainColor: function(data, point) {\r\n var pointsByArg = this.getPointsByArg(data.argument);\r\n var argumentIndex = point ? pointsByArg.indexOf(point) : pointsByArg.length;\r\n return this._options.mainSeriesColor(data.argument, argumentIndex, this._pointsCount)\r\n },\r\n _getPointOptions: function(data) {\r\n return this._parsePointOptions(this._preparePointOptions(), this._options.label, data)\r\n },\r\n _getRangeData: function() {\r\n return this._rangeData\r\n },\r\n _createPointStyles: function(pointOptions, data, point) {\r\n var that = this;\r\n var mainColor = pointOptions.color || that._getMainColor(data, point);\r\n return {\r\n normal: that._parsePointStyle(pointOptions, mainColor, mainColor),\r\n hover: that._parsePointStyle(pointOptions.hoverStyle, mainColor, mainColor),\r\n selection: that._parsePointStyle(pointOptions.selectionStyle, mainColor, mainColor),\r\n legendStyles: {\r\n normal: that._createLegendState(pointOptions, mainColor),\r\n hover: that._createLegendState(pointOptions.hoverStyle, mainColor),\r\n selection: that._createLegendState(pointOptions.selectionStyle, mainColor)\r\n }\r\n }\r\n },\r\n _getArrangeMinShownValue: function(points, total) {\r\n var minSegmentSize = this._options.minSegmentSize;\r\n var totalMinSegmentSize = 0;\r\n var totalNotMinValues = 0;\r\n total = total || points.length;\r\n _each(points, function(_, point) {\r\n if (point.isVisible()) {\r\n if (point.normalInitialValue < minSegmentSize * total / 360) {\r\n totalMinSegmentSize += minSegmentSize\r\n } else {\r\n totalNotMinValues += point.normalInitialValue\r\n }\r\n }\r\n });\r\n return totalMinSegmentSize < 360 ? minSegmentSize * totalNotMinValues / (360 - totalMinSegmentSize) : 0\r\n },\r\n _applyArrangeCorrection: function(points, minShownValue, total) {\r\n var options = this._options;\r\n var isClockWise = \"anticlockwise\" !== options.segmentsDirection;\r\n var shiftedAngle = _isFinite(options.startAngle) ? (0, _utils.normalizeAngle)(options.startAngle) : 0;\r\n var minSegmentSize = options.minSegmentSize;\r\n var percent;\r\n var correction = 0;\r\n var zeroTotalCorrection = 0;\r\n if (0 === total) {\r\n total = points.filter(function(el) {\r\n return el.isVisible()\r\n }).length;\r\n zeroTotalCorrection = 1\r\n }\r\n _each(isClockWise ? points : points.concat([]).reverse(), function(_, point) {\r\n var val = point.isVisible() ? zeroTotalCorrection || point.normalInitialValue : 0;\r\n var updatedZeroValue;\r\n if (minSegmentSize && point.isVisible() && val < minShownValue) {\r\n updatedZeroValue = minShownValue\r\n }\r\n percent = val / total;\r\n point.correctValue(correction, percent, zeroTotalCorrection + (updatedZeroValue || 0));\r\n point.shiftedAngle = shiftedAngle;\r\n correction += updatedZeroValue || val\r\n });\r\n this._rangeData = {\r\n val: {\r\n min: 0,\r\n max: correction\r\n }\r\n }\r\n },\r\n _removePoint: function(point) {\r\n var points = this.getPointsByArg(point.argument);\r\n points.splice(points.indexOf(point), 1);\r\n point.dispose()\r\n },\r\n arrangePoints: function() {\r\n var that = this;\r\n var originalPoints = that._points || [];\r\n var minSegmentSize = that._options.minSegmentSize;\r\n var minShownValue;\r\n var isAllPointsNegative = true;\r\n var i = 0;\r\n var len = originalPoints.length;\r\n while (i < len && isAllPointsNegative) {\r\n isAllPointsNegative = originalPoints[i].value <= 0;\r\n i++\r\n }\r\n var points = that._points = _map(originalPoints, function(point) {\r\n if (null === point.value || !isAllPointsNegative && point.value < 0) {\r\n that._removePoint(point);\r\n return null\r\n } else {\r\n return point\r\n }\r\n });\r\n var maxValue = points.reduce(function(max, p) {\r\n return _max(max, Math.abs(p.initialValue))\r\n }, 0);\r\n points.forEach(function(p) {\r\n p.normalInitialValue = p.initialValue / (0 !== maxValue ? maxValue : 1)\r\n });\r\n var total = points.reduce(function(total, point) {\r\n return total + (point.isVisible() ? point.normalInitialValue : 0)\r\n }, 0);\r\n if (minSegmentSize) {\r\n minShownValue = this._getArrangeMinShownValue(points, total)\r\n }\r\n that._applyArrangeCorrection(points, minShownValue, total)\r\n },\r\n correctPosition: function(correction, canvas) {\r\n _each(this._points, function(_, point) {\r\n point.correctPosition(correction)\r\n });\r\n this.setVisibleArea(canvas)\r\n },\r\n correctRadius: function(correction) {\r\n this._points.forEach(function(point) {\r\n point.correctRadius(correction)\r\n })\r\n },\r\n correctLabelRadius: function(labelRadius) {\r\n this._points.forEach(function(point) {\r\n point.correctLabelRadius(labelRadius)\r\n })\r\n },\r\n setVisibleArea: function(canvas) {\r\n this._visibleArea = {\r\n minX: canvas.left,\r\n maxX: canvas.width - canvas.right,\r\n minY: canvas.top,\r\n maxY: canvas.height - canvas.bottom\r\n }\r\n },\r\n _applyVisibleArea: _noop,\r\n _animate: function(firstDrawing) {\r\n var that = this;\r\n var points = that._points;\r\n var pointsCount = points && points.length;\r\n var completeFunc = function() {\r\n that._animateComplete()\r\n };\r\n var animatePoint;\r\n if (firstDrawing) {\r\n animatePoint = function(p, i) {\r\n p.animate(i === pointsCount - 1 ? completeFunc : void 0, ANIMATION_DURATION, (1 - ANIMATION_DURATION) * i / (pointsCount - 1))\r\n }\r\n } else {\r\n animatePoint = function(p, i) {\r\n p.animate(i === pointsCount - 1 ? completeFunc : void 0)\r\n }\r\n }\r\n points.forEach(animatePoint)\r\n },\r\n getVisiblePoints: function() {\r\n return _map(this._points, function(p) {\r\n return p.isVisible() ? p : null\r\n })\r\n },\r\n getPointsByKeys: function(arg, argumentIndex) {\r\n var pointsByArg = this.getPointsByArg(arg);\r\n return pointsByArg[argumentIndex] && [pointsByArg[argumentIndex]] || []\r\n }\r\n});\r\nexports.pie = pie;\r\nvar doughnut = pie;\r\nexports.doughnut = doughnut;\r\nvar donut = pie;\r\nexports.donut = donut;\r\n","/**\r\n * DevExtreme (viz/series/financial_series.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.candlestick = exports.stock = void 0;\r\nvar _scatter_series = require(\"./scatter_series\");\r\nvar _bar_series = require(\"./bar_series\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar barSeries = _bar_series.chart.bar;\r\nvar DEFAULT_FINANCIAL_POINT_SIZE = 10;\r\nvar stock = (0, _extend2.extend)({}, _scatter_series.chart, {\r\n _animate: _common.noop,\r\n _applyMarkerClipRect: function(settings) {\r\n settings[\"clip-path\"] = this._forceClipping ? this._paneClipRectID : this._widePaneClipRectID\r\n },\r\n _updatePointsVisibility: barSeries._updatePointsVisibility,\r\n _getOptionsForPoint: barSeries._getOptionsForPoint,\r\n _createErrorBarGroup: _common.noop,\r\n areErrorBarsVisible: _common.noop,\r\n _createGroups: _scatter_series.chart._createGroups,\r\n _setMarkerGroupSettings: function() {\r\n var that = this;\r\n var markersGroup = that._markersGroup;\r\n var styles = that._createPointStyles(that._getMarkerGroupOptions());\r\n var defaultStyle = (0, _extend2.extend)(styles.normal, {\r\n \"class\": \"default-markers\"\r\n });\r\n var defaultPositiveStyle = (0, _extend2.extend)(styles.positive.normal, {\r\n \"class\": \"default-positive-markers\"\r\n });\r\n var reductionStyle = (0, _extend2.extend)(styles.reduction.normal, {\r\n \"class\": \"reduction-markers\"\r\n });\r\n var reductionPositiveStyle = (0, _extend2.extend)(styles.reductionPositive.normal, {\r\n \"class\": \"reduction-positive-markers\"\r\n });\r\n var markerSettings = {\r\n \"class\": \"dxc-markers\"\r\n };\r\n that._applyMarkerClipRect(markerSettings);\r\n markersGroup.attr(markerSettings);\r\n that._createGroup(\"defaultMarkersGroup\", markersGroup, markersGroup, defaultStyle);\r\n that._createGroup(\"reductionMarkersGroup\", markersGroup, markersGroup, reductionStyle);\r\n that._createGroup(\"defaultPositiveMarkersGroup\", markersGroup, markersGroup, defaultPositiveStyle);\r\n that._createGroup(\"reductionPositiveMarkersGroup\", markersGroup, markersGroup, reductionPositiveStyle)\r\n },\r\n _setGroupsSettings: function() {\r\n _scatter_series.chart._setGroupsSettings.call(this, false)\r\n },\r\n _getCreatingPointOptions: function() {\r\n var that = this;\r\n var defaultPointOptions;\r\n var creatingPointOptions = that._predefinedPointOptions;\r\n if (!creatingPointOptions) {\r\n defaultPointOptions = this._getPointOptions();\r\n that._predefinedPointOptions = creatingPointOptions = (0, _extend2.extend)(true, {\r\n styles: {}\r\n }, defaultPointOptions);\r\n creatingPointOptions.styles.normal = creatingPointOptions.styles.positive.normal = creatingPointOptions.styles.reduction.normal = creatingPointOptions.styles.reductionPositive.normal = {\r\n \"stroke-width\": defaultPointOptions.styles && defaultPointOptions.styles.normal && defaultPointOptions.styles.normal[\"stroke-width\"]\r\n }\r\n }\r\n return creatingPointOptions\r\n },\r\n _checkData: function(data, skippedFields) {\r\n var valueFields = this.getValueFields();\r\n return _scatter_series.chart._checkData.call(this, data, skippedFields, {\r\n openValue: valueFields[0],\r\n highValue: valueFields[1],\r\n lowValue: valueFields[2],\r\n closeValue: valueFields[3]\r\n }) && data.highValue === data.highValue && data.lowValue === data.lowValue\r\n },\r\n _getPointDataSelector: function(data, options) {\r\n var _this = this;\r\n var that = this;\r\n var level;\r\n var valueFields = that.getValueFields();\r\n var argumentField = that.getArgumentField();\r\n var openValueField = valueFields[0];\r\n var highValueField = valueFields[1];\r\n var lowValueField = valueFields[2];\r\n var closeValueField = valueFields[3];\r\n that.level = that._options.reduction.level;\r\n switch ((0, _utils.normalizeEnum)(that.level)) {\r\n case \"open\":\r\n level = openValueField;\r\n break;\r\n case \"high\":\r\n level = highValueField;\r\n break;\r\n case \"low\":\r\n level = lowValueField;\r\n break;\r\n default:\r\n level = closeValueField;\r\n that.level = \"close\"\r\n }\r\n var prevLevelValue;\r\n return function(data) {\r\n var reductionValue = data[level];\r\n var isReduction = false;\r\n if ((0, _type.isDefined)(reductionValue)) {\r\n if ((0, _type.isDefined)(prevLevelValue)) {\r\n isReduction = reductionValue < prevLevelValue\r\n }\r\n prevLevelValue = reductionValue\r\n }\r\n return {\r\n argument: data[argumentField],\r\n highValue: _this._processEmptyValue(data[highValueField]),\r\n lowValue: _this._processEmptyValue(data[lowValueField]),\r\n closeValue: _this._processEmptyValue(data[closeValueField]),\r\n openValue: _this._processEmptyValue(data[openValueField]),\r\n reductionValue: reductionValue,\r\n tag: data[that.getTagField()],\r\n isReduction: isReduction,\r\n data: data\r\n }\r\n }\r\n },\r\n _parsePointStyle: function(style, defaultColor, innerColor) {\r\n return {\r\n stroke: style.color || defaultColor,\r\n \"stroke-width\": style.width,\r\n fill: style.color || innerColor\r\n }\r\n },\r\n _getDefaultStyle: function(options) {\r\n var that = this;\r\n var mainPointColor = options.color || that._options.mainSeriesColor;\r\n return {\r\n normal: that._parsePointStyle(options, mainPointColor, mainPointColor),\r\n hover: that._parsePointStyle(options.hoverStyle, mainPointColor, mainPointColor),\r\n selection: that._parsePointStyle(options.selectionStyle, mainPointColor, mainPointColor)\r\n }\r\n },\r\n _getReductionStyle: function(options) {\r\n var that = this;\r\n var reductionColor = options.reduction.color;\r\n return {\r\n normal: that._parsePointStyle({\r\n color: reductionColor,\r\n width: options.width,\r\n hatching: options.hatching\r\n }, reductionColor, reductionColor),\r\n hover: that._parsePointStyle(options.hoverStyle, reductionColor, reductionColor),\r\n selection: that._parsePointStyle(options.selectionStyle, reductionColor, reductionColor)\r\n }\r\n },\r\n _createPointStyles: function(pointOptions) {\r\n var that = this;\r\n var innerColor = that._options.innerColor;\r\n var styles = that._getDefaultStyle(pointOptions);\r\n var positiveStyle = (0, _extend2.extend)(true, {}, styles);\r\n var reductionStyle = that._getReductionStyle(pointOptions);\r\n var reductionPositiveStyle = (0, _extend2.extend)(true, {}, reductionStyle);\r\n positiveStyle.normal.fill = positiveStyle.hover.fill = positiveStyle.selection.fill = innerColor;\r\n reductionPositiveStyle.normal.fill = reductionPositiveStyle.hover.fill = reductionPositiveStyle.selection.fill = innerColor;\r\n styles.positive = positiveStyle;\r\n styles.reduction = reductionStyle;\r\n styles.reductionPositive = reductionPositiveStyle;\r\n return styles\r\n },\r\n _endUpdateData: function() {\r\n delete this._predefinedPointOptions\r\n },\r\n _defaultAggregator: \"ohlc\",\r\n _aggregators: {\r\n ohlc: function(_ref, series) {\r\n var intervalStart = _ref.intervalStart,\r\n data = _ref.data;\r\n if (!data.length) {\r\n return\r\n }\r\n var result = {};\r\n var valueFields = series.getValueFields();\r\n var highValueField = valueFields[1];\r\n var lowValueField = valueFields[2];\r\n result[highValueField] = -(1 / 0);\r\n result[lowValueField] = 1 / 0;\r\n result = data.reduce(function(result, item) {\r\n if (null !== item[highValueField]) {\r\n result[highValueField] = Math.max(result[highValueField], item[highValueField])\r\n }\r\n if (null !== item[lowValueField]) {\r\n result[lowValueField] = Math.min(result[lowValueField], item[lowValueField])\r\n }\r\n return result\r\n }, result);\r\n result[valueFields[0]] = data[0][valueFields[0]];\r\n result[valueFields[3]] = data[data.length - 1][valueFields[3]];\r\n if (!isFinite(result[highValueField])) {\r\n result[highValueField] = null\r\n }\r\n if (!isFinite(result[lowValueField])) {\r\n result[lowValueField] = null\r\n }\r\n result[series.getArgumentField()] = intervalStart;\r\n return result\r\n }\r\n },\r\n getValueFields: function() {\r\n var options = this._options;\r\n return [options.openValueField || \"open\", options.highValueField || \"high\", options.lowValueField || \"low\", options.closeValueField || \"close\"]\r\n },\r\n getArgumentField: function() {\r\n return this._options.argumentField || \"date\"\r\n },\r\n _patchMarginOptions: function(options) {\r\n var pointOptions = this._getCreatingPointOptions();\r\n var styles = pointOptions.styles;\r\n var border = [styles.normal, styles.hover, styles.selection].reduce(function(max, style) {\r\n return Math.max(max, style[\"stroke-width\"])\r\n }, 0);\r\n options.size = DEFAULT_FINANCIAL_POINT_SIZE + border;\r\n options.sizePointNormalState = DEFAULT_FINANCIAL_POINT_SIZE;\r\n return options\r\n },\r\n getSeriesPairCoord: function(coord, isArgument) {\r\n var oppositeCoord = null;\r\n var points = this.getVisiblePoints();\r\n for (var i = 0; i < points.length; i++) {\r\n var p = points[i];\r\n var tmpCoord = void 0;\r\n if (isArgument) {\r\n tmpCoord = p.vx === coord ? (p.openY + p.closeY) / 2 : void 0\r\n } else {\r\n var coords = [Math.min(p.lowY, p.highY), Math.max(p.lowY, p.highY)];\r\n tmpCoord = coord >= coords[0] && coord <= coords[1] ? p.vx : void 0\r\n }\r\n if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {\r\n oppositeCoord = tmpCoord;\r\n break\r\n }\r\n }\r\n return oppositeCoord\r\n },\r\n usePointsToDefineAutoHiding: function() {\r\n return false\r\n }\r\n});\r\nexports.stock = stock;\r\nvar candlestick = (0, _extend2.extend)({}, stock, {\r\n _parsePointStyle: function(style, defaultColor, innerColor) {\r\n var color = style.color || innerColor;\r\n var base = stock._parsePointStyle.call(this, style, defaultColor, color);\r\n base.fill = color;\r\n base.hatching = style.hatching;\r\n return base\r\n }\r\n});\r\nexports.candlestick = candlestick;\r\n","/**\r\n * DevExtreme (viz/series/stacked_series.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.polar = exports.chart = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _area_series = require(\"./area_series\");\r\nvar _bar_series = require(\"./bar_series\");\r\nvar _line_series = require(\"./line_series\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _object = require(\"../../core/utils/object\");\r\nvar chartAreaSeries = _area_series.chart.area;\r\nvar chartBarSeries = _bar_series.chart.bar;\r\nvar baseStackedSeries = {\r\n _calculateErrorBars: _common.noop,\r\n _updateOptions: function(options) {\r\n this._stackName = \"axis_\" + (options.axis || \"default\")\r\n }\r\n};\r\nvar chart = {};\r\nexports.chart = chart;\r\nvar polar = {};\r\nexports.polar = polar;\r\nchart.stackedline = (0, _extend2.extend)({}, _line_series.chart.line, baseStackedSeries, {});\r\nchart.stackedspline = (0, _extend2.extend)({}, _line_series.chart.spline, baseStackedSeries, {});\r\nchart.fullstackedline = (0, _extend2.extend)({}, _line_series.chart.line, baseStackedSeries, {\r\n getValueRangeInitialValue: _area_series.chart.area.getValueRangeInitialValue\r\n});\r\nchart.fullstackedspline = (0, _extend2.extend)({}, _line_series.chart.spline, baseStackedSeries, {\r\n getValueRangeInitialValue: _area_series.chart.area.getValueRangeInitialValue\r\n});\r\nvar stackedBar = chart.stackedbar = (0, _extend2.extend)({}, chartBarSeries, baseStackedSeries, {\r\n _updateOptions: function(options) {\r\n baseStackedSeries._updateOptions.call(this, options);\r\n this._stackName = this._stackName + \"_stack_\" + (options.stack || \"default\")\r\n }\r\n});\r\nchart.fullstackedbar = (0, _extend2.extend)({}, chartBarSeries, baseStackedSeries, {\r\n _updateOptions: stackedBar._updateOptions\r\n});\r\n\r\nfunction clonePoint(point, value, minValue, position) {\r\n point = (0, _object.clone)(point);\r\n point.value = value;\r\n point.minValue = minValue;\r\n point.translate();\r\n point.argument = point.argument + position;\r\n return point\r\n}\r\n\r\nfunction preparePointsForStackedAreaSegment(points) {\r\n var i = 0;\r\n var p;\r\n var result = [];\r\n var array;\r\n var len = points.length;\r\n while (i < len) {\r\n p = points[i];\r\n array = [p];\r\n if (p.leftHole) {\r\n array = [clonePoint(p, p.leftHole, p.minLeftHole, \"left\"), p]\r\n }\r\n if (p.rightHole) {\r\n array.push(clonePoint(p, p.rightHole, p.minRightHole, \"right\"))\r\n }\r\n result.push(array);\r\n i++\r\n }\r\n return [].concat.apply([], result)\r\n}\r\nchart.stackedarea = (0, _extend2.extend)({}, chartAreaSeries, baseStackedSeries, {\r\n _prepareSegment: function(points, rotated) {\r\n return chartAreaSeries._prepareSegment.call(this, preparePointsForStackedAreaSegment(points), rotated)\r\n },\r\n _appendInGroup: function() {\r\n this._group.append(this._extGroups.seriesGroup).toBackground()\r\n }\r\n});\r\n\r\nfunction getPointsByArgFromPrevSeries(prevSeries, argument) {\r\n var result;\r\n while (!result && prevSeries) {\r\n result = prevSeries._segmentByArg && prevSeries._segmentByArg[argument];\r\n prevSeries = prevSeries._prevSeries\r\n }\r\n return result\r\n}\r\nchart.stackedsplinearea = (0, _extend2.extend)({}, _area_series.chart.splinearea, baseStackedSeries, {\r\n _prepareSegment: function(points, rotated) {\r\n var that = this;\r\n var areaSegment;\r\n points = preparePointsForStackedAreaSegment(points);\r\n if (!this._prevSeries || 1 === points.length) {\r\n areaSegment = _area_series.chart.splinearea._prepareSegment.call(this, points, rotated)\r\n } else {\r\n var forwardPoints = _line_series.chart.spline._calculateBezierPoints(points, rotated);\r\n var backwardPoints = (0, _utils.map)(points, function(p) {\r\n var point = p.getCoords(true);\r\n point.argument = p.argument;\r\n return point\r\n });\r\n var prevSeriesForwardPoints = [];\r\n var pointByArg = {};\r\n var i = 0;\r\n var len = that._prevSeries._segments.length;\r\n while (i < len) {\r\n prevSeriesForwardPoints = prevSeriesForwardPoints.concat(that._prevSeries._segments[i].line);\r\n i++\r\n }(0, _iterator.each)(prevSeriesForwardPoints, function(_, p) {\r\n if (null !== p.argument) {\r\n var argument = p.argument.valueOf();\r\n if (!pointByArg[argument]) {\r\n pointByArg[argument] = [p]\r\n } else {\r\n pointByArg[argument].push(p)\r\n }\r\n }\r\n });\r\n that._prevSeries._segmentByArg = pointByArg;\r\n backwardPoints = _line_series.chart.spline._calculateBezierPoints(backwardPoints, rotated);\r\n (0, _iterator.each)(backwardPoints, function(i, p) {\r\n var argument = p.argument.valueOf();\r\n var prevSeriesPoints;\r\n if (i % 3 === 0) {\r\n prevSeriesPoints = pointByArg[argument] || getPointsByArgFromPrevSeries(that._prevSeries, argument);\r\n if (prevSeriesPoints) {\r\n backwardPoints[i - 1] && prevSeriesPoints[0] && (backwardPoints[i - 1] = prevSeriesPoints[0]);\r\n backwardPoints[i + 1] && (backwardPoints[i + 1] = prevSeriesPoints[2] || p)\r\n }\r\n }\r\n });\r\n areaSegment = {\r\n line: forwardPoints,\r\n area: forwardPoints.concat(backwardPoints.reverse())\r\n };\r\n that._areaPointsToSplineAreaPoints(areaSegment.area)\r\n }\r\n return areaSegment\r\n },\r\n _appendInGroup: chart.stackedarea._appendInGroup\r\n});\r\nchart.fullstackedarea = (0, _extend2.extend)({}, chartAreaSeries, baseStackedSeries, {\r\n _prepareSegment: chart.stackedarea._prepareSegment,\r\n _appendInGroup: chart.stackedarea._appendInGroup\r\n});\r\nchart.fullstackedsplinearea = (0, _extend2.extend)({}, _area_series.chart.splinearea, baseStackedSeries, {\r\n _prepareSegment: chart.stackedsplinearea._prepareSegment,\r\n _appendInGroup: chart.stackedarea._appendInGroup\r\n});\r\npolar.stackedbar = (0, _extend2.extend)({}, _bar_series.polar.bar, baseStackedSeries, {});\r\n","/**\r\n * DevExtreme (viz/sankey.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _sankey = _interopRequireDefault(require(\"./sankey/sankey\"));\r\nvar _tooltip = require(\"./sankey/tooltip\");\r\nvar _export = require(\"./core/export\");\r\nvar _title = require(\"./core/title\");\r\nvar _tracker = require(\"./sankey/tracker\");\r\nvar _tooltip2 = require(\"./core/tooltip\");\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\n_sankey.default.addPlugin(_export.plugin);\r\n_sankey.default.addPlugin(_title.plugin);\r\n_sankey.default.addPlugin(_tracker.plugin);\r\n_sankey.default.addPlugin(_loading_indicator.plugin);\r\n_sankey.default.addPlugin(_tooltip2.plugin);\r\n(0, _tooltip.setTooltipCustomOptions)(_sankey.default);\r\nvar _default = _sankey.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/sankey/node_item.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _utils = require(\"../core/utils\");\r\nvar states = [\"normal\", \"hover\"];\r\n\r\nfunction _compileAttrs(color, itemOptions, itemBaseOptions) {\r\n var border = itemOptions.border;\r\n var baseBorder = itemBaseOptions.border;\r\n var borderVisible = (0, _type.isDefined)(border.visible) ? border.visible : baseBorder.visible;\r\n var borderWidth = (0, _type.isDefined)(border.width) ? border.width : baseBorder.width;\r\n var borderOpacity = (0, _type.isDefined)(border.opacity) ? border.opacity : (0, _type.isDefined)(baseBorder.opacity) ? baseBorder.opacity : 1;\r\n var opacity = (0, _type.isDefined)(itemOptions.opacity) ? itemOptions.opacity : (0, _type.isDefined)(itemBaseOptions.opacity) ? itemBaseOptions.opacity : 1;\r\n return {\r\n fill: itemOptions.color || color,\r\n \"stroke-width\": borderVisible ? borderWidth : 0,\r\n stroke: itemOptions.border.color || itemBaseOptions.border.color,\r\n \"stroke-opacity\": borderOpacity,\r\n opacity: opacity,\r\n hatching: itemOptions.hatching\r\n }\r\n}\r\n\r\nfunction compileLabelAttrs(labelOptions, filter, node) {\r\n var _patchFontOptions = _utils.patchFontOptions;\r\n if (labelOptions.useNodeColors) {\r\n labelOptions.font.color = node.color\r\n }\r\n var borderVisible = (0, _type.isDefined)(labelOptions.border.visible) ? labelOptions.border.visible : false;\r\n var borderWidth = (0, _type.isDefined)(labelOptions.border.width) ? labelOptions.border.width : 0;\r\n var borderColor = (0, _type.isDefined)(labelOptions.border.color) ? labelOptions.border.color : labelOptions.font.color;\r\n var borderOpacity = (0, _type.isDefined)(labelOptions.border.opacity) ? labelOptions.border.opacity : 1;\r\n var attr = {\r\n filter: filter\r\n };\r\n if (borderVisible && borderWidth) {\r\n attr.stroke = borderColor;\r\n attr[\"stroke-width\"] = borderVisible ? borderWidth : 0;\r\n attr[\"stroke-opacity\"] = borderOpacity\r\n }\r\n return {\r\n attr: attr,\r\n css: _patchFontOptions(labelOptions.font)\r\n }\r\n}\r\n\r\nfunction Node(widget, params) {\r\n var that = this;\r\n var widgetOffset = widget._renderer.getRootOffset();\r\n that.code = 0;\r\n that.widget = widget;\r\n that.color = params.color;\r\n that.options = params.options;\r\n that.rect = params.rect;\r\n that.label = that.title = params.rect._name;\r\n that.coords = {\r\n x: params.rect.x + params.rect.width / 2 + widgetOffset.left,\r\n y: params.rect.y + params.rect.height / 2 + widgetOffset.top\r\n };\r\n that.id = params.id;\r\n that.linksIn = params.linksIn;\r\n that.linksOut = params.linksOut;\r\n this.states = {\r\n normal: _compileAttrs(this.color, that.options, that.options),\r\n hover: _compileAttrs(this.color, that.options.hoverStyle, that.options)\r\n }\r\n}\r\nNode.prototype = {\r\n compileAttrs: function() {\r\n return _compileAttrs(this.color, this.options)\r\n },\r\n getState: function() {\r\n return states[this.code]\r\n },\r\n isHovered: function() {\r\n return !!(1 & this.code)\r\n },\r\n setState: function(code, state) {\r\n var _this = this;\r\n if (state) {\r\n this.code |= code\r\n } else {\r\n this.code &= ~code\r\n }\r\n if (state) {\r\n this.linksIn.concat(this.linksOut).forEach(function(adjacentLink) {\r\n _this.widget._links[adjacentLink.index].setAdjacentNodeHover(true)\r\n })\r\n } else {\r\n this.widget._links.forEach(function(link) {\r\n link.isAdjacentNodeHovered() && link.adjacentNodeHover(false)\r\n });\r\n this.hideTooltip()\r\n }\r\n this.widget._applyNodesAppearance();\r\n this.widget._applyLinksAppearance()\r\n },\r\n hover: function(state) {\r\n if (!this.widget._getOption(\"hoverEnabled\", true) || state === this.isHovered()) {\r\n return\r\n }\r\n this.widget._suspend();\r\n state && this.widget.clearHover();\r\n this.setState(1, state);\r\n this.widget._eventTrigger(\"nodeHoverChanged\", {\r\n target: this\r\n });\r\n this.widget._resume()\r\n },\r\n setHover: function() {\r\n this.hover(true)\r\n },\r\n showTooltip: function(coords) {\r\n this.widget._getOption(\"hoverEnabled\", true) && this.widget._tooltip && this.widget._tooltip.show({\r\n type: \"node\",\r\n info: {\r\n label: this.label,\r\n title: this.label,\r\n weightIn: this.linksIn.reduce(function(previousValue, currentValue) {\r\n return previousValue + currentValue.weight\r\n }, 0),\r\n weightOut: this.linksOut.reduce(function(previousValue, currentValue) {\r\n return previousValue + currentValue.weight\r\n }, 0)\r\n }\r\n }, \"undefined\" !== typeof coords ? {\r\n x: coords[0],\r\n y: coords[1]\r\n } : this.coords)\r\n },\r\n hideTooltip: function() {\r\n this.widget._tooltip && this.widget._tooltip.hide()\r\n },\r\n getLabelAttributes: function(labelSettings, filter) {\r\n return compileLabelAttrs(labelSettings, filter, this)\r\n }\r\n};\r\nvar _default = Node;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/sankey/link_item.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _constants = require(\"./constants\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar states = [\"normal\", \"adjacentNodeHover\", \"hover\"];\r\n\r\nfunction compileAttrs(color, itemOptions, itemBaseOptions, gradient) {\r\n var border = itemOptions.border;\r\n var baseBorder = itemBaseOptions.border;\r\n var borderVisible = (0, _type.isDefined)(border.visible) ? border.visible : baseBorder.visible;\r\n var borderWidth = (0, _type.isDefined)(border.width) ? border.width : baseBorder.width;\r\n var borderOpacity = (0, _type.isDefined)(border.opacity) ? border.opacity : (0, _type.isDefined)(baseBorder.opacity) ? baseBorder.opacity : 1;\r\n var opacity = (0, _type.isDefined)(itemOptions.opacity) ? itemOptions.opacity : (0, _type.isDefined)(itemBaseOptions.opacity) ? itemBaseOptions.opacity : 1;\r\n var fill = itemOptions.color || color;\r\n if (itemBaseOptions.colorMode === _constants.COLOR_MODE_TARGET || itemBaseOptions.colorMode === _constants.COLOR_MODE_SOURCE) {\r\n fill = color\r\n } else {\r\n if (itemBaseOptions.colorMode === _constants.COLOR_MODE_GRADIENT && gradient && (0, _type.isDefined)(gradient.id)) {\r\n fill = gradient.id\r\n }\r\n }\r\n return {\r\n fill: fill,\r\n \"stroke-width\": borderVisible ? borderWidth : 0,\r\n stroke: itemOptions.border.color || itemBaseOptions.border.color,\r\n \"stroke-opacity\": borderOpacity,\r\n opacity: opacity,\r\n hatching: itemOptions.hatching\r\n }\r\n}\r\n\r\nfunction Link(widget, params) {\r\n var that = this;\r\n var widgetOffset = widget._renderer.getRootOffset();\r\n that.code = 0;\r\n that.widget = widget;\r\n that.color = params.color;\r\n that.connection = params.connection;\r\n that.d = params.d;\r\n that.options = params.options;\r\n that.boundingRect = params.boundingRect, that.coords = {\r\n x: params.boundingRect.x + params.boundingRect.width / 2 + widgetOffset.left,\r\n y: params.boundingRect.y + params.boundingRect.height / 2 + widgetOffset.top\r\n };\r\n that.states = {\r\n normal: compileAttrs(that.color, that.options, that.options, params.gradient),\r\n adjacentNodeHover: compileAttrs(that.color, {\r\n opacity: 0,\r\n border: {}\r\n }, that.options, params.gradient),\r\n hover: compileAttrs(that.color, {\r\n opacity: 0,\r\n border: {}\r\n }, that.options, params.gradient)\r\n };\r\n that.overlayStates = {\r\n normal: compileAttrs(that.color, {\r\n opacity: 0,\r\n border: {}\r\n }, that.options),\r\n adjacentNodeHover: compileAttrs(that.color, that.options.hoverStyle, that.options),\r\n hover: compileAttrs(that.color, that.options.hoverStyle, that.options)\r\n }\r\n}\r\nLink.prototype = {\r\n getState: function() {\r\n return states[this.code]\r\n },\r\n isHovered: function() {\r\n return 2 === this.code\r\n },\r\n isAdjacentNodeHovered: function() {\r\n return 1 === this.code\r\n },\r\n setState: function(code, state) {\r\n if (state) {\r\n this.code = code\r\n } else {\r\n this.code = 0;\r\n this.hideTooltip()\r\n }\r\n this.widget._applyLinksAppearance()\r\n },\r\n setHover: function() {\r\n this.hover(true)\r\n },\r\n hover: function(state) {\r\n if (!this.widget._getOption(\"hoverEnabled\", true) || state === this.isHovered()) {\r\n return\r\n }\r\n this.widget._suspend();\r\n state && this.widget.clearHover();\r\n this.setState(2, state);\r\n this.widget._eventTrigger(\"linkHoverChanged\", {\r\n target: this\r\n });\r\n this.widget._resume()\r\n },\r\n adjacentNodeHover: function(state) {\r\n if (!this.widget._getOption(\"hoverEnabled\", true) || state === this.isAdjacentNodeHovered()) {\r\n return\r\n }\r\n this.widget._suspend();\r\n this.setState(1, state);\r\n this.widget._resume()\r\n },\r\n setAdjacentNodeHover: function() {\r\n this.adjacentNodeHover(true)\r\n },\r\n showTooltip: function(coords) {\r\n this.widget._getOption(\"hoverEnabled\", true) && this.widget._tooltip && this.widget._tooltip.show({\r\n type: \"link\",\r\n info: {\r\n source: this.connection.source,\r\n target: this.connection.target,\r\n weight: this.connection.weight\r\n }\r\n }, \"undefined\" !== typeof coords ? {\r\n x: coords[0],\r\n y: coords[1]\r\n } : this.coords)\r\n },\r\n hideTooltip: function() {\r\n this.widget._tooltip && this.widget._tooltip.hide()\r\n }\r\n};\r\nvar _default = Link;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/sankey/layout.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _graph = _interopRequireDefault(require(\"./graph\"));\r\nvar _data_validator = _interopRequireDefault(require(\"./data_validator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _SPLINE_TENSION = .3;\r\nvar _ALIGNMENT_CENTER = \"center\";\r\nvar _ALIGNMENT_BOTTOM = \"bottom\";\r\nvar _ALIGNMENT_DEFAULT = _ALIGNMENT_CENTER;\r\nvar layout = {\r\n _weightPerPixel: null,\r\n _getCascadeIdx: function(nodeTitle, cascadesConfig) {\r\n var nodeInfo = cascadesConfig.filter(function(c) {\r\n return c.name === nodeTitle\r\n })[0];\r\n if (nodeInfo.outgoing.length > 0) {\r\n return nodeInfo.lp\r\n } else {\r\n return _graph.default.routines.maxOfArray(cascadesConfig.map(function(c) {\r\n return c.lp\r\n }))\r\n }\r\n },\r\n _getInWeightForNode: function(nodeTitle, links) {\r\n var w = 0;\r\n links.forEach(function(link) {\r\n if (link[1] === nodeTitle) {\r\n w += link[2]\r\n }\r\n });\r\n return w\r\n },\r\n _getOutWeightForNode: function(nodeTitle, links) {\r\n var w = 0;\r\n links.forEach(function(link) {\r\n if (link[0] === nodeTitle) {\r\n w += link[2]\r\n }\r\n });\r\n return w\r\n },\r\n _computeCascades: function(links) {\r\n var _this = this;\r\n var cascadesConfig = _graph.default.struct.computeLongestPaths(links);\r\n var maxCascade = _graph.default.routines.maxOfArray(cascadesConfig.map(function(c) {\r\n return c.lp\r\n }));\r\n var cascades = [];\r\n for (var i = 0; i < maxCascade + 1; i++) {\r\n cascades.push({})\r\n }\r\n links.forEach(function(link) {\r\n var cascade = cascades[_this._getCascadeIdx(link[0], cascadesConfig)];\r\n if (!cascade[link[0]]) {\r\n cascade[link[0]] = {\r\n nodeTitle: link[0]\r\n }\r\n }\r\n cascade = cascades[_this._getCascadeIdx(link[1], cascadesConfig)];\r\n if (!cascade[link[1]]) {\r\n cascade[link[1]] = {\r\n nodeTitle: link[1]\r\n }\r\n }\r\n });\r\n cascades.forEach(function(cascade) {\r\n Object.keys(cascade).forEach(function(nodeTitle) {\r\n var node = cascade[nodeTitle];\r\n node.inWeight = _this._getInWeightForNode(node.nodeTitle, links);\r\n node.outWeight = _this._getOutWeightForNode(node.nodeTitle, links);\r\n node.maxWeight = Math.max(node.inWeight, node.outWeight)\r\n })\r\n });\r\n return cascades\r\n },\r\n _getWeightForCascade: function(cascades, cascadeIdx) {\r\n var wMax = 0;\r\n var cascade = cascades[cascadeIdx];\r\n Object.keys(cascade).forEach(function(nodeTitle) {\r\n wMax += Math.max(cascade[nodeTitle].inWeight, cascade[nodeTitle].outWeight)\r\n });\r\n return wMax\r\n },\r\n _getMaxWeightThroughCascades: function(cascades) {\r\n var max = [];\r\n cascades.forEach(function(cascade) {\r\n var mW = 0;\r\n Object.keys(cascade).forEach(function(nodeTitle) {\r\n var node = cascade[nodeTitle];\r\n mW += Math.max(node.inWeight, node.outWeight)\r\n });\r\n max.push(mW)\r\n });\r\n return _graph.default.routines.maxOfArray(max)\r\n },\r\n _computeNodes: function(cascades, options) {\r\n var _this2 = this;\r\n var rects = [];\r\n var maxWeight = this._getMaxWeightThroughCascades(cascades);\r\n var maxNodeNum = _graph.default.routines.maxOfArray(cascades.map(function(nodesInCascade) {\r\n return Object.keys(nodesInCascade).length\r\n }));\r\n var nodePadding = options.nodePadding;\r\n var heightAvailable = options.height - nodePadding * (maxNodeNum - 1);\r\n if (heightAvailable < 0) {\r\n nodePadding = 0;\r\n heightAvailable = options.height - nodePadding * (maxNodeNum - 1)\r\n }\r\n this._weightPerPixel = maxWeight / heightAvailable;\r\n var cascadeIdx = 0;\r\n cascades.forEach(function(cascade) {\r\n var cascadeRects = [];\r\n var y = 0;\r\n var nodesInCascade = Object.keys(cascade).length;\r\n var cascadeHeight = _this2._getWeightForCascade(cascades, cascadeIdx) / _this2._weightPerPixel + nodePadding * (nodesInCascade - 1);\r\n var cascadeAlign = _ALIGNMENT_DEFAULT;\r\n if (Array.isArray(options.nodeAlign)) {\r\n cascadeAlign = cascadeIdx < options.nodeAlign.length ? options.nodeAlign[cascadeIdx] : _ALIGNMENT_DEFAULT\r\n } else {\r\n cascadeAlign = options.nodeAlign\r\n }\r\n if (cascadeAlign === _ALIGNMENT_BOTTOM) {\r\n y = options.height - cascadeHeight\r\n } else {\r\n if (cascadeAlign === _ALIGNMENT_CENTER) {\r\n y = .5 * (options.height - cascadeHeight)\r\n }\r\n }\r\n y = Math.round(y);\r\n Object.keys(cascade).forEach(function(nodeTitle) {\r\n cascade[nodeTitle].sort = _this2._sort && Object.prototype.hasOwnProperty.call(_this2._sort, nodeTitle) ? _this2._sort[nodeTitle] : 1\r\n });\r\n Object.keys(cascade).sort(function(a, b) {\r\n return cascade[a].sort - cascade[b].sort\r\n }).forEach(function(nodeTitle) {\r\n var node = cascade[nodeTitle];\r\n var height = Math.floor(heightAvailable * node.maxWeight / maxWeight);\r\n var x = Math.round(cascadeIdx * options.width / (cascades.length - 1)) - (0 === cascadeIdx ? 0 : options.nodeWidth);\r\n var rect = {};\r\n rect._name = nodeTitle;\r\n rect.width = options.nodeWidth;\r\n rect.height = height;\r\n rect.x = x + options.x;\r\n rect.y = y + options.y;\r\n y += height + nodePadding;\r\n cascadeRects.push(rect)\r\n });\r\n cascadeIdx++;\r\n rects.push(cascadeRects)\r\n });\r\n return rects\r\n },\r\n _findRectByName: function(rects, name) {\r\n for (var c = 0; c < rects.length; c++) {\r\n for (var r = 0; r < rects[c].length; r++) {\r\n if (name === rects[c][r]._name) {\r\n return rects[c][r]\r\n }\r\n }\r\n }\r\n return null\r\n },\r\n _findIndexByName: function(rects, nodeTitle) {\r\n var index = 0;\r\n for (var c = 0; c < rects.length; c++) {\r\n for (var r = 0; r < rects[c].length; r++) {\r\n if (nodeTitle === rects[c][r]._name) {\r\n return index\r\n }\r\n index++\r\n }\r\n }\r\n return null\r\n },\r\n _computeLinks: function(links, rects, cascades) {\r\n var _this3 = this;\r\n var yOffsets = {};\r\n var paths = [];\r\n var result = [];\r\n cascades.forEach(function(cascade) {\r\n Object.keys(cascade).forEach(function(nodeTitle) {\r\n yOffsets[nodeTitle] = {\r\n \"in\": 0,\r\n out: 0\r\n }\r\n })\r\n });\r\n rects.forEach(function(rectsOfCascade) {\r\n rectsOfCascade.forEach(function(nodeRect) {\r\n var nodeTitle = nodeRect._name;\r\n var rectFrom = _this3._findRectByName(rects, nodeTitle);\r\n var linksFromNode = links.filter(function(link) {\r\n return link[0] === nodeTitle\r\n });\r\n linksFromNode.forEach(function(link) {\r\n link.sort = _this3._findIndexByName(rects, link[1])\r\n });\r\n linksFromNode.sort(function(a, b) {\r\n return a.sort - b.sort\r\n }).forEach(function(link) {\r\n var rectTo = _this3._findRectByName(rects, link[1]);\r\n var height = Math.round(link[2] / _this3._weightPerPixel);\r\n var yOffsetFrom = yOffsets[link[0]].out;\r\n var yOffsetTo = yOffsets[link[1]].in;\r\n var heightFrom = yOffsets[link[0]].out + height > rectFrom.height ? rectFrom.height - yOffsets[link[0]].out : height;\r\n var heightTo = yOffsets[link[1]].in + height > rectTo.height ? rectTo.height - yOffsets[link[1]].in : height;\r\n paths.push({\r\n from: {\r\n x: rectFrom.x,\r\n y: rectFrom.y + yOffsetFrom,\r\n width: rectFrom.width,\r\n height: heightFrom,\r\n node: rectFrom,\r\n weight: link[2]\r\n },\r\n to: {\r\n x: rectTo.x,\r\n y: rectTo.y + yOffsetTo,\r\n width: rectTo.width,\r\n height: heightTo,\r\n node: rectTo\r\n }\r\n });\r\n yOffsets[link[0]].out += height;\r\n yOffsets[link[1]].in += height\r\n })\r\n })\r\n });\r\n paths.forEach(function(link) {\r\n var path = {\r\n d: _this3._spline(link.from, link.to),\r\n _boundingRect: {\r\n x: link.from.x + link.from.width,\r\n y: Math.min(link.from.y, link.to.y),\r\n width: link.to.x - (link.from.x + link.from.width),\r\n height: Math.max(link.from.x + link.from.height, link.to.y + link.to.height) - Math.min(link.from.y, link.to.y)\r\n },\r\n _weight: link.from.weight,\r\n _from: link.from.node,\r\n _to: link.to.node\r\n };\r\n result.push(path)\r\n });\r\n this._fitAllNodesHeight(rects, paths);\r\n return result\r\n },\r\n _fitNodeHeight: function(nodeName, nodeRects, paths) {\r\n var targetRect = this._findRectByName(nodeRects, nodeName);\r\n var heightOfLinksSummaryIn = 0;\r\n var heightOfLinksSummaryOut = 0;\r\n paths.forEach(function(path) {\r\n if (path.from.node._name === nodeName) {\r\n heightOfLinksSummaryOut += path.from.height\r\n }\r\n if (path.to.node._name === nodeName) {\r\n heightOfLinksSummaryIn += path.to.height\r\n }\r\n });\r\n targetRect.height = Math.max(heightOfLinksSummaryIn, heightOfLinksSummaryOut)\r\n },\r\n _fitAllNodesHeight: function(nodeRects, paths) {\r\n for (var c = 0; c < nodeRects.length; c++) {\r\n for (var r = 0; r < nodeRects[c].length; r++) {\r\n this._fitNodeHeight(nodeRects[c][r]._name, nodeRects, paths)\r\n }\r\n }\r\n },\r\n _spline: function(rectLeft, rectRight) {\r\n var p_UpLeft = {\r\n x: rectLeft.x + rectLeft.width,\r\n y: rectLeft.y\r\n };\r\n var p_DownLeft = {\r\n x: rectLeft.x + rectLeft.width,\r\n y: rectLeft.y + rectLeft.height\r\n };\r\n var p_UpRight = {\r\n x: rectRight.x,\r\n y: rectRight.y\r\n };\r\n var p_DownRight = {\r\n x: rectRight.x,\r\n y: rectRight.y + rectRight.height\r\n };\r\n var curve_width = _SPLINE_TENSION * (p_UpRight.x - p_UpLeft.x);\r\n var result = \"M \".concat(p_UpLeft.x, \" \").concat(p_UpLeft.y, \" C \").concat(p_UpLeft.x + curve_width, \" \").concat(p_UpLeft.y, \" \").concat(p_UpRight.x - curve_width, \" \").concat(p_UpRight.y, \" \").concat(p_UpRight.x, \" \").concat(p_UpRight.y, \" L \").concat(p_DownRight.x, \" \").concat(p_DownRight.y, \" C \").concat(p_DownRight.x - curve_width, \" \").concat(p_DownRight.y, \" \").concat(p_DownLeft.x + curve_width, \" \").concat(p_DownLeft.y, \" \").concat(p_DownLeft.x, \" \").concat(p_DownLeft.y, \" Z\");\r\n return result\r\n },\r\n computeLayout: function(linksData, sortData, options, incidentOccurred) {\r\n this._sort = sortData;\r\n var result = {};\r\n var validateResult = _data_validator.default.validate(linksData, incidentOccurred);\r\n if (!validateResult) {\r\n result.cascades = this._computeCascades(linksData);\r\n result.nodes = this._computeNodes(result.cascades, {\r\n width: options.availableRect.width,\r\n height: options.availableRect.height,\r\n x: options.availableRect.x,\r\n y: options.availableRect.y,\r\n nodePadding: options.nodePadding,\r\n nodeWidth: options.nodeWidth,\r\n nodeAlign: options.nodeAlign\r\n });\r\n result.links = this._computeLinks(linksData, result.nodes, result.cascades)\r\n } else {\r\n result.error = validateResult\r\n }\r\n return result\r\n },\r\n overlap: function(box1, box2) {\r\n return !(box2.x > box1.x + box1.width || box2.x + box2.width < box1.x || box2.y >= box1.y + box1.height || box2.y + box2.height <= box1.y)\r\n }\r\n};\r\nvar _default = layout;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/sankey/data_validator.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _graph = _interopRequireDefault(require(\"./graph\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar validator = {\r\n validate: function(data, incidentOccurred) {\r\n var result = null;\r\n if (this._hasCycle(data)) {\r\n result = \"E2006\";\r\n incidentOccurred(\"E2006\")\r\n }\r\n return result\r\n },\r\n _hasCycle: function(data) {\r\n return _graph.default.struct.hasCycle(data)\r\n }\r\n};\r\nvar _default = validator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/sankey/tooltip.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.setTooltipCustomOptions = setTooltipCustomOptions;\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar defaultCustomizeLinkTooltip = function(info) {\r\n return {\r\n html: \"\".concat(info.source, \" > \").concat(info.target, \"
Weight: \").concat(info.weight)\r\n }\r\n};\r\nvar defaultCustomizeNodeTooltip = function(info) {\r\n return {\r\n html: \"\".concat(info.label, \"
Incoming weight: \").concat(info.weightIn, \"
Outgoing weight: \").concat(info.weightOut)\r\n }\r\n};\r\nvar generateCustomCallback = function(customCallback, defaultCallback) {\r\n return function(objectInfo) {\r\n var res = (0, _type.isFunction)(customCallback) ? customCallback.call(objectInfo, objectInfo) : {};\r\n var hasOwnProperty = Object.prototype.hasOwnProperty.bind(res);\r\n if (!hasOwnProperty(\"html\") && !hasOwnProperty(\"text\")) {\r\n res = (0, _extend2.extend)(res, defaultCallback.call(objectInfo, objectInfo))\r\n }\r\n return res\r\n }\r\n};\r\n\r\nfunction setTooltipCustomOptions(sankey) {\r\n sankey.prototype._setTooltipOptions = function() {\r\n var tooltip = this._tooltip;\r\n var options = tooltip && this._getOption(\"tooltip\");\r\n var linkTemplate;\r\n var nodeTemplate;\r\n if (options.linkTooltipTemplate) {\r\n linkTemplate = this._getTemplate(options.linkTooltipTemplate)\r\n }\r\n if (options.nodeTooltipTemplate) {\r\n nodeTemplate = this._getTemplate(options.nodeTooltipTemplate)\r\n }\r\n tooltip && tooltip.update((0, _extend2.extend)({}, options, {\r\n customizeTooltip: function(args) {\r\n if (!(linkTemplate && \"link\" === args.type || nodeTemplate && \"node\" === args.type)) {\r\n args.skipTemplate = true\r\n }\r\n if (\"node\" === args.type) {\r\n return generateCustomCallback(options.customizeNodeTooltip, defaultCustomizeNodeTooltip)(args.info)\r\n } else {\r\n if (\"link\" === args.type) {\r\n return generateCustomCallback(options.customizeLinkTooltip, defaultCustomizeLinkTooltip)(args.info)\r\n }\r\n }\r\n return {}\r\n },\r\n contentTemplate: function(arg, div) {\r\n var templateArgs = {\r\n model: arg.info,\r\n container: div\r\n };\r\n if (linkTemplate && \"link\" === arg.type) {\r\n return linkTemplate.render(templateArgs)\r\n }\r\n if (nodeTemplate && \"node\" === arg.type) {\r\n return nodeTemplate.render(templateArgs)\r\n }\r\n },\r\n enabled: options.enabled\r\n }))\r\n };\r\n sankey.prototype.hideTooltip = function() {\r\n this._tooltip && this._tooltip.hide()\r\n }\r\n}\r\n","/**\r\n * DevExtreme (viz/sankey/tracker.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.plugin = void 0;\r\nvar _sankey = _interopRequireDefault(require(\"./sankey\"));\r\nvar _tracker = require(\"../components/tracker\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar proto = _sankey.default.prototype;\r\nvar DATA_KEY_BASE = \"__sankey_data_\";\r\nvar dataKeyModifier = 0;\r\nproto._eventsMap.onNodeClick = {\r\n name: \"nodeClick\"\r\n};\r\nproto._eventsMap.onLinkClick = {\r\n name: \"linkClick\"\r\n};\r\nvar getDataKey = function() {\r\n return DATA_KEY_BASE + dataKeyModifier++\r\n};\r\nvar plugin = {\r\n name: \"tracker\",\r\n init: function() {\r\n var that = this;\r\n var dataKey = getDataKey();\r\n that._tracker = new _tracker.Tracker({\r\n widget: that,\r\n root: that._renderer.root,\r\n getData: function(e) {\r\n var target = e.target;\r\n return target[dataKey]\r\n },\r\n getNode: function(index) {\r\n if (index < that._nodes.length) {\r\n return that._nodes[index]\r\n } else {\r\n return that._links[index - that._nodes.length]\r\n }\r\n },\r\n click: function(e) {\r\n var eventName = this.getData(e.event) < that._nodes.length ? \"nodeClick\" : \"linkClick\";\r\n that._eventTrigger(eventName, {\r\n target: e.node,\r\n event: e.event\r\n })\r\n }\r\n });\r\n this._dataKey = dataKey\r\n },\r\n dispose: function() {\r\n this._tracker.dispose()\r\n },\r\n extenders: {\r\n _change_LINKS_DRAW: function() {\r\n var dataKey = this._dataKey;\r\n this._nodes.concat(this._links).forEach(function(item, index) {\r\n item.element.data(dataKey, index)\r\n })\r\n }\r\n }\r\n};\r\nexports.plugin = plugin;\r\n","/**\r\n * DevExtreme (viz/series/scatter_series.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.polar = exports.chart = void 0;\r\nvar _extend3 = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _range_data_calculator = _interopRequireDefault(require(\"./helpers/range_data_calculator\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _utils = require(\"../core/utils\");\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\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\nvar math = Math;\r\nvar _abs = math.abs;\r\nvar _sqrt = math.sqrt;\r\nvar _max = math.max;\r\nvar DEFAULT_TRACKER_WIDTH = 12;\r\nvar DEFAULT_DURATION = 400;\r\nvar HIGH_ERROR = \"highError\";\r\nvar LOW_ERROR = \"lowError\";\r\nvar VARIANCE = \"variance\";\r\nvar STANDARD_DEVIATION = \"stddeviation\";\r\nvar STANDARD_ERROR = \"stderror\";\r\nvar PERCENT = \"percent\";\r\nvar FIXED = \"fixed\";\r\nvar UNDEFINED = \"undefined\";\r\nvar DISCRETE = \"discrete\";\r\nvar LOGARITHMIC = \"logarithmic\";\r\nvar DATETIME = \"datetime\";\r\nvar chart = {};\r\nexports.chart = chart;\r\nvar polar = {};\r\nexports.polar = polar;\r\n\r\nfunction sum(array) {\r\n var result = 0;\r\n (0, _iterator.each)(array, function(_, value) {\r\n result += value\r\n });\r\n return result\r\n}\r\n\r\nfunction isErrorBarTypeCorrect(type) {\r\n return (0, _array.inArray)(type, [FIXED, PERCENT, VARIANCE, STANDARD_DEVIATION, STANDARD_ERROR]) !== -1\r\n}\r\n\r\nfunction variance(array, expectedValue) {\r\n return sum((0, _utils.map)(array, function(value) {\r\n return (value - expectedValue) * (value - expectedValue)\r\n })) / array.length\r\n}\r\n\r\nfunction calculateAvgErrorBars(result, data, series) {\r\n var errorBarsOptions = series.getOptions().valueErrorBar;\r\n var valueField = series.getValueFields()[0];\r\n var lowValueField = errorBarsOptions.lowValueField || LOW_ERROR;\r\n var highValueField = errorBarsOptions.highValueField || HIGH_ERROR;\r\n if (series.areErrorBarsVisible() && void 0 === errorBarsOptions.type) {\r\n var fusionData = data.reduce(function(result, item) {\r\n if ((0, _type.isDefined)(item[lowValueField])) {\r\n result[0] += item[valueField] - item[lowValueField];\r\n result[1]++\r\n }\r\n if ((0, _type.isDefined)(item[highValueField])) {\r\n result[2] += item[highValueField] - item[valueField];\r\n result[3]++\r\n }\r\n return result\r\n }, [0, 0, 0, 0]);\r\n if (fusionData[1]) {\r\n result[lowValueField] = result[valueField] - fusionData[0] / fusionData[1]\r\n }\r\n if (fusionData[2]) {\r\n result[highValueField] = result[valueField] + fusionData[2] / fusionData[3]\r\n }\r\n }\r\n return result\r\n}\r\n\r\nfunction calculateSumErrorBars(result, data, series) {\r\n var errorBarsOptions = series.getOptions().valueErrorBar;\r\n var lowValueField = errorBarsOptions.lowValueField || LOW_ERROR;\r\n var highValueField = errorBarsOptions.highValueField || HIGH_ERROR;\r\n if (series.areErrorBarsVisible() && void 0 === errorBarsOptions.type) {\r\n result[lowValueField] = 0;\r\n result[highValueField] = 0;\r\n result = data.reduce(function(result, item) {\r\n result[lowValueField] += item[lowValueField];\r\n result[highValueField] += item[highValueField];\r\n return result\r\n }, result)\r\n }\r\n return result\r\n}\r\n\r\nfunction getMinMaxAggregator(compare) {\r\n return function(_ref, series) {\r\n var intervalStart = _ref.intervalStart,\r\n data = _ref.data;\r\n var valueField = series.getValueFields()[0];\r\n var targetData = data[0];\r\n targetData = data.reduce(function(result, item) {\r\n var value = item[valueField];\r\n if (null === result[valueField]) {\r\n result = item\r\n }\r\n if (null !== value && compare(value, result[valueField])) {\r\n return item\r\n }\r\n return result\r\n }, targetData);\r\n return (0, _extend3.extend)({}, targetData, _defineProperty({}, series.getArgumentField(), intervalStart))\r\n }\r\n}\r\n\r\nfunction checkFields(data, fieldsToCheck, skippedFields) {\r\n var allFieldsIsValid = true;\r\n for (var field in fieldsToCheck) {\r\n var isArgument = \"argument\" === field;\r\n if (isArgument || \"size\" === field ? !(0, _type.isDefined)(data[field]) : void 0 === data[field]) {\r\n var selector = fieldsToCheck[field];\r\n if (!isArgument) {\r\n skippedFields[selector] = (skippedFields[selector] || 0) + 1\r\n }\r\n allFieldsIsValid = false\r\n }\r\n }\r\n return allFieldsIsValid\r\n}\r\nvar baseScatterMethods = {\r\n _defaultDuration: DEFAULT_DURATION,\r\n _defaultTrackerWidth: DEFAULT_TRACKER_WIDTH,\r\n _applyStyle: _common.noop,\r\n _updateOptions: _common.noop,\r\n _parseStyle: _common.noop,\r\n _prepareSegment: _common.noop,\r\n _drawSegment: _common.noop,\r\n _appendInGroup: function() {\r\n this._group.append(this._extGroups.seriesGroup)\r\n },\r\n _createLegendState: function(styleOptions, defaultColor) {\r\n return {\r\n fill: styleOptions.color || defaultColor,\r\n hatching: styleOptions.hatching ? (0, _extend3.extend)({}, styleOptions.hatching, {\r\n direction: \"right\"\r\n }) : void 0\r\n }\r\n },\r\n _applyElementsClipRect: function(settings) {\r\n settings[\"clip-path\"] = this._paneClipRectID\r\n },\r\n _applyMarkerClipRect: function(settings) {\r\n settings[\"clip-path\"] = this._forceClipping ? this._paneClipRectID : null\r\n },\r\n _createGroup: function(groupName, parent, target, settings) {\r\n var group = parent[groupName] = parent[groupName] || this._renderer.g();\r\n target && group.append(target);\r\n settings && group.attr(settings)\r\n },\r\n _applyClearingSettings: function(settings) {\r\n settings.opacity = null;\r\n settings.scale = null;\r\n if (this._options.rotated) {\r\n settings.translateX = null\r\n } else {\r\n settings.translateY = null\r\n }\r\n },\r\n _createGroups: function() {\r\n var that = this;\r\n that._createGroup(\"_markersGroup\", that, that._group);\r\n that._createGroup(\"_labelsGroup\", that)\r\n },\r\n _setMarkerGroupSettings: function() {\r\n var that = this;\r\n var settings = that._createPointStyles(that._getMarkerGroupOptions()).normal;\r\n settings.class = \"dxc-markers\";\r\n settings.opacity = 1;\r\n that._applyMarkerClipRect(settings);\r\n that._markersGroup.attr(settings)\r\n },\r\n getVisibleArea: function() {\r\n return this._visibleArea\r\n },\r\n areErrorBarsVisible: function() {\r\n var errorBarOptions = this._options.valueErrorBar;\r\n return errorBarOptions && this._errorBarsEnabled() && \"none\" !== errorBarOptions.displayMode && (isErrorBarTypeCorrect((0, _utils.normalizeEnum)(errorBarOptions.type)) || (0, _type.isDefined)(errorBarOptions.lowValueField) || (0, _type.isDefined)(errorBarOptions.highValueField))\r\n },\r\n groupPointsByCoords: function(rotated) {\r\n var cat = [];\r\n (0, _iterator.each)(this.getVisiblePoints(), function(_, p) {\r\n var pointCoord = parseInt(rotated ? p.vy : p.vx);\r\n if (!cat[pointCoord]) {\r\n cat[pointCoord] = p\r\n } else {\r\n Array.isArray(cat[pointCoord]) ? cat[pointCoord].push(p) : cat[pointCoord] = [cat[pointCoord], p]\r\n }\r\n });\r\n return cat\r\n },\r\n _createErrorBarGroup: function(animationEnabled) {\r\n var that = this;\r\n var errorBarOptions = that._options.valueErrorBar;\r\n var settings;\r\n if (that.areErrorBarsVisible()) {\r\n settings = {\r\n \"class\": \"dxc-error-bars\",\r\n stroke: errorBarOptions.color,\r\n \"stroke-width\": errorBarOptions.lineWidth,\r\n opacity: animationEnabled ? .001 : errorBarOptions.opacity || 1,\r\n \"stroke-linecap\": \"square\",\r\n sharp: true,\r\n \"clip-path\": that._forceClipping ? that._paneClipRectID : that._widePaneClipRectID\r\n };\r\n that._createGroup(\"_errorBarGroup\", that, that._group, settings)\r\n }\r\n },\r\n _setGroupsSettings: function(animationEnabled) {\r\n var that = this;\r\n that._setMarkerGroupSettings();\r\n that._setLabelGroupSettings(animationEnabled);\r\n that._createErrorBarGroup(animationEnabled)\r\n },\r\n _getCreatingPointOptions: function() {\r\n var that = this;\r\n var defaultPointOptions;\r\n var creatingPointOptions = that._predefinedPointOptions;\r\n var normalStyle;\r\n if (!creatingPointOptions) {\r\n defaultPointOptions = that._getPointOptions();\r\n that._predefinedPointOptions = creatingPointOptions = (0, _extend3.extend)(true, {\r\n styles: {}\r\n }, defaultPointOptions);\r\n normalStyle = defaultPointOptions.styles && defaultPointOptions.styles.normal || {};\r\n creatingPointOptions.styles = creatingPointOptions.styles || {};\r\n creatingPointOptions.styles.normal = {\r\n \"stroke-width\": normalStyle[\"stroke-width\"],\r\n r: normalStyle.r,\r\n opacity: normalStyle.opacity\r\n }\r\n }\r\n return creatingPointOptions\r\n },\r\n _getPointOptions: function() {\r\n return this._parsePointOptions(this._preparePointOptions(), this._options.label)\r\n },\r\n _getOptionsForPoint: function() {\r\n return this._options.point\r\n },\r\n _parsePointStyle: function(style, defaultColor, defaultBorderColor, defaultSize) {\r\n var border = style.border || {};\r\n var sizeValue = void 0 !== style.size ? style.size : defaultSize;\r\n return {\r\n fill: style.color || defaultColor,\r\n stroke: border.color || defaultBorderColor,\r\n \"stroke-width\": border.visible ? border.width : 0,\r\n r: sizeValue / 2 + (border.visible && 0 !== sizeValue ? ~~(border.width / 2) || 0 : 0)\r\n }\r\n },\r\n _createPointStyles: function(pointOptions) {\r\n var that = this;\r\n var mainPointColor = pointOptions.color || that._options.mainSeriesColor;\r\n var containerColor = that._options.containerBackgroundColor;\r\n var normalStyle = that._parsePointStyle(pointOptions, mainPointColor, mainPointColor);\r\n normalStyle.visibility = pointOptions.visible ? \"visible\" : \"hidden\";\r\n return {\r\n normal: normalStyle,\r\n hover: that._parsePointStyle(pointOptions.hoverStyle, containerColor, mainPointColor, pointOptions.size),\r\n selection: that._parsePointStyle(pointOptions.selectionStyle, containerColor, mainPointColor, pointOptions.size)\r\n }\r\n },\r\n _checkData: function(data, skippedFields, fieldsToCheck) {\r\n fieldsToCheck = fieldsToCheck || {\r\n value: this.getValueFields()[0]\r\n };\r\n fieldsToCheck.argument = this.getArgumentField();\r\n return checkFields(data, fieldsToCheck, skippedFields || {}) && data.value === data.value\r\n },\r\n getValueRangeInitialValue: function() {\r\n return\r\n },\r\n _getRangeData: function() {\r\n return _range_data_calculator.default.getRangeData(this)\r\n },\r\n _getPointDataSelector: function() {\r\n var _this = this;\r\n var valueField = this.getValueFields()[0];\r\n var argumentField = this.getArgumentField();\r\n var tagField = this.getTagField();\r\n var areErrorBarsVisible = this.areErrorBarsVisible();\r\n var lowValueField;\r\n var highValueField;\r\n if (areErrorBarsVisible) {\r\n var errorBarOptions = this._options.valueErrorBar;\r\n lowValueField = errorBarOptions.lowValueField || LOW_ERROR;\r\n highValueField = errorBarOptions.highValueField || HIGH_ERROR\r\n }\r\n return function(data) {\r\n var pointData = {\r\n value: _this._processEmptyValue(data[valueField]),\r\n argument: data[argumentField],\r\n tag: data[tagField],\r\n data: data\r\n };\r\n if (areErrorBarsVisible) {\r\n pointData.lowError = data[lowValueField];\r\n pointData.highError = data[highValueField]\r\n }\r\n return pointData\r\n }\r\n },\r\n _errorBarsEnabled: function() {\r\n return this.valueAxisType !== DISCRETE && this.valueAxisType !== LOGARITHMIC && this.valueType !== DATETIME\r\n },\r\n _drawPoint: function(options) {\r\n var point = options.point;\r\n if (point.isInVisibleArea()) {\r\n point.clearVisibility();\r\n point.draw(this._renderer, options.groups, options.hasAnimation, options.firstDrawing);\r\n this._drawnPoints.push(point)\r\n } else {\r\n point.setInvisibility()\r\n }\r\n },\r\n _animateComplete: function() {\r\n var that = this;\r\n var animationSettings = {\r\n duration: that._defaultDuration\r\n };\r\n that._labelsGroup && that._labelsGroup.animate({\r\n opacity: 1\r\n }, animationSettings);\r\n that._errorBarGroup && that._errorBarGroup.animate({\r\n opacity: that._options.valueErrorBar.opacity || 1\r\n }, animationSettings)\r\n },\r\n _animate: function() {\r\n var that = this;\r\n var lastPointIndex = that._drawnPoints.length - 1;\r\n (0, _iterator.each)(that._drawnPoints || [], function(i, p) {\r\n p.animate(i === lastPointIndex ? function() {\r\n that._animateComplete()\r\n } : void 0, {\r\n translateX: p.x,\r\n translateY: p.y\r\n })\r\n })\r\n },\r\n _defaultAggregator: \"avg\",\r\n _aggregators: {\r\n avg: function(_ref2, series) {\r\n var _calculateAvgErrorBar;\r\n var data = _ref2.data,\r\n intervalStart = _ref2.intervalStart;\r\n if (!data.length) {\r\n return\r\n }\r\n var valueField = series.getValueFields()[0];\r\n var aggregationResult = data.reduce(function(result, item) {\r\n var value = item[valueField];\r\n if ((0, _type.isDefined)(value)) {\r\n result[0] += value;\r\n result[1]++\r\n } else {\r\n if (null === value) {\r\n result[2]++\r\n }\r\n }\r\n return result\r\n }, [0, 0, 0]);\r\n return calculateAvgErrorBars((_calculateAvgErrorBar = {}, _defineProperty(_calculateAvgErrorBar, valueField, aggregationResult[2] === data.length ? null : aggregationResult[0] / aggregationResult[1]), _defineProperty(_calculateAvgErrorBar, series.getArgumentField(), intervalStart), _calculateAvgErrorBar), data, series)\r\n },\r\n sum: function(_ref3, series) {\r\n var _calculateSumErrorBar;\r\n var intervalStart = _ref3.intervalStart,\r\n data = _ref3.data;\r\n if (!data.length) {\r\n return\r\n }\r\n var valueField = series.getValueFields()[0];\r\n var aggregationResult = data.reduce(function(result, item) {\r\n var value = item[valueField];\r\n if (void 0 !== value) {\r\n result[0] += value\r\n }\r\n if (null === value) {\r\n result[1]++\r\n } else {\r\n if (void 0 === value) {\r\n result[2]++\r\n }\r\n }\r\n return result\r\n }, [0, 0, 0]);\r\n var value = aggregationResult[0];\r\n if (aggregationResult[1] === data.length) {\r\n value = null\r\n }\r\n if (aggregationResult[2] === data.length) {\r\n return\r\n }\r\n return calculateSumErrorBars((_calculateSumErrorBar = {}, _defineProperty(_calculateSumErrorBar, valueField, value), _defineProperty(_calculateSumErrorBar, series.getArgumentField(), intervalStart), _calculateSumErrorBar), data, series)\r\n },\r\n count: function(_ref4, series) {\r\n var _ref5;\r\n var data = _ref4.data,\r\n intervalStart = _ref4.intervalStart;\r\n var valueField = series.getValueFields()[0];\r\n return _ref5 = {}, _defineProperty(_ref5, series.getArgumentField(), intervalStart), _defineProperty(_ref5, valueField, data.filter(function(i) {\r\n return void 0 !== i[valueField]\r\n }).length), _ref5\r\n },\r\n min: getMinMaxAggregator(function(a, b) {\r\n return a < b\r\n }),\r\n max: getMinMaxAggregator(function(a, b) {\r\n return a > b\r\n })\r\n },\r\n _endUpdateData: function() {\r\n delete this._predefinedPointOptions\r\n },\r\n getArgumentField: function() {\r\n return this._options.argumentField || \"arg\"\r\n },\r\n getValueFields: function() {\r\n var options = this._options;\r\n var errorBarsOptions = options.valueErrorBar;\r\n var valueFields = [options.valueField || \"val\"];\r\n var lowValueField;\r\n var highValueField;\r\n if (errorBarsOptions) {\r\n lowValueField = errorBarsOptions.lowValueField;\r\n highValueField = errorBarsOptions.highValueField;\r\n (0, _type.isString)(lowValueField) && valueFields.push(lowValueField);\r\n (0, _type.isString)(highValueField) && valueFields.push(highValueField)\r\n }\r\n return valueFields\r\n },\r\n _calculateErrorBars: function(data) {\r\n if (!this.areErrorBarsVisible()) {\r\n return\r\n }\r\n var that = this;\r\n var options = that._options;\r\n var errorBarsOptions = options.valueErrorBar;\r\n var errorBarType = (0, _utils.normalizeEnum)(errorBarsOptions.type);\r\n var floatErrorValue = parseFloat(errorBarsOptions.value);\r\n var valueField = that.getValueFields()[0];\r\n var value;\r\n var lowValueField = errorBarsOptions.lowValueField || LOW_ERROR;\r\n var highValueField = errorBarsOptions.highValueField || HIGH_ERROR;\r\n var valueArray;\r\n var valueArrayLength;\r\n var meanValue;\r\n var processDataItem;\r\n var addSubError = function(_i, item) {\r\n value = item.value;\r\n item.lowError = value - floatErrorValue;\r\n item.highError = value + floatErrorValue\r\n };\r\n switch (errorBarType) {\r\n case FIXED:\r\n processDataItem = addSubError;\r\n break;\r\n case PERCENT:\r\n processDataItem = function(_, item) {\r\n value = item.value;\r\n var error = value * floatErrorValue / 100;\r\n item.lowError = value - error;\r\n item.highError = value + error\r\n };\r\n break;\r\n case UNDEFINED:\r\n processDataItem = function(_, item) {\r\n item.lowError = item.data[lowValueField];\r\n item.highError = item.data[highValueField]\r\n };\r\n break;\r\n default:\r\n valueArray = (0, _utils.map)(data, function(item) {\r\n return (0, _type.isDefined)(item.data[valueField]) ? item.data[valueField] : null\r\n });\r\n valueArrayLength = valueArray.length;\r\n floatErrorValue = floatErrorValue || 1;\r\n switch (errorBarType) {\r\n case VARIANCE:\r\n floatErrorValue = variance(valueArray, sum(valueArray) / valueArrayLength) * floatErrorValue;\r\n processDataItem = addSubError;\r\n break;\r\n case STANDARD_DEVIATION:\r\n meanValue = sum(valueArray) / valueArrayLength;\r\n floatErrorValue = _sqrt(variance(valueArray, meanValue)) * floatErrorValue;\r\n processDataItem = function(_, item) {\r\n item.lowError = meanValue - floatErrorValue;\r\n item.highError = meanValue + floatErrorValue\r\n };\r\n break;\r\n case STANDARD_ERROR:\r\n floatErrorValue = _sqrt(variance(valueArray, sum(valueArray) / valueArrayLength) / valueArrayLength) * floatErrorValue;\r\n processDataItem = addSubError\r\n }\r\n }\r\n processDataItem && (0, _iterator.each)(data, processDataItem)\r\n },\r\n _patchMarginOptions: function(options) {\r\n var pointOptions = this._getCreatingPointOptions();\r\n var styles = pointOptions.styles;\r\n var maxSize = [styles.normal, styles.hover, styles.selection].reduce(function(max, style) {\r\n return _max(max, 2 * style.r + style[\"stroke-width\"])\r\n }, 0);\r\n options.size = pointOptions.visible ? maxSize : 0;\r\n options.sizePointNormalState = pointOptions.visible ? 2 * styles.normal.r + styles.normal[\"stroke-width\"] : 2;\r\n return options\r\n },\r\n usePointsToDefineAutoHiding: function() {\r\n return true\r\n }\r\n};\r\nexports.chart = chart = (0, _extend3.extend)({}, baseScatterMethods, {\r\n drawTrackers: function() {\r\n var that = this;\r\n var trackers;\r\n var trackersGroup;\r\n var segments = that._segments || [];\r\n var rotated = that._options.rotated;\r\n if (!that.isVisible()) {\r\n return\r\n }\r\n if (segments.length) {\r\n trackers = that._trackers = that._trackers || [];\r\n trackersGroup = that._trackersGroup = (that._trackersGroup || that._renderer.g().attr({\r\n fill: \"gray\",\r\n opacity: .001,\r\n stroke: \"gray\",\r\n \"class\": \"dxc-trackers\"\r\n })).attr({\r\n \"clip-path\": this._paneClipRectID || null\r\n }).append(that._group);\r\n (0, _iterator.each)(segments, function(i, segment) {\r\n if (!trackers[i]) {\r\n trackers[i] = that._drawTrackerElement(segment).data({\r\n \"chart-data-series\": that\r\n }).append(trackersGroup)\r\n } else {\r\n that._updateTrackerElement(segment, trackers[i])\r\n }\r\n })\r\n }\r\n that._trackersTranslator = that.groupPointsByCoords(rotated)\r\n },\r\n _checkAxisVisibleAreaCoord: function(isArgument, coord) {\r\n var axis = isArgument ? this.getArgumentAxis() : this.getValueAxis();\r\n var visibleArea = axis.getVisibleArea();\r\n return (0, _type.isDefined)(coord) && visibleArea[0] <= coord && visibleArea[1] >= coord\r\n },\r\n checkSeriesViewportCoord: function(axis, coord) {\r\n return this.getPoints().length && this.isVisible()\r\n },\r\n getSeriesPairCoord: function(coord, isArgument) {\r\n var oppositeCoord = null;\r\n var isOpposite = !isArgument && !this._options.rotated || isArgument && this._options.rotated;\r\n var coordName = !isOpposite ? \"vx\" : \"vy\";\r\n var oppositeCoordName = !isOpposite ? \"vy\" : \"vx\";\r\n var points = this.getVisiblePoints();\r\n for (var i = 0; i < points.length; i++) {\r\n var p = points[i];\r\n var tmpCoord = p[coordName] === coord ? p[oppositeCoordName] : void 0;\r\n if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {\r\n oppositeCoord = tmpCoord;\r\n break\r\n }\r\n }\r\n return oppositeCoord\r\n },\r\n _getNearestPoints: function(point, nextPoint) {\r\n return [point, nextPoint]\r\n },\r\n _getBezierPoints: function() {\r\n return []\r\n },\r\n _getNearestPointsByCoord: function(coord, isArgument) {\r\n var that = this;\r\n var rotated = that.getOptions().rotated;\r\n var isOpposite = !isArgument && !rotated || isArgument && rotated;\r\n var coordName = isOpposite ? \"vy\" : \"vx\";\r\n var allPoints = that.getPoints();\r\n var bezierPoints = that._getBezierPoints();\r\n var nearestPoints = [];\r\n if (allPoints.length > 1) {\r\n allPoints.forEach(function(point, i) {\r\n var nextPoint = allPoints[i + 1];\r\n if (nextPoint && (point[coordName] <= coord && nextPoint[coordName] >= coord || point[coordName] >= coord && nextPoint[coordName] <= coord)) {\r\n nearestPoints.push(that._getNearestPoints(point, nextPoint, bezierPoints))\r\n }\r\n })\r\n } else {\r\n nearestPoints.push([allPoints[0], allPoints[0]])\r\n }\r\n return nearestPoints\r\n },\r\n getNeighborPoint: function(x, y) {\r\n var pCoord = this._options.rotated ? y : x;\r\n var nCoord = pCoord;\r\n var cat = this._trackersTranslator;\r\n var point = null;\r\n var minDistance;\r\n var oppositeCoord = this._options.rotated ? x : y;\r\n var oppositeCoordName = this._options.rotated ? \"vx\" : \"vy\";\r\n if (this.isVisible() && cat) {\r\n point = cat[pCoord];\r\n do {\r\n point = cat[nCoord] || cat[pCoord];\r\n pCoord--;\r\n nCoord++\r\n } while ((pCoord >= 0 || nCoord < cat.length) && !point);\r\n if (Array.isArray(point)) {\r\n minDistance = _abs(point[0][oppositeCoordName] - oppositeCoord);\r\n (0, _iterator.each)(point, function(i, p) {\r\n var distance = _abs(p[oppositeCoordName] - oppositeCoord);\r\n if (minDistance >= distance) {\r\n minDistance = distance;\r\n point = p\r\n }\r\n })\r\n }\r\n }\r\n return point\r\n },\r\n _applyVisibleArea: function() {\r\n var that = this;\r\n var rotated = that._options.rotated;\r\n var visibleX = (rotated ? that.getValueAxis() : that.getArgumentAxis()).getVisibleArea();\r\n var visibleY = (rotated ? that.getArgumentAxis() : that.getValueAxis()).getVisibleArea();\r\n that._visibleArea = {\r\n minX: visibleX[0],\r\n maxX: visibleX[1],\r\n minY: visibleY[0],\r\n maxY: visibleY[1]\r\n }\r\n },\r\n getPointCenterByArg: function(arg) {\r\n var point = this.getPointsByArg(arg)[0];\r\n return point ? point.getCenterCoord() : void 0\r\n }\r\n});\r\nexports.polar = polar = (0, _extend3.extend)({}, baseScatterMethods, {\r\n drawTrackers: function() {\r\n chart.drawTrackers.call(this);\r\n var cat = this._trackersTranslator;\r\n var index;\r\n if (!this.isVisible()) {\r\n return\r\n }(0, _iterator.each)(cat, function(i, category) {\r\n if (category) {\r\n index = i;\r\n return false\r\n }\r\n });\r\n cat[index + 360] = cat[index]\r\n },\r\n getNeighborPoint: function(x, y) {\r\n var pos = (0, _utils.convertXYToPolar)(this.getValueAxis().getCenter(), x, y);\r\n return chart.getNeighborPoint.call(this, pos.phi, pos.r)\r\n },\r\n _applyVisibleArea: function() {\r\n var that = this;\r\n var canvas = that.getValueAxis().getCanvas();\r\n that._visibleArea = {\r\n minX: canvas.left,\r\n maxX: canvas.width - canvas.right,\r\n minY: canvas.top,\r\n maxY: canvas.height - canvas.bottom\r\n }\r\n },\r\n getSeriesPairCoord: function(params, isArgument) {\r\n var coords = null;\r\n var paramName = isArgument ? \"argument\" : \"radius\";\r\n var points = this.getVisiblePoints();\r\n for (var i = 0; i < points.length; i++) {\r\n var p = points[i];\r\n var tmpPoint = (0, _type.isDefined)(p[paramName]) && (0, _type.isDefined)(params[paramName]) && p[paramName].valueOf() === params[paramName].valueOf() ? {\r\n x: p.x,\r\n y: p.y\r\n } : void 0;\r\n if ((0, _type.isDefined)(tmpPoint)) {\r\n coords = tmpPoint;\r\n break\r\n }\r\n }\r\n return coords\r\n }\r\n});\r\n","/**\r\n * DevExtreme (viz/series/points/symbol_point.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _window = require(\"../../../core/utils/window\");\r\nvar _label = require(\"./label\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _utils = require(\"../../core/utils\");\r\nvar window = (0, _window.getWindow)();\r\nvar _extend = _extend2.extend;\r\nvar _math = Math;\r\nvar _round = _math.round;\r\nvar _floor = _math.floor;\r\nvar _ceil = _math.ceil;\r\nvar DEFAULT_IMAGE_WIDTH = 20;\r\nvar DEFAULT_IMAGE_HEIGHT = 20;\r\nvar LABEL_OFFSET = 10;\r\nvar CANVAS_POSITION_DEFAULT = \"canvas_position_default\";\r\n\r\nfunction getSquareMarkerCoords(radius) {\r\n return [-radius, -radius, radius, -radius, radius, radius, -radius, radius, -radius, -radius]\r\n}\r\n\r\nfunction getPolygonMarkerCoords(radius) {\r\n var r = _ceil(radius);\r\n return [-r, 0, 0, -r, r, 0, 0, r, -r, 0]\r\n}\r\n\r\nfunction getCrossMarkerCoords(radius) {\r\n var r = _ceil(radius);\r\n var floorHalfRadius = _floor(r / 2);\r\n var ceilHalfRadius = _ceil(r / 2);\r\n return [-r, -floorHalfRadius, -floorHalfRadius, -r, 0, -ceilHalfRadius, floorHalfRadius, -r, r, -floorHalfRadius, ceilHalfRadius, 0, r, floorHalfRadius, floorHalfRadius, r, 0, ceilHalfRadius, -floorHalfRadius, r, -r, floorHalfRadius, -ceilHalfRadius, 0]\r\n}\r\n\r\nfunction getTriangleDownMarkerCoords(radius) {\r\n return [-radius, -radius, radius, -radius, 0, radius, -radius, -radius]\r\n}\r\n\r\nfunction getTriangleUpMarkerCoords(radius) {\r\n return [-radius, radius, radius, radius, 0, -radius, -radius, radius]\r\n}\r\nvar _default = {\r\n deleteLabel: function() {\r\n this._label.dispose();\r\n this._label = null\r\n },\r\n _hasGraphic: function() {\r\n return this.graphic\r\n },\r\n clearVisibility: function() {\r\n var that = this;\r\n var graphic = that.graphic;\r\n if (graphic && graphic.attr(\"visibility\")) {\r\n graphic.attr({\r\n visibility: null\r\n })\r\n }\r\n },\r\n isVisible: function() {\r\n return this.inVisibleArea && this.series.isVisible()\r\n },\r\n setInvisibility: function() {\r\n var that = this;\r\n var graphic = that.graphic;\r\n if (graphic && \"hidden\" !== graphic.attr(\"visibility\")) {\r\n graphic.attr({\r\n visibility: \"hidden\"\r\n })\r\n }\r\n that._errorBar && that._errorBar.attr({\r\n visibility: \"hidden\"\r\n });\r\n that._label.draw(false)\r\n },\r\n clearMarker: function() {\r\n var graphic = this.graphic;\r\n graphic && graphic.attr(this._emptySettings)\r\n },\r\n _createLabel: function() {\r\n this._label = new _label.Label({\r\n renderer: this.series._renderer,\r\n labelsGroup: this.series._labelsGroup,\r\n point: this\r\n })\r\n },\r\n _updateLabelData: function() {\r\n this._label.setData(this._getLabelFormatObject())\r\n },\r\n _updateLabelOptions: function() {\r\n !this._label && this._createLabel();\r\n this._label.setOptions(this._options.label)\r\n },\r\n _checkImage: function(image) {\r\n return (0, _type.isDefined)(image) && (\"string\" === typeof image || (0, _type.isDefined)(image.url))\r\n },\r\n _fillStyle: function() {\r\n this._styles = this._options.styles\r\n },\r\n _checkSymbol: function(oldOptions, newOptions) {\r\n var oldSymbol = oldOptions.symbol;\r\n var newSymbol = newOptions.symbol;\r\n var symbolChanged = \"circle\" === oldSymbol && \"circle\" !== newSymbol || \"circle\" !== oldSymbol && \"circle\" === newSymbol;\r\n var imageChanged = this._checkImage(oldOptions.image) !== this._checkImage(newOptions.image);\r\n return !!(symbolChanged || imageChanged)\r\n },\r\n _populatePointShape: function(symbol, radius) {\r\n switch (symbol) {\r\n case \"square\":\r\n return getSquareMarkerCoords(radius);\r\n case \"polygon\":\r\n return getPolygonMarkerCoords(radius);\r\n case \"triangle\":\r\n case \"triangleDown\":\r\n return getTriangleDownMarkerCoords(radius);\r\n case \"triangleUp\":\r\n return getTriangleUpMarkerCoords(radius);\r\n case \"cross\":\r\n return getCrossMarkerCoords(radius)\r\n }\r\n },\r\n hasCoords: function() {\r\n return null !== this.x && null !== this.y\r\n },\r\n correctValue: function(correction) {\r\n var that = this;\r\n var axis = that.series.getValueAxis();\r\n if (that.hasValue()) {\r\n that.value = that.properValue = axis.validateUnit(that.initialValue.valueOf() + correction.valueOf());\r\n that.minValue = axis.validateUnit(correction)\r\n }\r\n },\r\n resetCorrection: function() {\r\n this.value = this.properValue = this.initialValue;\r\n this.minValue = CANVAS_POSITION_DEFAULT\r\n },\r\n resetValue: function() {\r\n var that = this;\r\n if (that.hasValue()) {\r\n that.value = that.properValue = that.initialValue = 0;\r\n that.minValue = 0;\r\n that._label.setDataField(\"value\", that.value)\r\n }\r\n },\r\n _getTranslates: function(animationEnabled) {\r\n var translateX = this.x;\r\n var translateY = this.y;\r\n if (animationEnabled) {\r\n if (this._options.rotated) {\r\n translateX = this.defaultX\r\n } else {\r\n translateY = this.defaultY\r\n }\r\n }\r\n return {\r\n x: translateX,\r\n y: translateY\r\n }\r\n },\r\n _createImageMarker: function(renderer, settings, options) {\r\n var width = options.width || DEFAULT_IMAGE_WIDTH;\r\n var height = options.height || DEFAULT_IMAGE_HEIGHT;\r\n return renderer.image(-_round(.5 * width), -_round(.5 * height), width, height, options.url ? options.url.toString() : options.toString(), \"center\").attr({\r\n translateX: settings.translateX,\r\n translateY: settings.translateY,\r\n visibility: settings.visibility\r\n })\r\n },\r\n _createSymbolMarker: function(renderer, pointSettings) {\r\n var marker;\r\n var symbol = this._options.symbol;\r\n if (\"circle\" === symbol) {\r\n delete pointSettings.points;\r\n marker = renderer.circle().attr(pointSettings)\r\n } else {\r\n if (\"square\" === symbol || \"polygon\" === symbol || \"triangle\" === symbol || \"triangleDown\" === symbol || \"triangleUp\" === symbol || \"cross\" === symbol) {\r\n marker = renderer.path([], \"area\").attr(pointSettings).sharp()\r\n }\r\n }\r\n return marker\r\n },\r\n _createMarker: function(renderer, group, image, settings) {\r\n var that = this;\r\n var marker = that._checkImage(image) ? that._createImageMarker(renderer, settings, image) : that._createSymbolMarker(renderer, settings);\r\n if (marker) {\r\n marker.data({\r\n \"chart-data-point\": that\r\n }).append(group)\r\n }\r\n return marker\r\n },\r\n _getSymbolBBox: function(x, y, r) {\r\n return {\r\n x: x - r,\r\n y: y - r,\r\n width: 2 * r,\r\n height: 2 * r\r\n }\r\n },\r\n _getImageBBox: function(x, y) {\r\n var image = this._options.image;\r\n var width = image.width || DEFAULT_IMAGE_WIDTH;\r\n var height = image.height || DEFAULT_IMAGE_HEIGHT;\r\n return {\r\n x: x - _round(width / 2),\r\n y: y - _round(height / 2),\r\n width: width,\r\n height: height\r\n }\r\n },\r\n _getGraphicBBox: function() {\r\n var that = this;\r\n var options = that._options;\r\n var x = that.x;\r\n var y = that.y;\r\n var bBox;\r\n if (options.visible) {\r\n bBox = that._checkImage(options.image) ? that._getImageBBox(x, y) : that._getSymbolBBox(x, y, options.styles.normal.r)\r\n } else {\r\n bBox = {\r\n x: x,\r\n y: y,\r\n width: 0,\r\n height: 0\r\n }\r\n }\r\n return bBox\r\n },\r\n hideInsideLabel: _common.noop,\r\n _getShiftLabelCoords: function(label) {\r\n var coord = this._addLabelAlignmentAndOffset(label, this._getLabelCoords(label));\r\n return this._checkLabelPosition(label, coord)\r\n },\r\n _drawLabel: function() {\r\n var that = this;\r\n var customVisibility = that._getCustomLabelVisibility();\r\n var label = that._label;\r\n var isVisible = that._showForZeroValues() && that.hasValue() && false !== customVisibility && (that.series.getLabelVisibility() || customVisibility);\r\n label.draw(!!isVisible)\r\n },\r\n correctLabelPosition: function(label) {\r\n var that = this;\r\n var coord = that._getShiftLabelCoords(label);\r\n if (!that.hideInsideLabel(label, coord)) {\r\n label.setFigureToDrawConnector(that._getLabelConnector(label.pointPosition));\r\n label.shift(_round(coord.x), _round(coord.y))\r\n }\r\n },\r\n _showForZeroValues: function() {\r\n return true\r\n },\r\n _getLabelConnector: function(pointPosition) {\r\n var bBox = this._getGraphicBBox(pointPosition);\r\n var w2 = bBox.width / 2;\r\n var h2 = bBox.height / 2;\r\n return {\r\n x: bBox.x + w2,\r\n y: bBox.y + h2,\r\n r: this._options.visible ? Math.max(w2, h2) : 0\r\n }\r\n },\r\n _getPositionFromLocation: function() {\r\n return {\r\n x: this.x,\r\n y: this.y\r\n }\r\n },\r\n _isPointInVisibleArea: function(visibleArea, graphicBBox) {\r\n return visibleArea.minX <= graphicBBox.x + graphicBBox.width && visibleArea.maxX >= graphicBBox.x && visibleArea.minY <= graphicBBox.y + graphicBBox.height && visibleArea.maxY >= graphicBBox.y\r\n },\r\n _checkLabelPosition: function(label, coord) {\r\n var that = this;\r\n var visibleArea = that._getVisibleArea();\r\n var labelBBox = label.getBoundingRect();\r\n var graphicBBox = that._getGraphicBBox(label.pointPosition);\r\n var fullGraphicBBox = that._getGraphicBBox();\r\n var isInside = \"inside\" === label.getLayoutOptions().position;\r\n var offset = LABEL_OFFSET;\r\n if (that._isPointInVisibleArea(visibleArea, fullGraphicBBox)) {\r\n if (!that._options.rotated) {\r\n if (visibleArea.minX > coord.x) {\r\n coord.x = visibleArea.minX\r\n }\r\n if (visibleArea.maxX < coord.x + labelBBox.width) {\r\n coord.x = visibleArea.maxX - labelBBox.width\r\n }\r\n if (visibleArea.minY > coord.y) {\r\n coord.y = isInside ? visibleArea.minY : graphicBBox.y + graphicBBox.height + offset\r\n }\r\n if (visibleArea.maxY < coord.y + labelBBox.height) {\r\n coord.y = isInside ? visibleArea.maxY - labelBBox.height : graphicBBox.y - labelBBox.height - offset\r\n }\r\n } else {\r\n if (visibleArea.minX > coord.x) {\r\n coord.x = isInside ? visibleArea.minX : graphicBBox.x + graphicBBox.width + offset\r\n }\r\n if (visibleArea.maxX < coord.x + labelBBox.width) {\r\n coord.x = isInside ? visibleArea.maxX - labelBBox.width : graphicBBox.x - offset - labelBBox.width\r\n }\r\n if (visibleArea.minY > coord.y) {\r\n coord.y = visibleArea.minY\r\n }\r\n if (visibleArea.maxY < coord.y + labelBBox.height) {\r\n coord.y = visibleArea.maxY - labelBBox.height\r\n }\r\n }\r\n }\r\n return coord\r\n },\r\n _addLabelAlignmentAndOffset: function(label, coord) {\r\n var labelBBox = label.getBoundingRect();\r\n var labelOptions = label.getLayoutOptions();\r\n if (!this._options.rotated) {\r\n if (\"left\" === labelOptions.alignment) {\r\n coord.x += labelBBox.width / 2\r\n } else {\r\n if (\"right\" === labelOptions.alignment) {\r\n coord.x -= labelBBox.width / 2\r\n }\r\n }\r\n }\r\n coord.x += labelOptions.horizontalOffset;\r\n coord.y += labelOptions.verticalOffset;\r\n return coord\r\n },\r\n _getLabelCoords: function(label) {\r\n return this._getLabelCoordOfPosition(label, this._getLabelPosition(label.pointPosition))\r\n },\r\n _getLabelCoordOfPosition: function(label, position) {\r\n var that = this;\r\n var labelBBox = label.getBoundingRect();\r\n var graphicBBox = that._getGraphicBBox(label.pointPosition);\r\n var offset = LABEL_OFFSET;\r\n var centerY = graphicBBox.height / 2 - labelBBox.height / 2;\r\n var centerX = graphicBBox.width / 2 - labelBBox.width / 2;\r\n var x = graphicBBox.x;\r\n var y = graphicBBox.y;\r\n switch (position) {\r\n case \"left\":\r\n x -= labelBBox.width + offset;\r\n y += centerY;\r\n break;\r\n case \"right\":\r\n x += graphicBBox.width + offset;\r\n y += centerY;\r\n break;\r\n case \"top\":\r\n x += centerX;\r\n y -= labelBBox.height + offset;\r\n break;\r\n case \"bottom\":\r\n x += centerX;\r\n y += graphicBBox.height + offset;\r\n break;\r\n case \"inside\":\r\n x += centerX;\r\n y += centerY\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _drawMarker: function(renderer, group, animationEnabled) {\r\n var that = this;\r\n var options = that._options;\r\n var translates = that._getTranslates(animationEnabled);\r\n var style = that._getStyle();\r\n that.graphic = that._createMarker(renderer, group, options.image, _extend({\r\n translateX: translates.x,\r\n translateY: translates.y,\r\n points: that._populatePointShape(options.symbol, style.r)\r\n }, style))\r\n },\r\n _getErrorBarSettings: function() {\r\n return {\r\n visibility: \"visible\"\r\n }\r\n },\r\n _getErrorBarBaseEdgeLength: function() {\r\n return 2 * this.getPointRadius()\r\n },\r\n _drawErrorBar: function(renderer, group) {\r\n if (!this._options.errorBars) {\r\n return\r\n }\r\n var that = this;\r\n var options = that._options;\r\n var errorBarOptions = options.errorBars;\r\n var points = [];\r\n var settings;\r\n var pos = that._errorBarPos;\r\n var high = that._highErrorCoord;\r\n var low = that._lowErrorCoord;\r\n var displayMode = (0, _utils.normalizeEnum)(errorBarOptions.displayMode);\r\n var isHighDisplayMode = \"high\" === displayMode;\r\n var isLowDisplayMode = \"low\" === displayMode;\r\n var highErrorOnly = (isHighDisplayMode || !(0, _type.isDefined)(low)) && (0, _type.isDefined)(high) && !isLowDisplayMode;\r\n var lowErrorOnly = (isLowDisplayMode || !(0, _type.isDefined)(high)) && (0, _type.isDefined)(low) && !isHighDisplayMode;\r\n var edgeLength = errorBarOptions.edgeLength;\r\n if (edgeLength <= 1 && edgeLength > 0) {\r\n edgeLength = this._getErrorBarBaseEdgeLength() * errorBarOptions.edgeLength\r\n }\r\n edgeLength = _floor(parseInt(edgeLength) / 2);\r\n highErrorOnly && (low = that._baseErrorBarPos);\r\n lowErrorOnly && (high = that._baseErrorBarPos);\r\n if (\"none\" !== displayMode && (0, _type.isDefined)(high) && (0, _type.isDefined)(low) && (0, _type.isDefined)(pos)) {\r\n !lowErrorOnly && points.push([pos - edgeLength, high, pos + edgeLength, high]);\r\n points.push([pos, high, pos, low]);\r\n !highErrorOnly && points.push([pos + edgeLength, low, pos - edgeLength, low]);\r\n options.rotated && (0, _iterator.each)(points, function(_, p) {\r\n p.reverse()\r\n });\r\n settings = that._getErrorBarSettings(errorBarOptions);\r\n if (!that._errorBar) {\r\n that._errorBar = renderer.path(points, \"line\").attr(settings).append(group)\r\n } else {\r\n settings.points = points;\r\n that._errorBar.attr(settings)\r\n }\r\n } else {\r\n that._errorBar && that._errorBar.attr({\r\n visibility: \"hidden\"\r\n })\r\n }\r\n },\r\n getTooltipParams: function() {\r\n var that = this;\r\n var graphic = that.graphic;\r\n return {\r\n x: that.x,\r\n y: that.y,\r\n offset: graphic ? graphic.getBBox().height / 2 : 0\r\n }\r\n },\r\n setPercentValue: function(absTotal, total, leftHoleTotal, rightHoleTotal) {\r\n var that = this;\r\n var valuePercent = that.value / absTotal || 0;\r\n var minValuePercent = that.minValue / absTotal || 0;\r\n var percent = valuePercent - minValuePercent;\r\n that._label.setDataField(\"percent\", percent);\r\n that._label.setDataField(\"total\", total);\r\n if (that.series.isFullStackedSeries() && that.hasValue()) {\r\n if (that.leftHole) {\r\n that.leftHole /= absTotal - leftHoleTotal;\r\n that.minLeftHole /= absTotal - leftHoleTotal\r\n }\r\n if (that.rightHole) {\r\n that.rightHole /= absTotal - rightHoleTotal;\r\n that.minRightHole /= absTotal - rightHoleTotal\r\n }\r\n that.value = that.properValue = valuePercent;\r\n that.minValue = !minValuePercent ? that.minValue : minValuePercent\r\n }\r\n },\r\n _storeTrackerR: function() {\r\n var that = this;\r\n var navigator = window.navigator;\r\n var r = that._options.styles.normal.r;\r\n var minTrackerSize = (0, _window.hasProperty)(\"ontouchstart\") || navigator.msPointerEnabled && navigator.msMaxTouchPoints || navigator.pointerEnabled && navigator.maxTouchPoints ? 20 : 6;\r\n that._options.trackerR = r < minTrackerSize ? minTrackerSize : r;\r\n return that._options.trackerR\r\n },\r\n _translateErrorBars: function() {\r\n var that = this;\r\n var options = that._options;\r\n var rotated = options.rotated;\r\n var errorBars = options.errorBars;\r\n var translator = that._getValTranslator();\r\n if (!errorBars) {\r\n return\r\n }(0, _type.isDefined)(that.lowError) && (that._lowErrorCoord = translator.translate(that.lowError));\r\n (0, _type.isDefined)(that.highError) && (that._highErrorCoord = translator.translate(that.highError));\r\n that._errorBarPos = _floor(rotated ? that.vy : that.vx);\r\n that._baseErrorBarPos = \"stdDeviation\" === errorBars.type ? that._lowErrorCoord + (that._highErrorCoord - that._lowErrorCoord) / 2 : rotated ? that.vx : that.vy\r\n },\r\n _translate: function() {\r\n var that = this;\r\n var valTranslator = that._getValTranslator();\r\n var argTranslator = that._getArgTranslator();\r\n if (that._options.rotated) {\r\n that.vx = that.x = valTranslator.translate(that.value);\r\n that.vy = that.y = argTranslator.translate(that.argument);\r\n that.minX = valTranslator.translate(that.minValue);\r\n that.defaultX = valTranslator.translate(CANVAS_POSITION_DEFAULT)\r\n } else {\r\n that.vy = that.y = valTranslator.translate(that.value);\r\n that.vx = that.x = argTranslator.translate(that.argument);\r\n that.minY = valTranslator.translate(that.minValue);\r\n that.defaultY = valTranslator.translate(CANVAS_POSITION_DEFAULT)\r\n }\r\n that._translateErrorBars();\r\n that._calculateVisibility(that.x, that.y)\r\n },\r\n _updateData: function(data) {\r\n var that = this;\r\n that.value = that.properValue = that.initialValue = that.originalValue = data.value;\r\n that.minValue = that.initialMinValue = that.originalMinValue = (0, _type.isDefined)(data.minValue) ? data.minValue : CANVAS_POSITION_DEFAULT\r\n },\r\n _getImageSettings: function(image) {\r\n return {\r\n href: image.url || image.toString(),\r\n width: image.width || DEFAULT_IMAGE_WIDTH,\r\n height: image.height || DEFAULT_IMAGE_HEIGHT\r\n }\r\n },\r\n getCrosshairData: function() {\r\n var that = this;\r\n var r = that._options.rotated;\r\n var value = that.properValue;\r\n var argument = that.argument;\r\n return {\r\n x: that.vx,\r\n y: that.vy,\r\n xValue: r ? value : argument,\r\n yValue: r ? argument : value,\r\n axis: that.series.axis\r\n }\r\n },\r\n getPointRadius: function() {\r\n var style = this._getStyle();\r\n var options = this._options;\r\n var r = style.r;\r\n var extraSpace;\r\n var symbol = options.symbol;\r\n var isSquare = \"square\" === symbol;\r\n var isTriangle = \"triangle\" === symbol || \"triangleDown\" === symbol || \"triangleUp\" === symbol;\r\n if (options.visible && !options.image && r) {\r\n extraSpace = style[\"stroke-width\"] / 2;\r\n return (isSquare || isTriangle ? 1.4 * r : r) + extraSpace\r\n }\r\n return 0\r\n },\r\n _updateMarker: function(animationEnabled, style) {\r\n var that = this;\r\n var options = that._options;\r\n var settings;\r\n var image = options.image;\r\n var visibility = !that.isVisible() ? {\r\n visibility: \"hidden\"\r\n } : {};\r\n if (that._checkImage(image)) {\r\n settings = _extend({}, {\r\n visibility: style.visibility\r\n }, visibility, that._getImageSettings(image))\r\n } else {\r\n settings = _extend({}, style, visibility, {\r\n points: that._populatePointShape(options.symbol, style.r)\r\n })\r\n }\r\n if (!animationEnabled) {\r\n settings.translateX = that.x;\r\n settings.translateY = that.y\r\n }\r\n that.graphic.attr(settings).sharp()\r\n },\r\n _getLabelFormatObject: function() {\r\n var that = this;\r\n return {\r\n argument: that.initialArgument,\r\n value: that.initialValue,\r\n originalArgument: that.originalArgument,\r\n originalValue: that.originalValue,\r\n seriesName: that.series.name,\r\n lowErrorValue: that.lowError,\r\n highErrorValue: that.highError,\r\n point: that\r\n }\r\n },\r\n _getLabelPosition: function() {\r\n var rotated = this._options.rotated;\r\n if (this.initialValue > 0) {\r\n return rotated ? \"right\" : \"top\"\r\n } else {\r\n return rotated ? \"left\" : \"bottom\"\r\n }\r\n },\r\n _getFormatObject: function(tooltip) {\r\n var that = this;\r\n var labelFormatObject = that._label.getData();\r\n return _extend({}, labelFormatObject, {\r\n argumentText: tooltip.formatValue(that.initialArgument, \"argument\"),\r\n valueText: tooltip.formatValue(that.initialValue)\r\n }, (0, _type.isDefined)(labelFormatObject.percent) ? {\r\n percentText: tooltip.formatValue(labelFormatObject.percent, \"percent\")\r\n } : {}, (0, _type.isDefined)(labelFormatObject.total) ? {\r\n totalText: tooltip.formatValue(labelFormatObject.total)\r\n } : {})\r\n },\r\n getMarkerVisibility: function() {\r\n return this._options.visible\r\n },\r\n coordsIn: function(x, y) {\r\n var trackerRadius = this._storeTrackerR();\r\n return x >= this.x - trackerRadius && x <= this.x + trackerRadius && y >= this.y - trackerRadius && y <= this.y + trackerRadius\r\n },\r\n getMinValue: function(noErrorBar) {\r\n var errorBarOptions = this._options.errorBars;\r\n if (errorBarOptions && !noErrorBar) {\r\n var displayMode = errorBarOptions.displayMode;\r\n var lowValue = \"high\" !== displayMode && (0, _type.isDefined)(this.lowError) ? this.lowError : this.value;\r\n var highValue = \"low\" !== displayMode && (0, _type.isDefined)(this.highError) ? this.highError : this.value;\r\n return lowValue < highValue ? lowValue : highValue\r\n } else {\r\n return this.value\r\n }\r\n },\r\n getMaxValue: function(noErrorBar) {\r\n var errorBarOptions = this._options.errorBars;\r\n if (errorBarOptions && !noErrorBar) {\r\n var displayMode = errorBarOptions.displayMode;\r\n var lowValue = \"high\" !== displayMode && (0, _type.isDefined)(this.lowError) ? this.lowError : this.value;\r\n var highValue = \"low\" !== displayMode && (0, _type.isDefined)(this.highError) ? this.highError : this.value;\r\n return lowValue > highValue ? lowValue : highValue\r\n } else {\r\n return this.value\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/bar_series.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.polar = exports.chart = void 0;\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar scatterSeries = _interopRequireWildcard(require(\"./scatter_series\"));\r\nvar _area_series = require(\"./area_series\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cache = new WeakMap;\r\n _getRequireWildcardCache = function() {\r\n return cache\r\n };\r\n return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n if (obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache();\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\r\n}\r\nvar areaSeries = _area_series.chart.area;\r\nvar chartSeries = scatterSeries.chart;\r\nvar polarSeries = scatterSeries.polar;\r\nvar _extend = _extend2.extend;\r\nvar _each = _iterator.each;\r\nvar chart = {};\r\nexports.chart = chart;\r\nvar polar = {};\r\nexports.polar = polar;\r\nvar baseBarSeriesMethods = {\r\n _createLegendState: function(styleOptions, defaultColor) {\r\n return {\r\n fill: styleOptions.color || defaultColor,\r\n hatching: styleOptions.hatching\r\n }\r\n },\r\n _parsePointStyle: function(style, defaultColor, defaultBorderColor) {\r\n var color = style.color || defaultColor;\r\n var base = chartSeries._parsePointStyle.call(this, style, color, defaultBorderColor);\r\n base.fill = color;\r\n base.hatching = style.hatching;\r\n base.dashStyle = style.border && style.border.dashStyle || \"solid\";\r\n delete base.r;\r\n return base\r\n },\r\n _applyMarkerClipRect: function(settings) {\r\n settings[\"clip-path\"] = null\r\n },\r\n _setGroupsSettings: function(animationEnabled, firstDrawing) {\r\n var that = this;\r\n var settings = {};\r\n chartSeries._setGroupsSettings.apply(that, arguments);\r\n if (animationEnabled && firstDrawing) {\r\n settings = this._getAffineCoordOptions()\r\n } else {\r\n if (!animationEnabled) {\r\n settings = {\r\n scaleX: 1,\r\n scaleY: 1,\r\n translateX: 0,\r\n translateY: 0\r\n }\r\n }\r\n }\r\n that._markersGroup.attr(settings)\r\n },\r\n _drawPoint: function(options) {\r\n options.hasAnimation = options.hasAnimation && !options.firstDrawing;\r\n options.firstDrawing = false;\r\n chartSeries._drawPoint.call(this, options)\r\n },\r\n _getMainColor: function() {\r\n return this._options.mainSeriesColor\r\n },\r\n _createPointStyles: function(pointOptions) {\r\n var that = this;\r\n var mainColor = pointOptions.color || that._getMainColor();\r\n return {\r\n normal: that._parsePointStyle(pointOptions, mainColor, mainColor),\r\n hover: that._parsePointStyle(pointOptions.hoverStyle || {}, mainColor, mainColor),\r\n selection: that._parsePointStyle(pointOptions.selectionStyle || {}, mainColor, mainColor)\r\n }\r\n },\r\n _updatePointsVisibility: function() {\r\n var visibility = this._options.visible;\r\n (0, _iterator.each)(this._points, function(_, point) {\r\n point._options.visible = visibility\r\n })\r\n },\r\n _getOptionsForPoint: function() {\r\n return this._options\r\n },\r\n _animate: function(firstDrawing) {\r\n var that = this;\r\n var complete = function() {\r\n that._animateComplete()\r\n };\r\n var animateFunc = function(drawnPoints, complete) {\r\n var lastPointIndex = drawnPoints.length - 1;\r\n _each(drawnPoints || [], function(i, point) {\r\n point.animate(i === lastPointIndex ? complete : void 0, point.getMarkerCoords())\r\n })\r\n };\r\n that._animatePoints(firstDrawing, complete, animateFunc)\r\n },\r\n getValueRangeInitialValue: areaSeries.getValueRangeInitialValue,\r\n _patchMarginOptions: function(options) {\r\n options.checkInterval = true;\r\n return options\r\n },\r\n _defaultAggregator: \"sum\",\r\n _defineDrawingState: function() {},\r\n usePointsToDefineAutoHiding: function() {\r\n return false\r\n }\r\n};\r\nchart.bar = _extend({}, chartSeries, baseBarSeriesMethods, {\r\n _getAffineCoordOptions: function() {\r\n var rotated = this._options.rotated;\r\n var direction = rotated ? \"X\" : \"Y\";\r\n var settings = {\r\n scaleX: rotated ? .001 : 1,\r\n scaleY: rotated ? 1 : .001\r\n };\r\n settings[\"translate\" + direction] = this.getValueAxis().getTranslator().translate(\"canvas_position_default\");\r\n return settings\r\n },\r\n _animatePoints: function(firstDrawing, complete, animateFunc) {\r\n var that = this;\r\n that._markersGroup.animate({\r\n scaleX: 1,\r\n scaleY: 1,\r\n translateY: 0,\r\n translateX: 0\r\n }, void 0, complete);\r\n if (!firstDrawing) {\r\n animateFunc(that._drawnPoints, complete)\r\n }\r\n },\r\n checkSeriesViewportCoord: function(axis, coord) {\r\n if (!chartSeries.checkSeriesViewportCoord.call(this)) {\r\n return false\r\n }\r\n if (axis.isArgumentAxis) {\r\n return true\r\n }\r\n var translator = axis.getTranslator();\r\n var range = this.getViewport();\r\n var min = translator.translate(range.categories ? range.categories[0] : range.min);\r\n var max = translator.translate(range.categories ? range.categories[range.categories.length - 1] : range.max);\r\n var rotated = this.getOptions().rotated;\r\n var inverted = axis.getOptions().inverted;\r\n return rotated && !inverted || !rotated && inverted ? coord >= min && coord <= max : coord >= max && coord <= min\r\n },\r\n getSeriesPairCoord: function(coord, isArgument) {\r\n var oppositeCoord = null;\r\n var rotated = this._options.rotated;\r\n var isOpposite = !isArgument && !rotated || isArgument && rotated;\r\n var coordName = isOpposite ? \"vy\" : \"vx\";\r\n var oppositeCoordName = isOpposite ? \"vx\" : \"vy\";\r\n var points = this.getPoints();\r\n for (var i = 0; i < points.length; i++) {\r\n var p = points[i];\r\n var tmpCoord = void 0;\r\n if (isArgument) {\r\n tmpCoord = p.getCenterCoord()[coordName[1]] === coord ? p[oppositeCoordName] : void 0\r\n } else {\r\n tmpCoord = p[coordName] === coord ? p[oppositeCoordName] : void 0\r\n }\r\n if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {\r\n oppositeCoord = tmpCoord;\r\n break\r\n }\r\n }\r\n return oppositeCoord\r\n }\r\n});\r\npolar.bar = _extend({}, polarSeries, baseBarSeriesMethods, {\r\n _animatePoints: function(firstDrawing, complete, animateFunc) {\r\n animateFunc(this._drawnPoints, complete)\r\n },\r\n _setGroupsSettings: chartSeries._setGroupsSettings,\r\n _drawPoint: function(point, groups, animationEnabled) {\r\n chartSeries._drawPoint.call(this, point, groups, animationEnabled)\r\n },\r\n _parsePointStyle: function(style) {\r\n var base = baseBarSeriesMethods._parsePointStyle.apply(this, arguments);\r\n base.opacity = style.opacity;\r\n return base\r\n },\r\n _createGroups: chartSeries._createGroups,\r\n _setMarkerGroupSettings: function() {\r\n var that = this;\r\n var markersSettings = that._createPointStyles(that._getMarkerGroupOptions()).normal;\r\n markersSettings.class = \"dxc-markers\";\r\n that._applyMarkerClipRect(markersSettings);\r\n var groupSettings = _extend({}, markersSettings);\r\n delete groupSettings.opacity;\r\n that._markersGroup.attr(groupSettings)\r\n },\r\n getSeriesPairCoord: function(params, isArgument) {\r\n var coords = null;\r\n var paramName = isArgument ? \"argument\" : \"radius\";\r\n var points = this.getVisiblePoints();\r\n var argAxis = this.getArgumentAxis();\r\n var startAngle = argAxis.getAngles()[0];\r\n for (var i = 0; i < points.length; i++) {\r\n var p = points[i];\r\n var tmpPoint = (0, _type.isDefined)(p[paramName]) && (0, _type.isDefined)(params[paramName]) && p[paramName].valueOf() === params[paramName].valueOf() ? (0, _utils.convertPolarToXY)(argAxis.getCenter(), startAngle, -argAxis.getTranslatedAngle(p.angle), p.radius) : void 0;\r\n if ((0, _type.isDefined)(tmpPoint)) {\r\n coords = tmpPoint;\r\n break\r\n }\r\n }\r\n return coords\r\n },\r\n _createLegendState: areaSeries._createLegendState\r\n});\r\n","/**\r\n * DevExtreme (viz/series/area_series.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.polar = exports.chart = void 0;\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _scatter_series = require(\"./scatter_series\");\r\nvar _line_series = require(\"./line_series\");\r\nvar _utils = require(\"../core/utils\");\r\nvar chartLineSeries = _line_series.chart.line;\r\nvar polarLineSeries = _line_series.polar.line;\r\nvar _extend = _extend2.extend;\r\nvar calculateBezierPoints = _line_series.chart.spline._calculateBezierPoints;\r\nvar chart = {};\r\nexports.chart = chart;\r\nvar polar = {};\r\nexports.polar = polar;\r\nvar baseAreaMethods = {\r\n _createBorderElement: chartLineSeries._createMainElement,\r\n _createLegendState: function(styleOptions, defaultColor) {\r\n return {\r\n fill: styleOptions.color || defaultColor,\r\n opacity: styleOptions.opacity,\r\n hatching: styleOptions.hatching\r\n }\r\n },\r\n getValueRangeInitialValue: function() {\r\n if (\"logarithmic\" !== this.valueAxisType && \"datetime\" !== this.valueType && false !== this.showZero) {\r\n return 0\r\n } else {\r\n return _scatter_series.chart.getValueRangeInitialValue.call(this)\r\n }\r\n },\r\n _getDefaultSegment: function(segment) {\r\n var defaultSegment = chartLineSeries._getDefaultSegment(segment);\r\n defaultSegment.area = defaultSegment.line.concat(defaultSegment.line.slice().reverse());\r\n return defaultSegment\r\n },\r\n _updateElement: function(element, segment, animate, complete) {\r\n var lineParams = {\r\n points: segment.line\r\n };\r\n var areaParams = {\r\n points: segment.area\r\n };\r\n var borderElement = element.line;\r\n if (animate) {\r\n borderElement && borderElement.animate(lineParams);\r\n element.area.animate(areaParams, {}, complete)\r\n } else {\r\n borderElement && borderElement.attr(lineParams);\r\n element.area.attr(areaParams)\r\n }\r\n },\r\n _removeElement: function(element) {\r\n element.line && element.line.remove();\r\n element.area.remove()\r\n },\r\n _drawElement: function(segment) {\r\n return {\r\n line: this._bordersGroup && this._createBorderElement(segment.line, {\r\n \"stroke-width\": this._styles.normal.border[\"stroke-width\"]\r\n }).append(this._bordersGroup),\r\n area: this._createMainElement(segment.area).append(this._elementsGroup)\r\n }\r\n },\r\n _applyStyle: function(style) {\r\n var that = this;\r\n that._elementsGroup && that._elementsGroup.smartAttr(style.elements);\r\n that._bordersGroup && that._bordersGroup.attr(style.border);\r\n (that._graphics || []).forEach(function(graphic) {\r\n graphic.line && graphic.line.attr({\r\n \"stroke-width\": style.border[\"stroke-width\"]\r\n }).sharp()\r\n })\r\n },\r\n _parseStyle: function(options, defaultColor, defaultBorderColor) {\r\n var borderOptions = options.border || {};\r\n var borderStyle = chartLineSeries._parseLineOptions(borderOptions, defaultBorderColor);\r\n borderStyle.stroke = borderOptions.visible && borderStyle[\"stroke-width\"] ? borderStyle.stroke : \"none\";\r\n borderStyle[\"stroke-width\"] = borderStyle[\"stroke-width\"] || 1;\r\n return {\r\n border: borderStyle,\r\n elements: {\r\n stroke: \"none\",\r\n fill: options.color || defaultColor,\r\n hatching: options.hatching,\r\n opacity: options.opacity\r\n }\r\n }\r\n },\r\n _areBordersVisible: function() {\r\n var options = this._options;\r\n return options.border.visible || options.hoverStyle.border.visible || options.selectionStyle.border.visible\r\n },\r\n _createMainElement: function(points, settings) {\r\n return this._renderer.path(points, \"area\").attr(settings)\r\n },\r\n _getTrackerSettings: function(segment) {\r\n return {\r\n \"stroke-width\": segment.singlePointSegment ? this._defaultTrackerWidth : 0\r\n }\r\n },\r\n _getMainPointsFromSegment: function(segment) {\r\n return segment.area\r\n }\r\n};\r\n\r\nfunction createAreaPoints(points) {\r\n return (0, _utils.map)(points, function(pt) {\r\n return pt.getCoords()\r\n }).concat((0, _utils.map)(points.slice().reverse(), function(pt) {\r\n return pt.getCoords(true)\r\n }))\r\n}\r\nvar areaSeries = chart.area = _extend({}, chartLineSeries, baseAreaMethods, {\r\n _prepareSegment: function(points, rotated) {\r\n var that = this;\r\n var processedPoints = that._processSinglePointsAreaSegment(points, rotated);\r\n var areaPoints = createAreaPoints(processedPoints);\r\n var argAxis = that.getArgumentAxis();\r\n if (argAxis.getAxisPosition) {\r\n var argAxisPosition = argAxis.getAxisPosition();\r\n var axisOptions = argAxis.getOptions();\r\n var edgeOffset = (!rotated ? -1 : 1) * Math.round(axisOptions.width / 2);\r\n if (axisOptions.visible) {\r\n areaPoints.forEach(function(p, i) {\r\n if (p) {\r\n var index = 1 === points.length ? 0 : i < points.length ? i : areaPoints.length - 1 - i;\r\n rotated && p.x === points[index].defaultX && p.x === argAxisPosition - argAxis.getAxisShift() && (p.x += edgeOffset);\r\n !rotated && p.y === points[index].defaultY && p.y === argAxisPosition - argAxis.getAxisShift() && (p.y += edgeOffset)\r\n }\r\n })\r\n }\r\n }\r\n return {\r\n line: processedPoints,\r\n area: areaPoints,\r\n singlePointSegment: processedPoints !== points\r\n }\r\n },\r\n _processSinglePointsAreaSegment: function(points, rotated) {\r\n if (points && 1 === points.length) {\r\n var p = points[0];\r\n var p1 = (0, _object.clone)(p);\r\n p1[rotated ? \"y\" : \"x\"] += 1;\r\n p1.argument = null;\r\n return [p, p1]\r\n }\r\n return points\r\n }\r\n});\r\npolar.area = _extend({}, polarLineSeries, baseAreaMethods, {\r\n _prepareSegment: function(points, rotated, lastSegment) {\r\n lastSegment && polarLineSeries._closeSegment.call(this, points);\r\n return areaSeries._prepareSegment.call(this, points)\r\n },\r\n _processSinglePointsAreaSegment: function(points) {\r\n return _line_series.polar.line._prepareSegment.call(this, points).line\r\n }\r\n});\r\nchart.steparea = _extend({}, areaSeries, {\r\n _prepareSegment: function(points, rotated) {\r\n var stepLineSeries = _line_series.chart.stepline;\r\n points = areaSeries._processSinglePointsAreaSegment(points, rotated);\r\n return areaSeries._prepareSegment.call(this, stepLineSeries._calculateStepLinePoints.call(this, points), rotated)\r\n },\r\n getSeriesPairCoord: _line_series.chart.stepline.getSeriesPairCoord\r\n});\r\nchart.splinearea = _extend({}, areaSeries, {\r\n _areaPointsToSplineAreaPoints: function(areaPoints) {\r\n var previousMiddlePoint = areaPoints[areaPoints.length / 2 - 1];\r\n var middlePoint = areaPoints[areaPoints.length / 2];\r\n areaPoints.splice(areaPoints.length / 2, 0, {\r\n x: previousMiddlePoint.x,\r\n y: previousMiddlePoint.y\r\n }, {\r\n x: middlePoint.x,\r\n y: middlePoint.y\r\n })\r\n },\r\n _prepareSegment: function(points, rotated) {\r\n var processedPoints = areaSeries._processSinglePointsAreaSegment(points, rotated);\r\n var areaSegment = areaSeries._prepareSegment.call(this, calculateBezierPoints(processedPoints, rotated));\r\n this._areaPointsToSplineAreaPoints(areaSegment.area);\r\n areaSegment.singlePointSegment = processedPoints !== points;\r\n return areaSegment\r\n },\r\n _getDefaultSegment: function(segment) {\r\n var areaDefaultSegment = areaSeries._getDefaultSegment(segment);\r\n this._areaPointsToSplineAreaPoints(areaDefaultSegment.area);\r\n return areaDefaultSegment\r\n },\r\n _createMainElement: function(points, settings) {\r\n return this._renderer.path(points, \"bezierarea\").attr(settings)\r\n },\r\n _createBorderElement: _line_series.chart.spline._createMainElement,\r\n getSeriesPairCoord: _line_series.chart.spline.getSeriesPairCoord,\r\n _getNearestPoints: _line_series.chart.spline._getNearestPoints,\r\n _getBezierPoints: _line_series.chart.spline._getBezierPoints,\r\n obtainCubicBezierTCoef: _line_series.chart.spline.obtainCubicBezierTCoef\r\n});\r\n","/**\r\n * DevExtreme (viz/series/points/bar_point.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend2 = require(\"../../../core/utils/extend\");\r\nvar _symbol_point = _interopRequireDefault(require(\"./symbol_point\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _extend = _extend2.extend;\r\nvar _math = Math;\r\nvar _floor = _math.floor;\r\nvar _abs = _math.abs;\r\nvar CANVAS_POSITION_DEFAULT = \"canvas_position_default\";\r\nvar DEFAULT_BAR_TRACKER_SIZE = 9;\r\nvar CORRECTING_BAR_TRACKER_VALUE = 4;\r\nvar RIGHT = \"right\";\r\nvar LEFT = \"left\";\r\nvar TOP = \"top\";\r\nvar BOTTOM = \"bottom\";\r\n\r\nfunction getLabelOrientation(point) {\r\n var initialValue = point.initialValue;\r\n var invert = point._getValTranslator().getBusinessRange().invert;\r\n var isDiscreteValue = \"discrete\" === point.series.valueAxisType;\r\n var isFullStacked = point.series.isFullStackedSeries();\r\n var notAxisInverted = !isDiscreteValue && (initialValue >= 0 && !invert || initialValue < 0 && invert) || isDiscreteValue && !invert || isFullStacked;\r\n return notAxisInverted ? TOP : BOTTOM\r\n}\r\nvar _default = _extend({}, _symbol_point.default, {\r\n correctCoordinates: function(correctOptions) {\r\n var that = this;\r\n var correction = _floor(correctOptions.offset - correctOptions.width / 2);\r\n if (that._options.rotated) {\r\n that.height = correctOptions.width;\r\n that.yCorrection = correction;\r\n that.xCorrection = null\r\n } else {\r\n that.width = correctOptions.width;\r\n that.xCorrection = correction;\r\n that.yCorrection = null\r\n }\r\n },\r\n _getGraphicBBox: function(location) {\r\n var bBox = {\r\n x: this.x,\r\n y: this.y,\r\n width: this.width,\r\n height: this.height\r\n };\r\n if (location) {\r\n var isTop = \"top\" === location;\r\n if (!this._options.rotated) {\r\n bBox.y = isTop ? bBox.y : bBox.y + bBox.height;\r\n bBox.height = 0\r\n } else {\r\n bBox.x = isTop ? bBox.x + bBox.width : bBox.x;\r\n bBox.width = 0\r\n }\r\n }\r\n return bBox\r\n },\r\n _getLabelConnector: function(location) {\r\n return this._getGraphicBBox(location)\r\n },\r\n _getLabelPosition: function() {\r\n var position = getLabelOrientation(this);\r\n if (this._options.rotated) {\r\n position = position === TOP ? RIGHT : LEFT\r\n }\r\n return position\r\n },\r\n _getLabelCoords: function(label) {\r\n var that = this;\r\n var coords;\r\n if (0 === that.initialValue && that.series.isFullStackedSeries()) {\r\n if (!this._options.rotated) {\r\n coords = that._getLabelCoordOfPosition(label, TOP)\r\n } else {\r\n coords = that._getLabelCoordOfPosition(label, RIGHT)\r\n }\r\n } else {\r\n if (\"inside\" === label.getLayoutOptions().position) {\r\n coords = that._getLabelCoordOfPosition(label, \"inside\")\r\n } else {\r\n coords = _symbol_point.default._getLabelCoords.call(this, label)\r\n }\r\n }\r\n return coords\r\n },\r\n _drawLabel: function() {\r\n this._label.pointPosition = \"inside\" !== this._label.getLayoutOptions().position && getLabelOrientation(this);\r\n _symbol_point.default._drawLabel.call(this)\r\n },\r\n hideInsideLabel: function(label, coord) {\r\n var graphicBBox = this._getGraphicBBox();\r\n var labelBBox = label.getBoundingRect();\r\n if (this._options.resolveLabelsOverlapping) {\r\n if ((coord.y <= graphicBBox.y && coord.y + labelBBox.height >= graphicBBox.y + graphicBBox.height || coord.x <= graphicBBox.x && coord.x + labelBBox.width >= graphicBBox.x + graphicBBox.width) && !(coord.y > graphicBBox.y + graphicBBox.height || coord.y + labelBBox.height < graphicBBox.y || coord.x > graphicBBox.x + graphicBBox.width || coord.x + labelBBox.width < graphicBBox.x)) {\r\n label.draw(false);\r\n return true\r\n }\r\n }\r\n return false\r\n },\r\n _showForZeroValues: function() {\r\n return this._options.label.showForZeroValues || this.initialValue\r\n },\r\n _drawMarker: function(renderer, group, animationEnabled) {\r\n var that = this;\r\n var style = that._getStyle();\r\n var r = that._options.cornerRadius;\r\n var rotated = that._options.rotated;\r\n var _that$getMarkerCoords = that.getMarkerCoords(),\r\n x = _that$getMarkerCoords.x,\r\n y = _that$getMarkerCoords.y,\r\n width = _that$getMarkerCoords.width,\r\n height = _that$getMarkerCoords.height;\r\n if (animationEnabled) {\r\n if (rotated) {\r\n width = 0;\r\n x = that.defaultX\r\n } else {\r\n height = 0;\r\n y = that.defaultY\r\n }\r\n }\r\n that.graphic = renderer.rect(x, y, width, height).attr({\r\n rx: r,\r\n ry: r\r\n }).smartAttr(style).data({\r\n \"chart-data-point\": that\r\n }).append(group)\r\n },\r\n _getSettingsForTracker: function() {\r\n var that = this;\r\n var y = that.y;\r\n var height = that.height;\r\n var x = that.x;\r\n var width = that.width;\r\n if (that._options.rotated) {\r\n if (1 === width) {\r\n width = DEFAULT_BAR_TRACKER_SIZE;\r\n x -= CORRECTING_BAR_TRACKER_VALUE\r\n }\r\n } else {\r\n if (1 === height) {\r\n height = DEFAULT_BAR_TRACKER_SIZE;\r\n y -= CORRECTING_BAR_TRACKER_VALUE\r\n }\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n width: width,\r\n height: height\r\n }\r\n },\r\n getGraphicSettings: function() {\r\n var graphic = this.graphic;\r\n return {\r\n x: graphic.attr(\"x\"),\r\n y: graphic.attr(\"y\"),\r\n height: graphic.attr(\"height\"),\r\n width: graphic.attr(\"width\")\r\n }\r\n },\r\n _getEdgeTooltipParams: function() {\r\n var isPositive = this.value >= 0;\r\n var xCoord;\r\n var yCoord;\r\n var invertedBusinessRange = this._getValTranslator().getBusinessRange().invert;\r\n var x = this.x,\r\n y = this.y,\r\n width = this.width,\r\n height = this.height;\r\n if (this._options.rotated) {\r\n yCoord = y + height / 2;\r\n if (invertedBusinessRange) {\r\n xCoord = isPositive ? x : x + width\r\n } else {\r\n xCoord = isPositive ? x + width : x\r\n }\r\n } else {\r\n xCoord = x + width / 2;\r\n if (invertedBusinessRange) {\r\n yCoord = isPositive ? y + height : y\r\n } else {\r\n yCoord = isPositive ? y : y + height\r\n }\r\n }\r\n return {\r\n x: xCoord,\r\n y: yCoord,\r\n offset: 0\r\n }\r\n },\r\n getTooltipParams: function(location) {\r\n if (\"edge\" === location) {\r\n return this._getEdgeTooltipParams()\r\n }\r\n var center = this.getCenterCoord();\r\n center.offset = 0;\r\n return center\r\n },\r\n getCenterCoord: function() {\r\n var width = this.width,\r\n height = this.height,\r\n x = this.x,\r\n y = this.y;\r\n return {\r\n x: x + width / 2,\r\n y: y + height / 2\r\n }\r\n },\r\n _truncateCoord: function(coord, bounds) {\r\n if (null === coord) {\r\n return coord\r\n }\r\n if (coord < bounds[0]) {\r\n return bounds[0]\r\n }\r\n if (coord > bounds[1]) {\r\n return bounds[1]\r\n }\r\n return coord\r\n },\r\n _getErrorBarBaseEdgeLength: function() {\r\n return this._options.rotated ? this.height : this.width\r\n },\r\n _translateErrorBars: function(argVisibleArea) {\r\n _symbol_point.default._translateErrorBars.call(this);\r\n if (this._errorBarPos < argVisibleArea[0] || this._errorBarPos > argVisibleArea[1]) {\r\n this._errorBarPos = void 0\r\n }\r\n },\r\n _translate: function() {\r\n var that = this;\r\n var rotated = that._options.rotated;\r\n var valAxis = rotated ? \"x\" : \"y\";\r\n var argAxis = rotated ? \"y\" : \"x\";\r\n var valIntervalName = rotated ? \"width\" : \"height\";\r\n var argIntervalName = rotated ? \"height\" : \"width\";\r\n var argTranslator = that._getArgTranslator();\r\n var valTranslator = that._getValTranslator();\r\n var argVisibleArea = that.series.getArgumentAxis().getVisibleArea();\r\n var valVisibleArea = that.series.getValueAxis().getVisibleArea();\r\n var arg;\r\n var val;\r\n var minVal;\r\n arg = argTranslator.translate(that.argument);\r\n that[argAxis] = arg = null === arg ? arg : arg + (that[argAxis + \"Correction\"] || 0);\r\n val = valTranslator.translate(that.value, 1);\r\n minVal = valTranslator.translate(that.minValue);\r\n that[\"v\" + valAxis] = val;\r\n that[\"v\" + argAxis] = arg + that[argIntervalName] / 2;\r\n val = that._truncateCoord(val, valVisibleArea);\r\n minVal = that._truncateCoord(minVal, valVisibleArea);\r\n that[valIntervalName] = _abs(val - minVal);\r\n val = val < minVal ? val : minVal;\r\n that._calculateVisibility(rotated ? val : arg, rotated ? arg : val, that.width, that.height);\r\n that[valAxis] = null === val ? val : val + (that[valAxis + \"Correction\"] || 0);\r\n that[\"min\" + valAxis.toUpperCase()] = null === minVal ? minVal : minVal + (that[valAxis + \"Correction\"] || 0);\r\n that[\"default\" + valAxis.toUpperCase()] = valTranslator.translate(CANVAS_POSITION_DEFAULT);\r\n that._translateErrorBars(argVisibleArea);\r\n if (that.inVisibleArea && null !== that[argAxis]) {\r\n if (that[argAxis] < argVisibleArea[0]) {\r\n that[argIntervalName] = that[argIntervalName] - (argVisibleArea[0] - that[argAxis]);\r\n that[argAxis] = argVisibleArea[0]\r\n }\r\n if (that[argAxis] + that[argIntervalName] > argVisibleArea[1]) {\r\n that[argIntervalName] = argVisibleArea[1] - that[argAxis]\r\n }\r\n }\r\n },\r\n _updateMarker: function(animationEnabled, style) {\r\n this.graphic.smartAttr(_extend({}, style, !animationEnabled ? this.getMarkerCoords() : {}))\r\n },\r\n getMarkerCoords: function() {\r\n var that = this;\r\n var x = that.x;\r\n var y = that.y;\r\n var width = that.width;\r\n var height = that.height;\r\n var argAxis = that.series.getArgumentAxis();\r\n var rotated = that._options.rotated;\r\n if (argAxis.getAxisPosition) {\r\n var axisOptions = argAxis.getOptions();\r\n var edgeOffset = Math.round(axisOptions.width / 2);\r\n var argAxisPosition = argAxis.getAxisPosition();\r\n if (axisOptions.visible) {\r\n if (!rotated) {\r\n height -= that.minY === that.defaultY && that.minY === argAxisPosition - argAxis.getAxisShift() ? edgeOffset : 0;\r\n height < 0 && (height = 0)\r\n } else {\r\n var isStartFromAxis = that.minX === that.defaultX && that.minX === argAxisPosition - argAxis.getAxisShift();\r\n x += isStartFromAxis ? edgeOffset : 0;\r\n width -= isStartFromAxis ? edgeOffset : 0;\r\n width < 0 && (width = 0)\r\n }\r\n }\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n width: width,\r\n height: height\r\n }\r\n },\r\n coordsIn: function(x, y) {\r\n var that = this;\r\n return x >= that.x && x <= that.x + that.width && y >= that.y && y <= that.y + that.height\r\n }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/helpers/range_data_calculator.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _utils = require(\"../../core/utils\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar DISCRETE = \"discrete\";\r\nvar abs = Math.abs,\r\n floor = Math.floor,\r\n ceil = Math.ceil,\r\n min = Math.min;\r\n\r\nfunction continuousRangeCalculator(range, minValue, maxValue) {\r\n range.min = range.min < minValue ? range.min : minValue;\r\n range.max = range.max > maxValue ? range.max : maxValue\r\n}\r\n\r\nfunction createGetLogFunction(axisType, axis) {\r\n if (\"logarithmic\" !== axisType) {\r\n return null\r\n }\r\n var base = axis.getOptions().logarithmBase;\r\n return function(value) {\r\n var log = (0, _utils.getLog)(abs(value), base);\r\n var round = log < 0 ? floor : ceil;\r\n return round(log)\r\n }\r\n}\r\n\r\nfunction getRangeCalculator(axisType, axis, getLog) {\r\n var rangeCalculator = continuousRangeCalculator;\r\n if (axisType === DISCRETE) {\r\n rangeCalculator = function(range, minValue, maxValue) {\r\n if (minValue !== maxValue) {\r\n range.categories.push(maxValue)\r\n }\r\n range.categories.push(minValue)\r\n }\r\n } else {\r\n if (axis) {\r\n rangeCalculator = function(range, value) {\r\n var interval = axis.calculateInterval(value, range.prevValue);\r\n var minInterval = range.interval;\r\n range.interval = (minInterval < interval ? minInterval : interval) || minInterval;\r\n range.prevValue = value;\r\n continuousRangeCalculator(range, value, value)\r\n }\r\n }\r\n }\r\n if (getLog) {\r\n return function(range, minValue, maxValue) {\r\n var minArgs = [];\r\n rangeCalculator(range, minValue, maxValue);\r\n 0 !== minValue && minArgs.push(getLog(minValue));\r\n 0 !== maxValue && minArgs.push(getLog(maxValue));\r\n var linearThreshold = min.apply(null, minArgs);\r\n range.linearThreshold = range.linearThreshold < linearThreshold ? range.linearThreshold : linearThreshold\r\n }\r\n }\r\n return rangeCalculator\r\n}\r\n\r\nfunction getInitialRange(axisType, dataType, firstValue) {\r\n var range = {\r\n axisType: axisType,\r\n dataType: dataType\r\n };\r\n if (axisType === DISCRETE) {\r\n range.categories = []\r\n } else {\r\n range.min = firstValue;\r\n range.max = firstValue\r\n }\r\n return range\r\n}\r\n\r\nfunction processCategories(range) {\r\n if (range.categories) {\r\n range.categories = (0, _utils.unique)(range.categories)\r\n }\r\n return range\r\n}\r\n\r\nfunction getValueForArgument(point, extraPoint, x, range) {\r\n if (extraPoint && (0, _type.isDefined)(extraPoint.value)) {\r\n var y1 = point.value;\r\n var y2 = extraPoint.value;\r\n var x1 = point.argument;\r\n var x2 = extraPoint.argument;\r\n var r = (x - x1) * (y2 - y1) / (x2 - x1) + y1.valueOf();\r\n return \"datetime\" === range.dataType ? new Date(r) : r\r\n } else {\r\n return point.value\r\n }\r\n}\r\n\r\nfunction calculateRangeBetweenPoints(rangeCalculator, range, point, prevPoint, bound) {\r\n var value = getValueForArgument(point, prevPoint, bound, range);\r\n rangeCalculator(range, value, value)\r\n}\r\n\r\nfunction isLineSeries(series) {\r\n return series.type.toLowerCase().indexOf(\"line\") >= 0 || series.type.toLowerCase().indexOf(\"area\") >= 0\r\n}\r\n\r\nfunction getViewportReducer(series) {\r\n var rangeCalculator = getRangeCalculator(series.valueAxisType);\r\n var argumentAxis = series.getArgumentAxis();\r\n var viewport = argumentAxis && series.getArgumentAxis().visualRange() || {};\r\n var calculatePointBetweenPoints = isLineSeries(series) ? calculateRangeBetweenPoints : _common.noop;\r\n if (argumentAxis && argumentAxis.getMarginOptions().checkInterval) {\r\n var range = series.getArgumentAxis().getTranslator().getBusinessRange();\r\n var add = (0, _utils.getAddFunction)(range, false);\r\n var interval = range.interval;\r\n if (isFinite(interval) && (0, _type.isDefined)(viewport.startValue) && (0, _type.isDefined)(viewport.endValue)) {\r\n viewport.startValue = add(viewport.startValue, interval, -1);\r\n viewport.endValue = add(viewport.endValue, interval)\r\n }\r\n }\r\n var viewportFilter = getViewPortFilter(viewport);\r\n return function(range, point, index, points) {\r\n var argument = point.argument;\r\n if (!point.hasValue()) {\r\n return range\r\n }\r\n if (viewportFilter(argument)) {\r\n if (!range.startCalc) {\r\n range.startCalc = true;\r\n calculatePointBetweenPoints(rangeCalculator, range, point, points[index - 1], viewport.startValue)\r\n }\r\n rangeCalculator(range, point.getMinValue(), point.getMaxValue())\r\n } else {\r\n if (!viewport.categories && (0, _type.isDefined)(viewport.startValue) && argument > viewport.startValue) {\r\n if (!range.startCalc) {\r\n calculatePointBetweenPoints(rangeCalculator, range, point, points[index - 1], viewport.startValue)\r\n }\r\n range.endCalc = true;\r\n calculatePointBetweenPoints(rangeCalculator, range, point, points[index - 1], viewport.endValue)\r\n }\r\n }\r\n return range\r\n }\r\n}\r\n\r\nfunction getViewPortFilter(viewport) {\r\n if (viewport.categories) {\r\n var dictionary = viewport.categories.reduce(function(result, category) {\r\n result[category.valueOf()] = true;\r\n return result\r\n }, {});\r\n return function(argument) {\r\n return (0, _type.isDefined)(argument) && dictionary[argument.valueOf()]\r\n }\r\n }\r\n if (!(0, _type.isDefined)(viewport.startValue) && !(0, _type.isDefined)(viewport.endValue)) {\r\n return function() {\r\n return true\r\n }\r\n }\r\n if (!(0, _type.isDefined)(viewport.endValue)) {\r\n return function(argument) {\r\n return argument >= viewport.startValue\r\n }\r\n }\r\n if (!(0, _type.isDefined)(viewport.startValue)) {\r\n return function(argument) {\r\n return argument <= viewport.endValue\r\n }\r\n }\r\n return function(argument) {\r\n return argument >= viewport.startValue && argument <= viewport.endValue\r\n }\r\n}\r\nvar _default = {\r\n getViewPortFilter: getViewPortFilter,\r\n getArgumentRange: function(series) {\r\n var data = series._data || [];\r\n var range = {};\r\n if (data.length) {\r\n if (series.argumentAxisType === DISCRETE) {\r\n range = {\r\n categories: data.map(function(item) {\r\n return item.argument\r\n })\r\n }\r\n } else {\r\n var interval;\r\n if (data.length > 1) {\r\n var i1 = series.getArgumentAxis().calculateInterval(data[0].argument, data[1].argument);\r\n var i2 = series.getArgumentAxis().calculateInterval(data[data.length - 1].argument, data[data.length - 2].argument);\r\n interval = min(i1, i2)\r\n }\r\n range = {\r\n min: data[0].argument,\r\n max: data[data.length - 1].argument,\r\n interval: interval\r\n }\r\n }\r\n }\r\n return processCategories(range)\r\n },\r\n getRangeData: function(series) {\r\n var points = series.getPoints();\r\n var useAggregation = series.useAggregation();\r\n var argumentCalculator = getRangeCalculator(series.argumentAxisType, points.length > 1 && series.getArgumentAxis(), createGetLogFunction(series.argumentAxisType, series.getArgumentAxis()));\r\n var valueRangeCalculator = getRangeCalculator(series.valueAxisType, null, createGetLogFunction(series.valueAxisType, series.getValueAxis()));\r\n var viewportReducer = getViewportReducer(series);\r\n var range = points.reduce(function(range, point, index, points) {\r\n var argument = point.argument;\r\n if (!point.isArgumentCorrect()) {\r\n return range\r\n }\r\n argumentCalculator(range.arg, argument, argument);\r\n if (point.hasValue()) {\r\n valueRangeCalculator(range.val, point.getMinValue(), point.getMaxValue());\r\n viewportReducer(range.viewport, point, index, points)\r\n }\r\n return range\r\n }, {\r\n arg: getInitialRange(series.argumentAxisType, series.argumentType),\r\n val: getInitialRange(series.valueAxisType, series.valueType, points.length ? series.getValueRangeInitialValue() : void 0),\r\n viewport: getInitialRange(series.valueAxisType, series.valueType, points.length ? series.getValueRangeInitialValue() : void 0)\r\n });\r\n if (useAggregation) {\r\n var argumentRange = this.getArgumentRange(series);\r\n if (series.argumentAxisType === DISCRETE) {\r\n range.arg = argumentRange\r\n } else {\r\n var viewport = series.getArgumentAxis().getViewport();\r\n if ((0, _type.isDefined)(viewport.startValue) || (0, _type.isDefined)(viewport.length)) {\r\n argumentCalculator(range.arg, argumentRange.min, argumentRange.min)\r\n }\r\n if ((0, _type.isDefined)(viewport.endValue) || (0, _type.isDefined)(viewport.length) && (0, _type.isDefined)(viewport.startValue)) {\r\n argumentCalculator(range.arg, argumentRange.max, argumentRange.max)\r\n }\r\n }\r\n }\r\n processCategories(range.arg);\r\n processCategories(range.val);\r\n return range\r\n },\r\n getViewport: function(series) {\r\n var points = series.getPoints();\r\n var range = {};\r\n var reducer = getViewportReducer(series);\r\n range = getInitialRange(series.valueAxisType, series.valueType, points.length ? series.getValueRangeInitialValue() : void 0);\r\n points.some(function(point, index) {\r\n reducer(range, point, index, points);\r\n return range.endCalc\r\n });\r\n return range\r\n },\r\n getPointsInViewPort: function(series) {\r\n var argumentViewPortFilter = getViewPortFilter(series.getArgumentAxis().visualRange() || {});\r\n var valueViewPort = series.getValueAxis().visualRange() || {};\r\n var valueViewPortFilter = getViewPortFilter(valueViewPort);\r\n var points = series.getPoints();\r\n var addValue = function(values, point, isEdge) {\r\n var minValue = point.getMinValue();\r\n var maxValue = point.getMaxValue();\r\n var isMinValueInViewPort = valueViewPortFilter(minValue);\r\n var isMaxValueInViewPort = valueViewPortFilter(maxValue);\r\n if (isMinValueInViewPort) {\r\n values.push(minValue)\r\n }\r\n if (maxValue !== minValue && isMaxValueInViewPort) {\r\n values.push(maxValue)\r\n }\r\n if (isEdge && !isMinValueInViewPort && !isMaxValueInViewPort) {\r\n if (!values.length) {\r\n values.push(valueViewPort.startValue)\r\n } else {\r\n values.push(valueViewPort.endValue)\r\n }\r\n }\r\n };\r\n var addEdgePoints = isLineSeries(series) ? function(result, points, index) {\r\n var point = points[index];\r\n var prevPoint = points[index - 1];\r\n var nextPoint = points[index + 1];\r\n if (nextPoint && argumentViewPortFilter(nextPoint.argument)) {\r\n addValue(result[1], point, true)\r\n }\r\n if (prevPoint && argumentViewPortFilter(prevPoint.argument)) {\r\n addValue(result[1], point, true)\r\n }\r\n } : _common.noop;\r\n var checkPointInViewport = function(result, point, index) {\r\n if (argumentViewPortFilter(point.argument)) {\r\n addValue(result[0], point)\r\n } else {\r\n addEdgePoints(result, points, index)\r\n }\r\n return result\r\n };\r\n return points.reduce(checkPointInViewport, [\r\n [],\r\n []\r\n ])\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/line_series.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.polar = exports.chart = void 0;\r\nvar _scatter_series = require(\"./scatter_series\");\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar DISCRETE = \"discrete\";\r\nvar round = Math.round,\r\n sqrt = Math.sqrt,\r\n pow = Math.pow,\r\n min = Math.min,\r\n max = Math.max,\r\n abs = Math.abs;\r\nvar chart = {};\r\nexports.chart = chart;\r\nvar polar = {};\r\nexports.polar = polar;\r\n\r\nfunction clonePoint(point, newX, newY, newAngle) {\r\n var p = (0, _object.clone)(point);\r\n p.x = newX;\r\n p.y = newY;\r\n p.angle = newAngle;\r\n return p\r\n}\r\n\r\nfunction getTangentPoint(point, prevPoint, centerPoint, tan, nextStepAngle) {\r\n var correctAngle = point.angle + nextStepAngle;\r\n var cosSin = (0, _utils.getCosAndSin)(correctAngle);\r\n var x = centerPoint.x + (point.radius + tan * nextStepAngle) * cosSin.cos;\r\n var y = centerPoint.y - (point.radius + tan * nextStepAngle) * cosSin.sin;\r\n return clonePoint(prevPoint, x, y, correctAngle)\r\n}\r\n\r\nfunction obtainCubicBezierTCoef(p, p0, p1, p2, p3) {\r\n var d = p0 - p;\r\n var c = 3 * p1 - 3 * p0;\r\n var b = 3 * p2 - 6 * p1 + 3 * p0;\r\n var a = p3 - 3 * p2 + 3 * p1 - p0;\r\n return (0, _math.solveCubicEquation)(a, b, c, d)\r\n}\r\nvar lineMethods = {\r\n autoHidePointMarkersEnabled: function() {\r\n return true\r\n },\r\n _applyGroupSettings: function(style, settings, group) {\r\n var that = this;\r\n settings = (0, _extend.extend)(settings, style);\r\n that._applyElementsClipRect(settings);\r\n group.attr(settings)\r\n },\r\n _setGroupsSettings: function(animationEnabled) {\r\n var that = this;\r\n var style = that._styles.normal;\r\n that._applyGroupSettings(style.elements, {\r\n \"class\": \"dxc-elements\"\r\n }, that._elementsGroup);\r\n that._bordersGroup && that._applyGroupSettings(style.border, {\r\n \"class\": \"dxc-borders\"\r\n }, that._bordersGroup);\r\n _scatter_series.chart._setGroupsSettings.call(that, animationEnabled);\r\n animationEnabled && that._markersGroup && that._markersGroup.attr({\r\n opacity: .001\r\n })\r\n },\r\n _createGroups: function() {\r\n var that = this;\r\n that._createGroup(\"_elementsGroup\", that, that._group);\r\n that._areBordersVisible() && that._createGroup(\"_bordersGroup\", that, that._group);\r\n _scatter_series.chart._createGroups.call(that)\r\n },\r\n _areBordersVisible: function() {\r\n return false\r\n },\r\n _getDefaultSegment: function(segment) {\r\n return {\r\n line: (0, _utils.map)(segment.line || [], function(pt) {\r\n return pt.getDefaultCoords()\r\n })\r\n }\r\n },\r\n _prepareSegment: function(points) {\r\n return {\r\n line: points\r\n }\r\n },\r\n _parseLineOptions: function(options, defaultColor) {\r\n return {\r\n stroke: options.color || defaultColor,\r\n \"stroke-width\": options.width,\r\n dashStyle: options.dashStyle || \"solid\"\r\n }\r\n },\r\n _parseStyle: function(options, defaultColor) {\r\n return {\r\n elements: this._parseLineOptions(options, defaultColor)\r\n }\r\n },\r\n _applyStyle: function(style) {\r\n var that = this;\r\n that._elementsGroup && that._elementsGroup.attr(style.elements);\r\n (0, _iterator.each)(that._graphics || [], function(_, graphic) {\r\n graphic.line && graphic.line.attr({\r\n \"stroke-width\": style.elements[\"stroke-width\"]\r\n }).sharp()\r\n })\r\n },\r\n _drawElement: function(segment, group) {\r\n return {\r\n line: this._createMainElement(segment.line, {\r\n \"stroke-width\": this._styles.normal.elements[\"stroke-width\"]\r\n }).append(group)\r\n }\r\n },\r\n _removeElement: function(element) {\r\n element.line.remove()\r\n },\r\n _updateElement: function(element, segment, animate, animationComplete) {\r\n var params = {\r\n points: segment.line\r\n };\r\n var lineElement = element.line;\r\n animate ? lineElement.animate(params, {}, animationComplete) : lineElement.attr(params)\r\n },\r\n _animateComplete: function() {\r\n var that = this;\r\n _scatter_series.chart._animateComplete.call(that);\r\n that._markersGroup && that._markersGroup.animate({\r\n opacity: 1\r\n }, {\r\n duration: that._defaultDuration\r\n })\r\n },\r\n _animate: function() {\r\n var that = this;\r\n var lastIndex = that._graphics.length - 1;\r\n (0, _iterator.each)(that._graphics || [], function(i, elem) {\r\n var complete;\r\n if (i === lastIndex) {\r\n complete = function() {\r\n that._animateComplete()\r\n }\r\n }\r\n that._updateElement(elem, that._segments[i], true, complete)\r\n })\r\n },\r\n _drawPoint: function(options) {\r\n _scatter_series.chart._drawPoint.call(this, {\r\n point: options.point,\r\n groups: options.groups\r\n })\r\n },\r\n _createMainElement: function(points, settings) {\r\n return this._renderer.path(points, \"line\").attr(settings)\r\n },\r\n _sortPoints: function(points, rotated) {\r\n return rotated ? points.sort(function(p1, p2) {\r\n return p2.y - p1.y\r\n }) : points.sort(function(p1, p2) {\r\n return p1.x - p2.x\r\n })\r\n },\r\n _drawSegment: function(points, animationEnabled, segmentCount, lastSegment) {\r\n var that = this;\r\n var rotated = that._options.rotated;\r\n var segment = that._prepareSegment(points, rotated, lastSegment);\r\n that._segments.push(segment);\r\n if (!that._graphics[segmentCount]) {\r\n that._graphics[segmentCount] = that._drawElement(animationEnabled ? that._getDefaultSegment(segment) : segment, that._elementsGroup)\r\n } else {\r\n if (!animationEnabled) {\r\n that._updateElement(that._graphics[segmentCount], segment)\r\n }\r\n }\r\n },\r\n _getTrackerSettings: function() {\r\n var that = this;\r\n var defaultTrackerWidth = that._defaultTrackerWidth;\r\n var strokeWidthFromElements = that._styles.normal.elements[\"stroke-width\"];\r\n return {\r\n \"stroke-width\": strokeWidthFromElements > defaultTrackerWidth ? strokeWidthFromElements : defaultTrackerWidth,\r\n fill: \"none\"\r\n }\r\n },\r\n _getMainPointsFromSegment: function(segment) {\r\n return segment.line\r\n },\r\n _drawTrackerElement: function(segment) {\r\n return this._createMainElement(this._getMainPointsFromSegment(segment), this._getTrackerSettings(segment))\r\n },\r\n _updateTrackerElement: function(segment, element) {\r\n var settings = this._getTrackerSettings(segment);\r\n settings.points = this._getMainPointsFromSegment(segment);\r\n element.attr(settings)\r\n },\r\n checkSeriesViewportCoord: function(axis, coord) {\r\n if (!_scatter_series.chart.checkSeriesViewportCoord.call(this)) {\r\n return false\r\n }\r\n var range = axis.isArgumentAxis ? this.getArgumentRange() : this.getViewport();\r\n var min = axis.getTranslator().translate(range.categories ? range.categories[0] : range.min);\r\n var max = axis.getTranslator().translate(range.categories ? range.categories[range.categories.length - 1] : range.max);\r\n var rotated = this.getOptions().rotated;\r\n var inverted = axis.getOptions().inverted;\r\n return axis.isArgumentAxis && (!rotated && !inverted || rotated && inverted) || !axis.isArgumentAxis && (rotated && !inverted || !rotated && inverted) ? coord >= min && coord <= max : coord >= max && coord <= min\r\n }\r\n};\r\nvar lineSeries = chart.line = (0, _extend.extend)({}, _scatter_series.chart, lineMethods, {\r\n getPointCenterByArg: function(arg) {\r\n var value = this.getArgumentAxis().getTranslator().translate(arg);\r\n return {\r\n x: value,\r\n y: value\r\n }\r\n },\r\n getSeriesPairCoord: function(coord, isArgument) {\r\n var that = this;\r\n var oppositeCoord = null;\r\n var nearestPoints = this._getNearestPointsByCoord(coord, isArgument);\r\n var needValueCoord = isArgument && !that._options.rotated || !isArgument && that._options.rotated;\r\n for (var i = 0; i < nearestPoints.length; i++) {\r\n var p = nearestPoints[i];\r\n var k = (p[1].vy - p[0].vy) / (p[1].vx - p[0].vx);\r\n var b = p[0].vy - p[0].vx * k;\r\n var tmpCoord = void 0;\r\n if (p[1].vx - p[0].vx === 0) {\r\n tmpCoord = needValueCoord ? p[0].vy : p[0].vx\r\n } else {\r\n tmpCoord = needValueCoord ? k * coord + b : (coord - b) / k\r\n }\r\n if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {\r\n oppositeCoord = tmpCoord;\r\n break\r\n }\r\n }\r\n return oppositeCoord\r\n }\r\n});\r\nchart.stepline = (0, _extend.extend)({}, lineSeries, {\r\n _calculateStepLinePoints: function(points) {\r\n var segment = [];\r\n var coordName = this._options.rotated ? \"x\" : \"y\";\r\n (0, _iterator.each)(points, function(i, pt) {\r\n var point;\r\n if (!i) {\r\n segment.push(pt);\r\n return\r\n }\r\n var step = segment[segment.length - 1][coordName];\r\n if (step !== pt[coordName]) {\r\n point = (0, _object.clone)(pt);\r\n point[coordName] = step;\r\n segment.push(point)\r\n }\r\n segment.push(pt)\r\n });\r\n return segment\r\n },\r\n _prepareSegment: function(points) {\r\n return lineSeries._prepareSegment(this._calculateStepLinePoints(points))\r\n },\r\n getSeriesPairCoord: function(coord, isArgument) {\r\n var oppositeCoord;\r\n var rotated = this._options.rotated;\r\n var isOpposite = !isArgument && !rotated || isArgument && rotated;\r\n var coordName = !isOpposite ? \"vx\" : \"vy\";\r\n var oppositeCoordName = !isOpposite ? \"vy\" : \"vx\";\r\n var nearestPoints = this._getNearestPointsByCoord(coord, isArgument);\r\n for (var i = 0; i < nearestPoints.length; i++) {\r\n var p = nearestPoints[i];\r\n var tmpCoord = void 0;\r\n if (isArgument) {\r\n tmpCoord = coord !== p[1][coordName] ? p[0][oppositeCoordName] : p[1][oppositeCoordName]\r\n } else {\r\n tmpCoord = coord === p[0][coordName] ? p[0][oppositeCoordName] : p[1][oppositeCoordName]\r\n }\r\n if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {\r\n oppositeCoord = tmpCoord;\r\n break\r\n }\r\n }\r\n return oppositeCoord\r\n }\r\n});\r\nchart.spline = (0, _extend.extend)({}, lineSeries, {\r\n _calculateBezierPoints: function(src, rotated) {\r\n var bezierPoints = [];\r\n var pointsCopy = src;\r\n var checkExtremum = function(otherPointCoord, pointCoord, controlCoord) {\r\n return otherPointCoord > pointCoord && controlCoord > otherPointCoord || otherPointCoord < pointCoord && controlCoord < otherPointCoord ? otherPointCoord : controlCoord\r\n };\r\n if (1 !== pointsCopy.length) {\r\n pointsCopy.forEach(function(curPoint, i) {\r\n var leftControlX;\r\n var leftControlY;\r\n var rightControlX;\r\n var rightControlY;\r\n var prevPoint = pointsCopy[i - 1];\r\n var nextPoint = pointsCopy[i + 1];\r\n var x1;\r\n var x2;\r\n var y1;\r\n var y2;\r\n var lambda = .5;\r\n var a;\r\n var b;\r\n var c;\r\n var xc;\r\n var yc;\r\n var shift;\r\n if (!i || i === pointsCopy.length - 1) {\r\n bezierPoints.push(curPoint, curPoint);\r\n return\r\n }\r\n var xCur = curPoint.x;\r\n var yCur = curPoint.y;\r\n x1 = prevPoint.x;\r\n x2 = nextPoint.x;\r\n y1 = prevPoint.y;\r\n y2 = nextPoint.y;\r\n var curIsExtremum = !!(!rotated && (yCur <= prevPoint.y && yCur <= nextPoint.y || yCur >= prevPoint.y && yCur >= nextPoint.y) || rotated && (xCur <= prevPoint.x && xCur <= nextPoint.x || xCur >= prevPoint.x && xCur >= nextPoint.x));\r\n if (curIsExtremum) {\r\n if (!rotated) {\r\n rightControlY = leftControlY = yCur;\r\n rightControlX = (xCur + nextPoint.x) / 2;\r\n leftControlX = (xCur + prevPoint.x) / 2\r\n } else {\r\n rightControlX = leftControlX = xCur;\r\n rightControlY = (yCur + nextPoint.y) / 2;\r\n leftControlY = (yCur + prevPoint.y) / 2\r\n }\r\n } else {\r\n a = y2 - y1;\r\n b = x1 - x2;\r\n c = y1 * x2 - x1 * y2;\r\n if (!rotated) {\r\n if (!b) {\r\n bezierPoints.push(curPoint, curPoint, curPoint);\r\n return\r\n }\r\n xc = xCur;\r\n yc = -1 * (a * xc + c) / b;\r\n shift = yc - yCur;\r\n y1 -= shift;\r\n y2 -= shift\r\n } else {\r\n if (!a) {\r\n bezierPoints.push(curPoint, curPoint, curPoint);\r\n return\r\n }\r\n yc = yCur;\r\n xc = -1 * (b * yc + c) / a;\r\n shift = xc - xCur;\r\n x1 -= shift;\r\n x2 -= shift\r\n }\r\n rightControlX = (xCur + lambda * x2) / (1 + lambda);\r\n rightControlY = (yCur + lambda * y2) / (1 + lambda);\r\n leftControlX = (xCur + lambda * x1) / (1 + lambda);\r\n leftControlY = (yCur + lambda * y1) / (1 + lambda)\r\n }\r\n if (!rotated) {\r\n leftControlY = checkExtremum(prevPoint.y, yCur, leftControlY);\r\n rightControlY = checkExtremum(nextPoint.y, yCur, rightControlY)\r\n } else {\r\n leftControlX = checkExtremum(prevPoint.x, xCur, leftControlX);\r\n rightControlX = checkExtremum(nextPoint.x, xCur, rightControlX)\r\n }\r\n var leftPoint = clonePoint(curPoint, leftControlX, leftControlY);\r\n var rightPoint = clonePoint(curPoint, rightControlX, rightControlY);\r\n bezierPoints.push(leftPoint, curPoint, rightPoint)\r\n })\r\n } else {\r\n bezierPoints.push(pointsCopy[0])\r\n }\r\n return bezierPoints\r\n },\r\n _prepareSegment: function(points, rotated) {\r\n return lineSeries._prepareSegment(this._calculateBezierPoints(points, rotated))\r\n },\r\n _createMainElement: function(points, settings) {\r\n return this._renderer.path(points, \"bezier\").attr(settings)\r\n },\r\n getSeriesPairCoord: function(coord, isArgument) {\r\n var that = this;\r\n var oppositeCoord = null;\r\n var isOpposite = !isArgument && !this._options.rotated || isArgument && this._options.rotated;\r\n var coordName = !isOpposite ? \"vx\" : \"vy\";\r\n var bezierCoordName = !isOpposite ? \"x\" : \"y\";\r\n var oppositeCoordName = !isOpposite ? \"vy\" : \"vx\";\r\n var bezierOppositeCoordName = !isOpposite ? \"y\" : \"x\";\r\n var axis = !isArgument ? that.getArgumentAxis() : that.getValueAxis();\r\n var visibleArea = axis.getVisibleArea();\r\n var nearestPoints = this._getNearestPointsByCoord(coord, isArgument);\r\n var _loop = function(i) {\r\n var p = nearestPoints[i];\r\n if (1 === p.length) {\r\n visibleArea[0] <= p[0][oppositeCoordName] && visibleArea[1] >= p[0][oppositeCoordName] && (oppositeCoord = p[0][oppositeCoordName])\r\n } else {\r\n var ts = obtainCubicBezierTCoef(coord, p[0][coordName], p[1][bezierCoordName], p[2][bezierCoordName], p[3][coordName]);\r\n ts.forEach(function(t) {\r\n if (t >= 0 && t <= 1) {\r\n var tmpCoord = Math.pow(1 - t, 3) * p[0][oppositeCoordName] + 3 * Math.pow(1 - t, 2) * t * p[1][bezierOppositeCoordName] + 3 * (1 - t) * t * t * p[2][bezierOppositeCoordName] + t * t * t * p[3][oppositeCoordName];\r\n if (visibleArea[0] <= tmpCoord && visibleArea[1] >= tmpCoord) {\r\n oppositeCoord = tmpCoord\r\n }\r\n }\r\n })\r\n }\r\n if (null !== oppositeCoord) {\r\n return \"break\"\r\n }\r\n };\r\n for (var i = 0; i < nearestPoints.length; i++) {\r\n var _ret = _loop(i);\r\n if (\"break\" === _ret) {\r\n break\r\n }\r\n }\r\n return oppositeCoord\r\n },\r\n _getNearestPoints: function(point, nextPoint, bezierPoints) {\r\n var index = bezierPoints.indexOf(point);\r\n return [point, bezierPoints[index + 1], bezierPoints[index + 2], nextPoint]\r\n },\r\n _getBezierPoints: function() {\r\n return this._segments.length > 0 ? this._segments.reduce(function(a, seg) {\r\n return a.concat(seg.line)\r\n }, []) : []\r\n }\r\n});\r\npolar.line = (0, _extend.extend)({}, _scatter_series.polar, lineMethods, {\r\n _sortPoints: function(points) {\r\n return points\r\n },\r\n _prepareSegment: function(points, rotated, lastSegment) {\r\n var preparedPoints = [];\r\n var centerPoint = this.getValueAxis().getCenter();\r\n var i;\r\n lastSegment && this._closeSegment(points);\r\n if (this.argumentAxisType !== DISCRETE && this.valueAxisType !== DISCRETE) {\r\n for (i = 1; i < points.length; i++) {\r\n preparedPoints = preparedPoints.concat(this._getTangentPoints(points[i], points[i - 1], centerPoint))\r\n }\r\n if (!preparedPoints.length) {\r\n preparedPoints = points\r\n }\r\n } else {\r\n return lineSeries._prepareSegment.call(this, points)\r\n }\r\n return {\r\n line: preparedPoints\r\n }\r\n },\r\n _getRemainingAngle: function(angle) {\r\n var normAngle = (0, _utils.normalizeAngle)(angle);\r\n return angle >= 0 ? 360 - normAngle : -normAngle\r\n },\r\n _closeSegment: function(points) {\r\n var point;\r\n if (this._segments.length) {\r\n point = this._segments[0].line[0]\r\n } else {\r\n point = clonePoint(points[0], points[0].x, points[0].y, points[0].angle)\r\n }\r\n point = this._modifyReflectedPoint(point, points[points.length - 1]);\r\n if (point) {\r\n points.push(point)\r\n }\r\n },\r\n _modifyReflectedPoint: function(point, lastPoint) {\r\n if (lastPoint.angle === point.angle) {\r\n return\r\n }\r\n if ((0, _utils.normalizeAngle)(round(lastPoint.angle)) === (0, _utils.normalizeAngle)(round(point.angle))) {\r\n point.angle = lastPoint.angle\r\n } else {\r\n var differenceAngle = lastPoint.angle - point.angle;\r\n point.angle = lastPoint.angle + this._getRemainingAngle(differenceAngle)\r\n }\r\n return point\r\n },\r\n _getTangentPoints: function(point, prevPoint, centerPoint) {\r\n var tangentPoints = [];\r\n var betweenAngle = Math.round(prevPoint.angle - point.angle);\r\n var tan = (prevPoint.radius - point.radius) / betweenAngle;\r\n var i;\r\n if (0 === betweenAngle) {\r\n tangentPoints = [prevPoint, point]\r\n } else {\r\n if (betweenAngle > 0) {\r\n for (i = betweenAngle; i >= 0; i--) {\r\n tangentPoints.push(getTangentPoint(point, prevPoint, centerPoint, tan, i))\r\n }\r\n } else {\r\n for (i = 0; i >= betweenAngle; i--) {\r\n tangentPoints.push(getTangentPoint(point, prevPoint, centerPoint, tan, betweenAngle - i))\r\n }\r\n }\r\n }\r\n return tangentPoints\r\n },\r\n getSeriesPairCoord: function(params, isArgument) {\r\n var that = this;\r\n var argAxis = that.getArgumentAxis();\r\n var paramName = isArgument ? \"angle\" : \"radius\";\r\n var coordParam = params[paramName];\r\n var centerPoint = argAxis.getCenter();\r\n var getLengthByCoords = function(p1, p2) {\r\n return sqrt(pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2))\r\n };\r\n var isInsideInterval = function(prevPoint, point, _ref) {\r\n var x = _ref.x,\r\n y = _ref.y;\r\n return getLengthByCoords({\r\n x: x,\r\n y: y\r\n }, centerPoint) <= argAxis.getRadius() && min(prevPoint.x, point.x) <= x && max(prevPoint.x, point.x) >= x && min(prevPoint.y, point.y) <= y && max(prevPoint.y, point.y) >= y\r\n };\r\n var coords;\r\n var neighborPoints = that.getNeighborPoints(coordParam, paramName);\r\n if (1 === neighborPoints.length) {\r\n coords = neighborPoints[0]\r\n } else {\r\n if (neighborPoints.length > 1) {\r\n var prevPoint = neighborPoints[0];\r\n var point = neighborPoints[1];\r\n if (that.argumentAxisType !== DISCRETE && that.valueAxisType !== DISCRETE) {\r\n var tan;\r\n var stepAngle;\r\n if (isArgument) {\r\n tan = (prevPoint.radius - point.radius) / (prevPoint.angle - point.angle);\r\n stepAngle = coordParam - point.angle\r\n } else {\r\n tan = (prevPoint.radius - point.radius) / (prevPoint.angle - point.angle);\r\n stepAngle = (coordParam - point.radius) / tan\r\n }\r\n coords = getTangentPoint(point, prevPoint, centerPoint, tan, stepAngle)\r\n } else {\r\n if (isArgument) {\r\n var cosSin = (0, _utils.getCosAndSin)(-coordParam);\r\n var k1 = (point.y - prevPoint.y) / (point.x - prevPoint.x);\r\n var b1 = prevPoint.y - prevPoint.x * k1;\r\n var k2 = cosSin.sin / cosSin.cos;\r\n var b2 = centerPoint.y - k2 * centerPoint.x;\r\n var x = (b2 - b1) / (k1 - k2);\r\n var y = k1 * x + b1;\r\n if (isInsideInterval(prevPoint, point, {\r\n x: x,\r\n y: y\r\n })) {\r\n var quarter = abs((0, _math.trunc)((360 + coordParam) / 90) % 4);\r\n if (0 === quarter && x >= centerPoint.x && y <= centerPoint.y || 1 === quarter && x <= centerPoint.x && y <= centerPoint.y || 2 === quarter && x <= centerPoint.x && y >= centerPoint.y || 3 === quarter && x >= centerPoint.x && y >= centerPoint.y) {\r\n coords = {\r\n x: x,\r\n y: y\r\n }\r\n }\r\n }\r\n } else {\r\n var k = (point.y - prevPoint.y) / (point.x - prevPoint.x);\r\n var y0 = prevPoint.y - prevPoint.x * k;\r\n var a = 1 + k * k;\r\n var b = -2 * centerPoint.x + 2 * k * y0 - 2 * k * centerPoint.y;\r\n var c = -pow(coordParam, 2) + pow(y0 - centerPoint.y, 2) + pow(centerPoint.x, 2);\r\n var d = b * b - 4 * a * c;\r\n if (d >= 0) {\r\n var x1 = (-b - sqrt(d)) / (2 * a);\r\n var x2 = (-b + sqrt(d)) / (2 * a);\r\n var y1 = k * x1 + y0;\r\n var y2 = k * x2 + y0;\r\n coords = isInsideInterval(prevPoint, point, {\r\n x: x1,\r\n y: y1\r\n }) ? {\r\n x: x1,\r\n y: y1\r\n } : isInsideInterval(prevPoint, point, {\r\n x: x2,\r\n y: y2\r\n }) ? {\r\n x: x2,\r\n y: y2\r\n } : void 0\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return coords\r\n },\r\n getNeighborPoints: function(param, paramName) {\r\n var points = this.getPoints();\r\n var neighborPoints = [];\r\n if (this.getOptions().closed) {\r\n points = (0, _extend.extend)(true, [], points);\r\n var lastPoint = points[points.length - 1];\r\n var firstPointCopy = clonePoint(points[0], points[0].x, points[0].y, points[0].angle);\r\n var lastPointCopy = clonePoint(lastPoint, lastPoint.x, lastPoint.y, lastPoint.angle);\r\n var rearwardRefPoint = this._modifyReflectedPoint(firstPointCopy, lastPoint);\r\n var forwardRefPoint = this._modifyReflectedPoint(lastPointCopy, points[0]);\r\n if (forwardRefPoint) {\r\n points.unshift(forwardRefPoint)\r\n }\r\n if (rearwardRefPoint) {\r\n points.push(rearwardRefPoint)\r\n }\r\n }\r\n for (var i = 1; i < points.length; i++) {\r\n if (points[i - 1][paramName] === param) {\r\n neighborPoints.push(points[i - 1])\r\n } else {\r\n if (points[i][paramName] === param) {\r\n neighborPoints.push(points[i])\r\n } else {\r\n if (points[i][paramName] > param && points[i - 1][paramName] < param || points[i - 1][paramName] > param && points[i][paramName] < param) {\r\n neighborPoints.push(points[i - 1]);\r\n neighborPoints.push(points[i])\r\n }\r\n }\r\n }\r\n if (neighborPoints.length > 0) {\r\n break\r\n }\r\n }\r\n return neighborPoints\r\n }\r\n});\r\n","/**\r\n * DevExtreme (viz/series/base_series.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.Series = Series;\r\nexports.mixins = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _base_point = require(\"./points/base_point\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _consts = _interopRequireDefault(require(\"../components/consts\"));\r\nvar _range_data_calculator = _interopRequireDefault(require(\"./helpers/range_data_calculator\"));\r\nvar scatterSeries = _interopRequireWildcard(require(\"./scatter_series\"));\r\nvar lineSeries = _interopRequireWildcard(require(\"./line_series\"));\r\nvar areaSeries = _interopRequireWildcard(require(\"./area_series\"));\r\nvar barSeries = _interopRequireWildcard(require(\"./bar_series\"));\r\nvar _range_series = require(\"./range_series\");\r\nvar _bubble_series = require(\"./bubble_series\");\r\nvar pieSeries = _interopRequireWildcard(require(\"./pie_series\"));\r\nvar financialSeries = _interopRequireWildcard(require(\"./financial_series\"));\r\nvar stackedSeries = _interopRequireWildcard(require(\"./stacked_series\"));\r\n\r\nfunction _getRequireWildcardCache() {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cache = new WeakMap;\r\n _getRequireWildcardCache = function() {\r\n return cache\r\n };\r\n return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n if (obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache();\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar seriesNS = {};\r\nvar states = _consts.default.states;\r\nvar DISCRETE = \"discrete\";\r\nvar SELECTED_STATE = states.selectedMark;\r\nvar HOVER_STATE = states.hoverMark;\r\nvar HOVER = states.hover;\r\nvar NORMAL = states.normal;\r\nvar SELECTION = states.selection;\r\nvar APPLY_SELECTED = states.applySelected;\r\nvar APPLY_HOVER = states.applyHover;\r\nvar RESET_ITEM = states.resetItem;\r\nvar NONE_MODE = \"none\";\r\nvar INCLUDE_POINTS = \"includepoints\";\r\nvar NEAREST_POINT = \"nearestpoint\";\r\nvar SERIES_SELECTION_CHANGED = \"seriesSelectionChanged\";\r\nvar POINT_SELECTION_CHANGED = \"pointSelectionChanged\";\r\nvar SERIES_HOVER_CHANGED = \"seriesHoverChanged\";\r\nvar POINT_HOVER_CHANGED = \"pointHoverChanged\";\r\nvar ALL_SERIES_POINTS = \"allseriespoints\";\r\nvar ALL_ARGUMENT_POINTS = \"allargumentpoints\";\r\nvar POINT_HOVER = \"pointHover\";\r\nvar CLEAR_POINT_HOVER = \"clearPointHover\";\r\nvar SERIES_SELECT = \"seriesSelect\";\r\nvar POINT_SELECT = \"pointSelect\";\r\nvar POINT_DESELECT = \"pointDeselect\";\r\nvar getEmptyBusinessRange = function() {\r\n return {\r\n arg: {},\r\n val: {}\r\n }\r\n};\r\n\r\nfunction triggerEvent(element, event, point) {\r\n element && element.trigger(event, point)\r\n}\r\nseriesNS.mixins = {\r\n chart: {},\r\n pie: {},\r\n polar: {}\r\n};\r\nseriesNS.mixins.chart.scatter = scatterSeries.chart;\r\nseriesNS.mixins.polar.scatter = scatterSeries.polar;\r\n(0, _extend2.extend)(seriesNS.mixins.pie, pieSeries);\r\n(0, _extend2.extend)(seriesNS.mixins.chart, lineSeries.chart, areaSeries.chart, barSeries.chart, _range_series.chart, _bubble_series.chart, financialSeries, stackedSeries.chart);\r\n(0, _extend2.extend)(seriesNS.mixins.polar, lineSeries.polar, areaSeries.polar, barSeries.polar, stackedSeries.polar);\r\n\r\nfunction includePointsMode(mode) {\r\n mode = (0, _utils.normalizeEnum)(mode);\r\n return mode === INCLUDE_POINTS || mode === ALL_SERIES_POINTS\r\n}\r\n\r\nfunction getLabelOptions(labelOptions, defaultColor) {\r\n var opt = labelOptions || {};\r\n var labelFont = (0, _extend2.extend)({}, opt.font) || {};\r\n var labelBorder = opt.border || {};\r\n var labelConnector = opt.connector || {};\r\n var backgroundAttr = {\r\n fill: opt.backgroundColor || defaultColor,\r\n \"stroke-width\": labelBorder.visible ? labelBorder.width || 0 : 0,\r\n stroke: labelBorder.visible && labelBorder.width ? labelBorder.color : \"none\",\r\n dashStyle: labelBorder.dashStyle\r\n };\r\n var connectorAttr = {\r\n stroke: labelConnector.visible && labelConnector.width ? labelConnector.color || defaultColor : \"none\",\r\n \"stroke-width\": labelConnector.visible ? labelConnector.width || 0 : 0\r\n };\r\n labelFont.color = \"none\" === opt.backgroundColor && \"#ffffff\" === (0, _utils.normalizeEnum)(labelFont.color) && \"inside\" !== opt.position ? defaultColor : labelFont.color;\r\n return {\r\n alignment: opt.alignment,\r\n format: opt.format,\r\n argumentFormat: opt.argumentFormat,\r\n customizeText: (0, _type.isFunction)(opt.customizeText) ? opt.customizeText : void 0,\r\n attributes: {\r\n font: labelFont\r\n },\r\n visible: 0 !== labelFont.size ? opt.visible : false,\r\n showForZeroValues: opt.showForZeroValues,\r\n horizontalOffset: opt.horizontalOffset,\r\n verticalOffset: opt.verticalOffset,\r\n radialOffset: opt.radialOffset,\r\n background: backgroundAttr,\r\n position: opt.position,\r\n connector: connectorAttr,\r\n rotationAngle: opt.rotationAngle,\r\n wordWrap: opt.wordWrap,\r\n textOverflow: opt.textOverflow,\r\n cssClass: opt.cssClass\r\n }\r\n}\r\n\r\nfunction setPointHoverState(point, legendCallback) {\r\n point.fullState |= HOVER_STATE;\r\n point.applyView(legendCallback)\r\n}\r\n\r\nfunction releasePointHoverState(point, legendCallback) {\r\n point.fullState &= ~HOVER_STATE;\r\n point.applyView(legendCallback);\r\n point.releaseHoverState()\r\n}\r\n\r\nfunction setPointSelectedState(point, legendCallback) {\r\n point.fullState |= SELECTED_STATE;\r\n point.applyView(legendCallback)\r\n}\r\n\r\nfunction releasePointSelectedState(point, legendCallback) {\r\n point.fullState &= ~SELECTED_STATE;\r\n point.applyView(legendCallback)\r\n}\r\n\r\nfunction mergePointOptionsCore(base, extra) {\r\n var options = (0, _extend2.extend)({}, base, extra);\r\n options.border = (0, _extend2.extend)({}, base && base.border, extra && extra.border);\r\n return options\r\n}\r\n\r\nfunction mergePointOptions(base, extra) {\r\n var options = mergePointOptionsCore(base, extra);\r\n options.image = (0, _extend2.extend)(true, {}, base.image, extra.image);\r\n options.selectionStyle = mergePointOptionsCore(base.selectionStyle, extra.selectionStyle);\r\n options.hoverStyle = mergePointOptionsCore(base.hoverStyle, extra.hoverStyle);\r\n return options\r\n}\r\n\r\nfunction Series(settings, options) {\r\n var that = this;\r\n that.fullState = 0;\r\n that._extGroups = settings;\r\n that._renderer = settings.renderer;\r\n that._group = settings.renderer.g().attr({\r\n \"class\": \"dxc-series\"\r\n });\r\n that._eventTrigger = settings.eventTrigger;\r\n that._eventPipe = settings.eventPipe;\r\n that._incidentOccurred = settings.incidentOccurred;\r\n that._legendCallback = _common.noop;\r\n that.updateOptions(options, settings)\r\n}\r\n\r\nfunction getData(pointData) {\r\n return pointData.data\r\n}\r\n\r\nfunction getValueChecker(axisType, axis) {\r\n if (!axis || \"logarithmic\" !== axisType || false !== axis.getOptions().allowNegatives) {\r\n return function() {\r\n return true\r\n }\r\n } else {\r\n return function(value) {\r\n return value > 0\r\n }\r\n }\r\n}\r\nSeries.prototype = {\r\n constructor: Series,\r\n _createLegendState: _common.noop,\r\n getLegendStyles: function() {\r\n return this._styles.legendStyles\r\n },\r\n _createStyles: function(options) {\r\n var that = this;\r\n var mainSeriesColor = options.mainSeriesColor;\r\n that._styles = {\r\n normal: that._parseStyle(options, mainSeriesColor, mainSeriesColor),\r\n hover: that._parseStyle(options.hoverStyle || {}, mainSeriesColor, mainSeriesColor),\r\n selection: that._parseStyle(options.selectionStyle || {}, mainSeriesColor, mainSeriesColor),\r\n legendStyles: {\r\n normal: that._createLegendState(options, mainSeriesColor),\r\n hover: that._createLegendState(options.hoverStyle || {}, mainSeriesColor),\r\n selection: that._createLegendState(options.selectionStyle || {}, mainSeriesColor)\r\n }\r\n }\r\n },\r\n setClippingParams: function(baseId, wideId, forceClipping) {\r\n var clipLabels = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : true;\r\n this._paneClipRectID = baseId;\r\n this._widePaneClipRectID = wideId;\r\n this._forceClipping = forceClipping;\r\n this._clipLabels = clipLabels\r\n },\r\n applyClip: function() {\r\n this._group.attr({\r\n \"clip-path\": this._paneClipRectID\r\n })\r\n },\r\n resetClip: function() {\r\n this._group.attr({\r\n \"clip-path\": null\r\n })\r\n },\r\n getTagField: function() {\r\n return this._options.tagField || \"tag\"\r\n },\r\n getValueFields: _common.noop,\r\n getSizeField: _common.noop,\r\n getArgumentField: _common.noop,\r\n getPoints: function() {\r\n return this._points\r\n },\r\n getPointsInViewPort: function() {\r\n return _range_data_calculator.default.getPointsInViewPort(this)\r\n },\r\n _createPoint: function(data, index, oldPoint) {\r\n data.index = index;\r\n var that = this;\r\n var pointsByArgument = that.pointsByArgument;\r\n var options = that._getCreatingPointOptions(data);\r\n var arg = data.argument.valueOf();\r\n var point = oldPoint;\r\n if (point) {\r\n point.update(data, options)\r\n } else {\r\n point = new _base_point.Point(that, data, options);\r\n if (that.isSelected() && includePointsMode(that.lastSelectionMode)) {\r\n point.setView(SELECTION)\r\n }\r\n }\r\n var pointByArgument = pointsByArgument[arg];\r\n if (pointByArgument) {\r\n pointByArgument.push(point)\r\n } else {\r\n pointsByArgument[arg] = [point]\r\n }\r\n if (point.hasValue()) {\r\n that.customizePoint(point, data)\r\n }\r\n return point\r\n },\r\n getRangeData: function() {\r\n return this._visible ? this._getRangeData() : getEmptyBusinessRange()\r\n },\r\n getArgumentRange: function() {\r\n return this._visible ? _range_data_calculator.default.getArgumentRange(this) : getEmptyBusinessRange()\r\n },\r\n getViewport: function() {\r\n return _range_data_calculator.default.getViewport(this)\r\n },\r\n _deleteGroup: function(groupName) {\r\n var group = this[groupName];\r\n if (group) {\r\n group.dispose();\r\n this[groupName] = null\r\n }\r\n },\r\n updateOptions: function(newOptions, settings) {\r\n var that = this;\r\n var widgetType = newOptions.widgetType;\r\n var oldType = that.type;\r\n var newType = newOptions.type;\r\n that.type = newType && (0, _utils.normalizeEnum)(newType.toString());\r\n if (!that._checkType(widgetType) || that._checkPolarBarType(widgetType, newOptions)) {\r\n that.dispose();\r\n that.isUpdated = false;\r\n return\r\n }\r\n if (oldType !== that.type) {\r\n that._firstDrawing = true;\r\n that._resetType(oldType, widgetType);\r\n that._setType(that.type, widgetType)\r\n } else {\r\n that._defineDrawingState()\r\n }\r\n that._options = newOptions;\r\n that._pointOptions = null;\r\n that.name = newOptions.name;\r\n that.pane = newOptions.pane;\r\n that.tag = newOptions.tag;\r\n if (settings) {\r\n that._seriesModes = settings.commonSeriesModes || that._seriesModes;\r\n that._valueAxis = settings.valueAxis || that._valueAxis;\r\n that.axis = that._valueAxis && that._valueAxis.name;\r\n that._argumentAxis = settings.argumentAxis || that._argumentAxis\r\n }\r\n that._createStyles(newOptions);\r\n that._stackName = null;\r\n that._updateOptions(newOptions);\r\n that._visible = newOptions.visible;\r\n that.isUpdated = true;\r\n that.stack = newOptions.stack;\r\n that.barOverlapGroup = newOptions.barOverlapGroup;\r\n that._createGroups();\r\n that._processEmptyValue = newOptions.ignoreEmptyPoints ? function(x) {\r\n return null === x ? void 0 : x\r\n } : function(x) {\r\n return x\r\n }\r\n },\r\n _defineDrawingState: function() {\r\n this._firstDrawing = true\r\n },\r\n _disposePoints: function(points) {\r\n (0, _iterator.each)(points || [], function(_, p) {\r\n p.dispose()\r\n })\r\n },\r\n updateDataType: function(settings) {\r\n var that = this;\r\n that.argumentType = settings.argumentType;\r\n that.valueType = settings.valueType;\r\n that.argumentAxisType = settings.argumentAxisType;\r\n that.valueAxisType = settings.valueAxisType;\r\n that.showZero = settings.showZero;\r\n this._argumentChecker = getValueChecker(settings.argumentAxisType, that.getArgumentAxis());\r\n this._valueChecker = getValueChecker(settings.valueAxisType, that.getValueAxis());\r\n return that\r\n },\r\n _argumentChecker: function() {\r\n return true\r\n },\r\n _valueChecker: function() {\r\n return true\r\n },\r\n getOptions: function() {\r\n return this._options\r\n },\r\n _getOldPoint: function(data, oldPointsByArgument, index) {\r\n var arg = data.argument && data.argument.valueOf();\r\n var point = (oldPointsByArgument[arg] || [])[0];\r\n if (point) {\r\n oldPointsByArgument[arg].splice(0, 1)\r\n }\r\n return point\r\n },\r\n updateData: function(data) {\r\n var that = this;\r\n var options = that._options;\r\n var nameField = options.nameField;\r\n data = data || [];\r\n if (data.length) {\r\n that._canRenderCompleteHandle = true\r\n }\r\n var dataSelector = this._getPointDataSelector();\r\n var itemsWithoutArgument = 0;\r\n that._data = data.reduce(function(data, dataItem, index) {\r\n var pointDataItem = dataSelector(dataItem);\r\n if ((0, _type.isDefined)(pointDataItem.argument)) {\r\n if (!nameField || dataItem[nameField] === options.nameFieldValue) {\r\n pointDataItem.index = index;\r\n data.push(pointDataItem)\r\n }\r\n } else {\r\n itemsWithoutArgument++\r\n }\r\n return data\r\n }, []);\r\n if (itemsWithoutArgument && itemsWithoutArgument === data.length) {\r\n that._incidentOccurred(\"W2002\", [that.name, that.getArgumentField()])\r\n }\r\n that._endUpdateData()\r\n },\r\n _getData: function() {\r\n var data = this._data || [];\r\n if (this.useAggregation()) {\r\n data = this._resample(this.getArgumentAxis().getAggregationInfo(this._useAllAggregatedPoints, this.argumentAxisType !== DISCRETE ? this.getArgumentRange() : {}), data)\r\n }\r\n return data\r\n },\r\n useAggregation: function() {\r\n var aggregation = this.getOptions().aggregation;\r\n return aggregation && aggregation.enabled\r\n },\r\n autoHidePointMarkersEnabled: _common.noop,\r\n usePointsToDefineAutoHiding: _common.noop,\r\n createPoints: function(useAllAggregatedPoints) {\r\n this._normalizeUsingAllAggregatedPoints(useAllAggregatedPoints);\r\n this._createPoints()\r\n },\r\n _normalizeUsingAllAggregatedPoints: function(useAllAggregatedPoints) {\r\n this._useAllAggregatedPoints = this.useAggregation() && (this.argumentAxisType === DISCRETE || (this._data || []).length > 1 && !!useAllAggregatedPoints)\r\n },\r\n _createPoints: function() {\r\n var that = this;\r\n var oldPointsByArgument = that.pointsByArgument || {};\r\n var data = that._getData();\r\n that.pointsByArgument = {};\r\n that._calculateErrorBars(data);\r\n var skippedFields = {};\r\n var points = data.reduce(function(points, pointDataItem) {\r\n if (that._checkData(pointDataItem, skippedFields)) {\r\n var pointIndex = points.length;\r\n var oldPoint = that._getOldPoint(pointDataItem, oldPointsByArgument, pointIndex);\r\n var point = that._createPoint(pointDataItem, pointIndex, oldPoint);\r\n points.push(point)\r\n }\r\n return points\r\n }, []);\r\n for (var field in skippedFields) {\r\n if (skippedFields[field] === data.length) {\r\n that._incidentOccurred(\"W2002\", [that.name, field])\r\n }\r\n }\r\n Object.keys(oldPointsByArgument).forEach(function(key) {\r\n return that._disposePoints(oldPointsByArgument[key])\r\n });\r\n that._points = points\r\n },\r\n _removeOldSegments: function() {\r\n var that = this;\r\n var startIndex = that._segments.length;\r\n (0, _iterator.each)(that._graphics.splice(startIndex, that._graphics.length) || [], function(_, elem) {\r\n that._removeElement(elem)\r\n });\r\n if (that._trackers) {\r\n (0, _iterator.each)(that._trackers.splice(startIndex, that._trackers.length) || [], function(_, elem) {\r\n elem.remove()\r\n })\r\n }\r\n },\r\n _drawElements: function(animationEnabled, firstDrawing, translateAllPoints) {\r\n var that = this;\r\n var points = that._points || [];\r\n var closeSegment = points[0] && points[0].hasValue() && that._options.closed;\r\n var groupForPoint = {\r\n markers: that._markersGroup,\r\n errorBars: that._errorBarGroup\r\n };\r\n that._drawnPoints = [];\r\n that._graphics = that._graphics || [];\r\n that._segments = [];\r\n var segments = points.reduce(function(segments, p) {\r\n var segment = segments[segments.length - 1];\r\n if (!p.translated || translateAllPoints) {\r\n p.translate();\r\n !translateAllPoints && p.setDefaultCoords()\r\n }\r\n if (p.hasValue() && p.hasCoords()) {\r\n translateAllPoints && that._drawPoint({\r\n point: p,\r\n groups: groupForPoint,\r\n hasAnimation: animationEnabled,\r\n firstDrawing: firstDrawing\r\n });\r\n segment.push(p)\r\n } else {\r\n if (!p.hasValue()) {\r\n segment.length && segments.push([])\r\n } else {\r\n p.setInvisibility()\r\n }\r\n }\r\n return segments\r\n }, [\r\n []\r\n ]);\r\n segments.forEach(function(segment, index) {\r\n if (segment.length) {\r\n that._drawSegment(segment, animationEnabled, index, closeSegment && index === this.length - 1)\r\n }\r\n }, segments);\r\n that._firstDrawing = !points.length;\r\n that._removeOldSegments();\r\n animationEnabled && that._animate(firstDrawing)\r\n },\r\n draw: function(animationEnabled, hideLayoutLabels, legendCallback) {\r\n var that = this;\r\n var firstDrawing = that._firstDrawing;\r\n that._legendCallback = legendCallback || that._legendCallback;\r\n if (!that._visible) {\r\n animationEnabled = false;\r\n that._group.remove();\r\n return\r\n }\r\n that._appendInGroup();\r\n that._applyVisibleArea();\r\n that._setGroupsSettings(animationEnabled, firstDrawing);\r\n !firstDrawing && !that._resetApplyingAnimation && that._drawElements(false, firstDrawing, false);\r\n that._drawElements(animationEnabled, firstDrawing, true);\r\n hideLayoutLabels && that.hideLabels();\r\n if (that.isSelected()) {\r\n that._changeStyle(that.lastSelectionMode, void 0, true)\r\n } else {\r\n if (that.isHovered()) {\r\n that._changeStyle(that.lastHoverMode, void 0, true)\r\n } else {\r\n that._applyStyle(that._styles.normal)\r\n }\r\n }\r\n that._resetApplyingAnimation = false\r\n },\r\n _setLabelGroupSettings: function(animationEnabled) {\r\n var settings = {\r\n \"class\": \"dxc-labels\",\r\n \"pointer-events\": \"none\"\r\n };\r\n this._clipLabels && this._applyElementsClipRect(settings);\r\n this._applyClearingSettings(settings);\r\n animationEnabled && (settings.opacity = .001);\r\n this._labelsGroup.attr(settings).append(this._extGroups.labelsGroup)\r\n },\r\n _checkType: function(widgetType) {\r\n return !!seriesNS.mixins[widgetType][this.type]\r\n },\r\n _checkPolarBarType: function(widgetType, options) {\r\n return \"polar\" === widgetType && options.spiderWidget && this.type.indexOf(\"bar\") !== -1\r\n },\r\n _resetType: function(seriesType, widgetType) {\r\n var methodName;\r\n var methods;\r\n if (seriesType) {\r\n methods = seriesNS.mixins[widgetType][seriesType];\r\n for (methodName in methods) {\r\n delete this[methodName]\r\n }\r\n }\r\n },\r\n _setType: function(seriesType, widgetType) {\r\n var methodName;\r\n var methods = seriesNS.mixins[widgetType][seriesType];\r\n for (methodName in methods) {\r\n this[methodName] = methods[methodName]\r\n }\r\n },\r\n _setPointsView: function(view, target) {\r\n this.getPoints().forEach(function(point) {\r\n if (target !== point) {\r\n point.setView(view)\r\n }\r\n })\r\n },\r\n _resetPointsView: function(view, target) {\r\n this.getPoints().forEach(function(point) {\r\n if (target !== point) {\r\n point.resetView(view)\r\n }\r\n })\r\n },\r\n _resetNearestPoint: function() {\r\n var that = this;\r\n that._nearestPoint && null !== that._nearestPoint.series && that._nearestPoint.resetView(HOVER);\r\n that._nearestPoint = null\r\n },\r\n _setSelectedState: function(mode) {\r\n var that = this;\r\n that.lastSelectionMode = (0, _utils.normalizeEnum)(mode || that._options.selectionMode);\r\n that.fullState = that.fullState | SELECTED_STATE;\r\n that._resetNearestPoint();\r\n that._changeStyle(that.lastSelectionMode);\r\n if (that.lastSelectionMode !== NONE_MODE && that.isHovered() && includePointsMode(that.lastHoverMode)) {\r\n that._resetPointsView(HOVER)\r\n }\r\n },\r\n _releaseSelectedState: function() {\r\n var that = this;\r\n that.fullState = that.fullState & ~SELECTED_STATE;\r\n that._changeStyle(that.lastSelectionMode, SELECTION);\r\n if (that.lastSelectionMode !== NONE_MODE && that.isHovered() && includePointsMode(that.lastHoverMode)) {\r\n that._setPointsView(HOVER)\r\n }\r\n },\r\n isFullStackedSeries: function() {\r\n return 0 === this.type.indexOf(\"fullstacked\")\r\n },\r\n isStackedSeries: function() {\r\n return 0 === this.type.indexOf(\"stacked\")\r\n },\r\n resetApplyingAnimation: function(isFirstDrawing) {\r\n this._resetApplyingAnimation = true;\r\n if (isFirstDrawing) {\r\n this._firstDrawing = true\r\n }\r\n },\r\n isFinancialSeries: function() {\r\n return \"stock\" === this.type || \"candlestick\" === this.type\r\n },\r\n _canChangeView: function() {\r\n return !this.isSelected() && (0, _utils.normalizeEnum)(this._options.hoverMode) !== NONE_MODE\r\n },\r\n _changeStyle: function(mode, resetView, skipPoints) {\r\n var that = this;\r\n var state = that.fullState;\r\n var styles = [NORMAL, HOVER, SELECTION, SELECTION];\r\n if (\"none\" === that.lastHoverMode) {\r\n state &= ~HOVER_STATE\r\n }\r\n if (\"none\" === that.lastSelectionMode) {\r\n state &= ~SELECTED_STATE\r\n }\r\n if (includePointsMode(mode) && !skipPoints) {\r\n if (!resetView) {\r\n that._setPointsView(styles[state])\r\n } else {\r\n that._resetPointsView(resetView)\r\n }\r\n }\r\n that._legendCallback([RESET_ITEM, APPLY_HOVER, APPLY_SELECTED, APPLY_SELECTED][state]);\r\n that._applyStyle(that._styles[styles[state]])\r\n },\r\n updateHover: function(x, y) {\r\n var that = this;\r\n var currentNearestPoint = that._nearestPoint;\r\n var point = that.isHovered() && that.lastHoverMode === NEAREST_POINT && that.getNeighborPoint(x, y);\r\n if (point !== currentNearestPoint && !(that.isSelected() && that.lastSelectionMode !== NONE_MODE)) {\r\n that._resetNearestPoint();\r\n if (point) {\r\n point.setView(HOVER);\r\n that._nearestPoint = point\r\n }\r\n }\r\n },\r\n _getMainAxisName: function() {\r\n return this._options.rotated ? \"X\" : \"Y\"\r\n },\r\n areLabelsVisible: function() {\r\n return !(0, _type.isDefined)(this._options.maxLabelCount) || this._points.length <= this._options.maxLabelCount\r\n },\r\n getLabelVisibility: function() {\r\n return this.areLabelsVisible() && this._options.label && this._options.label.visible\r\n },\r\n customizePoint: function customizePoint(point, pointData) {\r\n var that = this;\r\n var options = that._options;\r\n var customizePoint = options.customizePoint;\r\n var customizeObject;\r\n var pointOptions;\r\n var customLabelOptions;\r\n var customOptions;\r\n var customizeLabel = options.customizeLabel;\r\n var useLabelCustomOptions;\r\n var usePointCustomOptions;\r\n if (customizeLabel && customizeLabel.call) {\r\n customizeObject = (0, _extend2.extend)({\r\n seriesName: that.name\r\n }, pointData);\r\n customizeObject.series = that;\r\n customLabelOptions = customizeLabel.call(customizeObject, customizeObject);\r\n useLabelCustomOptions = customLabelOptions && !(0, _type.isEmptyObject)(customLabelOptions);\r\n customLabelOptions = useLabelCustomOptions ? (0, _extend2.extend)(true, {}, options.label, customLabelOptions) : null\r\n }\r\n if (customizePoint && customizePoint.call) {\r\n customizeObject = customizeObject || (0, _extend2.extend)({\r\n seriesName: that.name\r\n }, pointData);\r\n customizeObject.series = that;\r\n customOptions = customizePoint.call(customizeObject, customizeObject);\r\n usePointCustomOptions = customOptions && !(0, _type.isEmptyObject)(customOptions)\r\n }\r\n if (useLabelCustomOptions || usePointCustomOptions) {\r\n pointOptions = that._parsePointOptions(that._preparePointOptions(customOptions), customLabelOptions || options.label, pointData, point);\r\n pointOptions.styles.useLabelCustomOptions = useLabelCustomOptions;\r\n pointOptions.styles.usePointCustomOptions = usePointCustomOptions;\r\n point.updateOptions(pointOptions)\r\n }\r\n },\r\n show: function() {\r\n if (!this._visible) {\r\n this._changeVisibility(true)\r\n }\r\n },\r\n hide: function() {\r\n if (this._visible) {\r\n this._changeVisibility(false)\r\n }\r\n },\r\n _changeVisibility: function(visibility) {\r\n var that = this;\r\n that._visible = that._options.visible = visibility;\r\n that._updatePointsVisibility();\r\n that.hidePointTooltip();\r\n that._options.visibilityChanged(that)\r\n },\r\n _updatePointsVisibility: _common.noop,\r\n hideLabels: function() {\r\n (0, _iterator.each)(this._points, function(_, point) {\r\n point._label.draw(false)\r\n })\r\n },\r\n _parsePointOptions: function(pointOptions, labelOptions, data, point) {\r\n var that = this;\r\n var options = that._options;\r\n var styles = that._createPointStyles(pointOptions, data, point);\r\n var parsedOptions = (0, _extend2.extend)({}, pointOptions, {\r\n type: options.type,\r\n rotated: options.rotated,\r\n styles: styles,\r\n widgetType: options.widgetType,\r\n visibilityChanged: options.visibilityChanged\r\n });\r\n parsedOptions.label = getLabelOptions(labelOptions, styles.normal.fill);\r\n if (that.areErrorBarsVisible()) {\r\n parsedOptions.errorBars = options.valueErrorBar\r\n }\r\n return parsedOptions\r\n },\r\n _preparePointOptions: function(customOptions) {\r\n var pointOptions = this._getOptionsForPoint();\r\n return customOptions ? mergePointOptions(pointOptions, customOptions) : pointOptions\r\n },\r\n _getMarkerGroupOptions: function() {\r\n return (0, _extend2.extend)(false, {}, this._getOptionsForPoint(), {\r\n hoverStyle: {},\r\n selectionStyle: {}\r\n })\r\n },\r\n _getAggregationMethod: function(isDiscrete, aggregateByCategory) {\r\n var options = this.getOptions().aggregation;\r\n var method = (0, _utils.normalizeEnum)(options.method);\r\n var customAggregator = \"custom\" === method && options.calculate;\r\n var aggregator;\r\n if (isDiscrete && !aggregateByCategory) {\r\n aggregator = function(_ref) {\r\n var data = _ref.data;\r\n return data[0]\r\n }\r\n } else {\r\n aggregator = this._aggregators[method] || this._aggregators[this._defaultAggregator]\r\n }\r\n return customAggregator || aggregator\r\n },\r\n _resample: function(_ref2, data) {\r\n var interval = _ref2.interval,\r\n ticks = _ref2.ticks,\r\n aggregateByCategory = _ref2.aggregateByCategory;\r\n var that = this;\r\n var isDiscrete = that.argumentAxisType === DISCRETE || that.valueAxisType === DISCRETE;\r\n var dataIndex = 0;\r\n var dataSelector = this._getPointDataSelector();\r\n var options = that.getOptions();\r\n var addAggregatedData = function(target, data, aggregationInfo) {\r\n if (!data) {\r\n return\r\n }\r\n var processData = function(d) {\r\n var pointData = d && dataSelector(d, options);\r\n if (pointData && that._checkData(pointData)) {\r\n pointData.aggregationInfo = aggregationInfo;\r\n target.push(pointData)\r\n }\r\n };\r\n if (Array.isArray(data)) {\r\n data.forEach(processData)\r\n } else {\r\n processData(data)\r\n }\r\n };\r\n var aggregationMethod = this._getAggregationMethod(isDiscrete, aggregateByCategory);\r\n if (isDiscrete) {\r\n if (aggregateByCategory) {\r\n var categories = this.getArgumentAxis().getTranslator().getBusinessRange().categories;\r\n var groups = categories.reduce(function(g, category) {\r\n g[category.valueOf()] = [];\r\n return g\r\n }, {});\r\n data.forEach(function(dataItem) {\r\n groups[dataItem.argument.valueOf()].push(dataItem)\r\n });\r\n return categories.reduce(function(result, c) {\r\n addAggregatedData(result, aggregationMethod({\r\n aggregationInterval: null,\r\n intervalStart: c,\r\n intervalEnd: c,\r\n data: groups[c.valueOf()].map(getData)\r\n }, that));\r\n return result\r\n }, [])\r\n } else {\r\n return data.reduce(function(result, dataItem, index, data) {\r\n result[1].push(dataItem);\r\n if (index === data.length - 1 || (index + 1) % interval === 0) {\r\n var dataInInterval = result[1];\r\n var aggregationInfo = {\r\n aggregationInterval: interval,\r\n data: dataInInterval.map(getData)\r\n };\r\n addAggregatedData(result[0], aggregationMethod(aggregationInfo, that));\r\n result[1] = []\r\n }\r\n return result\r\n }, [\r\n [],\r\n []\r\n ])[0]\r\n }\r\n }\r\n var aggregatedData = [];\r\n for (var i = 1; i < ticks.length; i++) {\r\n var intervalEnd = ticks[i];\r\n var intervalStart = ticks[i - 1];\r\n var dataInInterval = [];\r\n while (data[dataIndex] && data[dataIndex].argument < intervalEnd) {\r\n if (data[dataIndex].argument >= intervalStart) {\r\n dataInInterval.push(data[dataIndex])\r\n }\r\n dataIndex++\r\n }\r\n var aggregationInfo = {\r\n intervalStart: intervalStart,\r\n intervalEnd: intervalEnd,\r\n aggregationInterval: interval,\r\n data: dataInInterval.map(getData)\r\n };\r\n addAggregatedData(aggregatedData, aggregationMethod(aggregationInfo, that), aggregationInfo)\r\n }\r\n that._endUpdateData();\r\n return aggregatedData\r\n },\r\n canRenderCompleteHandle: function() {\r\n var result = this._canRenderCompleteHandle;\r\n delete this._canRenderCompleteHandle;\r\n return !!result\r\n },\r\n isHovered: function() {\r\n return !!(1 & this.fullState)\r\n },\r\n isSelected: function() {\r\n return !!(2 & this.fullState)\r\n },\r\n isVisible: function() {\r\n return this._visible\r\n },\r\n getAllPoints: function() {\r\n this._createAllAggregatedPoints();\r\n return (this._points || []).slice()\r\n },\r\n getPointByPos: function(pos) {\r\n this._createAllAggregatedPoints();\r\n return (this._points || [])[pos]\r\n },\r\n getVisiblePoints: function() {\r\n return (this._drawnPoints || []).slice()\r\n },\r\n selectPoint: function(point) {\r\n if (!point.isSelected()) {\r\n setPointSelectedState(point, this._legendCallback);\r\n this._eventPipe({\r\n action: POINT_SELECT,\r\n target: point\r\n });\r\n this._eventTrigger(POINT_SELECTION_CHANGED, {\r\n target: point\r\n })\r\n }\r\n },\r\n deselectPoint: function(point) {\r\n if (point.isSelected()) {\r\n releasePointSelectedState(point, this._legendCallback);\r\n this._eventPipe({\r\n action: POINT_DESELECT,\r\n target: point\r\n });\r\n this._eventTrigger(POINT_SELECTION_CHANGED, {\r\n target: point\r\n })\r\n }\r\n },\r\n hover: function(mode) {\r\n var that = this;\r\n var eventTrigger = that._eventTrigger;\r\n if (that.isHovered()) {\r\n return\r\n }\r\n that.lastHoverMode = (0, _utils.normalizeEnum)(mode || that._options.hoverMode);\r\n that.fullState = that.fullState | HOVER_STATE;\r\n that._changeStyle(that.lastHoverMode, void 0, that.isSelected() && that.lastSelectionMode !== NONE_MODE);\r\n eventTrigger(SERIES_HOVER_CHANGED, {\r\n target: that\r\n })\r\n },\r\n clearHover: function() {\r\n var that = this;\r\n var eventTrigger = that._eventTrigger;\r\n if (!that.isHovered()) {\r\n return\r\n }\r\n that._resetNearestPoint();\r\n that.fullState = that.fullState & ~HOVER_STATE;\r\n that._changeStyle(that.lastHoverMode, HOVER, that.isSelected() && that.lastSelectionMode !== NONE_MODE);\r\n eventTrigger(SERIES_HOVER_CHANGED, {\r\n target: that\r\n })\r\n },\r\n hoverPoint: function(point) {\r\n var that = this;\r\n if (!point.isHovered()) {\r\n point.clearHover();\r\n setPointHoverState(point, that._legendCallback);\r\n that._canChangeView() && that._applyStyle(that._styles.hover);\r\n that._eventPipe({\r\n action: POINT_HOVER,\r\n target: point\r\n });\r\n that._eventTrigger(POINT_HOVER_CHANGED, {\r\n target: point\r\n })\r\n }\r\n },\r\n clearPointHover: function() {\r\n var that = this;\r\n that.getPoints().some(function(currentPoint) {\r\n if (currentPoint.isHovered()) {\r\n releasePointHoverState(currentPoint, that._legendCallback);\r\n that._canChangeView() && that._applyStyle(that._styles.normal);\r\n that._eventPipe({\r\n action: CLEAR_POINT_HOVER,\r\n target: currentPoint\r\n });\r\n that._eventTrigger(POINT_HOVER_CHANGED, {\r\n target: currentPoint\r\n });\r\n return true\r\n }\r\n return false\r\n })\r\n },\r\n showPointTooltip: function(point) {\r\n triggerEvent(this._extGroups.seriesGroup, \"showpointtooltip\", point)\r\n },\r\n hidePointTooltip: function(point) {\r\n triggerEvent(this._extGroups.seriesGroup, \"hidepointtooltip\", point)\r\n },\r\n select: function() {\r\n var that = this;\r\n if (!that.isSelected()) {\r\n that._setSelectedState(that._options.selectionMode);\r\n that._eventPipe({\r\n action: SERIES_SELECT,\r\n target: that\r\n });\r\n that._group.toForeground();\r\n that._eventTrigger(SERIES_SELECTION_CHANGED, {\r\n target: that\r\n })\r\n }\r\n },\r\n clearSelection: function() {\r\n var that = this;\r\n if (that.isSelected()) {\r\n that._releaseSelectedState();\r\n that._eventTrigger(SERIES_SELECTION_CHANGED, {\r\n target: that\r\n })\r\n }\r\n },\r\n getPointsByArg: function(arg, skipPointsCreation) {\r\n var that = this;\r\n var argValue = arg.valueOf();\r\n var points = that.pointsByArgument[argValue];\r\n if (!points && !skipPointsCreation && that._createAllAggregatedPoints()) {\r\n points = that.pointsByArgument[argValue]\r\n }\r\n return points || []\r\n },\r\n _createAllAggregatedPoints: function() {\r\n if (this.useAggregation() && !this._useAllAggregatedPoints) {\r\n this.createPoints(true);\r\n return true\r\n }\r\n return false\r\n },\r\n getPointsByKeys: function(arg) {\r\n return this.getPointsByArg(arg)\r\n },\r\n notify: function(data) {\r\n var that = this;\r\n var action = data.action;\r\n var seriesModes = that._seriesModes;\r\n var target = data.target;\r\n var targetOptions = target.getOptions();\r\n var pointHoverMode = (0, _utils.normalizeEnum)(targetOptions.hoverMode);\r\n var selectionModeOfPoint = (0, _utils.normalizeEnum)(targetOptions.selectionMode);\r\n if (action === POINT_HOVER) {\r\n that._hoverPointHandler(target, pointHoverMode, data.notifyLegend)\r\n } else {\r\n if (action === CLEAR_POINT_HOVER) {\r\n that._clearPointHoverHandler(target, pointHoverMode, data.notifyLegend)\r\n } else {\r\n if (action === SERIES_SELECT) {\r\n target !== that && \"single\" === seriesModes.seriesSelectionMode && that.clearSelection()\r\n } else {\r\n if (action === POINT_SELECT) {\r\n if (\"single\" === seriesModes.pointSelectionMode) {\r\n that.getPoints().some(function(currentPoint) {\r\n if (currentPoint !== target && currentPoint.isSelected()) {\r\n that.deselectPoint(currentPoint);\r\n return true\r\n }\r\n return false\r\n })\r\n }\r\n that._selectPointHandler(target, selectionModeOfPoint)\r\n } else {\r\n if (action === POINT_DESELECT) {\r\n that._deselectPointHandler(target, selectionModeOfPoint)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n _selectPointHandler: function(target, mode) {\r\n var that = this;\r\n if (mode === ALL_SERIES_POINTS) {\r\n target.series === that && that._setPointsView(SELECTION, target)\r\n } else {\r\n if (mode === ALL_ARGUMENT_POINTS) {\r\n that.getPointsByKeys(target.argument, target.argumentIndex).forEach(function(currentPoint) {\r\n currentPoint !== target && currentPoint.setView(SELECTION)\r\n })\r\n }\r\n }\r\n },\r\n _deselectPointHandler: function(target, mode) {\r\n if (mode === ALL_SERIES_POINTS) {\r\n target.series === this && this._resetPointsView(SELECTION, target)\r\n } else {\r\n if (mode === ALL_ARGUMENT_POINTS) {\r\n this.getPointsByKeys(target.argument, target.argumentIndex).forEach(function(currentPoint) {\r\n currentPoint !== target && currentPoint.resetView(SELECTION)\r\n })\r\n }\r\n }\r\n },\r\n _hoverPointHandler: function(target, mode, notifyLegend) {\r\n var that = this;\r\n if (target.series !== that && mode === ALL_ARGUMENT_POINTS) {\r\n that.getPointsByKeys(target.argument, target.argumentIndex).forEach(function(currentPoint) {\r\n currentPoint.setView(HOVER)\r\n });\r\n notifyLegend && that._legendCallback(target)\r\n } else {\r\n if (mode === ALL_SERIES_POINTS && target.series === that) {\r\n that._setPointsView(HOVER, target)\r\n }\r\n }\r\n },\r\n _clearPointHoverHandler: function(target, mode, notifyLegend) {\r\n var that = this;\r\n if (mode === ALL_ARGUMENT_POINTS) {\r\n target.series !== that && that.getPointsByKeys(target.argument, target.argumentIndex).forEach(function(currentPoint) {\r\n currentPoint.resetView(HOVER)\r\n });\r\n notifyLegend && that._legendCallback(target)\r\n } else {\r\n if (mode === ALL_SERIES_POINTS && target.series === that) {\r\n that._resetPointsView(HOVER, target)\r\n }\r\n }\r\n },\r\n _deletePoints: function() {\r\n var that = this;\r\n that._disposePoints(that._points);\r\n that._points = that._drawnPoints = null\r\n },\r\n _deleteTrackers: function() {\r\n var that = this;\r\n (0, _iterator.each)(that._trackers || [], function(_, tracker) {\r\n tracker.remove()\r\n });\r\n that._trackersGroup && that._trackersGroup.dispose();\r\n that._trackers = that._trackersGroup = null\r\n },\r\n dispose: function() {\r\n var that = this;\r\n that._deletePoints();\r\n that._group.dispose();\r\n that._labelsGroup && that._labelsGroup.dispose();\r\n that._errorBarGroup && that._errorBarGroup.dispose();\r\n that._deleteTrackers();\r\n that._group = that._extGroups = that._markersGroup = that._elementsGroup = that._bordersGroup = that._labelsGroup = that._errorBarGroup = that._graphics = that._rangeData = that._renderer = that._styles = that._options = that._pointOptions = that._drawnPoints = that.pointsByArgument = that._segments = that._prevSeries = null\r\n },\r\n correctPosition: _common.noop,\r\n drawTrackers: _common.noop,\r\n getNeighborPoint: _common.noop,\r\n areErrorBarsVisible: _common.noop,\r\n getMarginOptions: function() {\r\n return this._patchMarginOptions({\r\n percentStick: this.isFullStackedSeries()\r\n })\r\n },\r\n getColor: function() {\r\n return this.getLegendStyles().normal.fill\r\n },\r\n getOpacity: function() {\r\n return this._options.opacity\r\n },\r\n getStackName: function() {\r\n return this._stackName\r\n },\r\n getBarOverlapGroup: function() {\r\n return this._options.barOverlapGroup\r\n },\r\n getPointByCoord: function(x, y) {\r\n var point = this.getNeighborPoint(x, y);\r\n return null !== point && void 0 !== point && point.coordsIn(x, y) ? point : null\r\n },\r\n getValueAxis: function() {\r\n return this._valueAxis\r\n },\r\n getArgumentAxis: function() {\r\n return this._argumentAxis\r\n },\r\n getMarkersGroup: function() {\r\n return this._markersGroup\r\n },\r\n getRenderer: function() {\r\n return this._renderer\r\n }\r\n};\r\nvar mixins = seriesNS.mixins;\r\nexports.mixins = mixins;\r\n","/**\r\n * DevExtreme (viz/series/points/label.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.Label = Label;\r\nvar _format_helper = _interopRequireDefault(require(\"../../../format_helper\"));\r\nvar _utils = require(\"../../core/utils\");\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _extend = 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 _format = _format_helper.default.format;\r\nvar _math = Math;\r\nvar _round = _math.round;\r\nvar _floor = _math.floor;\r\nvar _abs = _math.abs;\r\nvar CONNECTOR_LENGTH = 12;\r\nvar LABEL_BACKGROUND_PADDING_X = 8;\r\nvar LABEL_BACKGROUND_PADDING_Y = 4;\r\n\r\nfunction getClosestCoord(point, coords) {\r\n var closestDistance = 1 / 0;\r\n var closestCoord;\r\n (0, _iterator.each)(coords, function(_, coord) {\r\n var x = point[0] - coord[0];\r\n var y = point[1] - coord[1];\r\n var distance = x * x + y * y;\r\n if (distance < closestDistance) {\r\n closestDistance = distance;\r\n closestCoord = coord\r\n }\r\n });\r\n return [_floor(closestCoord[0]), _floor(closestCoord[1])]\r\n}\r\n\r\nfunction getCrossCoord(rect, coord, indexOffset) {\r\n return (coord - rect[0 + indexOffset]) / (rect[2 + indexOffset] - rect[0 + indexOffset]) * (rect[3 - indexOffset] - rect[1 - indexOffset]) + rect[1 - indexOffset]\r\n}\r\nvar barPointStrategy = {\r\n isLabelInside: function(labelPoint, figure) {\r\n var xc = labelPoint.x + labelPoint.width / 2;\r\n var yc = labelPoint.y + labelPoint.height / 2;\r\n return figure.x <= xc && xc <= figure.x + figure.width && figure.y <= yc && yc <= figure.y + figure.height\r\n },\r\n prepareLabelPoints: function(bBox, rotatedBBox, isHorizontal, angle, figureCenter) {\r\n var x1 = rotatedBBox.x;\r\n var xc = x1 + rotatedBBox.width / 2;\r\n var x2 = x1 + rotatedBBox.width - 1;\r\n var y1 = rotatedBBox.y;\r\n var yc = y1 + rotatedBBox.height / 2;\r\n var y2 = y1 + rotatedBBox.height - 1;\r\n var labelPoints;\r\n var isRectangular = _abs(angle) % 90 === 0;\r\n if (figureCenter[0] > x1 && figureCenter[0] < x2) {\r\n if (isRectangular) {\r\n labelPoints = [\r\n [figureCenter[0], _abs(figureCenter[1] - y1) < _abs(figureCenter[1] - y2) ? y1 : y2]\r\n ]\r\n } else {\r\n labelPoints = [\r\n [figureCenter[0], getCrossCoord([x1, y1, x2, y2], figureCenter[0], 0)]\r\n ]\r\n }\r\n } else {\r\n if (figureCenter[1] > y1 && figureCenter[1] < y2) {\r\n if (isRectangular) {\r\n labelPoints = [\r\n [_abs(figureCenter[0] - x1) < _abs(figureCenter[0] - x2) ? x1 : x2, figureCenter[1]]\r\n ]\r\n } else {\r\n labelPoints = [\r\n [getCrossCoord([x1, y1, x2, y2], figureCenter[1], 1), figureCenter[1]]\r\n ]\r\n }\r\n } else {\r\n if (isRectangular) {\r\n labelPoints = [\r\n [x1, y1],\r\n [isHorizontal ? x1 : xc, isHorizontal ? yc : y1],\r\n [x2, y1],\r\n [x1, y2],\r\n [isHorizontal ? x2 : xc, isHorizontal ? yc : y2],\r\n [x2, y2]\r\n ]\r\n } else {\r\n labelPoints = [\r\n [xc, yc]\r\n ]\r\n }\r\n }\r\n }\r\n return labelPoints\r\n },\r\n isHorizontal: function(bBox, figure) {\r\n return bBox.x > figure.x + figure.width || bBox.x + bBox.width < figure.x\r\n },\r\n getFigureCenter: function(figure) {\r\n return [_floor(figure.x + figure.width / 2), _floor(figure.y + figure.height / 2)]\r\n },\r\n findFigurePoint: function(figure, labelPoint) {\r\n var figureCenter = barPointStrategy.getFigureCenter(figure);\r\n var point = getClosestCoord(labelPoint, [\r\n [figure.x, figureCenter[1]],\r\n [figureCenter[0], figure.y + figure.height],\r\n [figure.x + figure.width, figureCenter[1]],\r\n [figureCenter[0], figure.y]\r\n ]);\r\n return point\r\n },\r\n adjustPoints: function(points) {\r\n var lineIsVertical = _abs(points[1] - points[3]) <= 1;\r\n var lineIsHorizontal = _abs(points[0] - points[2]) <= 1;\r\n if (lineIsHorizontal) {\r\n points[0] = points[2]\r\n }\r\n if (lineIsVertical) {\r\n points[1] = points[3]\r\n }\r\n return points\r\n }\r\n};\r\nvar symbolPointStrategy = {\r\n isLabelInside: function() {\r\n return false\r\n },\r\n prepareLabelPoints: barPointStrategy.prepareLabelPoints,\r\n isHorizontal: function(bBox, figure) {\r\n return bBox.x > figure.x + figure.r || bBox.x + bBox.width < figure.x - figure.r\r\n },\r\n getFigureCenter: function(figure) {\r\n return [figure.x, figure.y]\r\n },\r\n findFigurePoint: function(figure, labelPoint) {\r\n var angle = Math.atan2(figure.y - labelPoint[1], labelPoint[0] - figure.x);\r\n return [_round(figure.x + figure.r * Math.cos(angle)), _round(figure.y - figure.r * Math.sin(angle))]\r\n },\r\n adjustPoints: barPointStrategy.adjustPoints\r\n};\r\nvar piePointStrategy = {\r\n isLabelInside: function(_0, _1, isOutside) {\r\n return !isOutside\r\n },\r\n prepareLabelPoints: function(bBox, rotatedBBox, isHorizontal, angle) {\r\n var xl = bBox.x;\r\n var xr = xl + bBox.width;\r\n var xc = xl + _round(bBox.width / 2);\r\n var yt = bBox.y;\r\n var yb = yt + bBox.height;\r\n var yc = yt + _round(bBox.height / 2);\r\n var points = [\r\n [\r\n [xl, yt],\r\n [xr, yt]\r\n ],\r\n [\r\n [xr, yt],\r\n [xr, yb]\r\n ],\r\n [\r\n [xr, yb],\r\n [xl, yb]\r\n ],\r\n [\r\n [xl, yb],\r\n [xl, yt]\r\n ]\r\n ];\r\n var cosSin = (0, _utils.getCosAndSin)(angle);\r\n if (0 === angle) {\r\n points = isHorizontal ? [\r\n [xl, yc],\r\n [xr, yc]\r\n ] : [\r\n [xc, yt],\r\n [xc, yb]\r\n ]\r\n } else {\r\n points = points.map(function(pair) {\r\n return pair.map(function(point) {\r\n return [_round((point[0] - xc) * cosSin.cos + (point[1] - yc) * cosSin.sin + xc), _round(-(point[0] - xc) * cosSin.sin + (point[1] - yc) * cosSin.cos + yc)]\r\n })\r\n }).reduce(function(r, pair) {\r\n var point1x = pair[0][0];\r\n var point1y = pair[0][1];\r\n var point2x = pair[1][0];\r\n var point2y = pair[1][1];\r\n if (isHorizontal) {\r\n if (point1y >= yc && yc >= point2y || point1y <= yc && yc <= point2y) {\r\n r.push([(yc - point1y) * (point2x - point1x) / (point2y - point1y) + point1x, yc])\r\n }\r\n } else {\r\n if (point1x >= xc && xc >= point2x || point1x <= xc && xc <= point2x) {\r\n r.push([xc, (xc - point1x) * (point2y - point1y) / (point2x - point1x) + point1y])\r\n }\r\n }\r\n return r\r\n }, [])\r\n }\r\n return points\r\n },\r\n isHorizontal: function(bBox, figure) {\r\n return bBox.x > figure.x || figure.x > bBox.x + bBox.width\r\n },\r\n getFigureCenter: symbolPointStrategy.getFigureCenter,\r\n findFigurePoint: function(figure, labelPoint, isHorizontal) {\r\n if (!isHorizontal) {\r\n return [figure.x, figure.y]\r\n }\r\n var labelX = labelPoint[0];\r\n var x = _round(figure.x + (figure.y - labelPoint[1]) / Math.tan((0, _utils.degreesToRadians)(figure.angle)));\r\n var points = [figure.x, figure.y, x, labelPoint[1]];\r\n if (!(figure.x <= x && x <= labelX) && !(labelX <= x && x <= figure.x)) {\r\n if (_abs(figure.x - labelX) < CONNECTOR_LENGTH) {\r\n points = [figure.x, figure.y]\r\n } else {\r\n if (figure.x <= labelX) {\r\n points[2] = figure.x + CONNECTOR_LENGTH\r\n } else {\r\n points[2] = figure.x - CONNECTOR_LENGTH\r\n }\r\n }\r\n }\r\n return points\r\n },\r\n adjustPoints: function(points) {\r\n return points\r\n }\r\n};\r\n\r\nfunction selectStrategy(figure) {\r\n return void 0 !== figure.angle && piePointStrategy || void 0 !== figure.r && symbolPointStrategy || barPointStrategy\r\n}\r\n\r\nfunction disposeItem(obj, field) {\r\n obj[field] && obj[field].dispose();\r\n obj[field] = null\r\n}\r\n\r\nfunction checkBackground(background) {\r\n return background && (background.fill && \"none\" !== background.fill || background[\"stroke-width\"] > 0 && background.stroke && \"none\" !== background.stroke)\r\n}\r\n\r\nfunction checkConnector(connector) {\r\n return connector && connector[\"stroke-width\"] > 0 && connector.stroke && \"none\" !== connector.stroke\r\n}\r\n\r\nfunction formatText(data, options) {\r\n var format = options.format;\r\n data.valueText = _format(data.value, format);\r\n data.argumentText = _format(data.argument, options.argumentFormat);\r\n if (void 0 !== data.percent) {\r\n data.percentText = _format(data.percent, {\r\n type: \"percent\",\r\n precision: format && format.percentPrecision\r\n })\r\n }\r\n if (void 0 !== data.total) {\r\n data.totalText = _format(data.total, format)\r\n }\r\n if (void 0 !== data.openValue) {\r\n data.openValueText = _format(data.openValue, format)\r\n }\r\n if (void 0 !== data.closeValue) {\r\n data.closeValueText = _format(data.closeValue, format)\r\n }\r\n if (void 0 !== data.lowValue) {\r\n data.lowValueText = _format(data.lowValue, format)\r\n }\r\n if (void 0 !== data.highValue) {\r\n data.highValueText = _format(data.highValue, format)\r\n }\r\n if (void 0 !== data.reductionValue) {\r\n data.reductionValueText = _format(data.reductionValue, format)\r\n }\r\n return options.customizeText ? options.customizeText.call(data, data) : data.valueText\r\n}\r\n\r\nfunction Label(renderSettings) {\r\n this._renderer = renderSettings.renderer;\r\n this._container = renderSettings.labelsGroup;\r\n this._point = renderSettings.point;\r\n this._strategy = renderSettings.strategy;\r\n this._rowCount = 1\r\n}\r\nLabel.prototype = {\r\n constructor: Label,\r\n setColor: function(color) {\r\n this._color = color\r\n },\r\n setOptions: function(options) {\r\n this._options = options\r\n },\r\n setData: function(data) {\r\n this._data = data\r\n },\r\n setDataField: function(fieldName, fieldValue) {\r\n this._data = this._data || {};\r\n this._data[fieldName] = fieldValue\r\n },\r\n getData: function() {\r\n return this._data\r\n },\r\n setFigureToDrawConnector: function(figure) {\r\n this._figure = figure\r\n },\r\n dispose: function() {\r\n var that = this;\r\n disposeItem(that, \"_group\");\r\n that._data = that._options = that._textContent = that._visible = that._insideGroup = that._text = that._background = that._connector = that._figure = null\r\n },\r\n _setVisibility: function(value, state) {\r\n this._group && this._group.attr({\r\n visibility: value\r\n });\r\n this._visible = state\r\n },\r\n isVisible: function() {\r\n return this._visible\r\n },\r\n hide: function(holdInvisible) {\r\n this._holdVisibility = !!holdInvisible;\r\n this._hide()\r\n },\r\n _hide: function() {\r\n this._setVisibility(\"hidden\", false)\r\n },\r\n show: function(holdVisible) {\r\n var correctPosition = !this._drawn;\r\n if (this._point.hasValue()) {\r\n this._holdVisibility = !!holdVisible;\r\n this._show();\r\n correctPosition && this._point.correctLabelPosition(this)\r\n }\r\n },\r\n _show: function() {\r\n var that = this;\r\n var renderer = that._renderer;\r\n var container = that._container;\r\n var options = that._options || {};\r\n var text = that._textContent = formatText(that._data, that._options) || null;\r\n if (text) {\r\n if (!that._group) {\r\n that._group = renderer.g().append(container);\r\n that._insideGroup = renderer.g().append(that._group);\r\n that._text = renderer.text(\"\", 0, 0).append(that._insideGroup)\r\n }\r\n that._text.css(options.attributes ? (0, _utils.patchFontOptions)(options.attributes.font) : {});\r\n if (checkBackground(options.background)) {\r\n that._background = that._background || renderer.rect().append(that._insideGroup).toBackground();\r\n that._background.attr(options.background);\r\n that._color && that._background.attr({\r\n fill: that._color\r\n })\r\n } else {\r\n disposeItem(that, \"_background\")\r\n }\r\n if (checkConnector(options.connector)) {\r\n that._connector = that._connector || renderer.path([], \"line\").sharp().append(that._group).toBackground();\r\n that._connector.attr(options.connector);\r\n that._color && that._connector.attr({\r\n stroke: that._color\r\n })\r\n } else {\r\n disposeItem(that, \"_connector\")\r\n }\r\n that._text.attr({\r\n text: text,\r\n align: options.textAlignment,\r\n \"class\": options.cssClass\r\n });\r\n that._updateBackground(that._text.getBBox());\r\n that._setVisibility(\"visible\", true);\r\n that._drawn = true\r\n } else {\r\n that._hide()\r\n }\r\n },\r\n _getLabelVisibility: function(isVisible) {\r\n return this._holdVisibility ? this.isVisible() : isVisible\r\n },\r\n draw: function(isVisible) {\r\n if (this._getLabelVisibility(isVisible)) {\r\n this._show();\r\n this._point && this._point.correctLabelPosition(this)\r\n } else {\r\n this._drawn = false;\r\n this._hide()\r\n }\r\n return this\r\n },\r\n _updateBackground: function(bBox) {\r\n var that = this;\r\n if (that._background) {\r\n bBox.x -= LABEL_BACKGROUND_PADDING_X;\r\n bBox.y -= LABEL_BACKGROUND_PADDING_Y;\r\n bBox.width += 2 * LABEL_BACKGROUND_PADDING_X;\r\n bBox.height += 2 * LABEL_BACKGROUND_PADDING_Y;\r\n that._background.attr(bBox)\r\n }\r\n that._bBoxWithoutRotation = (0, _extend.extend)({}, bBox);\r\n var rotationAngle = that._options.rotationAngle || 0;\r\n that._insideGroup.rotate(rotationAngle, bBox.x + bBox.width / 2, bBox.y + bBox.height / 2);\r\n bBox = (0, _utils.rotateBBox)(bBox, [bBox.x + bBox.width / 2, bBox.y + bBox.height / 2], -rotationAngle);\r\n that._bBox = bBox\r\n },\r\n getFigureCenter: function() {\r\n var figure = this._figure;\r\n var strategy = this._strategy || selectStrategy(figure);\r\n return strategy.getFigureCenter(figure)\r\n },\r\n _getConnectorPoints: function() {\r\n var that = this;\r\n var figure = that._figure;\r\n var options = that._options;\r\n var strategy = that._strategy || selectStrategy(figure);\r\n var bBox = that._shiftBBox(that._bBoxWithoutRotation);\r\n var rotatedBBox = that.getBoundingRect();\r\n var labelPoint;\r\n var points = [];\r\n var isHorizontal;\r\n if (!strategy.isLabelInside(bBox, figure, \"inside\" !== options.position)) {\r\n isHorizontal = strategy.isHorizontal(bBox, figure);\r\n var figureCenter = that.getFigureCenter();\r\n points = strategy.prepareLabelPoints(bBox, rotatedBBox, isHorizontal, -options.rotationAngle || 0, figureCenter);\r\n labelPoint = getClosestCoord(figureCenter, points);\r\n points = strategy.findFigurePoint(figure, labelPoint, isHorizontal);\r\n points = points.concat(labelPoint)\r\n }\r\n return strategy.adjustPoints(points)\r\n },\r\n fit: function(maxWidth) {\r\n var padding = this._background ? 2 * LABEL_BACKGROUND_PADDING_X : 0;\r\n var rowCountChanged = false;\r\n if (this._text) {\r\n var result = this._text.setMaxSize(maxWidth - padding, void 0, this._options);\r\n var rowCount = result.rowCount;\r\n if (0 === rowCount) {\r\n rowCount = 1\r\n }\r\n if (rowCount !== this._rowCount) {\r\n rowCountChanged = true;\r\n this._rowCount = rowCount\r\n }\r\n result.textIsEmpty && disposeItem(this, \"_background\")\r\n }\r\n this._updateBackground(this._text.getBBox());\r\n return rowCountChanged\r\n },\r\n resetEllipsis: function() {\r\n this._text && this._text.restoreText();\r\n this._updateBackground(this._text.getBBox())\r\n },\r\n setTrackerData: function(point) {\r\n this._text.data({\r\n \"chart-data-point\": point\r\n });\r\n this._background && this._background.data({\r\n \"chart-data-point\": point\r\n })\r\n },\r\n hideInsideLabel: function(coords) {\r\n return this._point.hideInsideLabel(this, coords)\r\n },\r\n getPoint: function() {\r\n return this._point\r\n },\r\n shift: function(x, y) {\r\n var that = this;\r\n if (that._textContent) {\r\n that._insideGroup.attr({\r\n translateX: that._x = _round(x - that._bBox.x),\r\n translateY: that._y = _round(y - that._bBox.y)\r\n });\r\n if (that._connector) {\r\n that._connector.attr({\r\n points: that._getConnectorPoints()\r\n })\r\n }\r\n }\r\n return that\r\n },\r\n getBoundingRect: function() {\r\n return this._shiftBBox(this._bBox)\r\n },\r\n _shiftBBox: function(bBox) {\r\n return this._textContent ? {\r\n x: bBox.x + this._x,\r\n y: bBox.y + this._y,\r\n width: bBox.width,\r\n height: bBox.height\r\n } : {}\r\n },\r\n getLayoutOptions: function() {\r\n var options = this._options;\r\n return {\r\n alignment: options.alignment,\r\n background: checkBackground(options.background),\r\n horizontalOffset: options.horizontalOffset,\r\n verticalOffset: options.verticalOffset,\r\n radialOffset: options.radialOffset,\r\n position: options.position,\r\n connectorOffset: (checkConnector(options.connector) ? CONNECTOR_LENGTH : 0) + (checkBackground(options.background) ? LABEL_BACKGROUND_PADDING_X : 0)\r\n }\r\n }\r\n};\r\n"],"sourceRoot":""}