{"version":3,"sources":["webpack:///./node_modules/devextreme/viz/chart.js","webpack:///./node_modules/devextreme/viz/translators/datetime_translator.js","webpack:///./node_modules/devextreme/viz/axes/tick.js","webpack:///./node_modules/devextreme/viz/translators/translator2d.js","webpack:///./node_modules/devextreme/events/transform.js","webpack:///./node_modules/devextreme/viz/axes/base_axis.js","webpack:///./node_modules/devextreme-vue/chart.js","webpack:///./node_modules/devextreme/viz/chart_components/shutter_zoom.js","webpack:///./node_modules/devextreme/viz/axes/xy_axes.js","webpack:///./node_modules/devextreme/viz/core/series_family.js","webpack:///./node_modules/devextreme/viz/axes/tick_generator.js","webpack:///./node_modules/devextreme/viz/translators/category_translator.js","webpack:///./node_modules/devextreme/viz/axes/polar_axes.js","webpack:///./node_modules/devextreme/viz/translators/logarithmic_translator.js","webpack:///./node_modules/devextreme/viz/axes/strip.js","webpack:///./node_modules/devextreme/viz/chart_components/scroll_bar.js","webpack:///./node_modules/devextreme/viz/translators/interval_translator.js","webpack:///./node_modules/devextreme/viz/axes/smart_formatter.js","webpack:///./node_modules/devextreme/viz/chart_components/advanced_chart.js","webpack:///./node_modules/devextreme/viz/core/annotations.js","webpack:///./node_modules/devextreme/viz/chart_components/zoom_and_pan.js","webpack:///./node_modules/devextreme/viz/chart_components/multi_axes_synchronizer.js","webpack:///./node_modules/devextreme/viz/chart_components/crosshair.js","webpack:///./node_modules/devextreme/viz/axes/datetime_breaks.js","webpack:///./node_modules/devextreme/viz/axes/constant_line.js","webpack:///./node_modules/devextreme/viz/axes/axes_constants.js"],"names":["_common","_extend2","_array","_iterator","_component_registrator","_component_registrator2","_interopRequireDefault","_utils","_type","_math","_base_chart","_multi_axes_synchronizer","_multi_axes_synchronizer2","_advanced_chart","_scroll_bar","_scroll_bar2","_crosshair","_crosshair2","_range_data_calculator","_layout_manager","_layout_manager2","_range","_range2","obj","__esModule","DEFAULT_PANE_NAME","VISUAL_RANGE","DEFAULT_PANES","name","border","DISCRETE","_isArray","Array","isArray","getFirstAxisNameForPane","axes","paneName","defaultPane","result","i","length","pane","changeVisibilityAxisGrids","axis","gridVisibility","minorGridVisibility","gridOpt","getOptions","grid","minorGridOpt","minorGrid","visible","hideGridsOnNonFirstValueAxisForPane","axesForPane","axisShown","hiddenStubAxis","some","minorGridOptions","gridOptions","forEach","getTranslator","getBusinessRange","isEmpty","push","findAxisOptions","valueAxes","valueAxesOptions","axisName","axInd","priority","findAxis","compareAxes","a","b","doesPaneExist","panes","found","each","_","prepareSegmentRectPoints","left","top","width","height","borderOptions","maxSW","sw","newSW","segmentSequence","right","bottom","points","segments","visiblyOpt","prevSegmentVisibility","allSegment","seg","visibility","segmentVisibility","slice","segment","concat","pathType","accumulate","field","src1","src2","auxSpacing","val1","val2","pickMax","pickMaxValue","Math","max","getAxisMargins","getMargins","getHorizontalAxesMargins","getMarginsFunc","reduce","margins","axisMargins","paneMargins","spacing","getMultipleAxesSpacing","getVerticalAxesMargins","performActionOnAxes","action","actionArgument1","actionArgument2","actionArgument3","shrinkCanvases","isRotated","canvases","sizes","verticalMargins","horizontalMargins","getMargin","side","m","indexOf","getMaxMargin","margins1","margins2","getOriginalField","toUpperCase","shrink","paneNames","sizeField","startMargin","endMargin","oppositeMargins","sort","p1","p2","canvas","margin","firstPane","emptySpace","space","PANE_PADDING","totalCustomSpace","Object","keys","prev","key","unit","offset","paneSize","floor","drawAxesWithTicks","condition","panesBorderOptions","default","synchronize","shiftAxis","side1","side2","shifts","customPositionIsAvailable","customPositionEqualsToPredefined","shift","getCommonSize","size","checkUsedSpace","sizeShortage","getMarginFunc","axisAnimationEnabled","drawOptions","pointsToAnimation","pointsCount","sum","count","animate","animationPointsLimit","collectMarkersInfoBySeries","allSeries","filteredSeries","argAxis","series","overloadedSeries","argVisualRange","visualRange","argTranslator","argViewPortFilter","getViewPortFilter","s","valAxis","getValueAxis","valVisualRange","getCanvasRange","valTranslator","seriesIndex","valViewPortFilter","sr","seriesPoints","getPoints","filter","p","argument","getMinValue","getMaxValue","tp","value","bubbleSize","mp","extend","x","to","y","total","continuousSeries","index","applyAutoHidePointMarkers","argAxisType","type","autoHidePointMarkers","tickCount","getTicksValues","majorTicksValues","autoHidePointMarkersEnabled","parseInt","isNaN","fastHidingPointMarkersByArea","markersInfo","area","_loop","currentSeries","pointSize","pointsArea","splice","updateMarkersInfo","isContinuousSeries","curPoint","isDefined","j","nextPoint","next_x","next_y","abs","distance","sqrt","pow","dxChart","AdvancedChart","inherit","_themeSection","_fontFields","_setDeprecatedOptions","this","callBase","apply","arguments","_deprecatedOptions","useAggregation","since","message","zoomingMode","scrollingMode","_initCore","paneAxis","_correctAxes","_correctValueAxes","_getExtraOptions","noop","_createPanes","that","option","panesNameCounter","_incidentOccurred","_isRotated","reverse","_getAxisRenderingOptions","axisType","drawingType","_prepareAxisOptions","typeSelector","userOptions","rotated","isHorizontal","containerColor","_themeManager","_checkPaneName","seriesTheme","paneList","map","inArray","_initCustomPositioningAxes","argumentAxis","getArgumentAxis","valueAxisName","customPositionAxis","valueAxis","_valueAxes","v","getOrthogonalAxis","customPositionIsBoundaryOrthogonalAxis","customPositionIsBoundary","_resetAxesAnimation","isFirstDrawing","_argumentAxes","resetApplyingAnimation","_axesBoundaryPositioning","allAxes","boundaryStateChanged","prevBoundaryState","_customBoundaryPosition","getCustomBoundaryPosition","_getValueAxis","axisOptions","valueAxisOptions","crosshairMargins","_getCrosshairMargins","_createAxis","_populateAxesOptions","optionPath","crosshairMargin","applyVisualRangeSetter","_getVisualRangeSetter","setPane","needHideGrids","synchronizeMultiAxes","paneWithAxis","defaultAxis","axesWithSamePath","_getSeriesForPane","paneSeries","oneSeries","_createPanesBorderOptions","commonBorderOptions","_createScrollBar","scrollBarOptions","scrollBarGroup","_scrollBarGroup","_scrollBar","ScrollBar","_renderer","update","linkRemove","dispose","_prepareToRender","_createPanesBackground","_appendAxesGroups","_adjustViewport","_getVisibleSeries","adjustOnZoom","alignToBounds","dataVisualRangeIsReduced","adjust","_recreateSizeDependentObjects","isCanvasChanged","zoomChanged","_isZooming","updateCanvas","_canvas","_useAllAggregatedPoints","createPoints","_processSeriesFamilies","businessRange","zoomRange","getViewport","min","getLog","base","viewportDistance","getCategoriesInfo","categories","precision","getPrecision","round","_zoomLength","_handleSeriesDataUpdated","viewport","Range","addRange","getArgumentRange","setBusinessRange","_axesReinitialized","_isLegendInside","_legend","getPosition","_getLayoutTargets","_applyClipRects","_drawPanesBorders","_createClipRectsForPanes","_applyClipRectsForAxes","_fillPanesBackground","_updateLegendPosition","legendHasInsidePosition","drawLegend","newCanvas","layoutManager","LayoutManager","layoutInsideLegend","_allowLegendInsidePosition","_applyExtraSettings","paneIndex","_getPaneIndex","panesClipRects","_panesClipRects","wideClipRect","wide","setClippingParams","id","_getPaneBorderVisibility","_updatePanesCanvases","recreateCanvas","updatePanesCanvases","_normalizePanesHeight","normalizePanesHeight","_renderScaleBreaks","drawScaleBreaks","_getArgFilter","_applyPointMarkersAutoHiding","_ref","borderCoords","usePointsToDefineAutoHiding","argAxisIsDiscrete","sortingCallback","_renderAxes","calculateTitlesWidth","getTitle","title","bBox","scrollBar","extendedArgAxes","_isArgumentAxisBeforeScrollBar","verticalAxes","verticalElements","horizontalAxes","horizontalElements","allElements","panesCanvases","paneSizes","cleanPanesCanvases","needCustomAdjustAxes","adjustAxes","resolveOverlappingForCustomPositioning","vAxesMargins","hAxesMargins","estimateMargins","drawAxesAndSetCanvases","_estimateTickIntervals","oldTitlesWidth","visibleSeries","_getPointsToAnimation","setInitRange","hasWrap","newTitleWidth","position","_ref2","getCustomPosition","_axisPosition","estimateTickInterval","checkForMoreSpaceForPanesCanvas","panesAreCustomSized","needSpace","needHorizontalSpace","needVerticalSpace","argAxisRightMargin","rightPanesIndent","argAxisBottomMargin","bottomPanesIndent","realSize","getSize","customSize","container","_$element","containerHasStyledHeight","style","checkElementHasPropertyFromStyleSheet","_forceResize","needMoreSpaceForPanesCanvas","resize","_updateSize","_setContentSize","_preserveOriginalCanvas","_updateCanvasClipRect","_shrinkAxes","stopAllAnimations","_argumentAxis$getOpti","argAxisPosition","getResolvedBoundaryPosition","argAxisLabelPosition","label","scrollBarPosition","hasCustomPosition","_getPanesParameters","params","coords","clipRect","fixed","_createCrosshairCursor","options","parameters","_getCommonCanvas","enabled","Crosshair","_crosshairCursorGroup","render","commonCanvas","backgroundColor","rect","defaultBackgroundColor","renderer","rects","_panesBackgroundGroup","clear","attr","fill","append","panesBackground","bc","_calcPaneBorderCoords","_panesBorderGroup","stroke","color","opacity","dashStyle","segmentRectParams","path","linkAppend","_createClipRect","clipArray","needWideClipRect","isFinancialSeries","areErrorBarsVisible","customPositionAxes","chartCanvasClipRectID","_getCanvasClipRectID","elementsClipRectID","_getElementsClipRectID","canvasClipRectID","applyClipRects","commonPaneBorderVisible","paneBorder","_getCanvasForPane","panesNumber","_getTrackerSettings","themeManager","chart","crosshair","_getCrosshairOptions","stickyHovering","_resolveLabelOverlappingStack","shiftDirection","box","_getStackPoints","stacks","overlapping","resolveLabelOverlappingInOneDirection","coordPosition","figureCenter1","labels","getFigureCenter","figureCenter12","getPoint","isInverted","stackPoints","singleSeries","stackName","getStackName","point","_getOption","zoomArgument","_initialized","resetVisualRange","nonVirtualArgumentAxis","_applyCustomVisualRangeOption","getVisibleArgumentBounds","translator","range","isDiscrete","minVisible","maxVisible","_change_FULL_RENDER","_changes","has","_raiseZoomEndHandlers","_getAxesForScaling","_applyVisualRangeByVirtualAxes","isArgumentAxis","start","end","handleZoomEnd","_setOptionsByReference","_optionsByReference","_options","silent","_notifyVisualRange","argumentVisualRange","convertVisualRangeObject","skipEventRising","rangesAreEqual","addPlugin","plugins","core","module","exports","parse","Date","_fromValue","_toValue","_add","addDateInterval","getPathStyle","createTick","tickOptions","skippedCategory","skipLabels","tickOffset","_tickOffset","lineGroup","_axisLineGroup","elementsGroup","_axisElementsGroup","tickStyle","gridStyle","emptyStrRegExp","labelOptions","labelStyle","_textOptions","getLabelFontStyle","tick","fontStyle","_textFontStyles","customizeColor","call","createLabelHint","labelHint","formatHint","setTitle","updateValue","newValue","initCoords","_getTranslatedValue","labelCoords","saveCoords","_lastStoredCoordinates","_storedCoords","_storedLabelsCoords","resetCoordinates","drawMark","areCoordsOutsideAxis","mark","sharp","getSharpDirectionByCoords","updateTickPosition","_createPathElement","setSkippedCategory","category","_updateLine","lineElement","settings","storedSettings","isGridLine","r","delay","partitionDuration","angle","_rotateTick","remove","_getTickMarkPoints","drawLabel","labelIsVisible","text","formatLabel","rotate","updateLabelPosition","test","css","data","removeLabel","fadeOutElements","startSettings","endSettings","animationSettings","_fadeOutLabel","_axisGridGroup","_fadeInLabel","group","g","updateMultilineTextAlignment","textsAlignment","labelAlignment","alignment","drawGrid","drawLine","updateGridPosition","_getGridPoints","_extend","_category_translator","_category_translator2","_interval_translator","_interval_translator2","_datetime_translator","_datetime_translator2","_logarithmic_translator","_logarithmic_translator2","_date","_Translator2d","_abs","CANVAS_PROP","dummyTranslator","coord","_canvasOptions","startPoint","conversionValue","endPoint","from","validateCanvas","prop","makeCategoriesToPoints","categoriesToPoints","item","valueOf","validateBusinessRange","validate","valueSelector","baseValueSelector","prepareBreaks","breaks","br","transformFrom","transformTo","transform","getLogExt","array","trFrom","trTo","cumulativeWidth","getCanvasBounds","isLogarithmic","allowNegatives","linearThreshold","rangeMin","rangeMax","rangeMinVisible","rangeMaxVisible","getCheckingMethodsAboutBreaks","inverted","isStartSide","pos","isEndSide","isInBreak","isBetweenBreaks","prevBreak","getLength","lastBreak","getBreaksSize","Translator2D","prototype","constructor","reinit","_businessRange","script","canvasOptions","_prepareCanvasOptions","visibleCategories","categoriesLength","ratioOfCanvasRange","canvasLength","addInterval","interval","_categories","_getDiscreteInterval","addSpiderCategory","_categoriesToPoints","invert","startPointIndex","dataType","_oldMethods","methodName","_conversionValue","sc","_checkingMethodsAboutBreaks","_translateBreaks","_calculateSpecialValues","_breaks","breaksSize","translate","gapSize","_checkValueAboutBreaks","methods","inBreak","break","correctedCategoriesCount","stick","startPadding","endPadding","rangeDoubleError","getPower","updateBusinessRange","getEventScale","zoomEvent","deltaScale","getCanvasVisibleArea","canvas_position_default","canvas_position_center_middle","canvas_position_left","canvas_position_top","canvas_position_center","canvas_position_middle","canvas_position_right","canvas_position_bottom","canvas_position_start","canvas_position_end","translateSpecialCase","_calculateProjection","_calculateUnProjection","getMinBarSize","minBarSize","visibleArea","minValue","checkMinBarSize","minShownValue","stackValue","bp","direction","specialValue","getInterval","_interval","zoom","scale","wholeRange","zoomZeroLengthRange","newStart","newEnd","minPoint","endValue","startValue","maxPoint","correction","isDateTime","isDate","newMin","newMax","raiseToExt","getMinScale","getScale","isValid","co","getCorrectValue","shiftZeroValue","commonBreakSize","isValueProlonged","getRange","getScreenRange","add","diff","dir","coeff","Number","mathUtils","iteratorUtils","errors","eventUtils","Emitter","registerEmitter","DX_PREFIX","TRANSFORM","TRANSLATE","ZOOM","PINCH","ROTATE","START_POSTFIX","UPDATE_POSTFIX","END_POSTFIX","eventAliases","addAlias","eventName","eventArgs","args","rotation","deltaRotation","translation","deltaTranslation","getVector","first","second","pageX","pageY","centerX","centerY","getEventVector","e","pointers","getDistance","vector","firstVector","secondVector","getRotation","scalarProduct","distanceProduct","sign","acos","fitIntoRange","getTranslation","TransformEmitter","configure","log","replace","validatePointers","hasTouches","_accept","startVector","_startVector","_prevVector","_fireEventAliases","move","currentVector","_getEventArgs","eventPostfix","originalEvent","eventAlias","_fireEvent","bind","eventNames","emitter","events","substring","_smart_formatter","_utils2","_axes_constants","_axes_constants2","_format_helper","_format_helper2","_parse_utils","_parse_utils2","_tick_generator","_tick_generator2","_translator2d","_translator2d2","_tick","_math2","_xy_axes","_xy_axes2","_polar_axes","_polar_axes2","_constant_line","_constant_line2","_strip","_strip2","_defineProperty","defineProperty","enumerable","configurable","writable","convertTicksToValues","patchFontOptions","getVizRangeObject","raiseTo","_max","_min","DEFAULT_AXIS_LABEL_SPACING","MAX_GRID_BORDER_ADHENSION","TOP","BOTTOM","LEFT","RIGHT","CENTER","center","KEEP","SHIFT","RESET","DEFAULT_AXIS_DIVISION_FACTOR","DEFAULT_MINOR_AXIS_DIVISION_FACTOR","SCROLL_THRESHOLD","MIN_BAR_MARGIN","MAX_MARGIN_VALUE","dateIntervals","day","week","getTickGenerator","incidentOccurred","skipTickGeneration","rangeIsEmpty","adjustDivisionFactor","_options$workWeek","tickGenerator","logBase","logarithmBase","axisDivisionFactor","minorAxisDivisionFactor","numberMultipliers","calculateMinors","minorTick","allowDecimals","endOnTick","firstDayOfWeek","workWeek","skipCalculationLimits","generateExtraTick","minTickInterval","createMajorTick","createMinorTick","createBoundaryTick","isFirst","showCustomBoundaryTicks","callAction","elements","initTickCoords","ticks","drawTickMarks","drawGrids","updateTicksPosition","updateGridsPosition","measureLabels","items","labelBBox","getBBox","cleanUpInvalidTicks","removeInvalidTick","validateAxisOptions","_labelOptions$minSpac","_TOP$BOTTOM$LEFT$RIGH","_TOP$BOTTOM$LEFT$RIGH2","defaultPosition","secondaryPosition","labelPosition","userAlignment","hoverMode","toLowerCase","minSpacing","argumentType","valueType","getOptimalAngle","boxes","labelOpt","asin","PI","updateLabels","step","func","getZoomBoundValue","optionValue","dataValue","configureGenerator","viewPort","screenDelta","tickGeneratorOptions","tickInterval","isSpacedMargin","getConstantLineSharpDirection","axisCanvas","calculateCanvasMargins","bBoxes","cLeft","cTop","cRight","cBottom","Axis","renderSettings","_eventTrigger","eventTrigger","_stripsGroup","stripsGroup","_labelAxesGroup","labelAxesGroup","_constantLinesGroup","constantLinesGroup","_scaleBreaksGroup","scaleBreaksGroup","_axesContainerGroup","axesContainerGroup","_gridContainerGroup","gridGroup","_axisCssPrefix","widgetClass","axisClass","_setType","_createAxisGroups","_translator","_createTranslator","_viewport","_firstDrawing","_initRange","_drawAxis","_axisElement","_createAxisElement","_updateAxisElementPosition","_getSharpParam","getAxisSharpDirection","sharpDirection","svgElement","_getCanvasStartEnd","maxCoord","getRadius","_isHorizontal","_getGridLineDrawer","tickPositionField","orthogonalPositions","_orthogonalPositions","positionFrom","positionTo","canvasStart","canvasEnd","getCanvas","firstBorderLinePosition","lastBorderLinePosition","minDelta","maxDelta","_getConstantLinePos","parsedValue","_getTranslatedCoord","_getConstantLineGraphicAttributes","_createConstantLine","_drawConstantLineLabelText","font","cssClass","align","_drawConstantLineLabels","lineLabelOptions","_text","_checkAlignmentConstantLineLabels","_getConstantLineLabelsCoords","_getStripPos","swap","startCategoryIndex","endCategoryIndex","isContinuous","cat","parsedStartValue","parser","parsedEndValue","outOfCanvas","validateUnit","stripPosition","getVisibleArea","_getStripGraphicAttributes","fromPoint","toPoint","_createStrip","attrs","_adjustStripLabels","_strips","strip","_getAdjustedStripLabelCoords","_adjustLabelsCoord","maxWidth","checkCanvas","_majorTicks","_getLabelAdjustedCoord","labelOffset","_adjustLabels","positionsAreConsistent","maxSize","labelRotationAngle","rotateBBox","additionalOffset","indentFromAxis","translateX","translateY","textAlign","isFlatLabel","axisPosition","labelX","_createAxisConstantLineGroups","classSelector","constantLinesClass","insideGroup","outsideGroup1","outsideGroup2","inside","outside1","outside2","_axisGroup","_axisStripGroup","_axisTitleGroup","_axisConstantLineGroups","above","under","_axisStripLabelGroup","_clearAxisGroups","_getLabelFormatObject","_getViewportRange","formatObject","valueText","smartFormatter","_tickInterval","showTransition","marker","isFunction","customizeText","customizeHint","formatRange","_setTickOffset","discreteAxisDivisionMode","_resetApplyingAnimation","placeholderSize","edgeMarginCorrection","constantLineAboveSeries","constantLineUnderSeries","idError","axisTypeMethods","_disposeBreaksGroup","_title","_axisBreaksGroup","_minorTicks","setTypes","_updateTranslator","resetTypes","_initTypes","updateOptions","_hasLabelFormat","format","logarithmic","logarithmBaseError","_createConstantLines","strips","o","calculateInterval","prevValue","_Range","_processCanvas","canvasRedesign","positions","_initAxisPositions","getAxisShift","_axisShift","hideTitle","hideOuterElements","_outsideConstantLines","adjustViewport","discrete","_seriesData","adjustRange","_addConstantLinesToRange","minDefined","maxDefined","categoriesInfo","_wholeRange$startValu","_wholeRange$endValue","adjustedVisualRange","adjustVisualRange","disabledNegatives","tmp","_getVisualRangeUpdateMode","newRange","oppositeValue","visualRangeUpdateMode","newCategories","c","join","minVisiblePoint","maxVisiblePoint","_handleBusinessRangeChanged","oppositeVisualRangeUpdateMode","axisReinitialized","_lastVisualRangeUpdateMode","_prevDataWasEmpty","_setVisualRange","getVisualRangeLength","currentBusinessRange","getVisualRangeCenter","_this$_options","ceil","argCategories","_that$_seriesData$min","_that$_seriesData$max","dataIsEmpty","synchronizedValue","showZero","correctValueZeroLevel","sortCategories","getCategoriesSorter","_initialBreaks","_getScaleBreaks","_series","dataRange","minValueField","maxValueField","_insideConstantLines","cl","extendAxis","_dataRange$addRange","getParsedValue","setGroupSeries","getLabelsPosition","labelShift","_constantLabelOffset","getFormattedValue","_getBoundaryTicks","majors","customBounds","customBoundTicks","addMinMax","_boundaryTicksVisibility","boundaryTicks","setPercentLabelFormat","resetAutoLabelFormat","multipleAxesSpacing","minorTicksValues","_getTicks","setTicks","majorTicks","_getSkippedCategory","minorTicks","_isSynchronized","_adjustDivisionFactor","val","customTicks","customMinorTicks","_getScreenDelta","overlappingBehavior","forceUserTickInterval","minors","minorTickInterval","minorTickCount","_createTicksAndLabelFormat","getDateFormatByTicks","getAggregationInfo","useAllAggregatedPoints","_visualRange$startVal","_visualRange$endValue","_that$_seriesData","marginOptions","_marginOptions","aggregateByCategory","aggregationInterval","aggregationGroupWidth","checkInterval","sizePointNormalState","minInterval","generateTicks","getAddFunction","maxMinDistance","dateToMilliseconds","_aggregationInterval","createTicks","_estimatedTickInterval","_calculateValueMargins","maxValue","_boundaryTicks","minor","boundary","_minorTickInterval","oldMajorTicks","majorTicksByValues","t","sameType","oldMinorTicks","_ticksToRemove","k","_reinitTranslator","setMarginOptions","getMarginOptions","_this$_marginOptions","_calculateRangeInterval","minArgs","addToArgs","_calculateWorkWeekInterval","businessInterval","workdaysOnly","weekend","weekendsCount","_resetMargins","rangeInterval","minPercentPadding","maxPercentPadding","marginSize","valueMarginsEnabled","minValueMargin","maxValueMargin","minPadding","maxPadding","stubData","getConvertIntervalCoefficient","intervalInPx","pxInterval","isFinite","maxPaddingValue","percentStick","_minValue","_maxValue","_minValue2","_maxValue2","canvasStartEnd","commonMargin","screenDeltaWithMargins","skipViewportExtending","firstTickPosition","lastTickPosition","invertMultiplier","minTickPadding","maxTickPadding","commonPadding","correctZeroLevel","minExpectedPadding","maxExpectedPadding","applyMargins","_this","constantLines","l","draw","_drawTitle","textWidth","textHeight","convertedTickInterval","drawGridLine","_dateMarkers","_drawDateMarkers","_measureTitle","usefulSpace","displayMode","_validateDisplayMode","overlappingMode","_validateOverlappingMode","wordWrapMode","wordWrap","overflowMode","textOverflow","correctByWidth","correctByHeight","setMaxSize","_adjustConstantLineLabels","_setLabelsPlacement","_adjustDateMarkers","_adjustTitle","updateSize","updateTitle","_checkTitleOverflow","_updateTitleCoords","animationEnabled","_resetStartCoordinates","updatePosition","prepareAnimation","elementsClipID","canvasClipID","_mergeViewportOptions","visualRangeOptionValue","_customVisualRange","_validateVisualRange","_validateOptions","getParser","isSilent","handleZooming","allowPartialUpdate","_applyZooming","_resetVisualRangeOption","getZoomStartEventArg","event","actionType","cancel","getZoomEndEventArg","previousRange","zoomFactor","rangeStart","rangeEnd","getZoomBounds","secondPriorityRange","setCustomVisualRange","_startValue","_endValue","adjustedRange","_getAdjustedBusinessRange","isPlainObject","zoomResults","isPrevented","_visualRange","preventEvents","domEvent","zoomStartEvent","_storedZoomEndParams","startRange","prevent","previousBusinessRange","typeIsNotChanged","NaN","zoomEndEvent","isZoomingLowerLimitOvercome","restorePreviousVisualRange","minZoom","minVisualRangeLength","isOvercoming","visualRangeLength","isNumeric","fullRange","minDataValue","maxDataValue","seriesData","edges","visualRangeStartPoint","visualRangeEndPoint","isExtremePosition","isMax","extremeDataValue","extremePoint","visualRangePoint","getFullTicks","withIndents","widthAxis","indent","viewportRange","maxText","prevLabel","root","notRecastStep","ignoreOverlapping","behavior","rotationAngle","staggeringSpacing","_getStep","_applyLabelMode","_applyLabelOverlapping","mode","checkLabels","areLabelsOverlap","_checkBoundedLabelsOverlapping","labelHeight","_getMaxLabelHeight","getMarkerTrackers","coordsIn","_getTranslatorOptions","_options$workWeek2","_options$breakStyle$w","_options$breakStyle","semiDiscreteInterval","_getStick","breakStyle","breaksLength","getSpiderTicks","setSpiderTicks","_rotateConstantLine","visualRangeSetter","categoriesSortingMethod","VueType","Vue","chart_1","component_1","configuration_component_1","DxChart","extends","DxComponent","props","adaptiveLayout","Boolean","animation","annotations","barGroupPadding","barGroupWidth","commonAnnotationSettings","commonAxisSettings","commonPaneSettings","commonSeriesSettings","containerBackgroundColor","String","customizeAnnotation","Function","customizeLabel","customizePoint","dataPrepareSettings","dataSource","disabled","elementAttr","export","legend","loadingIndicator","maxBubbleSize","minBubbleSize","negativesAsZeroes","onArgumentAxisClick","onDisposing","onDone","onDrawn","onExported","onExporting","onFileSaving","onIncidentOccurred","onInitialized","onLegendClick","onOptionChanged","onPointClick","onPointHoverChanged","onPointSelectionChanged","onSeriesClick","onSeriesHoverChanged","onSeriesSelectionChanged","onTooltipHidden","onTooltipShown","onZoomEnd","onZoomStart","palette","paletteExtensionMode","pathModified","pointSelectionMode","redrawOnResize","resizePanesOnZoom","resolveLabelOverlapping","rtlEnabled","seriesSelectionMode","seriesTemplate","theme","tooltip","zoomAndPan","computed","instance","$_instance","beforeCreate","$_WidgetClass","$_expectedChildren","isCollectionItem","optionName","annotation","chartTitle","DxAdaptiveLayout","DxConfiguration","keepLabels","$_optionName","DxAggregation","calculate","method","DxAggregationInterval","days","hours","milliseconds","minutes","months","quarters","seconds","weeks","years","DxAnimation","duration","easing","maxPointCountSupported","DxAnnotation","allowDragging","arrowLength","arrowWidth","customizeTooltip","description","image","offsetX","offsetY","paddingLeftRight","paddingTopBottom","shadow","template","tooltipEnabled","tooltipTemplate","$_isCollectionItem","annotationBorder","annotationImage","DxAnnotationBorder","cornerRadius","DxAnnotationImage","url","DxArgumentAxis","constantLineStyle","customPosition","holidays","singleWorkdays","stripStyle","axisConstantLineStyle","axisLabel","axisTitle","constantLine","DxArgumentFormat","currency","formatter","DxAxisConstantLineStyle","DxAxisConstantLineStyleLabel","horizontalAlignment","verticalAlignment","DxAxisLabel","DxAxisTitle","DxBorder","DxBreak","DxBreakStyle","line","DxChartTitle","subtitle","chartTitleSubtitle","DxChartTitleSubtitle","DxCommonAnnotationSettings","DxCommonAxisSettings","commonAxisSettingsConstantLineStyle","commonAxisSettingsLabel","commonAxisSettingsTitle","DxCommonAxisSettingsConstantLineStyle","commonAxisSettingsConstantLineStyleLabel","DxCommonAxisSettingsConstantLineStyleLabel","DxCommonAxisSettingsLabel","DxCommonAxisSettingsTitle","DxCommonPaneSettings","DxCommonSeriesSettings","aggregation","argumentField","bar","barOverlapGroup","barPadding","barWidth","bubble","candlestick","closeValueField","fullstackedarea","fullstackedbar","fullstackedline","fullstackedspline","fullstackedsplinearea","highValueField","hoverStyle","ignoreEmptyPoints","innerColor","lowValueField","maxLabelCount","openValueField","rangearea","rangebar","rangeValue1Field","rangeValue2Field","reduction","scatter","selectionMode","selectionStyle","showInLegend","spline","splinearea","stack","stackedarea","stackedbar","stackedline","stackedspline","stackedsplinearea","steparea","stepline","stock","tagField","valueErrorBar","valueField","commonSeriesSettingsHoverStyle","commonSeriesSettingsLabel","commonSeriesSettingsSelectionStyle","seriesBorder","DxCommonSeriesSettingsHoverStyle","hatching","DxCommonSeriesSettingsLabel","argumentFormat","connector","horizontalOffset","showForZeroValues","verticalOffset","DxCommonSeriesSettingsSelectionStyle","DxConnector","DxConstantLine","displayBehindSeries","DxConstantLineLabel","DxConstantLineStyle","DxCrosshair","horizontalLine","verticalLine","horizontalLineLabel","DxDataPrepareSettings","checkTypeForAllData","convertToAxisDataType","sortingMethod","DxDragBoxStyle","DxExport","fileName","formats","printingEnabled","proxyUrl","svgToCanvas","DxFont","family","weight","DxFormat","DxGrid","DxHatching","DxHeight","rangeMaxPoint","rangeMinPoint","DxHorizontalLine","DxHorizontalLineLabel","DxHoverStyle","DxImage","DxLabel","DxLegend","columnCount","columnItemSpacing","customizeItems","itemsAlignment","itemTextPosition","markerSize","markerTemplate","orientation","rowCount","rowItemSpacing","legendTitle","DxLegendTitle","legendTitleSubtitle","DxLegendTitleSubtitle","DxLength","DxLoadingIndicator","show","DxMargin","DxMinorGrid","DxMinorTick","DxMinorTickInterval","DxMinVisualRangeLength","DxPane","DxPaneBorder","DxPoint","symbol","pointBorder","pointHoverStyle","pointImage","pointSelectionStyle","DxPointBorder","DxPointHoverStyle","DxPointImage","DxPointSelectionStyle","DxReduction","level","DxScrollBar","DxSelectionStyle","DxSeries","tag","DxSeriesBorder","DxSeriesTemplate","customizeSeries","nameField","DxShadow","blur","DxSize","DxStrip","DxStripLabel","DxStripStyle","stripStyleLabel","DxStripStyleLabel","DxSubtitle","DxTick","DxTickInterval","DxTitle","DxTooltip","contentTemplate","interactive","location","shared","zIndex","tooltipBorder","DxTooltipBorder","DxUrl","DxValueAxis","autoBreaksEnabled","maxAutoBreakCount","DxValueErrorBar","edgeLength","lineWidth","DxVerticalLine","DxVisualRange","DxWholeRange","DxWidth","DxZoomAndPan","allowMouseWheel","allowTouchGestures","dragBoxStyle","dragToZoom","panKey","dragEvents","SHUTTER_EVENTS_NS","DRAG_START_EVENT_NAME","DRAG_UPDATE_EVENT_NAME","DRAG_END_EVENT_NAME","getPointerCoord","rootOffset","y1","x1","y2","x2","checkCoords","dragStartHandler","ctx","getRootOffset","startCoord","triggerStart","dragHandler","curCoord","dragEndHandler","triggerEnd","shutterZoom","shutterOptions","shutter","tr","off","lastPane","on","immediate","init","_shutterZoom","_date2","_datetime_breaks","getNextDateUnit","correctDateWithUnitBeginning","SCALE_BREAK_OFFSET","RANGE_RATIO","WAVED_LINE_CENTER","WAVED_LINE_TOP","WAVED_LINE_BOTTOM","WAVED_LINE_LENGTH","TICKS_CORRECTIONS","prepareDatesDifferences","datesDifferences","dateUnitInterval","dateUnitIntervals","sortingBreaks","filterBreaks","breakSize","currentBreak","newBreak","lastResult","_lastResult$cumulativ","_lastResult$cumulativ2","convertMillisecondsToDateUnits","getMarkerDates","markerInterval","dates","origMin","getSequenceByInterval","getStripHorizontalAlignmentPosition","getStripVerticalAlignmentPosition","getMarkerInterval","getMarkerFormat","curDate","prevDate","getDatesDifferences","getDateFormatByDifferences","getMaxSide","act","getDistanceByAngle","atan","sin","getMaxConstantLinePadding","padding","getConstantLineLabelMarginForVerticalAlignment","getLeftMargin","getRightMargin","generateRangesOnPoints","edgePoints","curValue","curRange","maxRange","ranges","generateAutoBreaks","visibleRange","getPointsInViewPort","sortedAllPoints","minDiff","epsilon","_maxAutoBreakCount","getLineDrawer","rotatePoints","breakStart","isWaved","elementType","currentPosition","topPoint","centerPoint","bottomPoint","rotateLine","lineCoords","linear","maxLabelLength","getTicksCountInRange","validateOverlappingMode","_markerTrackers","opposite","axisCoord","getPredefinedPosition","tickStartCoord","tickOrientation","getTickStartPositionShift","_getTitleCoords","horizontal","fromStartToEnd","_drawTitleText","titleOptions","element","originalSize","_drawDateMarker","date","pathElement","markerOptions","textIndent","textLeftIndent","withoutStick","separatorHeight","cropped","getEnd","hideLabel","hide","hidden","dateMarker","minBound","dateMarkers","markerDate","markersAreaTop","_getLabelFormatOptions","topIndent","getDateUnitInterval","markerDates","markers","unshift","prevDateMarker","_checkMarkersPosition","dy","textTopIndent","_initializeMarkersTrackers","nextMarker","markerTracker","formatString","markerLabelOptions","_markerLabelOptions","canvasLeft","canvasRight","canvasTop","canvasBottom","verticalCenter","horizontalCenter","maxLabel","linesOptions","labelVerticalAlignment","labelHorizontalAlignment","labelIsInside","_drawConstantLinesForEstimating","_estimateLabelHeight","sinCos","getCosAndSin","cos","ticksData","constantLineOptions","rootElement","labelValue","labelElement","titleElement","constantLinesLabelsElement","labelBox","titleBox","constantLinesBox","titleHeight","constantLinesHeight","stripOptions","labelWidth","boxTitle","loCoord","hiCoord","_wrapped","moreThanOriginalSize","restoreText","isVisible","seriesRange","getAxisPosition","_getStripLabelCoords","stripLabelOptions","pos1","pos2","generateDateBreaks","_drawBreak","translatedEnd","borderColor","spaceAttr","drawer","_createBreakClipRect","clipWidth","_breaksElements","_createBreaksGroup","clipFrom","clipTo","customCanvas","additionGroup","additionBreakFrom","additionBreakTo","breakOptions","mainGroup","breakCoord","_getSpiderCategoryOption","axesSpacing","constantLinesGroups","shiftGroup","orthogonalAxis","resolvedPosition","getResolvedPositionOption","orthogonalTranslator","orthogonalAxisType","validPosition","positionIsBoundary","_options$customPositi","_this$_orthogonalPosi","oppositeAxes","overlappingObj","_detectElementsOverlapping","_shiftThroughOrthogonalAxisOverlappedTick","oppositeTick","oppositeLabel","_shiftThroughAxisOverlappedTick","orthogonalAxisPosition","orthogonalAxisLabelOptions","orthogonalAxisLabelPosition","orthogonalAxisLabelIndent","translateCoordName","defaultOrthogonalAxisLabelPosition","labelCoord","labelSize","outsidePart","insidePart","_tick$mark","tickMarkBBox","labelIndent","defaultLabelPosition","markerCoord","element1","element2","bBox1","bBox2","DEFAULT_BAR_GROUP_PADDING","validateBarPadding","validateBarGroupPadding","isStackExist","arg","equalBarWidth","getPointsByArg","hasValue","correctStackCoordinates","currentStacks","barsArea","seriesStackIndexCallback","extraParameters","stackIndex","getOffset","calculateParams","correctPointCoordinates","adjustBarSeriesDimensionsCore","commonStacks","allArguments","seriesInStacks","getBarOverlapGroup","toString","pointsByArgument","percentWidth","fixedBarWidth","middleIndex","correctCoordinates","getValueType","getVisibleSeries","getAbsStackSumByArg","stackKeepers","positiveStackValue","positive","negativeStackValue","negative","getStackSumByArg","getSeriesStackIndexCallback","stackCount","adjustBarSeriesDimensions","getFirstValueSign","initialValue","adjustStackedSeriesValues","holesStack","lastSeriesInPositiveStack","lastSeriesInNegativeStack","hole","_prevSeries","holes","isNotBarSeries","resetValue","currentStack","correctValue","resetCorrection","_skipSetLeftHole","prevPoint","_skipSetRightHole","resetHoles","setHole","_stackKeepers","absTotal","setPercentValue","updateStackedSeriesValues","valueAxisTranslator","minShownBusinessValue","fullStacked","updateFullStackedSeriesValues","stackSum","updateBarSeriesValues","adjustCandlestickSeriesDimensions","adjustBubbleSeriesDimensions","bubbleArea","sizeProportion","visibleAreaX","visibleAreaY","minBubbleArea","maxBubbleArea","equalBubbleSize","minPointSize","maxPointSize","seriesItem","sizeDispersion","areaDispersion","SeriesFamily","normalizeEnum","adjustSeriesDimensions","updateSeriesValues","adjustSeriesValues","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","minLen","_arrayLikeToArray","n","len","arr2","Symbol","iterator","_arr","_n","_d","_e","_s","_i","next","done","err","return","convertDateUnitToMilliseconds","math","mathAbs","mathFloor","mathCeil","mathPow","NUMBER_MULTIPLIERS","LOGARITHMIC_MULTIPLIERS","DATETIME_MULTIPLIERS","millisecond","minute","hour","month","DATETIME_MULTIPLIERS_WITH_BIG_WEEKEND","DATETIME_MINOR_MULTIPLIERS","MINOR_DELIMITERS","VISIBILITY_DELIMITER","MINUTE","dummyGenerator","forceTickInterval","discreteGenerator","getValue","getLogValue","mathRaiseTo","logAbsValue","correctValueByInterval","post","correctMinValueByEndOnTick","floorFunc","ceilFunc","resolveEndOnTick","businessViewInfo","forceEndOnTick","floorTickValue","tickValue","prevTickDataDiff","intervalCount","businessDelta","businessRatio","potentialTickScreenDiff","delimiterFactor","delimiterMultiplier","screenDelimiter","resolveEndOnTickLog","resolveEndOnTickDate","getBusinessDelta","getBusinessDeltaLog","getIntervalByFactor","addTickCount","getMultiplierFactor","factorDelta","calculateTickInterval","multipliers","onlyIntegers","adjustInterval","factor","calculateMinorTickInterval","d","cur","getCalculateTickIntervalLog","__","getAdjustIntervalLog","getDataTimeMultipliers","numbersReducer","yearsReducer","calculateTickIntervalDateTime","adjustIntervalDateTime","calculateMinorTickIntervalDateTime","getTickIntervalByCustomTicks","postProcess","isNegative","addIntervalLog","raise","addIntervalDate","addIntervalWithBreaks","every","calculateTicks","correctMinValue","gaps","correctTickValue","correctTickValueOnGapSize","calculateMinorTicks","updateTickInterval","maxCount","lastMajor","firstMajor","tickBalance","middleTicks","prevTick","filterTicks","tmpTicks","generator","getMajorTickIntervalByCustomTicks","getMinorTickIntervalByCustomTicks","convertTickInterval","processScaleBreaks","processCustomTicks","correctUserTickInterval","limit","generateMajorTicks","generateMinorTicks","minorBusinessDelta","minorScreenDelta","getBaseTick","breakValue","insideTick","getScaleBreaksProcessor","addCorrection","breakTicks","numericGenerator","calculateTickIntervalByCustomTicks","correctValueByIntervalLog","getRound","logarithmicGenerator","absLog","absRaise","absFloor","absCeil","ceilNumber","dateGenerator","floorNumber","intervalObject","isString","getDateIntervalByString","divider","floorAtStartDate","getTime","getTimezoneOffset","setFullYear","getFullYear","setMonth","getMonth","setHours","getHours","setMinutes","getMinutes","setSeconds","getSeconds","directionOffset","categoryIndex","stickInterval","stickDelta","translateCategories","visibleCount","newVisibleCategories","newInterval","stickOffset","_base_axis","_base_axis2","HALF_PI_ANGLE","getPolarQuarter","quarter","normalizeAngle","polarAxes","circularAxes","circular","_this$_getViewportRan","getCenter","_center","_radius","getAngles","startAngle","endAngle","_updateRadius","rad","_updateCenter","circle","cx","cy","firstPointOnStartAngle","originValue","period","numeric","tickOuterLength","radius","_this$_center","labelBoxes","fromAngle","toAngle","innerRadius","outerRadius","arc","cosSin","halfRad","_this$getCenter","angles","_ref$shift","corrections","outside","radiusWithTicks","_offset","_maxWidth","labelY","labelAngle","halfWidth","halfHeight","shiftX","shiftY","boxShiftX","boxShiftY","originalLeft","originalRight","originalTop","originalBottom","convertPolarToXY","getTranslatedAngle","convertXYToPolar","maxLabelBox","angle1","angle2","lastVisibleLabelIndex","hideFirstOrLast","circularSpider","_spiderTicks","firstTick","lastTick","nextTick","spiderTicks","centerCoord","xy","labelPos","linearSpider","_getGridPointsByRadius","innerPoints","outerPoints","vizUtils","baseMethod","createStrip","storedCoord","lastStoredCoordinates","_getCoord","_drawLabel","stripPos","_typeof","_events_engine","_events_engine2","_interopRequireWildcard","_drag","_drag2","_getRequireWildcardCache","WeakMap","cache","get","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","hasOwnProperty","desc","set","MIN_SCROLL_BAR_SIZE","_scroll","_addEvents","_getXCoord","_getYCoord","scrollElement","fireEvent","target","dX","_scale","dY","lx","_layoutOptions","vertical","_applyPosition","isVertical","rotateX","rotateY","_translateWithOffset","_that$_scroll$attr","_that$_scroll$attr2","setPosition","typeUtils","isNumber","dateUtils","_intervalize","_parse","v1","v2","res","_to","rMin","rMax","origInterval","_format","EXPONENTIAL","nextDate","tickFormat","prevDifferences","nextDifferences","dateUnitsLength","tickFormatIndex","setDateUnitInterval","resetDateUnitInterval","isDateTimeStart","unitNumbers","getMilliseconds","getDate","unitIndex","differences","intervalIndex","getNoZeroIndex","str","getTransitionTickIndex","curDiff","nearestTickIndex","splitDecimalNumber","split","createFormat","tickIntervalIndex","tickIndex","actualIndex","typeFormat","separatedTickInterval","log10Tick","prevDateIndex","nextDateIndex","stringTick","indexOfFormat","indexOfTick","getAdjustedLog10","isExponential","getExponent","getDateFormatByTickInterval","getHighDiffFormat","stop","getHighAndSelfDiffFormat","formatDateRange","diffFormatType","diffFormat","values","rangeFormat","_rangeFormat","highValue","processDateInterval","isObject","dateUnits","dateUnit","formatOptions","_series_family","_series_family2","DEFAULT_AXIS_NAME","FONT","COMMON_AXIS_SETTINGS","prepareAxis","processBubbleMargin","opt","processBubbleSize","estimateBubbleSize","panesCount","setAxisVisualRangeByOption","isDirectOption","pathElements","fullName","destElem","getAxisTypes","groupsData","isArgumentAxes","argumentAxisType","_groupsData$groups$fi","groups","valueAxisType","BaseChart","_partialOptionChangesMap","_partialOptionChangesPath","_disposeCore","disposeObjectsInArray","_disposeObjectsInArray","_dispose","_disposeAxes","_cleanPanesClipRects","clipArrayName","clipShape","setCanvasValues","_reinitAxes","_populateAxes","crosshairOptions","crosshairEnabled","paneWithNonVirtualAxis","argumentAxesOptions","valueAxisOption","argumentAxesPopulatedOptions","valueAxesPopulatedOptions","axisNames","valueAxesCounter","getNextAxisName","virtual","_axisOptions$panes","axisPanes","unique","_redesignAxes","axesBasis","curAxes","axisTypes","_groupsData","reverseEach","basis","_disposeAxis","isVirtual","_appendAdditionalSeriesGroups","_getLegendTargets","_getLegendOptions","legendData","_legendItemTextField","_seriesPopulatedHandlerCore","_processValueAxisFormat","_renderTrackers","drawTrackers","_specialProcessSeries","_that$seriesFamilies","types","families","negativesAsZeros","familyOptions","seriesFamilies","_updateSeriesDimensions","_getLegendCallBack","getActionCallback","_gridGroup","_axesGroup","_populateMarginOptions","argumentMarginOptions","groupSeries","seriesMarginOptions","mergeMarginOptions","_populateBusinessRange","updatedAxis","keepRange","argRange","groupRange","getRangeData","_this2","_getGroupsData","valueOptions","argumentAxes","argumentOptions","_groupSeries","axesWithFullStackedFormat","isFullStackedSeries","preparedUserOptions","_prepareStripsAndConstantLines","_getValFilter","renderingSettings","_parseVisualRangeOption","_applyingChanges","_change_VISUAL_RANGE","_requestChange","refresh","_layoutAxes","drawAxes","_layout","backward","_rect","_createCanvasFromRect","match","_setCustomVisualRange","JSON","stringify","axesName","_notifyOptionChanged","previousValue","_optionChangedLocker","_notify","_getAxesByOptionPath","axisPath","sourceAxes","_optionChanged","getPartialChangeOptionsName","_doRender","force","drawTitle","_legendDataField","_adjustSeriesLabels","__test_utils","createAnnotations","_dom_adapter","_tooltip","_plaque","_pointer","_pointer2","EVENT_NS","DOT_EVENT_NS","POINTER_ACTION","addNamespace","down","POINTER_UP_EVENT_NAME","up","DRAG_EVENT_NAME","coreAnnotation","widget","annotationGroup","plaque","Plaque","_getAnnotationCoords","_dragOffsetX","_dragOffsetY","hitTest","showTooltip","setTemplate","getTemplateFunction","groupElement","outerWidth","outerHeight","imageWidth","imageHeight","getImageObject","pullOptions","commonImageOptions","currentImageOptions","customizedItem","templateFunction","_getTemplate","chartPlugin","members","_axis","_axis2","argCoordName","valCoordName","getPointCenterByArg","_axis3","_series2","checkSeriesViewportCoord","getSeriesPairCoord","_annotationsPointerEventHandler","touch","touches","_annotations","hideTooltip","clearHover","_hideToolTipForDrag","stopPropagation","_pullOptions","polarChartPlugin","pointCoords","_calcCanvas","getXYFromPolar","getActualAngle","polarOptions","corePlugin","Tooltip","_rootClassPrefix","widgetRoot","setRendererOptions","_getRendererOptions","tooltipOptions","_annotationsGroup","linkOff","getDocument","extenders","_createHtmlStructure","linkOn","_renderExtraElements","_this3","_stopCurrentHandling","_buildAnnotations","customize","addChange","code","handler","isOptionChange","_change","isThemeDependent","fontFields","polarChart","_wheel","_transform","_transform2","EVENTS_NS","PINCH_START_EVENT_NAME","pinchstart","PINCH_EVENT_NAME","pinch","PINCH_END_EVENT_NAME","pinchend","SCROLL_BAR_START_EVENT_NAME","SCROLL_BAR_MOVE_EVENT_NAME","SCROLL_BAR_END_EVENT_NAME","GESTURE_TIMEOUT","MIN_DRAG_DELTA","canvasToRect","sortAxes","onlyAxisToNotify","isNotEmptyAxisBusinessRange","cancelEvent","cancelable","startAxesViewportChanging","actionField","actionData","axesViewportChanging","offsetCalc","centerCalc","zoomAxes","criteria","coordField","zoomed","isMinZoom","pointerType","isMinPosition","isMaxPosition","zoomInEnabled","zoomOutEnabled","panningEnabled","deltaTranslate","storeOffset","storeCenter","argZoom","valZoom","fallback","finishAxesViewportChanging","zoomStarted","prepareActionData","_lastRenderingTime","curAxisRect","startCenter","calcCenterForPinch","calcCenterForDrag","calcOffsetForDrag","preventDefaults","preventDefault","isTouch","wantPan","pan","wantZoom","panKeyPressed","_cancelPreventDefault","cancelPanning","panningVisualRangeEnabled","skipEvent","startCoords","curCanvas","curCoords","zoomArg","zoomVal","deltaOffsetY","deltaOffsetX","panIsEmpty","isNative","argumentAxesZoomed","valueAxesZoomed","pinchStartHandler","pinchHandler","viewportChanged","defineTouchBehavior","pinchEndHandler","cleanup","setup","none","delta","targetAxes","axesZoomed","targetCanvas","canZoom","passive","isDefault","enablePanByValueAxis","enablePanByArgumentAxis","_zoomAndPan","_setupZoomAndPan","_floor","getValueAxesPerPanes","linearConverter","logConverter","convertAxisInfo","axisInfo","converter","logarithmicBase","tickValues","oldMinValue","oldMaxValue","populateAxesInfo","ticksValues","minorValues","updateTickValues","axesInfo","maxTicksCount","ticksMultiplier","ticksCount","additionalStartTicksCount","baseTickValue","invertedBaseTickValue","getAxisRange","getMainAxisInfo","correctMinMaxValues","mainAxisInfo","mainAxisInfoTickInterval","mainAxisBaseValueOffset","valueFromAxisInfo","calculatePaddings","correctMinMaxValuesByPaddings","paddings","info","updateTickValuesIfSynchronizedValueUsed","hasSynchronizedValue","pop","applyMinMaxValues","correctAfterSynchronize","invalidAxisInfo","correctedTick","updateMinorTicks","multiAxesSynchronizer","mathMin","mathMax","HORIZONTAL","VERTICAL","LABEL_BACKGROUND_PADDING_X","LABEL_BACKGROUND_PADDING_Y","getRectangleBBox","getLabelCheckerPosition","rectangleBBox","_crosshairGroup","_axes","_panes","_prepareOptions","_horizontalGroup","_verticalGroup","_horizontal","_vertical","_circle","lineOptions","_createLines","sharpParam","lines","verticalOptions","horizontalOptions","extraOptions","circleOptions","_createLabels","background","currentLabelPos","startXY","_updateText","textElement","backgroundElement","_updateLinesCanvas","_linesCanvas","_updateLines","_resetLinesCanvas","_getClipRectForPane","pointData","getCrosshairData","getPointRadius","yValue","xValue","getWeekendDays","workdays","workDay","getNextDayIndex","dayIndex","dayBetweenWeekend","getDaysDistance","separateBreak","scaleBreak","dayEnd","setDate","getWeekEndDayIndices","workDays","indices","generateDateBreaksForWeekend","weekendDayIndices","weekends","currentWeekEnd","currentDate","trimTime","getDay","excludeWorkDaysFromWeekEndBreaks","exactWorkDays","processWorkDay","workday","separatedBreak","generateBreaksForHolidays","dayInWeekend","adjustedMin","adjustedMax","holiday","holidayStart","holidayEnd","calculateGaps","createConstantLine","valueIsParsed","rootGroup","valueKey","horizontalInverted","verticalInverted","width1","width2","hasHorizontalOverlapping","hasVerticalOverlapping"],"mappings":"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","file":"js/display-data100~display-data108~display-data188~display-data210~display-data250~display-data260.0a0aec88.js","sourcesContent":["/**\r\n * DevExtreme (viz/chart.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _common = require(\"../core/utils/common\");\r\nvar _extend2 = require(\"../core/utils/extend\");\r\nvar _array = require(\"../core/utils/array\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _component_registrator = require(\"../core/component_registrator\");\r\nvar _component_registrator2 = _interopRequireDefault(_component_registrator);\r\nvar _utils = require(\"./core/utils\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _math = require(\"../core/utils/math\");\r\nvar _base_chart = require(\"./chart_components/base_chart\");\r\nvar _multi_axes_synchronizer = require(\"./chart_components/multi_axes_synchronizer\");\r\nvar _multi_axes_synchronizer2 = _interopRequireDefault(_multi_axes_synchronizer);\r\nvar _advanced_chart = require(\"./chart_components/advanced_chart\");\r\nvar _scroll_bar = require(\"./chart_components/scroll_bar\");\r\nvar _scroll_bar2 = _interopRequireDefault(_scroll_bar);\r\nvar _crosshair = require(\"./chart_components/crosshair\");\r\nvar _crosshair2 = _interopRequireDefault(_crosshair);\r\nvar _range_data_calculator = require(\"./series/helpers/range_data_calculator\");\r\nvar _layout_manager = require(\"./chart_components/layout_manager\");\r\nvar _layout_manager2 = _interopRequireDefault(_layout_manager);\r\nvar _range = require(\"./translators/range\");\r\nvar _range2 = _interopRequireDefault(_range);\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DEFAULT_PANE_NAME = \"default\";\r\nvar VISUAL_RANGE = \"VISUAL_RANGE\";\r\nvar DEFAULT_PANES = [{\r\n name: DEFAULT_PANE_NAME,\r\n border: {}\r\n}];\r\nvar DISCRETE = \"discrete\";\r\nvar _isArray = Array.isArray;\r\n\r\nfunction getFirstAxisNameForPane(axes, paneName, defaultPane) {\r\n var result;\r\n for (var i = 0; i < axes.length; i++) {\r\n if (axes[i].pane === paneName || void 0 === axes[i].pane && paneName === defaultPane) {\r\n result = axes[i].name;\r\n break\r\n }\r\n }\r\n if (!result) {\r\n result = axes[0].name\r\n }\r\n return result\r\n}\r\n\r\nfunction changeVisibilityAxisGrids(axis, gridVisibility, minorGridVisibility) {\r\n var gridOpt = axis.getOptions().grid;\r\n var minorGridOpt = axis.getOptions().minorGrid;\r\n gridOpt.visible = gridVisibility;\r\n minorGridOpt && (minorGridOpt.visible = minorGridVisibility)\r\n}\r\n\r\nfunction hideGridsOnNonFirstValueAxisForPane(axesForPane) {\r\n var axisShown = false;\r\n var hiddenStubAxis = [];\r\n var minorGridVisibility = axesForPane.some(function(axis) {\r\n var minorGridOptions = axis.getOptions().minorGrid;\r\n return minorGridOptions && minorGridOptions.visible\r\n });\r\n var gridVisibility = axesForPane.some(function(axis) {\r\n var gridOptions = axis.getOptions().grid;\r\n return gridOptions && gridOptions.visible\r\n });\r\n if (axesForPane.length > 1) {\r\n axesForPane.forEach(function(axis) {\r\n var gridOpt = axis.getOptions().grid;\r\n if (axisShown) {\r\n changeVisibilityAxisGrids(axis, false, false)\r\n } else {\r\n if (gridOpt && gridOpt.visible) {\r\n if (axis.getTranslator().getBusinessRange().isEmpty()) {\r\n changeVisibilityAxisGrids(axis, false, false);\r\n hiddenStubAxis.push(axis)\r\n } else {\r\n axisShown = true;\r\n changeVisibilityAxisGrids(axis, gridVisibility, minorGridVisibility)\r\n }\r\n }\r\n }\r\n });\r\n !axisShown && hiddenStubAxis.length && changeVisibilityAxisGrids(hiddenStubAxis[0], gridVisibility, minorGridVisibility)\r\n }\r\n}\r\n\r\nfunction findAxisOptions(valueAxes, valueAxesOptions, axisName) {\r\n var result;\r\n var axInd;\r\n for (axInd = 0; axInd < valueAxesOptions.length; axInd++) {\r\n if (valueAxesOptions[axInd].name === axisName) {\r\n result = valueAxesOptions[axInd];\r\n result.priority = axInd;\r\n break\r\n }\r\n }\r\n if (!result) {\r\n for (axInd = 0; axInd < valueAxes.length; axInd++) {\r\n if (valueAxes[axInd].name === axisName) {\r\n result = valueAxes[axInd].getOptions();\r\n result.priority = valueAxes[axInd].priority;\r\n break\r\n }\r\n }\r\n }\r\n return result\r\n}\r\n\r\nfunction findAxis(paneName, axisName, axes) {\r\n var axis;\r\n var i;\r\n for (i = 0; i < axes.length; i++) {\r\n axis = axes[i];\r\n if (axis.name === axisName && axis.pane === paneName) {\r\n return axis\r\n }\r\n }\r\n if (paneName) {\r\n return findAxis(void 0, axisName, axes)\r\n }\r\n}\r\n\r\nfunction compareAxes(a, b) {\r\n return a.priority - b.priority\r\n}\r\n\r\nfunction doesPaneExist(panes, paneName) {\r\n var found = false;\r\n (0, _iterator.each)(panes, function(_, pane) {\r\n if (pane.name === paneName) {\r\n found = true;\r\n return false\r\n }\r\n });\r\n return found\r\n}\r\nvar prepareSegmentRectPoints = function(left, top, width, height, borderOptions) {\r\n var maxSW = ~~((width < height ? width : height) / 2);\r\n var sw = borderOptions.width || 0;\r\n var newSW = sw < maxSW ? sw : maxSW;\r\n left += newSW / 2;\r\n top += newSW / 2;\r\n width -= newSW;\r\n height -= newSW;\r\n var right = left + width;\r\n var bottom = top + height;\r\n var points = [];\r\n var segments = [];\r\n var segmentSequence;\r\n var visiblyOpt = 0;\r\n var prevSegmentVisibility = 0;\r\n var allSegment = {\r\n top: [\r\n [left, top],\r\n [right, top]\r\n ],\r\n right: [\r\n [right, top],\r\n [right, bottom]\r\n ],\r\n bottom: [\r\n [right, bottom],\r\n [left, bottom]\r\n ],\r\n left: [\r\n [left, bottom],\r\n [left, top]\r\n ]\r\n };\r\n (0, _iterator.each)(allSegment, function(seg) {\r\n var visibility = !!borderOptions[seg];\r\n visiblyOpt = 2 * visiblyOpt + ~~visibility\r\n });\r\n switch (visiblyOpt) {\r\n case 13:\r\n case 9:\r\n segmentSequence = [\"left\", \"top\", \"right\", \"bottom\"];\r\n break;\r\n case 11:\r\n segmentSequence = [\"bottom\", \"left\", \"top\", \"right\"];\r\n break;\r\n default:\r\n segmentSequence = [\"top\", \"right\", \"bottom\", \"left\"]\r\n }(0, _iterator.each)(segmentSequence, function(_, seg) {\r\n var segmentVisibility = !!borderOptions[seg];\r\n if (!prevSegmentVisibility && segments.length) {\r\n points.push(segments);\r\n segments = []\r\n }\r\n if (segmentVisibility) {\r\n (0, _iterator.each)(allSegment[seg].slice(prevSegmentVisibility), function(_, segment) {\r\n segments = segments.concat(segment)\r\n })\r\n }\r\n prevSegmentVisibility = ~~segmentVisibility\r\n });\r\n segments.length && points.push(segments);\r\n 1 === points.length && (points = points[0]);\r\n return {\r\n points: points,\r\n pathType: 15 === visiblyOpt ? \"area\" : \"line\"\r\n }\r\n};\r\n\r\nfunction accumulate(field, src1, src2, auxSpacing) {\r\n var val1 = src1[field] || 0;\r\n var val2 = src2[field] || 0;\r\n return val1 + val2 + (val1 && val2 ? auxSpacing : 0)\r\n}\r\n\r\nfunction pickMax(field, src1, src2) {\r\n return pickMaxValue(src1[field], src2[field])\r\n}\r\n\r\nfunction pickMaxValue(val1, val2) {\r\n return Math.max(val1 || 0, val2 || 0)\r\n}\r\n\r\nfunction getAxisMargins(axis) {\r\n return axis.getMargins()\r\n}\r\n\r\nfunction getHorizontalAxesMargins(axes, getMarginsFunc) {\r\n return axes.reduce(function(margins, axis) {\r\n var axisMargins = getMarginsFunc(axis);\r\n var paneMargins = margins.panes[axis.pane] = margins.panes[axis.pane] || {};\r\n var spacing = axis.getMultipleAxesSpacing();\r\n paneMargins.top = accumulate(\"top\", paneMargins, axisMargins, spacing);\r\n paneMargins.bottom = accumulate(\"bottom\", paneMargins, axisMargins, spacing);\r\n paneMargins.left = pickMax(\"left\", paneMargins, axisMargins);\r\n paneMargins.right = pickMax(\"right\", paneMargins, axisMargins);\r\n margins.top = pickMax(\"top\", paneMargins, margins);\r\n margins.bottom = pickMax(\"bottom\", paneMargins, margins);\r\n margins.left = pickMax(\"left\", paneMargins, margins);\r\n margins.right = pickMax(\"right\", paneMargins, margins);\r\n return margins\r\n }, {\r\n panes: {}\r\n })\r\n}\r\n\r\nfunction getVerticalAxesMargins(axes) {\r\n return axes.reduce(function(margins, axis) {\r\n var axisMargins = axis.getMargins();\r\n var paneMargins = margins.panes[axis.pane] = margins.panes[axis.pane] || {};\r\n var spacing = axis.getMultipleAxesSpacing();\r\n paneMargins.top = pickMax(\"top\", paneMargins, axisMargins);\r\n paneMargins.bottom = pickMax(\"bottom\", paneMargins, axisMargins);\r\n paneMargins.left = accumulate(\"left\", paneMargins, axisMargins, spacing);\r\n paneMargins.right = accumulate(\"right\", paneMargins, axisMargins, spacing);\r\n margins.top = pickMax(\"top\", paneMargins, margins);\r\n margins.bottom = pickMax(\"bottom\", paneMargins, margins);\r\n margins.left = pickMax(\"left\", paneMargins, margins);\r\n margins.right = pickMax(\"right\", paneMargins, margins);\r\n return margins\r\n }, {\r\n panes: {}\r\n })\r\n}\r\n\r\nfunction performActionOnAxes(axes, action, actionArgument1, actionArgument2, actionArgument3) {\r\n axes.forEach(function(axis) {\r\n axis[action](actionArgument1 && actionArgument1[axis.pane], actionArgument2 && actionArgument2[axis.pane] || actionArgument2, actionArgument3)\r\n })\r\n}\r\n\r\nfunction shrinkCanvases(isRotated, canvases, sizes, verticalMargins, horizontalMargins) {\r\n function getMargin(side, margins, pane) {\r\n var m = (isRotated ? [\"left\", \"right\"] : [\"top\", \"bottom\"]).indexOf(side) === -1 ? margins : margins.panes[pane] || {};\r\n return m[side]\r\n }\r\n\r\n function getMaxMargin(side, margins1, margins2, pane) {\r\n return pickMaxValue(getMargin(side, margins1, pane), getMargin(side, margins2, pane))\r\n }\r\n var getOriginalField = function(field) {\r\n return \"original\".concat(field[0].toUpperCase()).concat(field.slice(1))\r\n };\r\n\r\n function shrink(canvases, paneNames, sizeField, startMargin, endMargin, oppositeMargins) {\r\n paneNames = paneNames.sort(function(p1, p2) {\r\n return canvases[p2][startMargin] - canvases[p1][startMargin]\r\n });\r\n paneNames.forEach(function(pane) {\r\n var canvas = canvases[pane];\r\n oppositeMargins.forEach(function(margin) {\r\n canvas[margin] = canvas[getOriginalField(margin)] + getMaxMargin(margin, verticalMargins, horizontalMargins, pane)\r\n })\r\n });\r\n var firstPane = canvases[paneNames[0]];\r\n var emptySpace = paneNames.reduce(function(space, paneName) {\r\n space -= getMaxMargin(startMargin, verticalMargins, horizontalMargins, paneName) + getMaxMargin(endMargin, verticalMargins, horizontalMargins, paneName);\r\n return space\r\n }, firstPane[sizeField] - firstPane[getOriginalField(endMargin)] - canvases[paneNames[paneNames.length - 1]][getOriginalField(startMargin)]) - _utils.PANE_PADDING * (paneNames.length - 1);\r\n var totalCustomSpace = Object.keys(sizes).reduce(function(prev, key) {\r\n return prev + (sizes[key].unit ? sizes[key].height : 0)\r\n }, 0);\r\n emptySpace -= totalCustomSpace;\r\n paneNames.reduce(function(offset, pane) {\r\n var canvas = canvases[pane];\r\n var paneSize = sizes[pane];\r\n offset -= getMaxMargin(endMargin, verticalMargins, horizontalMargins, pane);\r\n canvas[endMargin] = firstPane[sizeField] - offset;\r\n offset -= paneSize.unit ? paneSize.height : Math.floor(emptySpace * paneSize.height);\r\n canvas[startMargin] = offset;\r\n offset -= getMaxMargin(startMargin, verticalMargins, horizontalMargins, pane) + _utils.PANE_PADDING;\r\n return offset\r\n }, firstPane[sizeField] - firstPane[getOriginalField(endMargin)] - (emptySpace < 0 ? emptySpace : 0))\r\n }\r\n var paneNames = Object.keys(canvases);\r\n if (!isRotated) {\r\n shrink(canvases, paneNames, \"height\", \"top\", \"bottom\", [\"left\", \"right\"])\r\n } else {\r\n shrink(canvases, paneNames, \"width\", \"left\", \"right\", [\"top\", \"bottom\"])\r\n }\r\n return canvases\r\n}\r\n\r\nfunction drawAxesWithTicks(axes, condition, canvases, panesBorderOptions) {\r\n if (condition) {\r\n performActionOnAxes(axes, \"createTicks\", canvases);\r\n _multi_axes_synchronizer2.default.synchronize(axes)\r\n }\r\n performActionOnAxes(axes, \"draw\", !condition && canvases, panesBorderOptions)\r\n}\r\n\r\nfunction shiftAxis(side1, side2) {\r\n var shifts = {};\r\n return function(axis) {\r\n if (!axis.customPositionIsAvailable() || axis.customPositionEqualsToPredefined()) {\r\n var shift = shifts[axis.pane] = shifts[axis.pane] || {\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n right: 0\r\n };\r\n var spacing = axis.getMultipleAxesSpacing();\r\n var margins = axis.getMargins();\r\n axis.shift(shift);\r\n shift[side1] = accumulate(side1, shift, margins, spacing);\r\n shift[side2] = accumulate(side2, shift, margins, spacing)\r\n } else {\r\n axis.shift({\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n right: 0\r\n })\r\n }\r\n }\r\n}\r\n\r\nfunction getCommonSize(side, margins) {\r\n var size = 0;\r\n var pane;\r\n var paneMargins;\r\n for (pane in margins.panes) {\r\n paneMargins = margins.panes[pane];\r\n size += \"height\" === side ? paneMargins.top + paneMargins.bottom : paneMargins.left + paneMargins.right\r\n }\r\n return size\r\n}\r\n\r\nfunction checkUsedSpace(sizeShortage, side, axes, getMarginFunc) {\r\n var size = 0;\r\n if (sizeShortage[side] > 0) {\r\n size = getCommonSize(side, getMarginFunc(axes, getAxisMargins));\r\n performActionOnAxes(axes, \"hideTitle\");\r\n sizeShortage[side] -= size - getCommonSize(side, getMarginFunc(axes, getAxisMargins))\r\n }\r\n if (sizeShortage[side] > 0) {\r\n performActionOnAxes(axes, \"hideOuterElements\")\r\n }\r\n}\r\n\r\nfunction axisAnimationEnabled(drawOptions, pointsToAnimation) {\r\n var pointsCount = pointsToAnimation.reduce(function(sum, count) {\r\n return sum + count\r\n }, 0) / pointsToAnimation.length;\r\n return drawOptions.animate && pointsCount <= drawOptions.animationPointsLimit\r\n}\r\n\r\nfunction collectMarkersInfoBySeries(allSeries, filteredSeries, argAxis) {\r\n var series = [];\r\n var overloadedSeries = {};\r\n var argVisualRange = argAxis.visualRange();\r\n var argTranslator = argAxis.getTranslator();\r\n var argViewPortFilter = (0, _range_data_calculator.getViewPortFilter)(argVisualRange || {});\r\n filteredSeries.forEach(function(s) {\r\n var valAxis = s.getValueAxis();\r\n var valVisualRange = valAxis.getCanvasRange();\r\n var valTranslator = valAxis.getTranslator();\r\n var seriesIndex = allSeries.indexOf(s);\r\n var valViewPortFilter = (0, _range_data_calculator.getViewPortFilter)(valVisualRange || {});\r\n overloadedSeries[seriesIndex] = {};\r\n filteredSeries.forEach(function(sr) {\r\n return overloadedSeries[seriesIndex][allSeries.indexOf(sr)] = 0\r\n });\r\n var seriesPoints = [];\r\n s.getPoints().filter(function(p) {\r\n return p.getOptions().visible && argViewPortFilter(p.argument) && (valViewPortFilter(p.getMinValue(true)) || valViewPortFilter(p.getMaxValue(true)))\r\n }).forEach(function(p) {\r\n var tp = {\r\n seriesIndex: seriesIndex,\r\n argument: p.argument,\r\n value: p.getMaxValue(true),\r\n size: p.bubbleSize || p.getOptions().size\r\n };\r\n if (p.getMinValue(true) !== p.getMaxValue(true)) {\r\n var mp = (0, _extend2.extend)({}, tp);\r\n mp.value = p.getMinValue(true);\r\n mp.x = argTranslator.to(mp.argument, 1);\r\n mp.y = valTranslator.to(mp.value, 1);\r\n seriesPoints.push(mp)\r\n }\r\n tp.x = argTranslator.to(tp.argument, 1);\r\n tp.y = valTranslator.to(tp.value, 1);\r\n seriesPoints.push(tp)\r\n });\r\n overloadedSeries[seriesIndex].pointsCount = seriesPoints.length;\r\n overloadedSeries[seriesIndex].total = 0;\r\n overloadedSeries[seriesIndex].continuousSeries = 0;\r\n series.push({\r\n name: s.name,\r\n index: seriesIndex,\r\n points: seriesPoints\r\n })\r\n });\r\n return {\r\n series: series,\r\n overloadedSeries: overloadedSeries\r\n }\r\n}\r\n\r\nfunction applyAutoHidePointMarkers(allSeries, filteredSeries, overloadedSeries, argAxis) {\r\n var argAxisType = argAxis.getOptions().type;\r\n filteredSeries.forEach(function(s) {\r\n var seriesIndex = allSeries.indexOf(s);\r\n s.autoHidePointMarkers = false;\r\n var tickCount = argAxis.getTicksValues().majorTicksValues.length;\r\n if (s.autoHidePointMarkersEnabled() && (argAxisType === DISCRETE || overloadedSeries[seriesIndex].pointsCount > tickCount)) {\r\n for (var index in overloadedSeries[seriesIndex]) {\r\n var i = parseInt(index);\r\n if (isNaN(i) || overloadedSeries[seriesIndex].total / overloadedSeries[seriesIndex].continuousSeries < 3) {\r\n continue\r\n }\r\n if (i === seriesIndex) {\r\n if (2 * overloadedSeries[i][i] >= overloadedSeries[i].pointsCount) {\r\n s.autoHidePointMarkers = true;\r\n break\r\n }\r\n } else {\r\n if (overloadedSeries[seriesIndex].total >= overloadedSeries[seriesIndex].pointsCount) {\r\n s.autoHidePointMarkers = true;\r\n break\r\n }\r\n }\r\n }\r\n }\r\n })\r\n}\r\n\r\nfunction fastHidingPointMarkersByArea(canvas, markersInfo, series) {\r\n var area = canvas.width * canvas.height;\r\n var seriesPoints = markersInfo.series;\r\n var _loop = function(i) {\r\n var currentSeries = series.filter(function(s) {\r\n return s.name === seriesPoints[i].name\r\n })[0];\r\n var points = seriesPoints[i].points;\r\n var pointSize = points.length ? points[0].size : 0;\r\n var pointsArea = pointSize * pointSize * points.length;\r\n if (pointsArea >= area / seriesPoints.length) {\r\n var index = seriesPoints[i].index;\r\n currentSeries.autoHidePointMarkers = true;\r\n seriesPoints.splice(i, 1);\r\n series.splice(series.indexOf(currentSeries), 1);\r\n delete markersInfo.overloadedSeries[index]\r\n }\r\n };\r\n for (var i = seriesPoints.length - 1; i >= 0; i--) {\r\n _loop(i)\r\n }\r\n}\r\n\r\nfunction updateMarkersInfo(points, overloadedSeries) {\r\n var isContinuousSeries = false;\r\n for (var i = 0; i < points.length - 1; i++) {\r\n var curPoint = points[i];\r\n var size = curPoint.size;\r\n if ((0, _type.isDefined)(curPoint.x) && (0, _type.isDefined)(curPoint.y)) {\r\n for (var j = i + 1; j < points.length; j++) {\r\n var nextPoint = points[j];\r\n var next_x = null === nextPoint || void 0 === nextPoint ? void 0 : nextPoint.x;\r\n var next_y = null === nextPoint || void 0 === nextPoint ? void 0 : nextPoint.y;\r\n if (!(0, _type.isDefined)(next_x) || Math.abs(curPoint.x - next_x) >= size) {\r\n isContinuousSeries &= j !== i + 1;\r\n break\r\n } else {\r\n var distance = (0, _type.isDefined)(next_x) && (0, _type.isDefined)(next_y) && Math.sqrt(Math.pow(curPoint.x - next_x, 2) + Math.pow(curPoint.y - next_y, 2));\r\n if (distance && distance < size) {\r\n overloadedSeries[curPoint.seriesIndex][nextPoint.seriesIndex]++;\r\n overloadedSeries[curPoint.seriesIndex].total++;\r\n if (!isContinuousSeries) {\r\n overloadedSeries[curPoint.seriesIndex].continuousSeries++;\r\n isContinuousSeries = true\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\nvar dxChart = _advanced_chart.AdvancedChart.inherit({\r\n _themeSection: \"chart\",\r\n _fontFields: [\"crosshair.label.font\"],\r\n _setDeprecatedOptions: function() {\r\n this.callBase.apply(this, arguments);\r\n (0, _extend2.extend)(this._deprecatedOptions, {\r\n useAggregation: {\r\n since: \"18.1\",\r\n message: \"Use the 'commonSeriesSettings.aggregation.enabled' or 'series.aggregation.enabled' option instead\"\r\n },\r\n \"argumentAxis.min\": {\r\n since: \"18.2\",\r\n message: \"Use the 'argumentAxis.visualRange' option instead\"\r\n },\r\n \"argumentAxis.max\": {\r\n since: \"18.2\",\r\n message: \"Use the 'argumentAxis.visualRange' option instead\"\r\n },\r\n \"valueAxis.min\": {\r\n since: \"18.2\",\r\n message: \"Use the 'valueAxis.visualRange' option instead\"\r\n },\r\n \"valueAxis.max\": {\r\n since: \"18.2\",\r\n message: \"Use the 'valueAxis.visualRange' option instead\"\r\n },\r\n zoomingMode: {\r\n since: \"18.2\",\r\n message: \"Use the 'zoomAndPan' option instead\"\r\n },\r\n scrollingMode: {\r\n since: \"18.2\",\r\n message: \"Use the 'zoomAndPan' option instead\"\r\n }\r\n })\r\n },\r\n _initCore: function() {\r\n this.paneAxis = {};\r\n this.callBase()\r\n },\r\n _correctAxes: function() {\r\n this._correctValueAxes(true)\r\n },\r\n _getExtraOptions: _common.noop,\r\n _createPanes: function() {\r\n var that = this;\r\n var panes = that.option(\"panes\");\r\n var panesNameCounter = 0;\r\n var defaultPane;\r\n if (!panes || _isArray(panes) && !panes.length) {\r\n panes = DEFAULT_PANES\r\n }\r\n that.callBase();\r\n defaultPane = that.option(\"defaultPane\");\r\n panes = (0, _extend2.extend)(true, [], _isArray(panes) ? panes : [panes]);\r\n (0, _iterator.each)(panes, function(_, pane) {\r\n pane.name = !(0, _type.isDefined)(pane.name) ? DEFAULT_PANE_NAME + panesNameCounter++ : pane.name\r\n });\r\n if ((0, _type.isDefined)(defaultPane)) {\r\n if (!doesPaneExist(panes, defaultPane)) {\r\n that._incidentOccurred(\"W2101\", [defaultPane]);\r\n defaultPane = panes[panes.length - 1].name\r\n }\r\n } else {\r\n defaultPane = panes[panes.length - 1].name\r\n }\r\n that.defaultPane = defaultPane;\r\n panes = that._isRotated() ? panes.reverse() : panes;\r\n return panes\r\n },\r\n _getAxisRenderingOptions: function() {\r\n return {\r\n axisType: \"xyAxes\",\r\n drawingType: \"linear\"\r\n }\r\n },\r\n _prepareAxisOptions: function(typeSelector, userOptions, rotated) {\r\n return {\r\n isHorizontal: \"argumentAxis\" === typeSelector !== rotated,\r\n containerColor: this._themeManager.getOptions(\"containerBackgroundColor\")\r\n }\r\n },\r\n _checkPaneName: function(seriesTheme) {\r\n var paneList = (0, _utils.map)(this.panes, function(pane) {\r\n return pane.name\r\n });\r\n seriesTheme.pane = seriesTheme.pane || this.defaultPane;\r\n return (0, _array.inArray)(seriesTheme.pane, paneList) !== -1\r\n },\r\n _initCustomPositioningAxes: function() {\r\n var that = this;\r\n var argumentAxis = that.getArgumentAxis();\r\n var valueAxisName = argumentAxis.getOptions().customPositionAxis;\r\n var valueAxis = that._valueAxes.filter(function(v) {\r\n return v.pane === argumentAxis.pane && (!valueAxisName || valueAxisName === v.name)\r\n })[0];\r\n that._valueAxes.forEach(function(v) {\r\n if (argumentAxis !== v.getOrthogonalAxis()) {\r\n v.getOrthogonalAxis = function() {\r\n return argumentAxis\r\n };\r\n v.customPositionIsBoundaryOrthogonalAxis = function() {\r\n return argumentAxis.customPositionIsBoundary()\r\n }\r\n }\r\n });\r\n if ((0, _type.isDefined)(valueAxis) && valueAxis !== argumentAxis.getOrthogonalAxis()) {\r\n argumentAxis.getOrthogonalAxis = function() {\r\n return valueAxis\r\n };\r\n argumentAxis.customPositionIsBoundaryOrthogonalAxis = function() {\r\n return that._valueAxes.some(function(v) {\r\n return v.customPositionIsBoundary()\r\n })\r\n }\r\n } else {\r\n if ((0, _type.isDefined)(argumentAxis.getOrthogonalAxis()) && !(0, _type.isDefined)(valueAxis)) {\r\n argumentAxis.getOrthogonalAxis = _common.noop\r\n }\r\n }\r\n },\r\n _resetAxesAnimation: function(isFirstDrawing) {\r\n this._argumentAxes.concat(this._valueAxes).forEach(function(a) {\r\n a.resetApplyingAnimation(isFirstDrawing)\r\n })\r\n },\r\n _axesBoundaryPositioning: function() {\r\n var that = this;\r\n var allAxes = that._argumentAxes.concat(that._valueAxes);\r\n var boundaryStateChanged = false;\r\n allAxes.forEach(function(a) {\r\n if (!a.customPositionIsAvailable()) {\r\n return false\r\n }\r\n var prevBoundaryState = a.customPositionIsBoundary();\r\n a._customBoundaryPosition = a.getCustomBoundaryPosition();\r\n boundaryStateChanged |= prevBoundaryState !== a.customPositionIsBoundary()\r\n });\r\n return boundaryStateChanged\r\n },\r\n _getValueAxis: function(paneName, axisName) {\r\n var that = this;\r\n var valueAxes = that._valueAxes;\r\n var valueAxisOptions = that.option(\"valueAxis\") || {};\r\n var valueAxesOptions = _isArray(valueAxisOptions) ? valueAxisOptions : [valueAxisOptions];\r\n var rotated = that._isRotated();\r\n var crosshairMargins = that._getCrosshairMargins();\r\n var axisOptions;\r\n var axis;\r\n axisName = axisName || getFirstAxisNameForPane(valueAxes, paneName, that.defaultPane);\r\n axis = findAxis(paneName, axisName, valueAxes);\r\n if (!axis) {\r\n axisOptions = findAxisOptions(valueAxes, valueAxesOptions, axisName);\r\n if (!axisOptions) {\r\n that._incidentOccurred(\"W2102\", [axisName]);\r\n axisOptions = {\r\n name: axisName,\r\n priority: valueAxes.length\r\n }\r\n }\r\n axis = that._createAxis(false, that._populateAxesOptions(\"valueAxis\", axisOptions, {\r\n pane: paneName,\r\n name: axisName,\r\n optionPath: _isArray(valueAxisOptions) ? \"valueAxis[\".concat(axisOptions.priority, \"]\") : \"valueAxis\",\r\n crosshairMargin: rotated ? crosshairMargins.y : crosshairMargins.x\r\n }, rotated));\r\n axis.applyVisualRangeSetter(that._getVisualRangeSetter());\r\n valueAxes.push(axis)\r\n }\r\n axis.setPane(paneName);\r\n return axis\r\n },\r\n _correctValueAxes: function(needHideGrids) {\r\n var that = this;\r\n var synchronizeMultiAxes = that._themeManager.getOptions(\"synchronizeMultiAxes\");\r\n var valueAxes = that._valueAxes;\r\n var paneWithAxis = {};\r\n that.series.forEach(function(series) {\r\n var axis = series.getValueAxis();\r\n paneWithAxis[axis.pane] = true\r\n });\r\n that.panes.forEach(function(pane) {\r\n var paneName = pane.name;\r\n if (!paneWithAxis[paneName]) {\r\n that._getValueAxis(paneName)\r\n }\r\n if (needHideGrids && synchronizeMultiAxes) {\r\n hideGridsOnNonFirstValueAxisForPane(valueAxes.filter(function(axis) {\r\n return axis.pane === paneName\r\n }))\r\n }\r\n });\r\n that._valueAxes = valueAxes.filter(function(axis) {\r\n if (!axis.pane) {\r\n axis.setPane(that.defaultPane)\r\n }\r\n return doesPaneExist(that.panes, axis.pane)\r\n }).sort(compareAxes);\r\n var defaultAxis = this.getValueAxis();\r\n that._valueAxes.forEach(function(axis) {\r\n var optionPath = axis.getOptions().optionPath;\r\n if (optionPath) {\r\n var axesWithSamePath = that._valueAxes.filter(function(a) {\r\n return a.getOptions().optionPath === optionPath\r\n });\r\n if (axesWithSamePath.length > 1) {\r\n if (axesWithSamePath.some(function(a) {\r\n return a === defaultAxis\r\n })) {\r\n axesWithSamePath.forEach(function(a) {\r\n if (a !== defaultAxis) {\r\n a.getOptions().optionPath = null\r\n }\r\n })\r\n } else {\r\n axesWithSamePath.forEach(function(a, i) {\r\n if (0 !== i) {\r\n a.getOptions().optionPath = null\r\n }\r\n })\r\n }\r\n }\r\n }\r\n })\r\n },\r\n _getSeriesForPane: function(paneName) {\r\n var paneSeries = [];\r\n (0, _iterator.each)(this.series, function(_, oneSeries) {\r\n if (oneSeries.pane === paneName) {\r\n paneSeries.push(oneSeries)\r\n }\r\n });\r\n return paneSeries\r\n },\r\n _createPanesBorderOptions: function() {\r\n var commonBorderOptions = this._themeManager.getOptions(\"commonPaneSettings\").border;\r\n var panesBorderOptions = {};\r\n this.panes.forEach(function(pane) {\r\n return panesBorderOptions[pane.name] = (0, _extend2.extend)(true, {}, commonBorderOptions, pane.border)\r\n });\r\n return panesBorderOptions\r\n },\r\n _createScrollBar: function() {\r\n var that = this;\r\n var scrollBarOptions = that._themeManager.getOptions(\"scrollBar\") || {};\r\n var scrollBarGroup = that._scrollBarGroup;\r\n if (scrollBarOptions.visible) {\r\n scrollBarOptions.rotated = that._isRotated();\r\n that._scrollBar = (that._scrollBar || new _scroll_bar2.default.ScrollBar(that._renderer, scrollBarGroup)).update(scrollBarOptions)\r\n } else {\r\n scrollBarGroup.linkRemove();\r\n that._scrollBar && that._scrollBar.dispose();\r\n that._scrollBar = null\r\n }\r\n },\r\n _prepareToRender: function(drawOptions) {\r\n var panesBorderOptions = this._createPanesBorderOptions();\r\n this._createPanesBackground();\r\n this._appendAxesGroups();\r\n this._adjustViewport();\r\n return panesBorderOptions\r\n },\r\n _adjustViewport: function() {\r\n var that = this;\r\n var series = that._getVisibleSeries();\r\n var argumentAxis = that.getArgumentAxis();\r\n var useAggregation = series.some(function(s) {\r\n return s.useAggregation()\r\n });\r\n var adjustOnZoom = that._themeManager.getOptions(\"adjustOnZoom\");\r\n var alignToBounds = !argumentAxis.dataVisualRangeIsReduced();\r\n if (!useAggregation && !adjustOnZoom) {\r\n return\r\n }\r\n that._valueAxes.forEach(function(axis) {\r\n return axis.adjust(alignToBounds)\r\n })\r\n },\r\n _recreateSizeDependentObjects: function(isCanvasChanged) {\r\n var that = this;\r\n var series = that._getVisibleSeries();\r\n var useAggregation = series.some(function(s) {\r\n return s.useAggregation()\r\n });\r\n var zoomChanged = that._isZooming();\r\n if (!useAggregation) {\r\n return\r\n }\r\n that._argumentAxes.forEach(function(axis) {\r\n axis.updateCanvas(that._canvas, true)\r\n });\r\n series.forEach(function(series) {\r\n if (series.useAggregation() && (isCanvasChanged || zoomChanged || !series._useAllAggregatedPoints)) {\r\n series.createPoints()\r\n }\r\n });\r\n that._processSeriesFamilies()\r\n },\r\n _isZooming: function() {\r\n var that = this;\r\n var argumentAxis = that.getArgumentAxis();\r\n if (!argumentAxis || !argumentAxis.getTranslator()) {\r\n return false\r\n }\r\n var businessRange = argumentAxis.getTranslator().getBusinessRange();\r\n var zoomRange = argumentAxis.getViewport();\r\n var min = zoomRange ? zoomRange.min : 0;\r\n var max = zoomRange ? zoomRange.max : 0;\r\n if (\"logarithmic\" === businessRange.axisType) {\r\n min = (0, _utils.getLog)(min, businessRange.base);\r\n max = (0, _utils.getLog)(max, businessRange.base)\r\n }\r\n var viewportDistance = businessRange.axisType === DISCRETE ? (0, _utils.getCategoriesInfo)(businessRange.categories, min, max).categories.length : Math.abs(max - min);\r\n var precision = (0, _math.getPrecision)(viewportDistance);\r\n precision = precision > 1 ? Math.pow(10, precision - 2) : 1;\r\n var zoomChanged = Math.round((that._zoomLength - viewportDistance) * precision) / precision !== 0;\r\n that._zoomLength = viewportDistance;\r\n return zoomChanged\r\n },\r\n _handleSeriesDataUpdated: function() {\r\n var that = this;\r\n var viewport = new _range2.default.Range;\r\n that.series.forEach(function(s) {\r\n viewport.addRange(s.getArgumentRange())\r\n });\r\n that._argumentAxes.forEach(function(axis) {\r\n axis.updateCanvas(that._canvas, true);\r\n axis.setBusinessRange(viewport, that._axesReinitialized)\r\n });\r\n that.callBase()\r\n },\r\n _isLegendInside: function() {\r\n return this._legend && \"inside\" === this._legend.getPosition()\r\n },\r\n _isRotated: function() {\r\n return this._themeManager.getOptions(\"rotated\")\r\n },\r\n _getLayoutTargets: function() {\r\n return this.panes\r\n },\r\n _applyClipRects: function(panesBorderOptions) {\r\n var that = this;\r\n that._drawPanesBorders(panesBorderOptions);\r\n that._createClipRectsForPanes();\r\n that._applyClipRectsForAxes();\r\n that._fillPanesBackground()\r\n },\r\n _updateLegendPosition: function(drawOptions, legendHasInsidePosition) {\r\n var that = this;\r\n if (drawOptions.drawLegend && that._legend && legendHasInsidePosition) {\r\n var panes = that.panes;\r\n var newCanvas = (0, _extend2.extend)({}, panes[0].canvas);\r\n var layoutManager = new _layout_manager2.default.LayoutManager;\r\n newCanvas.right = panes[panes.length - 1].canvas.right;\r\n newCanvas.bottom = panes[panes.length - 1].canvas.bottom;\r\n layoutManager.layoutInsideLegend(that._legend, newCanvas)\r\n }\r\n },\r\n _allowLegendInsidePosition: function() {\r\n return true\r\n },\r\n _applyExtraSettings: function(series) {\r\n var that = this;\r\n var paneIndex = that._getPaneIndex(series.pane);\r\n var panesClipRects = that._panesClipRects;\r\n var wideClipRect = panesClipRects.wide[paneIndex];\r\n series.setClippingParams(panesClipRects.base[paneIndex].id, wideClipRect && wideClipRect.id, that._getPaneBorderVisibility(paneIndex))\r\n },\r\n _updatePanesCanvases: function(drawOptions) {\r\n if (!drawOptions.recreateCanvas) {\r\n return\r\n }(0, _utils.updatePanesCanvases)(this.panes, this._canvas, this._isRotated())\r\n },\r\n _normalizePanesHeight: function() {\r\n (0, _utils.normalizePanesHeight)(this.panes)\r\n },\r\n _renderScaleBreaks: function() {\r\n this._valueAxes.concat(this._argumentAxes).forEach(function(axis) {\r\n axis.drawScaleBreaks()\r\n })\r\n },\r\n _getArgFilter: function() {\r\n return (0, _range_data_calculator.getViewPortFilter)(this.getArgumentAxis().visualRange() || {})\r\n },\r\n _applyPointMarkersAutoHiding: function() {\r\n var that = this;\r\n var allSeries = that.series;\r\n if (!that._themeManager.getOptions(\"autoHidePointMarkers\")) {\r\n allSeries.forEach(function(s) {\r\n return s.autoHidePointMarkers = false\r\n });\r\n return\r\n }\r\n that.panes.forEach(function(_ref) {\r\n var borderCoords = _ref.borderCoords,\r\n name = _ref.name;\r\n var series = allSeries.filter(function(s) {\r\n return s.pane === name && s.usePointsToDefineAutoHiding()\r\n });\r\n var argAxis = that.getArgumentAxis();\r\n var markersInfo = collectMarkersInfoBySeries(allSeries, series, argAxis);\r\n fastHidingPointMarkersByArea(borderCoords, markersInfo, series);\r\n if (markersInfo.series.length) {\r\n var argVisualRange = argAxis.visualRange();\r\n var argAxisIsDiscrete = argAxis.getOptions().type === DISCRETE;\r\n var sortingCallback = argAxisIsDiscrete ? function(p1, p2) {\r\n return argVisualRange.categories.indexOf(p1.argument) - argVisualRange.categories.indexOf(p2.argument)\r\n } : function(p1, p2) {\r\n return p1.argument - p2.argument\r\n };\r\n var points = [];\r\n markersInfo.series.forEach(function(s) {\r\n return points = points.concat(s.points)\r\n });\r\n points.sort(sortingCallback);\r\n updateMarkersInfo(points, markersInfo.overloadedSeries);\r\n applyAutoHidePointMarkers(allSeries, series, markersInfo.overloadedSeries, argAxis)\r\n }\r\n })\r\n },\r\n _renderAxes: function(drawOptions, panesBorderOptions) {\r\n function calculateTitlesWidth(axes) {\r\n return axes.map(function(axis) {\r\n if (!axis.getTitle) {\r\n return 0\r\n }\r\n var title = axis.getTitle();\r\n return title ? title.bBox.width : 0\r\n })\r\n }\r\n var that = this;\r\n var rotated = that._isRotated();\r\n var synchronizeMultiAxes = that._themeManager.getOptions(\"synchronizeMultiAxes\");\r\n var scrollBar = that._scrollBar ? [that._scrollBar] : [];\r\n var extendedArgAxes = that._isArgumentAxisBeforeScrollBar() ? that._argumentAxes.concat(scrollBar) : scrollBar.concat(that._argumentAxes);\r\n var verticalAxes = rotated ? that._argumentAxes : that._valueAxes;\r\n var verticalElements = rotated ? extendedArgAxes : that._valueAxes;\r\n var horizontalAxes = rotated ? that._valueAxes : that._argumentAxes;\r\n var horizontalElements = rotated ? that._valueAxes : extendedArgAxes;\r\n var allAxes = verticalAxes.concat(horizontalAxes);\r\n var allElements = allAxes.concat(scrollBar);\r\n that._normalizePanesHeight();\r\n that._updatePanesCanvases(drawOptions);\r\n var panesCanvases = that.panes.reduce(function(canvases, pane) {\r\n canvases[pane.name] = (0, _extend2.extend)({}, pane.canvas);\r\n return canvases\r\n }, {});\r\n var paneSizes = that.panes.reduce(function(sizes, pane) {\r\n sizes[pane.name] = {\r\n height: pane.height,\r\n unit: pane.unit\r\n };\r\n return sizes\r\n }, {});\r\n var cleanPanesCanvases = (0, _extend2.extend)(true, {}, panesCanvases);\r\n that._initCustomPositioningAxes();\r\n var needCustomAdjustAxes = that._axesBoundaryPositioning();\r\n if (!drawOptions.adjustAxes && !needCustomAdjustAxes) {\r\n drawAxesWithTicks(verticalAxes, !rotated && synchronizeMultiAxes, panesCanvases, panesBorderOptions);\r\n drawAxesWithTicks(horizontalAxes, rotated && synchronizeMultiAxes, panesCanvases, panesBorderOptions);\r\n performActionOnAxes(allAxes, \"prepareAnimation\");\r\n that._renderScaleBreaks();\r\n horizontalAxes.forEach(function(a) {\r\n return a.resolveOverlappingForCustomPositioning(verticalAxes)\r\n });\r\n verticalAxes.forEach(function(a) {\r\n return a.resolveOverlappingForCustomPositioning(horizontalAxes)\r\n });\r\n return false\r\n }\r\n if (needCustomAdjustAxes) {\r\n allAxes.forEach(function(a) {\r\n return a.customPositionIsAvailable() && a.shift({\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n right: 0\r\n })\r\n })\r\n }\r\n if (that._scrollBar) {\r\n that._scrollBar.setPane(that.panes)\r\n }\r\n var vAxesMargins = {\r\n panes: {}\r\n };\r\n var hAxesMargins = getHorizontalAxesMargins(horizontalElements, function(axis) {\r\n return axis.estimateMargins(panesCanvases[axis.pane])\r\n });\r\n panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, vAxesMargins, hAxesMargins);\r\n var drawAxesAndSetCanvases = function(isHorizontal) {\r\n var axes = isHorizontal ? horizontalAxes : verticalAxes;\r\n var condition = (isHorizontal ? rotated : !rotated) && synchronizeMultiAxes;\r\n drawAxesWithTicks(axes, condition, panesCanvases, panesBorderOptions);\r\n if (isHorizontal) {\r\n hAxesMargins = getHorizontalAxesMargins(horizontalElements, getAxisMargins)\r\n } else {\r\n vAxesMargins = getVerticalAxesMargins(verticalElements)\r\n }\r\n panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, vAxesMargins, hAxesMargins)\r\n };\r\n drawAxesAndSetCanvases(false);\r\n drawAxesAndSetCanvases(true);\r\n if (that._estimateTickIntervals(verticalAxes, panesCanvases)) {\r\n drawAxesAndSetCanvases(false)\r\n }\r\n var oldTitlesWidth = calculateTitlesWidth(verticalAxes);\r\n var visibleSeries = that._getVisibleSeries();\r\n var pointsToAnimation = that._getPointsToAnimation(visibleSeries);\r\n performActionOnAxes(allElements, \"updateSize\", panesCanvases, axisAnimationEnabled(drawOptions, pointsToAnimation));\r\n horizontalElements.forEach(shiftAxis(\"top\", \"bottom\"));\r\n verticalElements.forEach(shiftAxis(\"left\", \"right\"));\r\n that._renderScaleBreaks();\r\n that.panes.forEach(function(pane) {\r\n (0, _extend2.extend)(pane.canvas, panesCanvases[pane.name])\r\n });\r\n that._valueAxes.forEach(function(axis) {\r\n axis.setInitRange()\r\n });\r\n verticalAxes.forEach(function(axis, i) {\r\n if (axis.hasWrap && axis.hasWrap()) {\r\n var title = axis.getTitle();\r\n var newTitleWidth = title ? title.bBox.width : 0;\r\n var offset = newTitleWidth - oldTitlesWidth[i];\r\n if (\"right\" === axis.getOptions().position) {\r\n vAxesMargins.right += offset\r\n } else {\r\n vAxesMargins.left += offset;\r\n that.panes.forEach(function(_ref2) {\r\n var name = _ref2.name;\r\n return vAxesMargins.panes[name].left += offset\r\n })\r\n }\r\n panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, vAxesMargins, hAxesMargins);\r\n performActionOnAxes(allElements, \"updateSize\", panesCanvases, false, false);\r\n oldTitlesWidth = calculateTitlesWidth(verticalAxes)\r\n }\r\n });\r\n if (verticalAxes.some(function(v) {\r\n return v.customPositionIsAvailable() && v.getCustomPosition() !== v._axisPosition\r\n })) {\r\n performActionOnAxes(verticalAxes, \"updateSize\", panesCanvases, false)\r\n }\r\n horizontalAxes.forEach(function(a) {\r\n return a.resolveOverlappingForCustomPositioning(verticalAxes)\r\n });\r\n verticalAxes.forEach(function(a) {\r\n return a.resolveOverlappingForCustomPositioning(horizontalAxes)\r\n });\r\n return cleanPanesCanvases\r\n },\r\n _estimateTickIntervals: function(axes, canvases) {\r\n return axes.some(function(axis) {\r\n return axis.estimateTickInterval(canvases[axis.pane])\r\n })\r\n },\r\n checkForMoreSpaceForPanesCanvas: function() {\r\n var that = this;\r\n var rotated = that._isRotated();\r\n var panesAreCustomSized = that.panes.filter(function(p) {\r\n return p.unit\r\n }).length === that.panes.length;\r\n var needSpace = false;\r\n if (panesAreCustomSized) {\r\n var needHorizontalSpace = 0;\r\n var needVerticalSpace = 0;\r\n if (rotated) {\r\n var argAxisRightMargin = that.getArgumentAxis().getMargins().right;\r\n var rightPanesIndent = Math.min.apply(Math, that.panes.map(function(p) {\r\n return p.canvas.right\r\n }));\r\n needHorizontalSpace = that._canvas.right + argAxisRightMargin - rightPanesIndent;\r\n } else {\r\n var argAxisBottomMargin = that.getArgumentAxis().getMargins().bottom;\r\n var bottomPanesIndent = Math.min.apply(Math, that.panes.map(function(p) {\r\n return p.canvas.bottom\r\n }));\r\n needVerticalSpace = that._canvas.bottom + argAxisBottomMargin - bottomPanesIndent\r\n }\r\n needSpace = needHorizontalSpace > 0 || needVerticalSpace > 0 ? {\r\n width: needHorizontalSpace,\r\n height: needVerticalSpace\r\n } : false;\r\n if (0 !== needVerticalSpace) {\r\n var realSize = that.getSize();\r\n var customSize = that.option(\"size\");\r\n var container = that._$element[0];\r\n var containerHasStyledHeight = !!container.style.height || (0, _utils.checkElementHasPropertyFromStyleSheet)(container, \"height\");\r\n if (!rotated && !(customSize && customSize.height) && !containerHasStyledHeight) {\r\n that._forceResize(realSize.width, realSize.height + needVerticalSpace);\r\n needSpace = false\r\n }\r\n }\r\n } else {\r\n needSpace = that.layoutManager.needMoreSpaceForPanesCanvas(that._getLayoutTargets(), rotated, function(pane) {\r\n return {\r\n width: rotated && !!pane.unit,\r\n height: !rotated && !!pane.unit\r\n }\r\n })\r\n }\r\n return needSpace\r\n },\r\n _forceResize: function(width, height) {\r\n this._renderer.resize(width, height);\r\n this._updateSize();\r\n this._setContentSize();\r\n this._preserveOriginalCanvas();\r\n this._updateCanvasClipRect(this._canvas)\r\n },\r\n _shrinkAxes: function(sizeShortage, panesCanvases) {\r\n if (!sizeShortage || !panesCanvases) {\r\n return\r\n }\r\n this._renderer.stopAllAnimations(true);\r\n var that = this;\r\n var rotated = that._isRotated();\r\n var scrollBar = that._scrollBar ? [that._scrollBar] : [];\r\n var extendedArgAxes = that._isArgumentAxisBeforeScrollBar() ? that._argumentAxes.concat(scrollBar) : scrollBar.concat(that._argumentAxes);\r\n var verticalAxes = rotated ? extendedArgAxes : that._valueAxes;\r\n var horizontalAxes = rotated ? that._valueAxes : extendedArgAxes;\r\n var allAxes = verticalAxes.concat(horizontalAxes);\r\n if (sizeShortage.width || sizeShortage.height) {\r\n checkUsedSpace(sizeShortage, \"height\", horizontalAxes, getHorizontalAxesMargins);\r\n checkUsedSpace(sizeShortage, \"width\", verticalAxes, getVerticalAxesMargins);\r\n performActionOnAxes(allAxes, \"updateSize\", panesCanvases);\r\n var paneSizes = that.panes.reduce(function(sizes, pane) {\r\n sizes[pane.name] = {\r\n height: pane.height,\r\n unit: pane.unit\r\n };\r\n return sizes\r\n }, {});\r\n panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, getVerticalAxesMargins(verticalAxes), getHorizontalAxesMargins(horizontalAxes, getAxisMargins));\r\n performActionOnAxes(allAxes, \"updateSize\", panesCanvases);\r\n horizontalAxes.forEach(shiftAxis(\"top\", \"bottom\"));\r\n verticalAxes.forEach(shiftAxis(\"left\", \"right\"));\r\n that.panes.forEach(function(pane) {\r\n return (0, _extend2.extend)(pane.canvas, panesCanvases[pane.name])\r\n })\r\n }\r\n },\r\n _isArgumentAxisBeforeScrollBar: function() {\r\n var that = this;\r\n var argumentAxis = that.getArgumentAxis();\r\n if (that._scrollBar) {\r\n var _argumentAxis$getOpti;\r\n var argAxisPosition = argumentAxis.getResolvedBoundaryPosition();\r\n var argAxisLabelPosition = null === (_argumentAxis$getOpti = argumentAxis.getOptions().label) || void 0 === _argumentAxis$getOpti ? void 0 : _argumentAxis$getOpti.position;\r\n var scrollBarPosition = that._scrollBar.getOptions().position;\r\n return argumentAxis.hasCustomPosition() || scrollBarPosition === argAxisPosition && argAxisLabelPosition !== scrollBarPosition\r\n }\r\n return false\r\n },\r\n _getPanesParameters: function() {\r\n var that = this;\r\n var panes = that.panes;\r\n var i;\r\n var params = [];\r\n for (i = 0; i < panes.length; i++) {\r\n if (that._getPaneBorderVisibility(i)) {\r\n params.push({\r\n coords: panes[i].borderCoords,\r\n clipRect: that._panesClipRects.fixed[i]\r\n })\r\n }\r\n }\r\n return params\r\n },\r\n _createCrosshairCursor: function() {\r\n var that = this;\r\n var options = that._themeManager.getOptions(\"crosshair\") || {};\r\n var argumentAxis = that.getArgumentAxis();\r\n var axes = !that._isRotated() ? [\r\n [argumentAxis], that._valueAxes\r\n ] : [that._valueAxes, [argumentAxis]];\r\n var parameters = {\r\n canvas: that._getCommonCanvas(),\r\n panes: that._getPanesParameters(),\r\n axes: axes\r\n };\r\n if (!options || !options.enabled) {\r\n return\r\n }\r\n if (!that._crosshair) {\r\n that._crosshair = new _crosshair2.default.Crosshair(that._renderer, options, parameters, that._crosshairCursorGroup)\r\n } else {\r\n that._crosshair.update(options, parameters)\r\n }\r\n that._crosshair.render()\r\n },\r\n _getCommonCanvas: function() {\r\n var i;\r\n var canvas;\r\n var commonCanvas;\r\n var panes = this.panes;\r\n for (i = 0; i < panes.length; i++) {\r\n canvas = panes[i].canvas;\r\n if (!commonCanvas) {\r\n commonCanvas = (0, _extend2.extend)({}, canvas)\r\n } else {\r\n commonCanvas.right = canvas.right;\r\n commonCanvas.bottom = canvas.bottom\r\n }\r\n }\r\n return commonCanvas\r\n },\r\n _createPanesBackground: function() {\r\n var that = this;\r\n var defaultBackgroundColor = that._themeManager.getOptions(\"commonPaneSettings\").backgroundColor;\r\n var backgroundColor;\r\n var renderer = that._renderer;\r\n var rect;\r\n var i;\r\n var rects = [];\r\n that._panesBackgroundGroup.clear();\r\n for (i = 0; i < that.panes.length; i++) {\r\n backgroundColor = that.panes[i].backgroundColor || defaultBackgroundColor;\r\n if (!backgroundColor || \"none\" === backgroundColor) {\r\n rects.push(null);\r\n continue\r\n }\r\n rect = renderer.rect(0, 0, 0, 0).attr({\r\n fill: backgroundColor,\r\n \"stroke-width\": 0\r\n }).append(that._panesBackgroundGroup);\r\n rects.push(rect)\r\n }\r\n that.panesBackground = rects\r\n },\r\n _fillPanesBackground: function() {\r\n var that = this;\r\n var bc;\r\n (0, _iterator.each)(that.panes, function(i, pane) {\r\n bc = pane.borderCoords;\r\n if (null !== that.panesBackground[i]) {\r\n that.panesBackground[i].attr({\r\n x: bc.left,\r\n y: bc.top,\r\n width: bc.width,\r\n height: bc.height\r\n })\r\n }\r\n })\r\n },\r\n _calcPaneBorderCoords: function(pane) {\r\n var canvas = pane.canvas;\r\n var bc = pane.borderCoords = pane.borderCoords || {};\r\n bc.left = canvas.left;\r\n bc.top = canvas.top;\r\n bc.right = canvas.width - canvas.right;\r\n bc.bottom = canvas.height - canvas.bottom;\r\n bc.width = Math.max(bc.right - bc.left, 0);\r\n bc.height = Math.max(bc.bottom - bc.top, 0)\r\n },\r\n _drawPanesBorders: function(panesBorderOptions) {\r\n var that = this;\r\n var rotated = that._isRotated();\r\n that._panesBorderGroup.linkRemove().clear();\r\n (0, _iterator.each)(that.panes, function(i, pane) {\r\n var borderOptions = panesBorderOptions[pane.name];\r\n var attr = {\r\n fill: \"none\",\r\n stroke: borderOptions.color,\r\n \"stroke-opacity\": borderOptions.opacity,\r\n \"stroke-width\": borderOptions.width,\r\n dashStyle: borderOptions.dashStyle,\r\n \"stroke-linecap\": \"square\"\r\n };\r\n that._calcPaneBorderCoords(pane, rotated);\r\n if (!borderOptions.visible) {\r\n return\r\n }\r\n var bc = pane.borderCoords;\r\n var segmentRectParams = prepareSegmentRectPoints(bc.left, bc.top, bc.width, bc.height, borderOptions);\r\n that._renderer.path(segmentRectParams.points, segmentRectParams.pathType).attr(attr).append(that._panesBorderGroup)\r\n });\r\n that._panesBorderGroup.linkAppend()\r\n },\r\n _createClipRect: function(clipArray, index, left, top, width, height) {\r\n var that = this;\r\n var clipRect = clipArray[index];\r\n if (!clipRect) {\r\n clipRect = that._renderer.clipRect(left, top, width, height);\r\n clipArray[index] = clipRect\r\n } else {\r\n clipRect.attr({\r\n x: left,\r\n y: top,\r\n width: width,\r\n height: height\r\n })\r\n }\r\n },\r\n _createClipRectsForPanes: function() {\r\n var that = this;\r\n var canvas = that._canvas;\r\n (0, _iterator.each)(that.panes, function(i, pane) {\r\n var needWideClipRect = false;\r\n var bc = pane.borderCoords;\r\n var left = bc.left;\r\n var top = bc.top;\r\n var width = bc.width;\r\n var height = bc.height;\r\n var panesClipRects = that._panesClipRects;\r\n that._createClipRect(panesClipRects.fixed, i, left, top, width, height);\r\n that._createClipRect(panesClipRects.base, i, left, top, width, height);\r\n (0, _iterator.each)(that.series, function(_, series) {\r\n if (series.pane === pane.name && (series.isFinancialSeries() || series.areErrorBarsVisible())) {\r\n needWideClipRect = true\r\n }\r\n });\r\n if (needWideClipRect) {\r\n if (that._isRotated()) {\r\n top = 0;\r\n height = canvas.height\r\n } else {\r\n left = 0;\r\n width = canvas.width\r\n }\r\n that._createClipRect(panesClipRects.wide, i, left, top, width, height)\r\n } else {\r\n panesClipRects.wide[i] = null\r\n }\r\n })\r\n },\r\n _applyClipRectsForAxes: function() {\r\n var that = this;\r\n var axes = that._argumentAxes.concat(that._valueAxes);\r\n var customPositionAxes = axes.filter(function(a) {\r\n return a.hasCustomPosition()\r\n });\r\n var chartCanvasClipRectID = that._getCanvasClipRectID();\r\n for (var i = 0; i < axes.length; i++) {\r\n var elementsClipRectID = that._getElementsClipRectID(axes[i].pane);\r\n var canvasClipRectID = customPositionAxes.indexOf(axes[i]) >= 0 ? elementsClipRectID : chartCanvasClipRectID;\r\n axes[i].applyClipRects(elementsClipRectID, canvasClipRectID)\r\n }\r\n },\r\n _getPaneBorderVisibility: function(paneIndex) {\r\n var commonPaneBorderVisible = this._themeManager.getOptions(\"commonPaneSettings\").border.visible;\r\n var pane = this.panes[paneIndex] || {};\r\n var paneBorder = pane.border || {};\r\n return \"visible\" in paneBorder ? paneBorder.visible : commonPaneBorderVisible\r\n },\r\n _getCanvasForPane: function(paneName) {\r\n var panes = this.panes;\r\n var panesNumber = panes.length;\r\n var i;\r\n for (i = 0; i < panesNumber; i++) {\r\n if (panes[i].name === paneName) {\r\n return panes[i].canvas\r\n }\r\n }\r\n },\r\n _getTrackerSettings: function() {\r\n var that = this;\r\n var themeManager = that._themeManager;\r\n return (0, _extend2.extend)(this.callBase(), {\r\n chart: that,\r\n rotated: that._isRotated(),\r\n crosshair: that._getCrosshairOptions().enabled ? that._crosshair : null,\r\n stickyHovering: themeManager.getOptions(\"stickyHovering\")\r\n })\r\n },\r\n _resolveLabelOverlappingStack: function() {\r\n var that = this;\r\n var isRotated = that._isRotated();\r\n var shiftDirection = isRotated ? function(box, length) {\r\n return {\r\n x: box.x - length,\r\n y: box.y\r\n }\r\n } : function(box, length) {\r\n return {\r\n x: box.x,\r\n y: box.y - length\r\n }\r\n };\r\n (0, _iterator.each)(that._getStackPoints(), function(_, stacks) {\r\n (0, _iterator.each)(stacks, function(_, points) {\r\n _base_chart.overlapping.resolveLabelOverlappingInOneDirection(points, that._getCommonCanvas(), isRotated, shiftDirection, function(a, b) {\r\n var coordPosition = isRotated ? 1 : 0;\r\n var figureCenter1 = a.labels[0].getFigureCenter()[coordPosition];\r\n var figureCenter12 = b.labels[0].getFigureCenter()[coordPosition];\r\n if (figureCenter1 - figureCenter12 === 0) {\r\n return (a.value() - b.value()) * (a.labels[0].getPoint().series.getValueAxis().getTranslator().isInverted() ? -1 : 1)\r\n }\r\n return 0\r\n })\r\n })\r\n })\r\n },\r\n _getStackPoints: function() {\r\n var stackPoints = {};\r\n var visibleSeries = this._getVisibleSeries();\r\n (0, _iterator.each)(visibleSeries, function(_, singleSeries) {\r\n var points = singleSeries.getPoints();\r\n var stackName = singleSeries.getStackName() || null;\r\n (0, _iterator.each)(points, function(_, point) {\r\n var argument = point.argument;\r\n if (!stackPoints[argument]) {\r\n stackPoints[argument] = {}\r\n }\r\n if (!stackPoints[argument][stackName]) {\r\n stackPoints[argument][stackName] = []\r\n }\r\n stackPoints[argument][stackName].push(point)\r\n })\r\n });\r\n return stackPoints\r\n },\r\n _getCrosshairOptions: function() {\r\n return this._getOption(\"crosshair\")\r\n },\r\n zoomArgument: function(min, max) {\r\n var that = this;\r\n if (!that._initialized || !(0, _type.isDefined)(min) && !(0, _type.isDefined)(max)) {\r\n return\r\n }\r\n that.getArgumentAxis().visualRange([min, max])\r\n },\r\n resetVisualRange: function() {\r\n var that = this;\r\n var axes = that._argumentAxes;\r\n var nonVirtualArgumentAxis = that.getArgumentAxis();\r\n axes.forEach(function(axis) {\r\n axis.resetVisualRange(nonVirtualArgumentAxis !== axis);\r\n that._applyCustomVisualRangeOption(axis)\r\n });\r\n that.callBase()\r\n },\r\n getVisibleArgumentBounds: function() {\r\n var translator = this._argumentAxes[0].getTranslator();\r\n var range = translator.getBusinessRange();\r\n var isDiscrete = range.axisType === DISCRETE;\r\n var categories = range.categories;\r\n return {\r\n minVisible: isDiscrete ? range.minVisible || categories[0] : range.minVisible,\r\n maxVisible: isDiscrete ? range.maxVisible || categories[categories.length - 1] : range.maxVisible\r\n }\r\n },\r\n _change_FULL_RENDER: function() {\r\n this.callBase();\r\n if (this._changes.has(VISUAL_RANGE)) {\r\n this._raiseZoomEndHandlers()\r\n }\r\n },\r\n _getAxesForScaling: function() {\r\n return [this.getArgumentAxis()].concat(this._valueAxes)\r\n },\r\n _applyVisualRangeByVirtualAxes: function(axis, range) {\r\n var that = this;\r\n if (axis.isArgumentAxis) {\r\n if (axis !== that.getArgumentAxis()) {\r\n return true\r\n }\r\n that._argumentAxes.filter(function(a) {\r\n return a !== axis\r\n }).forEach(function(a) {\r\n return a.visualRange(range, {\r\n start: true,\r\n end: true\r\n })\r\n })\r\n }\r\n return false\r\n },\r\n _raiseZoomEndHandlers: function() {\r\n this._argumentAxes.forEach(function(axis) {\r\n return axis.handleZoomEnd()\r\n });\r\n this.callBase()\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n (0, _extend2.extend)(this._optionsByReference, {\r\n \"argumentAxis.visualRange\": true\r\n })\r\n },\r\n option: function option() {\r\n var option = this.callBase.apply(this, arguments);\r\n var valueAxis = this._options.silent(\"valueAxis\");\r\n if (\"array\" === (0, _type.type)(valueAxis)) {\r\n for (var i = 0; i < valueAxis.length; i++) {\r\n var optionPath = \"valueAxis[\".concat(i, \"].visualRange\");\r\n this._optionsByReference[optionPath] = true\r\n }\r\n }\r\n return option\r\n },\r\n _notifyVisualRange: function() {\r\n var that = this;\r\n var argAxis = that._argumentAxes[0];\r\n var argumentVisualRange = (0, _utils.convertVisualRangeObject)(argAxis.visualRange(), !_isArray(that.option(\"argumentAxis.visualRange\")));\r\n if (!argAxis.skipEventRising || !(0, _utils.rangesAreEqual)(argumentVisualRange, that.option(\"argumentAxis.visualRange\"))) {\r\n that.option(\"argumentAxis.visualRange\", argumentVisualRange)\r\n } else {\r\n argAxis.skipEventRising = null\r\n }\r\n that.callBase()\r\n }\r\n});\r\ndxChart.addPlugin(require(\"./chart_components/shutter_zoom\"));\r\ndxChart.addPlugin(require(\"./chart_components/zoom_and_pan\"));\r\ndxChart.addPlugin(require(\"./core/annotations\").plugins.core);\r\ndxChart.addPlugin(require(\"./core/annotations\").plugins.chart);\r\n(0, _component_registrator2.default)(\"dxChart\", dxChart);\r\nmodule.exports = dxChart;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/translators/datetime_translator.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 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 parse(value) {\r\n return null !== value ? new Date(value) : value\r\n}\r\nmodule.exports = {\r\n _fromValue: parse,\r\n _toValue: parse,\r\n _add: require(\"../../core/utils/date\").addDateInterval\r\n};\r\n","/**\r\n * DevExtreme (viz/axes/tick.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar isDefined = require(\"../../core/utils/type\").isDefined;\r\nvar extend = require(\"../../core/utils/extend\").extend;\r\n\r\nfunction getPathStyle(options) {\r\n return {\r\n stroke: options.color,\r\n \"stroke-width\": options.width,\r\n \"stroke-opacity\": options.opacity,\r\n opacity: 1\r\n }\r\n}\r\n\r\nfunction createTick(axis, renderer, tickOptions, gridOptions, skippedCategory, skipLabels, offset) {\r\n var tickOffset = offset || axis._tickOffset;\r\n var lineGroup = axis._axisLineGroup;\r\n var elementsGroup = axis._axisElementsGroup;\r\n var tickStyle = getPathStyle(tickOptions);\r\n var gridStyle = getPathStyle(gridOptions);\r\n var emptyStrRegExp = /^\\s+$/;\r\n var axisOptions = axis.getOptions();\r\n var labelOptions = axisOptions.label;\r\n var labelStyle = axis._textOptions;\r\n\r\n function getLabelFontStyle(tick) {\r\n var fontStyle = axis._textFontStyles;\r\n var customizeColor = labelOptions.customizeColor;\r\n if (customizeColor && customizeColor.call) {\r\n fontStyle = extend({}, axis._textFontStyles, {\r\n fill: customizeColor.call(tick, tick)\r\n })\r\n }\r\n return fontStyle\r\n }\r\n\r\n function createLabelHint(tick, range) {\r\n var labelHint = axis.formatHint(tick.value, labelOptions, range);\r\n if (isDefined(labelHint) && \"\" !== labelHint) {\r\n tick.label.setTitle(labelHint)\r\n }\r\n }\r\n return function(value) {\r\n var tick = {\r\n value: value,\r\n updateValue: function(newValue) {\r\n this.value = value = newValue\r\n },\r\n initCoords: function() {\r\n this.coords = axis._getTranslatedValue(value, tickOffset);\r\n this.labelCoords = axis._getTranslatedValue(value)\r\n },\r\n saveCoords: function() {\r\n this._lastStoredCoordinates = {\r\n coords: this._storedCoords,\r\n labelCoords: this._storedLabelsCoords\r\n };\r\n this._storedCoords = this.coords;\r\n this._storedLabelsCoords = this.labelCoords\r\n },\r\n resetCoordinates: function() {\r\n this._storedCoords = this._lastStoredCoordinates.coords;\r\n this._storedLabelsCoords = this._lastStoredCoordinates.labelCoords\r\n },\r\n drawMark: function(options) {\r\n if (!tickOptions.visible || skippedCategory === value) {\r\n return\r\n }\r\n if (axis.areCoordsOutsideAxis(this.coords)) {\r\n return\r\n }\r\n if (this.mark) {\r\n this.mark.append(lineGroup);\r\n axis.sharp(this.mark, axis.getSharpDirectionByCoords(this.coords));\r\n this.updateTickPosition(options)\r\n } else {\r\n this.mark = axis._createPathElement([], tickStyle, axis.getSharpDirectionByCoords(this.coords)).append(lineGroup);\r\n this.updateTickPosition(options)\r\n }\r\n },\r\n setSkippedCategory: function(category) {\r\n skippedCategory = category\r\n },\r\n _updateLine: function(lineElement, settings, storedSettings, animate, isGridLine) {\r\n if (!lineElement) {\r\n return\r\n }\r\n if (null === settings.points || null === settings.r) {\r\n lineElement.remove();\r\n return\r\n }\r\n if (animate && storedSettings && null !== storedSettings.points) {\r\n settings.opacity = 1;\r\n lineElement.attr(storedSettings);\r\n lineElement.animate(settings)\r\n } else {\r\n settings.opacity = animate ? 0 : 1;\r\n lineElement.attr(settings);\r\n animate && lineElement.animate({\r\n opacity: 1\r\n }, {\r\n delay: .5,\r\n partitionDuration: .5\r\n })\r\n }\r\n this.coords.angle && axis._rotateTick(lineElement, this.coords, isGridLine)\r\n },\r\n updateTickPosition: function(options, animate) {\r\n this._updateLine(this.mark, {\r\n points: axis._getTickMarkPoints(tick.coords, tickOptions.length, options)\r\n }, this._storedCoords && {\r\n points: axis._getTickMarkPoints(tick._storedCoords, tickOptions.length, options)\r\n }, animate, false)\r\n },\r\n drawLabel: function(range) {\r\n var labelIsVisible = labelOptions.visible && !skipLabels && !axis.getTranslator().getBusinessRange().isEmpty() && !axis.areCoordsOutsideAxis(this.labelCoords);\r\n if (!labelIsVisible) {\r\n if (this.label) {\r\n this.removeLabel()\r\n }\r\n return\r\n }\r\n var text = axis.formatLabel(value, labelOptions, range);\r\n if (this.label) {\r\n this.label.attr({\r\n text: text,\r\n rotate: 0\r\n }).append(elementsGroup);\r\n createLabelHint(this, range);\r\n this.updateLabelPosition();\r\n return\r\n }\r\n if (isDefined(text) && \"\" !== text && !emptyStrRegExp.test(text)) {\r\n this.label = renderer.text(text).css(getLabelFontStyle(this)).attr(labelStyle).data(\"chart-data-argument\", this.value).append(elementsGroup);\r\n this.updateLabelPosition();\r\n createLabelHint(this, range)\r\n }\r\n },\r\n fadeOutElements: function() {\r\n var startSettings = {\r\n opacity: 1\r\n };\r\n var endSettings = {\r\n opacity: 0\r\n };\r\n var animationSettings = {\r\n partitionDuration: .5\r\n };\r\n if (this.label) {\r\n this._fadeOutLabel()\r\n }\r\n if (this.grid) {\r\n this.grid.append(axis._axisGridGroup).attr(startSettings).animate(endSettings, animationSettings)\r\n }\r\n if (this.mark) {\r\n this.mark.append(axis._axisLineGroup).attr(startSettings).animate(endSettings, animationSettings)\r\n }\r\n },\r\n _fadeInLabel: function() {\r\n var group = axis._renderer.g().attr({\r\n opacity: 0\r\n }).append(axis._axisElementsGroup).animate({\r\n opacity: 1\r\n }, {\r\n delay: .5,\r\n partitionDuration: .5\r\n });\r\n this.label.append(group)\r\n },\r\n _fadeOutLabel: function() {\r\n var group = axis._renderer.g().attr({\r\n opacity: 1\r\n }).animate({\r\n opacity: 0\r\n }, {\r\n partitionDuration: .5\r\n }).append(axis._axisElementsGroup);\r\n this.label.append(group)\r\n },\r\n updateLabelPosition: function(animate) {\r\n if (!this.label) {\r\n return\r\n }\r\n if (animate && this._storedLabelsCoords) {\r\n this.label.attr({\r\n x: this._storedLabelsCoords.x,\r\n y: this._storedLabelsCoords.y\r\n });\r\n this.label.animate({\r\n x: this.labelCoords.x,\r\n y: this.labelCoords.y\r\n })\r\n } else {\r\n this.label.attr({\r\n x: this.labelCoords.x,\r\n y: this.labelCoords.y\r\n });\r\n if (animate) {\r\n this._fadeInLabel()\r\n }\r\n }\r\n },\r\n updateMultilineTextAlignment: function() {\r\n if (!this.label) {\r\n return\r\n }\r\n this.label.attr({\r\n textsAlignment: this.labelAlignment || axis.getOptions().label.alignment\r\n })\r\n },\r\n drawGrid: function(drawLine) {\r\n if (gridOptions.visible && skippedCategory !== this.value) {\r\n if (this.grid) {\r\n this.grid.append(axis._axisGridGroup);\r\n axis.sharp(this.grid, axis.getSharpDirectionByCoords(this.coords));\r\n this.updateGridPosition()\r\n } else {\r\n this.grid = drawLine(this, gridStyle);\r\n this.grid && this.grid.append(axis._axisGridGroup)\r\n }\r\n }\r\n },\r\n updateGridPosition: function(animate) {\r\n this._updateLine(this.grid, axis._getGridPoints(tick.coords), this._storedCoords && axis._getGridPoints(this._storedCoords), animate, true)\r\n },\r\n removeLabel: function() {\r\n this.label.remove();\r\n this.label = null\r\n }\r\n };\r\n return tick\r\n }\r\n}\r\nexports.tick = createTick;\r\n","/**\r\n * DevExtreme (viz/translators/translator2d.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _range = require(\"./range\");\r\nvar _category_translator = require(\"./category_translator\");\r\nvar _category_translator2 = _interopRequireDefault(_category_translator);\r\nvar _interval_translator = require(\"./interval_translator\");\r\nvar _interval_translator2 = _interopRequireDefault(_interval_translator);\r\nvar _datetime_translator = require(\"./datetime_translator\");\r\nvar _datetime_translator2 = _interopRequireDefault(_datetime_translator);\r\nvar _logarithmic_translator = require(\"./logarithmic_translator\");\r\nvar _logarithmic_translator2 = _interopRequireDefault(_logarithmic_translator);\r\nvar _utils = require(\"../core/utils\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _date = require(\"../../core/utils/date\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _abs = Math.abs;\r\nvar CANVAS_PROP = [\"width\", \"height\", \"left\", \"top\", \"bottom\", \"right\"];\r\nvar _Translator2d;\r\nvar dummyTranslator = {\r\n to: function(value) {\r\n var coord = this._canvasOptions.startPoint + (this._options.conversionValue ? value : Math.round(value));\r\n return coord > this._canvasOptions.endPoint ? this._canvasOptions.endPoint : coord\r\n },\r\n from: function(value) {\r\n return value - this._canvasOptions.startPoint\r\n }\r\n};\r\nvar validateCanvas = function(canvas) {\r\n (0, _iterator.each)(CANVAS_PROP, function(_, prop) {\r\n canvas[prop] = parseInt(canvas[prop]) || 0\r\n });\r\n return canvas\r\n};\r\nvar makeCategoriesToPoints = function(categories) {\r\n var categoriesToPoints = {};\r\n categories.forEach(function(item, i) {\r\n categoriesToPoints[item.valueOf()] = i\r\n });\r\n return categoriesToPoints\r\n};\r\nvar validateBusinessRange = function(businessRange) {\r\n if (!(businessRange instanceof _range.Range)) {\r\n businessRange = new _range.Range(businessRange)\r\n }\r\n\r\n function validate(valueSelector, baseValueSelector) {\r\n if (!(0, _type.isDefined)(businessRange[valueSelector]) && (0, _type.isDefined)(businessRange[baseValueSelector])) {\r\n businessRange[valueSelector] = businessRange[baseValueSelector]\r\n }\r\n }\r\n validate(\"minVisible\", \"min\");\r\n validate(\"maxVisible\", \"max\");\r\n return businessRange\r\n};\r\n\r\nfunction prepareBreaks(breaks, range) {\r\n var transform = \"logarithmic\" === range.axisType ? function(value) {\r\n return (0, _utils.getLogExt)(value, range.base)\r\n } : function(value) {\r\n return value\r\n };\r\n var array = [];\r\n var br;\r\n var transformFrom;\r\n var transformTo;\r\n var i;\r\n var length = breaks.length;\r\n var sum = 0;\r\n for (i = 0; i < length; i++) {\r\n br = breaks[i];\r\n transformFrom = transform(br.from);\r\n transformTo = transform(br.to);\r\n sum += transformTo - transformFrom;\r\n array.push({\r\n trFrom: transformFrom,\r\n trTo: transformTo,\r\n from: br.from,\r\n to: br.to,\r\n length: sum,\r\n cumulativeWidth: br.cumulativeWidth\r\n })\r\n }\r\n return array\r\n}\r\n\r\nfunction getCanvasBounds(range) {\r\n var min = range.min;\r\n var max = range.max;\r\n var minVisible = range.minVisible;\r\n var maxVisible = range.maxVisible;\r\n var isLogarithmic = \"logarithmic\" === range.axisType;\r\n if (isLogarithmic) {\r\n maxVisible = (0, _utils.getLogExt)(maxVisible, range.base, range.allowNegatives, range.linearThreshold);\r\n minVisible = (0, _utils.getLogExt)(minVisible, range.base, range.allowNegatives, range.linearThreshold);\r\n min = (0, _utils.getLogExt)(min, range.base, range.allowNegatives, range.linearThreshold);\r\n max = (0, _utils.getLogExt)(max, range.base, range.allowNegatives, range.linearThreshold)\r\n }\r\n return {\r\n base: range.base,\r\n rangeMin: min,\r\n rangeMax: max,\r\n rangeMinVisible: minVisible,\r\n rangeMaxVisible: maxVisible\r\n }\r\n}\r\n\r\nfunction getCheckingMethodsAboutBreaks(inverted) {\r\n return {\r\n isStartSide: !inverted ? function(pos, breaks, start, end) {\r\n return pos < breaks[0][start]\r\n } : function(pos, breaks, start, end) {\r\n return pos <= breaks[breaks.length - 1][end]\r\n },\r\n isEndSide: !inverted ? function(pos, breaks, start, end) {\r\n return pos >= breaks[breaks.length - 1][end]\r\n } : function(pos, breaks, start, end) {\r\n return pos > breaks[0][start]\r\n },\r\n isInBreak: !inverted ? function(pos, br, start, end) {\r\n return pos >= br[start] && pos < br[end]\r\n } : function(pos, br, start, end) {\r\n return pos > br[end] && pos <= br[start]\r\n },\r\n isBetweenBreaks: !inverted ? function(pos, br, prevBreak, start, end) {\r\n return pos < br[start] && pos >= prevBreak[end]\r\n } : function(pos, br, prevBreak, start, end) {\r\n return pos >= br[end] && pos < prevBreak[start]\r\n },\r\n getLength: !inverted ? function(br) {\r\n return br.length\r\n } : function(br, lastBreak) {\r\n return lastBreak.length - br.length\r\n },\r\n getBreaksSize: !inverted ? function(br) {\r\n return br.cumulativeWidth\r\n } : function(br, lastBreak) {\r\n return lastBreak.cumulativeWidth - br.cumulativeWidth\r\n }\r\n }\r\n}\r\nexports.Translator2D = _Translator2d = function(businessRange, canvas, options) {\r\n this.update(businessRange, canvas, options)\r\n};\r\n_Translator2d.prototype = {\r\n constructor: _Translator2d,\r\n reinit: function() {\r\n var that = this;\r\n var options = that._options;\r\n var range = that._businessRange;\r\n var categories = range.categories || [];\r\n var script = {};\r\n var canvasOptions = that._prepareCanvasOptions();\r\n var visibleCategories = (0, _utils.getCategoriesInfo)(categories, range.minVisible, range.maxVisible).categories;\r\n var categoriesLength = visibleCategories.length;\r\n if (range.isEmpty()) {\r\n script = dummyTranslator\r\n } else {\r\n switch (range.axisType) {\r\n case \"logarithmic\":\r\n script = _logarithmic_translator2.default;\r\n break;\r\n case \"semidiscrete\":\r\n script = _interval_translator2.default;\r\n canvasOptions.ratioOfCanvasRange = canvasOptions.canvasLength / ((0, _date.addInterval)(canvasOptions.rangeMaxVisible, options.interval) - canvasOptions.rangeMinVisible);\r\n break;\r\n case \"discrete\":\r\n script = _category_translator2.default;\r\n that._categories = categories;\r\n canvasOptions.interval = that._getDiscreteInterval(options.addSpiderCategory ? categoriesLength + 1 : categoriesLength, canvasOptions);\r\n that._categoriesToPoints = makeCategoriesToPoints(categories, canvasOptions.invert);\r\n if (categoriesLength) {\r\n canvasOptions.startPointIndex = that._categoriesToPoints[visibleCategories[0].valueOf()];\r\n that.visibleCategories = visibleCategories\r\n }\r\n break;\r\n default:\r\n if (\"datetime\" === range.dataType) {\r\n script = _datetime_translator2.default\r\n }\r\n }\r\n }(that._oldMethods || []).forEach(function(methodName) {\r\n delete that[methodName]\r\n });\r\n that._oldMethods = Object.keys(script);\r\n (0, _extend.extend)(that, script);\r\n that._conversionValue = options.conversionValue ? function(value) {\r\n return value\r\n } : function(value) {\r\n return Math.round(value)\r\n };\r\n that.sc = {};\r\n that._checkingMethodsAboutBreaks = [getCheckingMethodsAboutBreaks(false), getCheckingMethodsAboutBreaks(that.isInverted())];\r\n that._translateBreaks();\r\n that._calculateSpecialValues()\r\n },\r\n _translateBreaks: function() {\r\n var breaks = this._breaks;\r\n var size = this._options.breaksSize;\r\n var i;\r\n var b;\r\n var end;\r\n var length;\r\n if (void 0 === breaks) {\r\n return\r\n }\r\n for (i = 0, length = breaks.length; i < length; i++) {\r\n b = breaks[i];\r\n end = this.translate(b.to);\r\n b.end = end;\r\n b.start = !b.gapSize ? !this.isInverted() ? end - size : end + size : end\r\n }\r\n },\r\n _checkValueAboutBreaks: function(breaks, pos, start, end, methods) {\r\n var i;\r\n var length;\r\n var prop = {\r\n length: 0,\r\n breaksSize: void 0,\r\n inBreak: false\r\n };\r\n var br;\r\n var prevBreak;\r\n var lastBreak = breaks[breaks.length - 1];\r\n if (methods.isStartSide(pos, breaks, start, end)) {\r\n return prop\r\n } else {\r\n if (methods.isEndSide(pos, breaks, start, end)) {\r\n return {\r\n length: lastBreak.length,\r\n breaksSize: lastBreak.cumulativeWidth,\r\n inBreak: false\r\n }\r\n }\r\n }\r\n for (i = 0, length = breaks.length; i < length; i++) {\r\n br = breaks[i];\r\n prevBreak = breaks[i - 1];\r\n if (methods.isInBreak(pos, br, start, end)) {\r\n prop.inBreak = true;\r\n prop.break = br;\r\n break\r\n }\r\n if (prevBreak && methods.isBetweenBreaks(pos, br, prevBreak, start, end)) {\r\n prop = {\r\n length: methods.getLength(prevBreak, lastBreak),\r\n breaksSize: methods.getBreaksSize(prevBreak, lastBreak),\r\n inBreak: false\r\n };\r\n break\r\n }\r\n }\r\n return prop\r\n },\r\n isInverted: function() {\r\n return !(this._options.isHorizontal ^ this._businessRange.invert)\r\n },\r\n _getDiscreteInterval: function(categoriesLength, canvasOptions) {\r\n var correctedCategoriesCount = categoriesLength - (this._options.stick ? 1 : 0);\r\n return correctedCategoriesCount > 0 ? canvasOptions.canvasLength / correctedCategoriesCount : canvasOptions.canvasLength\r\n },\r\n _prepareCanvasOptions: function() {\r\n var that = this;\r\n var businessRange = that._businessRange;\r\n var canvasOptions = that._canvasOptions = getCanvasBounds(businessRange);\r\n var canvas = that._canvas;\r\n var breaks = that._breaks;\r\n var length;\r\n canvasOptions.startPadding = canvas.startPadding || 0;\r\n canvasOptions.endPadding = canvas.endPadding || 0;\r\n if (that._options.isHorizontal) {\r\n canvasOptions.startPoint = canvas.left + canvasOptions.startPadding;\r\n length = canvas.width;\r\n canvasOptions.endPoint = canvas.width - canvas.right - canvasOptions.endPadding;\r\n canvasOptions.invert = businessRange.invert\r\n } else {\r\n canvasOptions.startPoint = canvas.top + canvasOptions.startPadding;\r\n length = canvas.height;\r\n canvasOptions.endPoint = canvas.height - canvas.bottom - canvasOptions.endPadding;\r\n canvasOptions.invert = !businessRange.invert\r\n }\r\n that.canvasLength = canvasOptions.canvasLength = canvasOptions.endPoint - canvasOptions.startPoint;\r\n canvasOptions.rangeDoubleError = Math.pow(10, (0, _utils.getPower)(canvasOptions.rangeMax - canvasOptions.rangeMin) - (0, _utils.getPower)(length) - 2);\r\n canvasOptions.ratioOfCanvasRange = canvasOptions.canvasLength / (canvasOptions.rangeMaxVisible - canvasOptions.rangeMinVisible);\r\n if (void 0 !== breaks) {\r\n canvasOptions.ratioOfCanvasRange = (canvasOptions.canvasLength - breaks[breaks.length - 1].cumulativeWidth) / (canvasOptions.rangeMaxVisible - canvasOptions.rangeMinVisible - breaks[breaks.length - 1].length)\r\n }\r\n return canvasOptions\r\n },\r\n updateCanvas: function(canvas) {\r\n this._canvas = validateCanvas(canvas);\r\n this.reinit()\r\n },\r\n updateBusinessRange: function(businessRange) {\r\n var that = this;\r\n var breaks = businessRange.breaks || [];\r\n that._businessRange = validateBusinessRange(businessRange);\r\n that._breaks = breaks.length ? prepareBreaks(breaks, that._businessRange) : void 0;\r\n that.reinit()\r\n },\r\n update: function(businessRange, canvas, options) {\r\n var that = this;\r\n that._options = (0, _extend.extend)(that._options || {}, options);\r\n that._canvas = validateCanvas(canvas);\r\n that.updateBusinessRange(businessRange)\r\n },\r\n getBusinessRange: function() {\r\n return this._businessRange\r\n },\r\n getEventScale: function(zoomEvent) {\r\n return zoomEvent.deltaScale || 1\r\n },\r\n getCanvasVisibleArea: function() {\r\n return {\r\n min: this._canvasOptions.startPoint,\r\n max: this._canvasOptions.endPoint\r\n }\r\n },\r\n _calculateSpecialValues: function() {\r\n var that = this;\r\n var canvasOptions = that._canvasOptions;\r\n var startPoint = canvasOptions.startPoint - canvasOptions.startPadding;\r\n var endPoint = canvasOptions.endPoint + canvasOptions.endPadding;\r\n var range = that._businessRange;\r\n var minVisible = range.minVisible;\r\n var maxVisible = range.maxVisible;\r\n var canvas_position_center_middle = startPoint + canvasOptions.canvasLength / 2;\r\n var canvas_position_default;\r\n if (minVisible < 0 && maxVisible > 0 && minVisible !== maxVisible) {\r\n canvas_position_default = that.translate(0, 1)\r\n }\r\n if (!(0, _type.isDefined)(canvas_position_default)) {\r\n var invert = range.invert ^ (minVisible < 0 && maxVisible <= 0);\r\n if (that._options.isHorizontal) {\r\n canvas_position_default = invert ? endPoint : startPoint\r\n } else {\r\n canvas_position_default = invert ? startPoint : endPoint\r\n }\r\n }\r\n that.sc = {\r\n canvas_position_default: canvas_position_default,\r\n canvas_position_left: startPoint,\r\n canvas_position_top: startPoint,\r\n canvas_position_center: canvas_position_center_middle,\r\n canvas_position_middle: canvas_position_center_middle,\r\n canvas_position_right: endPoint,\r\n canvas_position_bottom: endPoint,\r\n canvas_position_start: canvasOptions.invert ? endPoint : startPoint,\r\n canvas_position_end: canvasOptions.invert ? startPoint : endPoint\r\n }\r\n },\r\n translateSpecialCase: function(value) {\r\n return this.sc[value]\r\n },\r\n _calculateProjection: function(distance) {\r\n var canvasOptions = this._canvasOptions;\r\n return canvasOptions.invert ? canvasOptions.endPoint - distance : canvasOptions.startPoint + distance\r\n },\r\n _calculateUnProjection: function(distance) {\r\n var canvasOptions = this._canvasOptions;\r\n return canvasOptions.invert ? canvasOptions.rangeMaxVisible.valueOf() - distance : canvasOptions.rangeMinVisible.valueOf() + distance\r\n },\r\n getMinBarSize: function(minBarSize) {\r\n var visibleArea = this.getCanvasVisibleArea();\r\n var minValue = this.from(visibleArea.min + minBarSize);\r\n return _abs(this.from(visibleArea.min) - (!(0, _type.isDefined)(minValue) ? this.from(visibleArea.max) : minValue))\r\n },\r\n checkMinBarSize: function(value, minShownValue, stackValue) {\r\n return _abs(value) < minShownValue ? value >= 0 ? minShownValue : -minShownValue : value\r\n },\r\n translate: function(bp, direction) {\r\n var specialValue = this.translateSpecialCase(bp);\r\n if ((0, _type.isDefined)(specialValue)) {\r\n return Math.round(specialValue)\r\n }\r\n if (isNaN(bp)) {\r\n return null\r\n }\r\n return this.to(bp, direction)\r\n },\r\n getInterval: function(interval) {\r\n var _interval;\r\n var canvasOptions = this._canvasOptions;\r\n interval = null !== (_interval = interval) && void 0 !== _interval ? _interval : this._businessRange.interval;\r\n if (interval) {\r\n return Math.round(canvasOptions.ratioOfCanvasRange * interval)\r\n }\r\n return Math.round(canvasOptions.endPoint - canvasOptions.startPoint)\r\n },\r\n zoom: function(translate, scale, wholeRange) {\r\n var canvasOptions = this._canvasOptions;\r\n if (canvasOptions.rangeMinVisible.valueOf() === canvasOptions.rangeMaxVisible.valueOf() && 0 !== translate) {\r\n return this.zoomZeroLengthRange(translate, scale)\r\n }\r\n var startPoint = canvasOptions.startPoint;\r\n var endPoint = canvasOptions.endPoint;\r\n var isInverted = this.isInverted();\r\n var newStart = (startPoint + translate) / scale;\r\n var newEnd = (endPoint + translate) / scale;\r\n wholeRange = wholeRange || {};\r\n var minPoint = this.to(isInverted ? wholeRange.endValue : wholeRange.startValue);\r\n var maxPoint = this.to(isInverted ? wholeRange.startValue : wholeRange.endValue);\r\n var min;\r\n var max;\r\n if (minPoint > newStart) {\r\n newEnd -= newStart - minPoint;\r\n newStart = minPoint;\r\n min = isInverted ? wholeRange.endValue : wholeRange.startValue\r\n }\r\n if (maxPoint < newEnd) {\r\n newStart -= newEnd - maxPoint;\r\n newEnd = maxPoint;\r\n max = isInverted ? wholeRange.startValue : wholeRange.endValue\r\n }\r\n if (maxPoint - minPoint < newEnd - newStart) {\r\n newStart = minPoint;\r\n newEnd = maxPoint\r\n }\r\n translate = (endPoint - startPoint) * newStart / (newEnd - newStart) - startPoint;\r\n scale = (startPoint + translate) / newStart || 1;\r\n min = (0, _type.isDefined)(min) ? min : (0, _math.adjust)(this.from(newStart, 1));\r\n max = (0, _type.isDefined)(max) ? max : (0, _math.adjust)(this.from(newEnd, -1));\r\n if (min > max) {\r\n min = min > wholeRange.endValue ? wholeRange.endValue : min;\r\n max = max < wholeRange.startValue ? wholeRange.startValue : max\r\n } else {\r\n min = min < wholeRange.startValue ? wholeRange.startValue : min;\r\n max = max > wholeRange.endValue ? wholeRange.endValue : max\r\n }\r\n return {\r\n min: min,\r\n max: max,\r\n translate: (0, _math.adjust)(translate),\r\n scale: (0, _math.adjust)(scale)\r\n }\r\n },\r\n zoomZeroLengthRange: function(translate, scale) {\r\n var canvasOptions = this._canvasOptions;\r\n var min = canvasOptions.rangeMin;\r\n var max = canvasOptions.rangeMax;\r\n var correction = (max.valueOf() !== min.valueOf() ? max.valueOf() - min.valueOf() : _abs(canvasOptions.rangeMinVisible.valueOf() - min.valueOf())) / canvasOptions.canvasLength;\r\n var isDateTime = (0, _type.isDate)(max) || (0, _type.isDate)(min);\r\n var isLogarithmic = \"logarithmic\" === this._businessRange.axisType;\r\n var newMin = canvasOptions.rangeMinVisible.valueOf() - correction;\r\n var newMax = canvasOptions.rangeMaxVisible.valueOf() + correction;\r\n newMin = isLogarithmic ? (0, _math.adjust)((0, _utils.raiseToExt)(newMin, canvasOptions.base)) : isDateTime ? new Date(newMin) : newMin;\r\n newMax = isLogarithmic ? (0, _math.adjust)((0, _utils.raiseToExt)(newMax, canvasOptions.base)) : isDateTime ? new Date(newMax) : newMax;\r\n return {\r\n min: newMin,\r\n max: newMax,\r\n translate: translate,\r\n scale: scale\r\n }\r\n },\r\n getMinScale: function(zoom) {\r\n return zoom ? 1.1 : .9\r\n },\r\n getScale: function(val1, val2) {\r\n var canvasOptions = this._canvasOptions;\r\n if (canvasOptions.rangeMax === canvasOptions.rangeMin) {\r\n return 1\r\n }\r\n val1 = (0, _type.isDefined)(val1) ? this._fromValue(val1) : canvasOptions.rangeMin;\r\n val2 = (0, _type.isDefined)(val2) ? this._fromValue(val2) : canvasOptions.rangeMax;\r\n return (canvasOptions.rangeMax - canvasOptions.rangeMin) / Math.abs(val1 - val2)\r\n },\r\n isValid: function(value) {\r\n var co = this._canvasOptions;\r\n value = this._fromValue(value);\r\n return null !== value && !isNaN(value) && value.valueOf() + co.rangeDoubleError >= co.rangeMin && value.valueOf() - co.rangeDoubleError <= co.rangeMax\r\n },\r\n getCorrectValue: function(value, direction) {\r\n var that = this;\r\n var breaks = that._breaks;\r\n var prop;\r\n value = that._fromValue(value);\r\n if (that._breaks) {\r\n prop = that._checkValueAboutBreaks(breaks, value, \"trFrom\", \"trTo\", that._checkingMethodsAboutBreaks[0]);\r\n if (true === prop.inBreak) {\r\n return that._toValue(direction > 0 ? prop.break.trTo : prop.break.trFrom)\r\n }\r\n }\r\n return that._toValue(value)\r\n },\r\n to: function(bp, direction) {\r\n var range = this.getBusinessRange();\r\n if ((0, _type.isDefined)(range.maxVisible) && (0, _type.isDefined)(range.minVisible) && range.maxVisible.valueOf() === range.minVisible.valueOf()) {\r\n if (!(0, _type.isDefined)(bp) || range.maxVisible.valueOf() !== bp.valueOf()) {\r\n return null\r\n }\r\n return this.translateSpecialCase(0 === bp && this._options.shiftZeroValue ? \"canvas_position_default\" : \"canvas_position_middle\")\r\n }\r\n bp = this._fromValue(bp);\r\n var that = this;\r\n var canvasOptions = that._canvasOptions;\r\n var breaks = that._breaks;\r\n var prop = {\r\n length: 0\r\n };\r\n var commonBreakSize = 0;\r\n if (void 0 !== breaks) {\r\n prop = that._checkValueAboutBreaks(breaks, bp, \"trFrom\", \"trTo\", that._checkingMethodsAboutBreaks[0]);\r\n commonBreakSize = (0, _type.isDefined)(prop.breaksSize) ? prop.breaksSize : 0\r\n }\r\n if (true === prop.inBreak) {\r\n if (direction > 0) {\r\n return prop.break.start\r\n } else {\r\n if (direction < 0) {\r\n return prop.break.end\r\n } else {\r\n return null\r\n }\r\n }\r\n }\r\n return that._conversionValue(that._calculateProjection((bp - canvasOptions.rangeMinVisible - prop.length) * canvasOptions.ratioOfCanvasRange + commonBreakSize))\r\n },\r\n from: function(pos, direction) {\r\n var that = this;\r\n var breaks = that._breaks;\r\n var prop = {\r\n length: 0\r\n };\r\n var canvasOptions = that._canvasOptions;\r\n var startPoint = canvasOptions.startPoint;\r\n var commonBreakSize = 0;\r\n if (void 0 !== breaks) {\r\n prop = that._checkValueAboutBreaks(breaks, pos, \"start\", \"end\", that._checkingMethodsAboutBreaks[1]);\r\n commonBreakSize = (0, _type.isDefined)(prop.breaksSize) ? prop.breaksSize : 0\r\n }\r\n if (true === prop.inBreak) {\r\n if (direction > 0) {\r\n return that._toValue(prop.break.trTo)\r\n } else {\r\n if (direction < 0) {\r\n return that._toValue(prop.break.trFrom)\r\n } else {\r\n return null\r\n }\r\n }\r\n }\r\n return that._toValue(that._calculateUnProjection((pos - startPoint - commonBreakSize) / canvasOptions.ratioOfCanvasRange + prop.length))\r\n },\r\n isValueProlonged: false,\r\n getRange: function() {\r\n return [this._toValue(this._canvasOptions.rangeMin), this._toValue(this._canvasOptions.rangeMax)]\r\n },\r\n getScreenRange: function() {\r\n return [this._canvasOptions.startPoint, this._canvasOptions.endPoint]\r\n },\r\n add: function(value, diff, dir) {\r\n return this._add(value, diff, (this._businessRange.invert ? -1 : 1) * dir)\r\n },\r\n _add: function(value, diff, coeff) {\r\n return this._toValue(this._fromValue(value) + diff * coeff)\r\n },\r\n _fromValue: function(value) {\r\n return null !== value ? Number(value) : null\r\n },\r\n _toValue: function(value) {\r\n return null !== value ? Number(value) : null\r\n },\r\n ratioOfCanvasRange: function() {\r\n return this._canvasOptions.ratioOfCanvasRange\r\n }\r\n};\r\n","/**\r\n * DevExtreme (events/transform.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar mathUtils = require(\"../core/utils/math\");\r\nvar iteratorUtils = require(\"../core/utils/iterator\");\r\nvar errors = require(\"../core/errors\");\r\nvar eventUtils = require(\"./utils\");\r\nvar Emitter = require(\"./core/emitter\");\r\nvar registerEmitter = require(\"./core/emitter_registrator\");\r\nvar DX_PREFIX = \"dx\";\r\nvar TRANSFORM = \"transform\";\r\nvar TRANSLATE = \"translate\";\r\nvar ZOOM = \"zoom\";\r\nvar PINCH = \"pinch\";\r\nvar ROTATE = \"rotate\";\r\nvar START_POSTFIX = \"start\";\r\nvar UPDATE_POSTFIX = \"\";\r\nvar END_POSTFIX = \"end\";\r\nvar eventAliases = [];\r\nvar addAlias = function(eventName, eventArgs) {\r\n eventAliases.push({\r\n name: eventName,\r\n args: eventArgs\r\n })\r\n};\r\naddAlias(TRANSFORM, {\r\n scale: true,\r\n deltaScale: true,\r\n rotation: true,\r\n deltaRotation: true,\r\n translation: true,\r\n deltaTranslation: true\r\n});\r\naddAlias(TRANSLATE, {\r\n translation: true,\r\n deltaTranslation: true\r\n});\r\naddAlias(ZOOM, {\r\n scale: true,\r\n deltaScale: true\r\n});\r\naddAlias(PINCH, {\r\n scale: true,\r\n deltaScale: true\r\n});\r\naddAlias(ROTATE, {\r\n rotation: true,\r\n deltaRotation: true\r\n});\r\nvar getVector = function(first, second) {\r\n return {\r\n x: second.pageX - first.pageX,\r\n y: -second.pageY + first.pageY,\r\n centerX: .5 * (second.pageX + first.pageX),\r\n centerY: .5 * (second.pageY + first.pageY)\r\n }\r\n};\r\nvar getEventVector = function(e) {\r\n var pointers = e.pointers;\r\n return getVector(pointers[0], pointers[1])\r\n};\r\nvar getDistance = function(vector) {\r\n return Math.sqrt(vector.x * vector.x + vector.y * vector.y)\r\n};\r\nvar getScale = function(firstVector, secondVector) {\r\n return getDistance(firstVector) / getDistance(secondVector)\r\n};\r\nvar getRotation = function(firstVector, secondVector) {\r\n var scalarProduct = firstVector.x * secondVector.x + firstVector.y * secondVector.y;\r\n var distanceProduct = getDistance(firstVector) * getDistance(secondVector);\r\n if (0 === distanceProduct) {\r\n return 0\r\n }\r\n var sign = mathUtils.sign(firstVector.x * secondVector.y - secondVector.x * firstVector.y);\r\n var angle = Math.acos(mathUtils.fitIntoRange(scalarProduct / distanceProduct, -1, 1));\r\n return sign * angle\r\n};\r\nvar getTranslation = function(firstVector, secondVector) {\r\n return {\r\n x: firstVector.centerX - secondVector.centerX,\r\n y: firstVector.centerY - secondVector.centerY\r\n }\r\n};\r\nvar TransformEmitter = Emitter.inherit({\r\n configure: function(data, eventName) {\r\n if (eventName.indexOf(ZOOM) > -1) {\r\n errors.log(\"W0005\", eventName, \"15.1\", \"Use '\" + eventName.replace(ZOOM, PINCH) + \"' event instead\")\r\n }\r\n this.callBase(data)\r\n },\r\n validatePointers: function(e) {\r\n return eventUtils.hasTouches(e) > 1\r\n },\r\n start: function(e) {\r\n this._accept(e);\r\n var startVector = getEventVector(e);\r\n this._startVector = startVector;\r\n this._prevVector = startVector;\r\n this._fireEventAliases(START_POSTFIX, e)\r\n },\r\n move: function(e) {\r\n var currentVector = getEventVector(e);\r\n var eventArgs = this._getEventArgs(currentVector);\r\n this._fireEventAliases(UPDATE_POSTFIX, e, eventArgs);\r\n this._prevVector = currentVector\r\n },\r\n end: function(e) {\r\n var eventArgs = this._getEventArgs(this._prevVector);\r\n this._fireEventAliases(END_POSTFIX, e, eventArgs)\r\n },\r\n _getEventArgs: function(vector) {\r\n return {\r\n scale: getScale(vector, this._startVector),\r\n deltaScale: getScale(vector, this._prevVector),\r\n rotation: getRotation(vector, this._startVector),\r\n deltaRotation: getRotation(vector, this._prevVector),\r\n translation: getTranslation(vector, this._startVector),\r\n deltaTranslation: getTranslation(vector, this._prevVector)\r\n }\r\n },\r\n _fireEventAliases: function(eventPostfix, originalEvent, eventArgs) {\r\n eventArgs = eventArgs || {};\r\n iteratorUtils.each(eventAliases, function(_, eventAlias) {\r\n var args = {};\r\n iteratorUtils.each(eventAlias.args, function(name) {\r\n if (name in eventArgs) {\r\n args[name] = eventArgs[name]\r\n }\r\n });\r\n this._fireEvent(DX_PREFIX + eventAlias.name + eventPostfix, originalEvent, args)\r\n }.bind(this))\r\n }\r\n});\r\nvar eventNames = eventAliases.reduce(function(result, eventAlias) {\r\n [START_POSTFIX, UPDATE_POSTFIX, END_POSTFIX].forEach(function(eventPostfix) {\r\n result.push(DX_PREFIX + eventAlias.name + eventPostfix)\r\n });\r\n return result\r\n}, []);\r\nregisterEmitter({\r\n emitter: TransformEmitter,\r\n events: eventNames\r\n});\r\niteratorUtils.each(eventNames, function(_, eventName) {\r\n exports[eventName.substring(DX_PREFIX.length)] = eventName\r\n});\r\n","/**\r\n * DevExtreme (viz/axes/base_axis.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _smart_formatter = require(\"./smart_formatter\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _utils2 = _interopRequireDefault(_utils);\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _axes_constants = require(\"./axes_constants\");\r\nvar _axes_constants2 = _interopRequireDefault(_axes_constants);\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _format_helper = require(\"../../format_helper\");\r\nvar _format_helper2 = _interopRequireDefault(_format_helper);\r\nvar _parse_utils = require(\"../components/parse_utils\");\r\nvar _parse_utils2 = _interopRequireDefault(_parse_utils);\r\nvar _tick_generator = require(\"./tick_generator\");\r\nvar _tick_generator2 = _interopRequireDefault(_tick_generator);\r\nvar _translator2d = require(\"../translators/translator2d\");\r\nvar _translator2d2 = _interopRequireDefault(_translator2d);\r\nvar _range = require(\"../translators/range\");\r\nvar _tick = require(\"./tick\");\r\nvar _math2 = require(\"../../core/utils/math\");\r\nvar _date = require(\"../../core/utils/date\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _xy_axes = require(\"./xy_axes\");\r\nvar _xy_axes2 = _interopRequireDefault(_xy_axes);\r\nvar _polar_axes = require(\"./polar_axes\");\r\nvar _polar_axes2 = _interopRequireDefault(_polar_axes);\r\nvar _constant_line = require(\"./constant_line\");\r\nvar _constant_line2 = _interopRequireDefault(_constant_line);\r\nvar _strip = require(\"./strip\");\r\nvar _strip2 = _interopRequireDefault(_strip);\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 convertTicksToValues = _axes_constants2.default.convertTicksToValues;\r\nvar patchFontOptions = _utils2.default.patchFontOptions;\r\nvar getVizRangeObject = _utils2.default.getVizRangeObject;\r\nvar getLog = _utils2.default.getLogExt;\r\nvar raiseTo = _utils2.default.raiseToExt;\r\nvar valueOf = _utils2.default.valueOf;\r\nvar _math = Math;\r\nvar _abs = _math.abs;\r\nvar _max = _math.max;\r\nvar _min = _math.min;\r\nvar _isArray = Array.isArray;\r\nvar DEFAULT_AXIS_LABEL_SPACING = 5;\r\nvar MAX_GRID_BORDER_ADHENSION = 4;\r\nvar TOP = _axes_constants2.default.top;\r\nvar BOTTOM = _axes_constants2.default.bottom;\r\nvar LEFT = _axes_constants2.default.left;\r\nvar RIGHT = _axes_constants2.default.right;\r\nvar CENTER = _axes_constants2.default.center;\r\nvar KEEP = \"keep\";\r\nvar SHIFT = \"shift\";\r\nvar RESET = \"reset\";\r\nvar ROTATE = \"rotate\";\r\nvar DEFAULT_AXIS_DIVISION_FACTOR = 50;\r\nvar DEFAULT_MINOR_AXIS_DIVISION_FACTOR = 15;\r\nvar SCROLL_THRESHOLD = 5;\r\nvar MIN_BAR_MARGIN = 5;\r\nvar MAX_MARGIN_VALUE = .8;\r\nvar dateIntervals = {\r\n day: 864e5,\r\n week: 6048e5\r\n};\r\n\r\nfunction getTickGenerator(options, incidentOccurred, skipTickGeneration, rangeIsEmpty, adjustDivisionFactor, _ref) {\r\n var _options$workWeek;\r\n var allowNegatives = _ref.allowNegatives,\r\n linearThreshold = _ref.linearThreshold;\r\n return _tick_generator2.default.tickGenerator({\r\n axisType: options.type,\r\n dataType: options.dataType,\r\n logBase: options.logarithmBase,\r\n allowNegatives: allowNegatives,\r\n linearThreshold: linearThreshold,\r\n axisDivisionFactor: adjustDivisionFactor(options.axisDivisionFactor || DEFAULT_AXIS_DIVISION_FACTOR),\r\n minorAxisDivisionFactor: adjustDivisionFactor(options.minorAxisDivisionFactor || DEFAULT_MINOR_AXIS_DIVISION_FACTOR),\r\n numberMultipliers: options.numberMultipliers,\r\n calculateMinors: options.minorTick.visible || options.minorGrid.visible || options.calculateMinors,\r\n allowDecimals: options.allowDecimals,\r\n endOnTick: options.endOnTick,\r\n incidentOccurred: incidentOccurred,\r\n firstDayOfWeek: null === (_options$workWeek = options.workWeek) || void 0 === _options$workWeek ? void 0 : _options$workWeek[0],\r\n skipTickGeneration: skipTickGeneration,\r\n skipCalculationLimits: options.skipCalculationLimits,\r\n generateExtraTick: options.generateExtraTick,\r\n minTickInterval: options.minTickInterval,\r\n rangeIsEmpty: rangeIsEmpty\r\n })\r\n}\r\n\r\nfunction createMajorTick(axis, renderer, skippedCategory) {\r\n var options = axis.getOptions();\r\n return (0, _tick.tick)(axis, renderer, options.tick, options.grid, skippedCategory, false)\r\n}\r\n\r\nfunction createMinorTick(axis, renderer) {\r\n var options = axis.getOptions();\r\n return (0, _tick.tick)(axis, renderer, options.minorTick, options.minorGrid)\r\n}\r\n\r\nfunction createBoundaryTick(axis, renderer, isFirst) {\r\n var options = axis.getOptions();\r\n return (0, _tick.tick)(axis, renderer, (0, _extend.extend)({}, options.tick, {\r\n visible: options.showCustomBoundaryTicks\r\n }), options.grid, void 0, false, isFirst ? -1 : 1)\r\n}\r\n\r\nfunction callAction(elements, action, actionArgument1, actionArgument2) {\r\n (elements || []).forEach(function(e) {\r\n return e[action](actionArgument1, actionArgument2)\r\n })\r\n}\r\n\r\nfunction initTickCoords(ticks) {\r\n callAction(ticks, \"initCoords\")\r\n}\r\n\r\nfunction drawTickMarks(ticks, options) {\r\n callAction(ticks, \"drawMark\", options)\r\n}\r\n\r\nfunction drawGrids(ticks, drawLine) {\r\n callAction(ticks, \"drawGrid\", drawLine)\r\n}\r\n\r\nfunction updateTicksPosition(ticks, options, animate) {\r\n callAction(ticks, \"updateTickPosition\", options, animate)\r\n}\r\n\r\nfunction updateGridsPosition(ticks, animate) {\r\n callAction(ticks, \"updateGridPosition\", animate)\r\n}\r\nvar measureLabels = exports.measureLabels = function(items) {\r\n items.forEach(function(item) {\r\n item.labelBBox = item.label ? item.label.getBBox() : {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n }\r\n })\r\n};\r\n\r\nfunction cleanUpInvalidTicks(ticks) {\r\n var i = ticks.length - 1;\r\n for (i; i >= 0; i--) {\r\n if (!removeInvalidTick(ticks, i)) {\r\n break\r\n }\r\n }\r\n for (i = 0; i < ticks.length; i++) {\r\n if (removeInvalidTick(ticks, i)) {\r\n i--\r\n } else {\r\n break\r\n }\r\n }\r\n}\r\n\r\nfunction removeInvalidTick(ticks, i) {\r\n if (null === ticks[i].coords.x || null === ticks[i].coords.y) {\r\n ticks.splice(i, 1);\r\n return true\r\n }\r\n return false\r\n}\r\n\r\nfunction validateAxisOptions(options) {\r\n var _labelOptions$minSpac;\r\n var labelOptions = options.label;\r\n var position = options.position;\r\n var defaultPosition = options.isHorizontal ? BOTTOM : LEFT;\r\n var secondaryPosition = options.isHorizontal ? TOP : RIGHT;\r\n var labelPosition = labelOptions.position;\r\n if (position !== defaultPosition && position !== secondaryPosition) {\r\n position = defaultPosition\r\n }\r\n if (!labelPosition || \"outside\" === labelPosition) {\r\n labelPosition = position\r\n } else {\r\n if (\"inside\" === labelPosition) {\r\n var _TOP$BOTTOM$LEFT$RIGH;\r\n labelPosition = (_TOP$BOTTOM$LEFT$RIGH = {}, _defineProperty(_TOP$BOTTOM$LEFT$RIGH, TOP, BOTTOM), _defineProperty(_TOP$BOTTOM$LEFT$RIGH, BOTTOM, TOP), _defineProperty(_TOP$BOTTOM$LEFT$RIGH, LEFT, RIGHT), _defineProperty(_TOP$BOTTOM$LEFT$RIGH, RIGHT, LEFT), _TOP$BOTTOM$LEFT$RIGH)[position]\r\n }\r\n }\r\n if (labelPosition !== defaultPosition && labelPosition !== secondaryPosition) {\r\n labelPosition = position\r\n }\r\n if (labelOptions.alignment !== CENTER && !labelOptions.userAlignment) {\r\n var _TOP$BOTTOM$LEFT$RIGH2;\r\n labelOptions.alignment = (_TOP$BOTTOM$LEFT$RIGH2 = {}, _defineProperty(_TOP$BOTTOM$LEFT$RIGH2, TOP, CENTER), _defineProperty(_TOP$BOTTOM$LEFT$RIGH2, BOTTOM, CENTER), _defineProperty(_TOP$BOTTOM$LEFT$RIGH2, LEFT, RIGHT), _defineProperty(_TOP$BOTTOM$LEFT$RIGH2, RIGHT, LEFT), _TOP$BOTTOM$LEFT$RIGH2)[labelPosition]\r\n }\r\n options.position = position;\r\n labelOptions.position = labelPosition;\r\n options.hoverMode = options.hoverMode ? options.hoverMode.toLowerCase() : \"none\";\r\n labelOptions.minSpacing = null !== (_labelOptions$minSpac = labelOptions.minSpacing) && void 0 !== _labelOptions$minSpac ? _labelOptions$minSpac : DEFAULT_AXIS_LABEL_SPACING;\r\n options.type && (options.type = options.type.toLowerCase());\r\n options.argumentType && (options.argumentType = options.argumentType.toLowerCase());\r\n options.valueType && (options.valueType = options.valueType.toLowerCase())\r\n}\r\n\r\nfunction getOptimalAngle(boxes, labelOpt) {\r\n var angle = 180 * _math.asin((boxes[0].height + labelOpt.minSpacing) / (boxes[1].x - boxes[0].x)) / _math.PI;\r\n return angle < 45 ? -45 : -90\r\n}\r\n\r\nfunction updateLabels(ticks, step, func) {\r\n ticks.forEach(function(tick, index) {\r\n if (tick.label) {\r\n if (index % step !== 0) {\r\n tick.removeLabel()\r\n } else {\r\n if (func) {\r\n func(tick, index)\r\n }\r\n }\r\n }\r\n })\r\n}\r\n\r\nfunction getZoomBoundValue(optionValue, dataValue) {\r\n if (void 0 === optionValue) {\r\n return dataValue\r\n } else {\r\n if (null === optionValue) {\r\n return\r\n } else {\r\n return optionValue\r\n }\r\n }\r\n}\r\n\r\nfunction configureGenerator(options, axisDivisionFactor, viewPort, screenDelta, minTickInterval) {\r\n var tickGeneratorOptions = (0, _extend.extend)({}, options, {\r\n endOnTick: true,\r\n axisDivisionFactor: axisDivisionFactor,\r\n skipCalculationLimits: true,\r\n generateExtraTick: true,\r\n minTickInterval: minTickInterval\r\n });\r\n return function(tickInterval, skipTickGeneration, min, max, breaks) {\r\n return getTickGenerator(tickGeneratorOptions, _common.noop, skipTickGeneration, viewPort.isEmpty(), function(v) {\r\n return v\r\n }, viewPort)({\r\n min: min,\r\n max: max,\r\n categories: viewPort.categories,\r\n isSpacedMargin: viewPort.isSpacedMargin\r\n }, screenDelta, tickInterval, (0, _type.isDefined)(tickInterval), void 0, void 0, void 0, breaks)\r\n }\r\n}\r\n\r\nfunction convertVisualRangeObject(visualRange, optionValue) {\r\n return _utils2.default.convertVisualRangeObject(visualRange, !_isArray(optionValue))\r\n}\r\n\r\nfunction getConstantLineSharpDirection(coord, axisCanvas) {\r\n return Math.max(axisCanvas.start, axisCanvas.end) !== coord ? 1 : -1\r\n}\r\nvar calculateCanvasMargins = exports.calculateCanvasMargins = function(bBoxes, canvas) {\r\n var cLeft = canvas.left;\r\n var cTop = canvas.top;\r\n var cRight = canvas.width - canvas.right;\r\n var cBottom = canvas.height - canvas.bottom;\r\n return bBoxes.reduce(function(margins, bBox) {\r\n if (!bBox || bBox.isEmpty) {\r\n return margins\r\n }\r\n return {\r\n left: _max(margins.left, cLeft - bBox.x),\r\n top: _max(margins.top, cTop - bBox.y),\r\n right: _max(margins.right, bBox.x + bBox.width - cRight),\r\n bottom: _max(margins.bottom, bBox.y + bBox.height - cBottom)\r\n }\r\n }, {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0\r\n })\r\n};\r\nvar Axis = exports.Axis = function(renderSettings) {\r\n var that = this;\r\n that._renderer = renderSettings.renderer;\r\n that._incidentOccurred = renderSettings.incidentOccurred;\r\n that._eventTrigger = renderSettings.eventTrigger;\r\n that._stripsGroup = renderSettings.stripsGroup;\r\n that._labelAxesGroup = renderSettings.labelAxesGroup;\r\n that._constantLinesGroup = renderSettings.constantLinesGroup;\r\n that._scaleBreaksGroup = renderSettings.scaleBreaksGroup;\r\n that._axesContainerGroup = renderSettings.axesContainerGroup;\r\n that._gridContainerGroup = renderSettings.gridGroup;\r\n that._axisCssPrefix = renderSettings.widgetClass + \"-\" + (renderSettings.axisClass ? renderSettings.axisClass + \"-\" : \"\");\r\n that._setType(renderSettings.axisType, renderSettings.drawingType);\r\n that._createAxisGroups();\r\n that._translator = that._createTranslator();\r\n that.isArgumentAxis = renderSettings.isArgumentAxis;\r\n that._viewport = {};\r\n that._firstDrawing = true;\r\n that._initRange = {}\r\n};\r\nAxis.prototype = {\r\n constructor: Axis,\r\n _drawAxis: function() {\r\n var options = this._options;\r\n if (!options.visible) {\r\n return\r\n }\r\n this._axisElement = this._createAxisElement();\r\n this._updateAxisElementPosition();\r\n this._axisElement.attr({\r\n \"stroke-width\": options.width,\r\n stroke: options.color,\r\n \"stroke-opacity\": options.opacity\r\n }).sharp(this._getSharpParam(true), this.getAxisSharpDirection()).append(this._axisLineGroup)\r\n },\r\n _createPathElement: function(points, attr, sharpDirection) {\r\n return this.sharp(this._renderer.path(points, \"line\").attr(attr), sharpDirection)\r\n },\r\n sharp: function(svgElement) {\r\n var sharpDirection = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;\r\n return svgElement.sharp(this._getSharpParam(), sharpDirection)\r\n },\r\n customPositionIsAvailable: function() {\r\n return false\r\n },\r\n getOrthogonalAxis: _common.noop,\r\n getCustomPosition: _common.noop,\r\n getCustomBoundaryPosition: _common.noop,\r\n resolveOverlappingForCustomPositioning: _common.noop,\r\n hasCustomPosition: function() {\r\n return false\r\n },\r\n customPositionIsBoundaryOrthogonalAxis: function() {\r\n return false\r\n },\r\n getResolvedBoundaryPosition: function() {\r\n return this.getOptions().position\r\n },\r\n getAxisSharpDirection: function() {\r\n var position = this.getResolvedBoundaryPosition();\r\n return this.hasCustomPosition() || position !== BOTTOM && position !== RIGHT ? 1 : -1\r\n },\r\n getSharpDirectionByCoords: function(coords) {\r\n var canvas = this._getCanvasStartEnd();\r\n var maxCoord = Math.max(canvas.start, canvas.end);\r\n return this.getRadius ? 0 : maxCoord !== coords[this._isHorizontal ? \"x\" : \"y\"] ? 1 : -1\r\n },\r\n _getGridLineDrawer: function() {\r\n var that = this;\r\n return function(tick, gridStyle) {\r\n var grid = that._getGridPoints(tick.coords);\r\n if (grid.points) {\r\n return that._createPathElement(grid.points, gridStyle, that.getSharpDirectionByCoords(tick.coords))\r\n }\r\n return null\r\n }\r\n },\r\n _getGridPoints: function(coords) {\r\n var that = this;\r\n var isHorizontal = this._isHorizontal;\r\n var tickPositionField = isHorizontal ? \"x\" : \"y\";\r\n var orthogonalPositions = this._orthogonalPositions;\r\n var positionFrom = orthogonalPositions.start;\r\n var positionTo = orthogonalPositions.end;\r\n var borderOptions = that.borderOptions;\r\n var canvasStart = isHorizontal ? LEFT : TOP;\r\n var canvasEnd = isHorizontal ? RIGHT : BOTTOM;\r\n var axisCanvas = that.getCanvas();\r\n var canvas = {\r\n left: axisCanvas.left,\r\n right: axisCanvas.width - axisCanvas.right,\r\n top: axisCanvas.top,\r\n bottom: axisCanvas.height - axisCanvas.bottom\r\n };\r\n var firstBorderLinePosition = borderOptions.visible && borderOptions[canvasStart] ? canvas[canvasStart] : void 0;\r\n var lastBorderLinePosition = borderOptions.visible && borderOptions[canvasEnd] ? canvas[canvasEnd] : void 0;\r\n var minDelta = MAX_GRID_BORDER_ADHENSION + firstBorderLinePosition;\r\n var maxDelta = lastBorderLinePosition - MAX_GRID_BORDER_ADHENSION;\r\n if (that.areCoordsOutsideAxis(coords) || void 0 === coords[tickPositionField] || coords[tickPositionField] < minDelta || coords[tickPositionField] > maxDelta) {\r\n return {\r\n points: null\r\n }\r\n }\r\n return {\r\n points: isHorizontal ? null !== coords[tickPositionField] ? [coords[tickPositionField], positionFrom, coords[tickPositionField], positionTo] : null : null !== coords[tickPositionField] ? [positionFrom, coords[tickPositionField], positionTo, coords[tickPositionField]] : null\r\n }\r\n },\r\n _getConstantLinePos: function(parsedValue, canvasStart, canvasEnd) {\r\n var value = this._getTranslatedCoord(parsedValue);\r\n if (!(0, _type.isDefined)(value) || value < _min(canvasStart, canvasEnd) || value > _max(canvasStart, canvasEnd)) {\r\n return\r\n }\r\n return value\r\n },\r\n _getConstantLineGraphicAttributes: function(value) {\r\n var positionFrom = this._orthogonalPositions.start;\r\n var positionTo = this._orthogonalPositions.end;\r\n return {\r\n points: this._isHorizontal ? [value, positionFrom, value, positionTo] : [positionFrom, value, positionTo, value]\r\n }\r\n },\r\n _createConstantLine: function(value, attr) {\r\n return this._createPathElement(this._getConstantLineGraphicAttributes(value).points, attr, getConstantLineSharpDirection(value, this._getCanvasStartEnd()))\r\n },\r\n _drawConstantLineLabelText: function(text, x, y, _ref2, group) {\r\n var font = _ref2.font,\r\n cssClass = _ref2.cssClass;\r\n return this._renderer.text(text, x, y).css(patchFontOptions((0, _extend.extend)({}, this._options.label.font, font))).attr({\r\n align: \"center\",\r\n \"class\": cssClass\r\n }).append(group)\r\n },\r\n _drawConstantLineLabels: function(parsedValue, lineLabelOptions, value, group) {\r\n var _text;\r\n var that = this;\r\n var text = lineLabelOptions.text;\r\n var options = that._options;\r\n var labelOptions = options.label;\r\n that._checkAlignmentConstantLineLabels(lineLabelOptions);\r\n text = null !== (_text = text) && void 0 !== _text ? _text : that.formatLabel(parsedValue, labelOptions);\r\n var coords = that._getConstantLineLabelsCoords(value, lineLabelOptions);\r\n return that._drawConstantLineLabelText(text, coords.x, coords.y, lineLabelOptions, group)\r\n },\r\n _getStripPos: function(startValue, endValue, canvasStart, canvasEnd, range) {\r\n var isContinuous = !!(range.minVisible || range.maxVisible);\r\n var categories = (range.categories || []).reduce(function(result, cat) {\r\n result.push(cat.valueOf());\r\n return result\r\n }, []);\r\n var start;\r\n var end;\r\n var swap;\r\n var startCategoryIndex;\r\n var endCategoryIndex;\r\n if (!isContinuous) {\r\n if ((0, _type.isDefined)(startValue) && (0, _type.isDefined)(endValue)) {\r\n var parsedStartValue = this.parser(startValue);\r\n var parsedEndValue = this.parser(endValue);\r\n startCategoryIndex = (0, _array.inArray)((0, _type.isDefined)(parsedStartValue) ? parsedStartValue.valueOf() : void 0, categories);\r\n endCategoryIndex = (0, _array.inArray)((0, _type.isDefined)(parsedEndValue) ? parsedEndValue.valueOf() : void 0, categories);\r\n if (startCategoryIndex === -1 || endCategoryIndex === -1) {\r\n return {\r\n from: 0,\r\n to: 0,\r\n outOfCanvas: true\r\n }\r\n }\r\n if (startCategoryIndex > endCategoryIndex) {\r\n swap = endValue;\r\n endValue = startValue;\r\n startValue = swap\r\n }\r\n }\r\n }\r\n if ((0, _type.isDefined)(startValue)) {\r\n startValue = this.validateUnit(startValue, \"E2105\", \"strip\");\r\n start = this._getTranslatedCoord(startValue, -1)\r\n } else {\r\n start = canvasStart\r\n }\r\n if ((0, _type.isDefined)(endValue)) {\r\n endValue = this.validateUnit(endValue, \"E2105\", \"strip\");\r\n end = this._getTranslatedCoord(endValue, 1)\r\n } else {\r\n end = canvasEnd\r\n }\r\n var stripPosition = start < end ? {\r\n from: start,\r\n to: end\r\n } : {\r\n from: end,\r\n to: start\r\n };\r\n var visibleArea = this.getVisibleArea();\r\n if (stripPosition.from <= visibleArea[0] && stripPosition.to <= visibleArea[0] || stripPosition.from >= visibleArea[1] && stripPosition.to >= visibleArea[1]) {\r\n stripPosition.outOfCanvas = true\r\n }\r\n return stripPosition\r\n },\r\n _getStripGraphicAttributes: function(fromPoint, toPoint) {\r\n var x;\r\n var y;\r\n var width;\r\n var height;\r\n var orthogonalPositions = this._orthogonalPositions;\r\n var positionFrom = orthogonalPositions.start;\r\n var positionTo = orthogonalPositions.end;\r\n if (this._isHorizontal) {\r\n x = fromPoint;\r\n y = _min(positionFrom, positionTo);\r\n width = toPoint - fromPoint;\r\n height = _abs(positionFrom - positionTo)\r\n } else {\r\n x = _min(positionFrom, positionTo);\r\n y = fromPoint;\r\n width = _abs(positionFrom - positionTo);\r\n height = _abs(fromPoint - toPoint)\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 _createStrip: function(attrs) {\r\n return this._renderer.rect(attrs.x, attrs.y, attrs.width, attrs.height)\r\n },\r\n _adjustStripLabels: function() {\r\n var that = this;\r\n this._strips.forEach(function(strip) {\r\n if (strip.label) {\r\n strip.label.attr(that._getAdjustedStripLabelCoords(strip))\r\n }\r\n })\r\n },\r\n _adjustLabelsCoord: function(offset, maxWidth, checkCanvas) {\r\n var that = this;\r\n that._majorTicks.forEach(function(tick) {\r\n if (tick.label) {\r\n tick.updateMultilineTextAlignment();\r\n tick.label.attr(that._getLabelAdjustedCoord(tick, offset + (tick.labelOffset || 0), maxWidth, checkCanvas))\r\n }\r\n })\r\n },\r\n _adjustLabels: function(offset) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var positionsAreConsistent = options.position === options.label.position;\r\n var maxSize = that._majorTicks.reduce(function(size, tick) {\r\n if (!tick.label) {\r\n return size\r\n }\r\n var bBox = tick.labelRotationAngle ? _utils2.default.rotateBBox(tick.labelBBox, [tick.labelCoords.x, tick.labelCoords.y], -tick.labelRotationAngle) : tick.labelBBox;\r\n return {\r\n width: _max(size.width || 0, bBox.width),\r\n height: _max(size.height || 0, bBox.height),\r\n offset: _max(size.offset || 0, tick.labelOffset || 0)\r\n }\r\n }, {});\r\n var additionalOffset = positionsAreConsistent ? that._isHorizontal ? maxSize.height : maxSize.width : 0;\r\n that._adjustLabelsCoord(offset, maxSize.width);\r\n return offset + additionalOffset + (additionalOffset && that._options.label.indentFromAxis) + (positionsAreConsistent ? maxSize.offset : 0)\r\n },\r\n _getLabelAdjustedCoord: function(tick, offset, maxWidth) {\r\n offset = offset || 0;\r\n var that = this;\r\n var options = that._options;\r\n var box = _utils2.default.rotateBBox(tick.labelBBox, [tick.labelCoords.x, tick.labelCoords.y], -tick.labelRotationAngle || 0);\r\n var textAlign = tick.labelAlignment || options.label.alignment;\r\n var isDiscrete = \"discrete\" === that._options.type;\r\n var isFlatLabel = tick.labelRotationAngle % 90 === 0;\r\n var indentFromAxis = options.label.indentFromAxis;\r\n var labelPosition = options.label.position;\r\n var axisPosition = that._axisPosition;\r\n var labelCoords = tick.labelCoords;\r\n var labelX = labelCoords.x;\r\n var translateX;\r\n var translateY;\r\n if (that._isHorizontal) {\r\n if (labelPosition === BOTTOM) {\r\n translateY = axisPosition + indentFromAxis - box.y + offset\r\n } else {\r\n translateY = axisPosition - indentFromAxis - (box.y + box.height) - offset\r\n }\r\n if (textAlign === RIGHT) {\r\n translateX = isDiscrete && isFlatLabel ? tick.coords.x - (box.x + box.width) : labelX - box.x - box.width\r\n } else {\r\n if (textAlign === LEFT) {\r\n translateX = isDiscrete && isFlatLabel ? labelX - box.x - (tick.coords.x - labelX) : labelX - box.x\r\n } else {\r\n translateX = labelX - box.x - box.width / 2\r\n }\r\n }\r\n } else {\r\n translateY = labelCoords.y - box.y - box.height / 2;\r\n if (labelPosition === LEFT) {\r\n if (textAlign === LEFT) {\r\n translateX = axisPosition - indentFromAxis - maxWidth - box.x\r\n } else {\r\n if (textAlign === CENTER) {\r\n translateX = axisPosition - indentFromAxis - maxWidth / 2 - box.x - box.width / 2\r\n } else {\r\n translateX = axisPosition - indentFromAxis - box.x - box.width\r\n }\r\n }\r\n translateX -= offset\r\n } else {\r\n if (textAlign === RIGHT) {\r\n translateX = axisPosition + indentFromAxis + maxWidth - box.x - box.width\r\n } else {\r\n if (textAlign === CENTER) {\r\n translateX = axisPosition + indentFromAxis + maxWidth / 2 - box.x - box.width / 2\r\n } else {\r\n translateX = axisPosition + indentFromAxis - box.x\r\n }\r\n }\r\n translateX += offset\r\n }\r\n }\r\n return {\r\n translateX: translateX,\r\n translateY: translateY\r\n }\r\n },\r\n _createAxisConstantLineGroups: function() {\r\n var that = this;\r\n var renderer = that._renderer;\r\n var classSelector = that._axisCssPrefix;\r\n var constantLinesClass = classSelector + \"constant-lines\";\r\n var insideGroup = renderer.g().attr({\r\n \"class\": constantLinesClass\r\n });\r\n var outsideGroup1 = renderer.g().attr({\r\n \"class\": constantLinesClass\r\n });\r\n var outsideGroup2 = renderer.g().attr({\r\n \"class\": constantLinesClass\r\n });\r\n return {\r\n inside: insideGroup,\r\n outside1: outsideGroup1,\r\n left: outsideGroup1,\r\n top: outsideGroup1,\r\n outside2: outsideGroup2,\r\n right: outsideGroup2,\r\n bottom: outsideGroup2,\r\n remove: function() {\r\n this.inside.remove();\r\n this.outside1.remove();\r\n this.outside2.remove()\r\n },\r\n clear: function() {\r\n this.inside.clear();\r\n this.outside1.clear();\r\n this.outside2.clear()\r\n }\r\n }\r\n },\r\n _createAxisGroups: function() {\r\n var that = this;\r\n var renderer = that._renderer;\r\n var classSelector = that._axisCssPrefix;\r\n that._axisGroup = renderer.g().attr({\r\n \"class\": classSelector + \"axis\"\r\n });\r\n that._axisStripGroup = renderer.g().attr({\r\n \"class\": classSelector + \"strips\"\r\n });\r\n that._axisGridGroup = renderer.g().attr({\r\n \"class\": classSelector + \"grid\"\r\n });\r\n that._axisElementsGroup = renderer.g().attr({\r\n \"class\": classSelector + \"elements\"\r\n }).append(that._axisGroup);\r\n that._axisLineGroup = renderer.g().attr({\r\n \"class\": classSelector + \"line\"\r\n }).append(that._axisGroup);\r\n that._axisTitleGroup = renderer.g().attr({\r\n \"class\": classSelector + \"title\"\r\n }).append(that._axisGroup);\r\n that._axisConstantLineGroups = {\r\n above: that._createAxisConstantLineGroups(),\r\n under: that._createAxisConstantLineGroups()\r\n };\r\n that._axisStripLabelGroup = renderer.g().attr({\r\n \"class\": classSelector + \"axis-labels\"\r\n })\r\n },\r\n _clearAxisGroups: function() {\r\n var that = this;\r\n that._axisGroup.remove();\r\n that._axisStripGroup.remove();\r\n that._axisStripLabelGroup.remove();\r\n that._axisConstantLineGroups.above.remove();\r\n that._axisConstantLineGroups.under.remove();\r\n that._axisGridGroup.remove();\r\n that._axisTitleGroup.clear();\r\n that._axisElementsGroup.clear();\r\n that._axisLineGroup && that._axisLineGroup.clear();\r\n that._axisStripGroup && that._axisStripGroup.clear();\r\n that._axisGridGroup && that._axisGridGroup.clear();\r\n that._axisConstantLineGroups.above.clear();\r\n that._axisConstantLineGroups.under.clear();\r\n that._axisStripLabelGroup && that._axisStripLabelGroup.clear()\r\n },\r\n _getLabelFormatObject: function(value, labelOptions, range, point, tickInterval, ticks) {\r\n range = range || this._getViewportRange();\r\n var formatObject = {\r\n value: value,\r\n valueText: (0, _smart_formatter.smartFormatter)(value, {\r\n labelOptions: labelOptions,\r\n ticks: ticks || convertTicksToValues(this._majorTicks),\r\n tickInterval: null !== tickInterval && void 0 !== tickInterval ? tickInterval : this._tickInterval,\r\n dataType: this._options.dataType,\r\n logarithmBase: this._options.logarithmBase,\r\n type: this._options.type,\r\n showTransition: !this._options.marker.visible,\r\n point: point\r\n }) || \"\",\r\n min: range.minVisible,\r\n max: range.maxVisible\r\n };\r\n if (point) {\r\n formatObject.point = point\r\n }\r\n return formatObject\r\n },\r\n formatLabel: function(value, labelOptions, range, point, tickInterval, ticks) {\r\n var formatObject = this._getLabelFormatObject(value, labelOptions, range, point, tickInterval, ticks);\r\n return (0, _type.isFunction)(labelOptions.customizeText) ? labelOptions.customizeText.call(formatObject, formatObject) : formatObject.valueText\r\n },\r\n formatHint: function(value, labelOptions, range) {\r\n var formatObject = this._getLabelFormatObject(value, labelOptions, range);\r\n return (0, _type.isFunction)(labelOptions.customizeHint) ? labelOptions.customizeHint.call(formatObject, formatObject) : void 0\r\n },\r\n formatRange: function(startValue, endValue, interval) {\r\n return (0, _smart_formatter.formatRange)(startValue, endValue, interval, this.getOptions())\r\n },\r\n _setTickOffset: function() {\r\n var options = this._options;\r\n var discreteAxisDivisionMode = options.discreteAxisDivisionMode;\r\n this._tickOffset = +(\"crossLabels\" !== discreteAxisDivisionMode || !discreteAxisDivisionMode)\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 getMargins: function() {\r\n var that = this;\r\n if (that.hasCustomPosition()) {\r\n return {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0\r\n }\r\n }\r\n var options = that._options;\r\n var position = options.position;\r\n var placeholderSize = options.placeholderSize;\r\n var canvas = that.getCanvas();\r\n var cLeft = canvas.left;\r\n var cTop = canvas.top;\r\n var cRight = canvas.width - canvas.right;\r\n var cBottom = canvas.height - canvas.bottom;\r\n var edgeMarginCorrection = _max(options.grid.visible && options.grid.width || 0, options.tick.visible && options.tick.width || 0);\r\n var constantLineAboveSeries = that._axisConstantLineGroups.above;\r\n var constantLineUnderSeries = that._axisConstantLineGroups.under;\r\n var boxes = [that._axisElementsGroup, constantLineAboveSeries.outside1, constantLineAboveSeries.outside2, constantLineUnderSeries.outside1, constantLineUnderSeries.outside2, that._axisLineGroup].map(function(group) {\r\n return group && group.getBBox()\r\n }).concat(function(group) {\r\n var box = group && group.getBBox();\r\n if (!box || box.isEmpty) {\r\n return box\r\n }\r\n if (that._isHorizontal) {\r\n box.x = cLeft;\r\n box.width = cRight - cLeft\r\n } else {\r\n box.y = cTop;\r\n box.height = cBottom - cTop\r\n }\r\n return box\r\n }(that._axisTitleGroup));\r\n var margins = calculateCanvasMargins(boxes, canvas);\r\n margins[position] += options.crosshairMargin;\r\n if (placeholderSize) {\r\n margins[position] = placeholderSize\r\n }\r\n if (edgeMarginCorrection) {\r\n if (that._isHorizontal && canvas.right < edgeMarginCorrection && margins.right < edgeMarginCorrection) {\r\n margins.right = edgeMarginCorrection\r\n }\r\n if (!that._isHorizontal && canvas.bottom < edgeMarginCorrection && margins.bottom < edgeMarginCorrection) {\r\n margins.bottom = edgeMarginCorrection\r\n }\r\n }\r\n return margins\r\n },\r\n validateUnit: function(unit, idError, parameters) {\r\n var that = this;\r\n unit = that.parser(unit);\r\n if (void 0 === unit && idError) {\r\n that._incidentOccurred(idError, [parameters])\r\n }\r\n return unit\r\n },\r\n _setType: function(axisType, drawingType) {\r\n var that = this;\r\n var axisTypeMethods;\r\n switch (axisType) {\r\n case \"xyAxes\":\r\n axisTypeMethods = _xy_axes2.default;\r\n break;\r\n case \"polarAxes\":\r\n axisTypeMethods = _polar_axes2.default\r\n }(0, _extend.extend)(that, axisTypeMethods[drawingType])\r\n },\r\n _getSharpParam: function() {\r\n return true\r\n },\r\n _disposeBreaksGroup: _common.noop,\r\n dispose: function() {\r\n var that = this;\r\n [that._axisElementsGroup, that._axisStripGroup, that._axisGroup].forEach(function(g) {\r\n g.dispose()\r\n });\r\n that._strips = that._title = null;\r\n that._axisStripGroup = that._axisConstantLineGroups = that._axisStripLabelGroup = that._axisBreaksGroup = null;\r\n that._axisLineGroup = that._axisElementsGroup = that._axisGridGroup = null;\r\n that._axisGroup = that._axisTitleGroup = null;\r\n that._axesContainerGroup = that._stripsGroup = that._constantLinesGroup = null;\r\n that._renderer = that._options = that._textOptions = that._textFontStyles = null;\r\n that._translator = null;\r\n that._majorTicks = that._minorTicks = null;\r\n that._disposeBreaksGroup()\r\n },\r\n getOptions: function() {\r\n return this._options\r\n },\r\n setPane: function(pane) {\r\n this.pane = pane;\r\n this._options.pane = pane\r\n },\r\n setTypes: function(type, axisType, typeSelector) {\r\n this._options.type = type || this._options.type;\r\n this._options[typeSelector] = axisType || this._options[typeSelector];\r\n this._updateTranslator()\r\n },\r\n resetTypes: function(typeSelector) {\r\n this._options.type = this._initTypes.type;\r\n this._options[typeSelector] = this._initTypes[typeSelector]\r\n },\r\n getTranslator: function() {\r\n return this._translator\r\n },\r\n updateOptions: function(options) {\r\n var that = this;\r\n var labelOpt = options.label;\r\n validateAxisOptions(options);\r\n that._options = options;\r\n options.tick = options.tick || {};\r\n options.minorTick = options.minorTick || {};\r\n options.grid = options.grid || {};\r\n options.minorGrid = options.minorGrid || {};\r\n options.title = options.title || {};\r\n options.marker = options.marker || {};\r\n that._initTypes = {\r\n type: options.type,\r\n argumentType: options.argumentType,\r\n valueType: options.valueType\r\n };\r\n that._setTickOffset();\r\n that._isHorizontal = options.isHorizontal;\r\n that.pane = options.pane;\r\n that.name = options.name;\r\n that.priority = options.priority;\r\n that._hasLabelFormat = \"\" !== labelOpt.format && (0, _type.isDefined)(labelOpt.format);\r\n that._textOptions = {\r\n opacity: labelOpt.opacity,\r\n align: \"center\",\r\n \"class\": labelOpt.cssClass\r\n };\r\n that._textFontStyles = _utils2.default.patchFontOptions(labelOpt.font);\r\n if (options.type === _axes_constants2.default.logarithmic) {\r\n if (options.logarithmBaseError) {\r\n that._incidentOccurred(\"E2104\");\r\n delete options.logarithmBaseError\r\n }\r\n }\r\n that._updateTranslator();\r\n that._createConstantLines();\r\n that._strips = (options.strips || []).map(function(o) {\r\n return (0, _strip2.default)(that, o)\r\n });\r\n that._majorTicks = that._minorTicks = null;\r\n that._firstDrawing = true\r\n },\r\n calculateInterval: function(value, prevValue) {\r\n var options = this._options;\r\n if (!options || options.type !== _axes_constants2.default.logarithmic) {\r\n return _abs(value - prevValue)\r\n }\r\n var _Range = new _range.Range(this.getTranslator().getBusinessRange()),\r\n allowNegatives = _Range.allowNegatives,\r\n linearThreshold = _Range.linearThreshold;\r\n return _abs(getLog(value, options.logarithmBase, allowNegatives, linearThreshold) - getLog(prevValue, options.logarithmBase, allowNegatives, linearThreshold))\r\n },\r\n getCanvasRange: function() {\r\n var translator = this._translator;\r\n return {\r\n startValue: translator.from(translator.translate(\"canvas_position_start\")),\r\n endValue: translator.from(translator.translate(\"canvas_position_end\"))\r\n }\r\n },\r\n _processCanvas: function(canvas) {\r\n return canvas\r\n },\r\n updateCanvas: function(canvas, canvasRedesign) {\r\n if (!canvasRedesign) {\r\n var positions = this._orthogonalPositions = {\r\n start: !this._isHorizontal ? canvas.left : canvas.top,\r\n end: !this._isHorizontal ? canvas.width - canvas.right : canvas.height - canvas.bottom\r\n };\r\n positions.center = positions.start + (positions.end - positions.start) / 2\r\n } else {\r\n this._orthogonalPositions = null\r\n }\r\n this._canvas = canvas;\r\n this._translator.updateCanvas(this._processCanvas(canvas));\r\n this._initAxisPositions()\r\n },\r\n getCanvas: function() {\r\n return this._canvas\r\n },\r\n getAxisShift: function() {\r\n return this._axisShift || 0\r\n },\r\n hideTitle: function() {\r\n var that = this;\r\n if (that._options.title.text) {\r\n that._incidentOccurred(\"W2105\", [that._isHorizontal ? \"horizontal\" : \"vertical\"]);\r\n that._axisTitleGroup.clear()\r\n }\r\n },\r\n getTitle: function() {\r\n return this._title\r\n },\r\n hideOuterElements: function() {\r\n var that = this;\r\n var options = that._options;\r\n if ((options.label.visible || that._outsideConstantLines.length) && !that._translator.getBusinessRange().isEmpty()) {\r\n that._incidentOccurred(\"W2106\", [that._isHorizontal ? \"horizontal\" : \"vertical\"]);\r\n that._axisElementsGroup.clear();\r\n callAction(that._outsideConstantLines, \"removeLabel\")\r\n }\r\n },\r\n adjustViewport: function(businessRange) {\r\n var that = this;\r\n var options = that._options;\r\n var isDiscrete = options.type === _axes_constants2.default.discrete;\r\n var categories = that._seriesData && that._seriesData.categories || [];\r\n var wholeRange = that.adjustRange(getVizRangeObject(options.wholeRange));\r\n var visualRange = that.getViewport() || {};\r\n var result = new _range.Range(businessRange);\r\n that._addConstantLinesToRange(result, \"minVisible\", \"maxVisible\");\r\n var minDefined = (0, _type.isDefined)(visualRange.startValue);\r\n var maxDefined = (0, _type.isDefined)(visualRange.endValue);\r\n if (!isDiscrete) {\r\n minDefined = minDefined && (!(0, _type.isDefined)(wholeRange.endValue) || visualRange.startValue < wholeRange.endValue);\r\n maxDefined = maxDefined && (!(0, _type.isDefined)(wholeRange.startValue) || visualRange.endValue > wholeRange.startValue)\r\n }\r\n var minVisible = minDefined ? visualRange.startValue : result.minVisible;\r\n var maxVisible = maxDefined ? visualRange.endValue : result.maxVisible;\r\n if (!isDiscrete) {\r\n var _wholeRange$startValu, _wholeRange$endValue;\r\n result.min = null !== (_wholeRange$startValu = wholeRange.startValue) && void 0 !== _wholeRange$startValu ? _wholeRange$startValu : result.min;\r\n result.max = null !== (_wholeRange$endValue = wholeRange.endValue) && void 0 !== _wholeRange$endValue ? _wholeRange$endValue : result.max\r\n } else {\r\n var categoriesInfo = _utils2.default.getCategoriesInfo(categories, wholeRange.startValue, wholeRange.endValue);\r\n categories = categoriesInfo.categories;\r\n result.categories = categories\r\n }\r\n var adjustedVisualRange = _utils2.default.adjustVisualRange({\r\n axisType: options.type,\r\n dataType: options.dataType,\r\n base: options.logarithmBase\r\n }, {\r\n startValue: minDefined ? visualRange.startValue : void 0,\r\n endValue: maxDefined ? visualRange.endValue : void 0,\r\n length: visualRange.length\r\n }, {\r\n categories: categories,\r\n min: wholeRange.startValue,\r\n max: wholeRange.endValue\r\n }, {\r\n categories: categories,\r\n min: minVisible,\r\n max: maxVisible\r\n });\r\n result.minVisible = adjustedVisualRange.startValue;\r\n result.maxVisible = adjustedVisualRange.endValue;\r\n !(0, _type.isDefined)(result.min) && (result.min = result.minVisible);\r\n !(0, _type.isDefined)(result.max) && (result.max = result.maxVisible);\r\n result.addRange({});\r\n return result\r\n },\r\n adjustRange: function(range) {\r\n range = range || {};\r\n var isDiscrete = this._options.type === _axes_constants2.default.discrete;\r\n var isLogarithmic = this._options.type === _axes_constants2.default.logarithmic;\r\n var disabledNegatives = false === this._options.allowNegatives;\r\n if (isLogarithmic) {\r\n range.startValue = disabledNegatives && range.startValue <= 0 ? null : range.startValue;\r\n range.endValue = disabledNegatives && range.endValue <= 0 ? null : range.endValue\r\n }\r\n if (!isDiscrete && (0, _type.isDefined)(range.startValue) && (0, _type.isDefined)(range.endValue) && range.startValue > range.endValue) {\r\n var tmp = range.endValue;\r\n range.endValue = range.startValue;\r\n range.startValue = tmp\r\n }\r\n return range\r\n },\r\n _getVisualRangeUpdateMode: function(viewport, newRange, oppositeValue) {\r\n var value = this._options.visualRangeUpdateMode;\r\n var translator = this._translator;\r\n var range = this._seriesData;\r\n if (this.isArgumentAxis) {\r\n if ([SHIFT, KEEP, RESET].indexOf(value) === -1) {\r\n if (range.axisType === _axes_constants2.default.discrete) {\r\n var categories = range.categories;\r\n var newCategories = newRange.categories;\r\n var visualRange = this.visualRange();\r\n if (categories && newCategories && categories.length && newCategories.map(function(c) {\r\n return c.valueOf()\r\n }).join(\",\").indexOf(categories.map(function(c) {\r\n return c.valueOf()\r\n }).join(\",\")) !== -1 && (visualRange.startValue.valueOf() !== categories[0].valueOf() || visualRange.endValue.valueOf() !== categories[categories.length - 1].valueOf())) {\r\n value = KEEP\r\n } else {\r\n value = RESET\r\n }\r\n } else {\r\n var minPoint = translator.translate(range.min);\r\n var minVisiblePoint = translator.translate(viewport.startValue);\r\n var maxPoint = translator.translate(range.max);\r\n var maxVisiblePoint = translator.translate(viewport.endValue);\r\n if (minPoint === minVisiblePoint && maxPoint === maxVisiblePoint) {\r\n value = RESET\r\n } else {\r\n if (minPoint !== minVisiblePoint && maxPoint === maxVisiblePoint) {\r\n value = SHIFT\r\n } else {\r\n value = KEEP\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n if ([KEEP, RESET].indexOf(value) === -1) {\r\n if (oppositeValue === KEEP) {\r\n value = KEEP\r\n } else {\r\n value = RESET\r\n }\r\n }\r\n }\r\n return value\r\n },\r\n _handleBusinessRangeChanged: function(oppositeVisualRangeUpdateMode, axisReinitialized, newRange) {\r\n var that = this;\r\n var visualRange = this.visualRange();\r\n if (axisReinitialized || that._translator.getBusinessRange().isEmpty()) {\r\n return\r\n }\r\n var visualRangeUpdateMode = that._lastVisualRangeUpdateMode = that._getVisualRangeUpdateMode(visualRange, newRange, oppositeVisualRangeUpdateMode);\r\n if (!that.isArgumentAxis) {\r\n var viewport = that.getViewport();\r\n if (!(0, _type.isDefined)(viewport.startValue) && !(0, _type.isDefined)(viewport.endValue) && !(0, _type.isDefined)(viewport.length)) {\r\n visualRangeUpdateMode = RESET\r\n }\r\n }\r\n that._prevDataWasEmpty && (visualRangeUpdateMode = KEEP);\r\n if (visualRangeUpdateMode === KEEP) {\r\n that._setVisualRange([visualRange.startValue, visualRange.endValue])\r\n }\r\n if (visualRangeUpdateMode === RESET) {\r\n that._setVisualRange([null, null])\r\n }\r\n if (visualRangeUpdateMode === SHIFT) {\r\n that._setVisualRange({\r\n length: that.getVisualRangeLength()\r\n })\r\n }\r\n },\r\n getVisualRangeLength: function(range) {\r\n var currentBusinessRange = range || this._translator.getBusinessRange();\r\n var type = this._options.type;\r\n var length;\r\n if (type === _axes_constants2.default.logarithmic) {\r\n length = (0, _math2.adjust)(this.calculateInterval(currentBusinessRange.maxVisible, currentBusinessRange.minVisible))\r\n } else {\r\n if (type === _axes_constants2.default.discrete) {\r\n var categoriesInfo = _utils2.default.getCategoriesInfo(currentBusinessRange.categories, currentBusinessRange.minVisible, currentBusinessRange.maxVisible);\r\n length = categoriesInfo.categories.length\r\n } else {\r\n length = currentBusinessRange.maxVisible - currentBusinessRange.minVisible\r\n }\r\n }\r\n return length\r\n },\r\n getVisualRangeCenter: function(range) {\r\n var businessRange = this._translator.getBusinessRange();\r\n var currentBusinessRange = range || businessRange;\r\n var _this$_options = this._options,\r\n type = _this$_options.type,\r\n logarithmBase = _this$_options.logarithmBase;\r\n var center;\r\n if (!(0, _type.isDefined)(currentBusinessRange.minVisible) || !(0, _type.isDefined)(currentBusinessRange.maxVisible)) {\r\n return\r\n }\r\n if (type === _axes_constants2.default.logarithmic) {\r\n var allowNegatives = currentBusinessRange.allowNegatives,\r\n linearThreshold = currentBusinessRange.linearThreshold,\r\n minVisible = currentBusinessRange.minVisible,\r\n maxVisible = currentBusinessRange.maxVisible;\r\n center = raiseTo((0, _math2.adjust)(getLog(maxVisible, logarithmBase, allowNegatives, linearThreshold) + getLog(minVisible, logarithmBase, allowNegatives, linearThreshold)) / 2, logarithmBase, allowNegatives, linearThreshold)\r\n } else {\r\n if (type === _axes_constants2.default.discrete) {\r\n var categoriesInfo = _utils2.default.getCategoriesInfo(currentBusinessRange.categories, currentBusinessRange.minVisible, currentBusinessRange.maxVisible);\r\n var index = Math.ceil(categoriesInfo.categories.length / 2) - 1;\r\n center = businessRange.categories.indexOf(categoriesInfo.categories[index])\r\n } else {\r\n center = (currentBusinessRange.maxVisible.valueOf() + currentBusinessRange.minVisible.valueOf()) / 2\r\n }\r\n }\r\n return center\r\n },\r\n setBusinessRange: function(range, axisReinitialized, oppositeVisualRangeUpdateMode, argCategories) {\r\n var _that$_seriesData$min, _that$_seriesData$max;\r\n var that = this;\r\n var options = that._options;\r\n var isDiscrete = options.type === _axes_constants2.default.discrete;\r\n that._handleBusinessRangeChanged(oppositeVisualRangeUpdateMode, axisReinitialized, range);\r\n that._seriesData = new _range.Range(range);\r\n var dataIsEmpty = that._seriesData.isEmpty();\r\n that._prevDataWasEmpty = dataIsEmpty;\r\n that._seriesData.addRange({\r\n categories: options.categories,\r\n dataType: options.dataType,\r\n axisType: options.type,\r\n base: options.logarithmBase,\r\n invert: options.inverted\r\n });\r\n if (options.type === _axes_constants2.default.logarithmic) {\r\n that._seriesData.addRange({\r\n allowNegatives: void 0 !== options.allowNegatives ? options.allowNegatives : range.min <= 0\r\n });\r\n if (!isNaN(options.linearThreshold)) {\r\n that._seriesData.linearThreshold = options.linearThreshold\r\n }\r\n }\r\n if (!isDiscrete) {\r\n if (!(0, _type.isDefined)(that._seriesData.min) && !(0, _type.isDefined)(that._seriesData.max)) {\r\n var visualRange = that.getViewport();\r\n visualRange && that._seriesData.addRange({\r\n min: visualRange.startValue,\r\n max: visualRange.endValue\r\n })\r\n }\r\n var synchronizedValue = options.synchronizedValue;\r\n if ((0, _type.isDefined)(synchronizedValue)) {\r\n that._seriesData.addRange({\r\n min: synchronizedValue,\r\n max: synchronizedValue\r\n })\r\n }\r\n }\r\n that._seriesData.minVisible = null !== (_that$_seriesData$min = that._seriesData.minVisible) && void 0 !== _that$_seriesData$min ? _that$_seriesData$min : that._seriesData.min;\r\n that._seriesData.maxVisible = null !== (_that$_seriesData$max = that._seriesData.maxVisible) && void 0 !== _that$_seriesData$max ? _that$_seriesData$max : that._seriesData.max;\r\n if (!that.isArgumentAxis && options.showZero) {\r\n that._seriesData.correctValueZeroLevel()\r\n }\r\n that._seriesData.sortCategories(that.getCategoriesSorter(argCategories));\r\n that._seriesData.breaks = that._initialBreaks = that._getScaleBreaks(options, that._seriesData, that._series, that.isArgumentAxis);\r\n that._translator.updateBusinessRange(that._getViewportRange())\r\n },\r\n _addConstantLinesToRange: function(dataRange, minValueField, maxValueField) {\r\n this._outsideConstantLines.concat(this._insideConstantLines || []).forEach(function(cl) {\r\n if (cl.options.extendAxis) {\r\n var _dataRange$addRange;\r\n var value = cl.getParsedValue();\r\n dataRange.addRange((_dataRange$addRange = {}, _defineProperty(_dataRange$addRange, minValueField, value), _defineProperty(_dataRange$addRange, maxValueField, value), _dataRange$addRange))\r\n }\r\n })\r\n },\r\n setGroupSeries: function(series) {\r\n this._series = series\r\n },\r\n getLabelsPosition: function() {\r\n var that = this;\r\n var options = that._options;\r\n var position = options.position;\r\n var labelShift = options.label.indentFromAxis + (that._axisShift || 0) + that._constantLabelOffset;\r\n var axisPosition = that._axisPosition;\r\n return position === TOP || position === LEFT ? axisPosition - labelShift : axisPosition + labelShift\r\n },\r\n getFormattedValue: function(value, options, point) {\r\n var labelOptions = this._options.label;\r\n return (0, _type.isDefined)(value) ? this.formatLabel(value, (0, _extend.extend)(true, {}, labelOptions, options), void 0, point) : null\r\n },\r\n _getBoundaryTicks: function(majors, viewPort) {\r\n var that = this;\r\n var length = majors.length;\r\n var options = that._options;\r\n var customBounds = options.customBoundTicks;\r\n var min = viewPort.minVisible;\r\n var max = viewPort.maxVisible;\r\n var addMinMax = options.showCustomBoundaryTicks ? that._boundaryTicksVisibility : {};\r\n var boundaryTicks = [];\r\n if (options.type === _axes_constants2.default.discrete) {\r\n if (that._tickOffset && 0 !== majors.length) {\r\n boundaryTicks = [majors[0], majors[majors.length - 1]]\r\n }\r\n } else {\r\n if (customBounds) {\r\n if (addMinMax.min && (0, _type.isDefined)(customBounds[0])) {\r\n boundaryTicks.push(customBounds[0])\r\n }\r\n if (addMinMax.max && (0, _type.isDefined)(customBounds[1])) {\r\n boundaryTicks.push(customBounds[1])\r\n }\r\n } else {\r\n if (addMinMax.min && (0 === length || majors[0] > min)) {\r\n boundaryTicks.push(min)\r\n }\r\n if (addMinMax.max && (0 === length || majors[length - 1] < max)) {\r\n boundaryTicks.push(max)\r\n }\r\n }\r\n }\r\n return boundaryTicks\r\n },\r\n setPercentLabelFormat: function() {\r\n if (!this._hasLabelFormat) {\r\n this._options.label.format = \"percent\"\r\n }\r\n },\r\n resetAutoLabelFormat: function() {\r\n if (!this._hasLabelFormat) {\r\n delete this._options.label.format\r\n }\r\n },\r\n getMultipleAxesSpacing: function() {\r\n return this._options.multipleAxesSpacing || 0\r\n },\r\n getTicksValues: function() {\r\n return {\r\n majorTicksValues: convertTicksToValues(this._majorTicks),\r\n minorTicksValues: convertTicksToValues(this._minorTicks)\r\n }\r\n },\r\n estimateTickInterval: function(canvas) {\r\n var that = this;\r\n that.updateCanvas(canvas);\r\n return that._tickInterval !== that._getTicks(that._getViewportRange(), _common.noop, true).tickInterval\r\n },\r\n setTicks: function(ticks) {\r\n var majors = ticks.majorTicks || [];\r\n this._majorTicks = majors.map(createMajorTick(this, this._renderer, this._getSkippedCategory(majors)));\r\n this._minorTicks = (ticks.minorTicks || []).map(createMinorTick(this, this._renderer));\r\n this._isSynchronized = true\r\n },\r\n _adjustDivisionFactor: function(val) {\r\n return val\r\n },\r\n _getTicks: function(viewPort, incidentOccurred, skipTickGeneration) {\r\n var that = this;\r\n var options = that._options;\r\n var customTicks = options.customTicks;\r\n var customMinorTicks = options.customMinorTicks;\r\n return getTickGenerator(options, incidentOccurred || that._incidentOccurred, skipTickGeneration, that._translator.getBusinessRange().isEmpty(), that._adjustDivisionFactor.bind(that), viewPort)({\r\n min: viewPort.minVisible,\r\n max: viewPort.maxVisible,\r\n categories: viewPort.categories,\r\n isSpacedMargin: viewPort.isSpacedMargin\r\n }, that._getScreenDelta(), options.tickInterval, \"ignore\" === options.label.overlappingBehavior || options.forceUserTickInterval, {\r\n majors: customTicks,\r\n minors: customMinorTicks\r\n }, options.minorTickInterval, options.minorTickCount, that._initialBreaks)\r\n },\r\n _createTicksAndLabelFormat: function(range, incidentOccurred) {\r\n var options = this._options;\r\n var ticks = this._getTicks(range, incidentOccurred, false);\r\n if (!range.isEmpty() && options.type === _axes_constants2.default.discrete && \"datetime\" === options.dataType && !this._hasLabelFormat && ticks.ticks.length) {\r\n options.label.format = _format_helper2.default.getDateFormatByTicks(ticks.ticks)\r\n }\r\n return ticks\r\n },\r\n getAggregationInfo: function(useAllAggregatedPoints, range) {\r\n var _visualRange$startVal, _visualRange$endValue, _that$_seriesData;\r\n var that = this;\r\n var options = that._options;\r\n var marginOptions = that._marginOptions;\r\n var businessRange = new _range.Range(that.getTranslator().getBusinessRange()).addRange(range);\r\n var visualRange = that.getViewport();\r\n var minVisible = null !== (_visualRange$startVal = null === visualRange || void 0 === visualRange ? void 0 : visualRange.startValue) && void 0 !== _visualRange$startVal ? _visualRange$startVal : businessRange.minVisible;\r\n var maxVisible = null !== (_visualRange$endValue = null === visualRange || void 0 === visualRange ? void 0 : visualRange.endValue) && void 0 !== _visualRange$endValue ? _visualRange$endValue : businessRange.maxVisible;\r\n var ticks = [];\r\n if (options.type === _axes_constants2.default.discrete && options.aggregateByCategory) {\r\n return {\r\n aggregateByCategory: true\r\n }\r\n }\r\n var aggregationInterval = options.aggregationInterval;\r\n var aggregationGroupWidth = options.aggregationGroupWidth;\r\n if (!aggregationGroupWidth && marginOptions) {\r\n if (marginOptions.checkInterval) {\r\n aggregationGroupWidth = options.axisDivisionFactor\r\n }\r\n if (marginOptions.sizePointNormalState) {\r\n aggregationGroupWidth = Math.min(marginOptions.sizePointNormalState, options.axisDivisionFactor)\r\n }\r\n }\r\n var minInterval = !options.aggregationGroupWidth && !aggregationInterval && range.interval;\r\n var generateTicks = configureGenerator(options, aggregationGroupWidth, businessRange, that._getScreenDelta(), minInterval);\r\n var tickInterval = generateTicks(aggregationInterval, true, minVisible, maxVisible, null === (_that$_seriesData = that._seriesData) || void 0 === _that$_seriesData ? void 0 : _that$_seriesData.breaks).tickInterval;\r\n if (options.type !== _axes_constants2.default.discrete) {\r\n var min = useAllAggregatedPoints ? businessRange.min : minVisible;\r\n var max = useAllAggregatedPoints ? businessRange.max : maxVisible;\r\n if ((0, _type.isDefined)(min) && (0, _type.isDefined)(max)) {\r\n var add = _utils2.default.getAddFunction({\r\n base: options.logarithmBase,\r\n axisType: options.type,\r\n dataType: options.dataType\r\n }, false);\r\n var start = min;\r\n var end = max;\r\n if (!useAllAggregatedPoints) {\r\n var maxMinDistance = Math.max(that.calculateInterval(max, min), \"datetime\" === options.dataType ? (0, _date.dateToMilliseconds)(tickInterval) : tickInterval);\r\n start = add(min, maxMinDistance, -1);\r\n end = add(max, maxMinDistance)\r\n }\r\n start = start < businessRange.min ? businessRange.min : start;\r\n end = end > businessRange.max ? businessRange.max : end;\r\n var breaks = that._getScaleBreaks(options, {\r\n minVisible: start,\r\n maxVisible: end\r\n }, that._series, that.isArgumentAxis);\r\n ticks = generateTicks(tickInterval, false, start, end, breaks).ticks\r\n }\r\n }\r\n that._aggregationInterval = tickInterval;\r\n return {\r\n interval: tickInterval,\r\n ticks: ticks\r\n }\r\n },\r\n createTicks: function(canvas) {\r\n var that = this;\r\n var renderer = that._renderer;\r\n var options = that._options;\r\n if (!canvas) {\r\n return\r\n }\r\n that._isSynchronized = false;\r\n that.updateCanvas(canvas);\r\n that._estimatedTickInterval = that._getTicks(that.adjustViewport(this._seriesData), _common.noop, true).tickInterval;\r\n var range = that._getViewportRange();\r\n var margins = this._calculateValueMargins();\r\n range.addRange({\r\n minVisible: margins.minValue,\r\n maxVisible: margins.maxValue,\r\n isSpacedMargin: margins.isSpacedMargin\r\n });\r\n var ticks = that._createTicksAndLabelFormat(range);\r\n var boundaryTicks = that._getBoundaryTicks(ticks.ticks, that._getViewportRange());\r\n if (options.showCustomBoundaryTicks && boundaryTicks.length) {\r\n that._boundaryTicks = [boundaryTicks[0]].map(createBoundaryTick(that, renderer, true));\r\n if (boundaryTicks.length > 1) {\r\n that._boundaryTicks = that._boundaryTicks.concat([boundaryTicks[1]].map(createBoundaryTick(that, renderer, false)))\r\n }\r\n } else {\r\n that._boundaryTicks = []\r\n }\r\n var minors = (ticks.minorTicks || []).filter(function(minor) {\r\n return !boundaryTicks.some(function(boundary) {\r\n return valueOf(boundary) === valueOf(minor)\r\n })\r\n });\r\n that._tickInterval = ticks.tickInterval;\r\n that._minorTickInterval = ticks.minorTickInterval;\r\n var oldMajorTicks = that._majorTicks || [];\r\n var majorTicksByValues = oldMajorTicks.reduce(function(r, t) {\r\n r[t.value.valueOf()] = t;\r\n return r\r\n }, {});\r\n var sameType = (0, _type.type)(ticks.ticks[0]) === (0, _type.type)(oldMajorTicks[0] && oldMajorTicks[0].value);\r\n var skippedCategory = that._getSkippedCategory(ticks.ticks);\r\n var majorTicks = ticks.ticks.map(function(v) {\r\n var tick = majorTicksByValues[v.valueOf()];\r\n if (tick && sameType) {\r\n delete majorTicksByValues[v.valueOf()];\r\n tick.setSkippedCategory(skippedCategory);\r\n return tick\r\n } else {\r\n return createMajorTick(that, renderer, skippedCategory)(v)\r\n }\r\n });\r\n that._majorTicks = majorTicks;\r\n var oldMinorTicks = that._minorTicks || [];\r\n that._minorTicks = minors.map(function(v, i) {\r\n var minorTick = oldMinorTicks[i];\r\n if (minorTick) {\r\n minorTick.updateValue(v);\r\n return minorTick\r\n }\r\n return createMinorTick(that, renderer)(v)\r\n });\r\n that._ticksToRemove = Object.keys(majorTicksByValues).map(function(k) {\r\n return majorTicksByValues[k]\r\n }).concat(oldMinorTicks.slice(that._minorTicks.length, oldMinorTicks.length));\r\n if (ticks.breaks) {\r\n that._seriesData.breaks = ticks.breaks\r\n }\r\n that._reinitTranslator(that._getViewportRange())\r\n },\r\n _reinitTranslator: function(range) {\r\n var that = this;\r\n var translator = that._translator;\r\n if (that._isSynchronized) {\r\n return\r\n }\r\n translator.updateBusinessRange(range)\r\n },\r\n _getViewportRange: function() {\r\n return this.adjustViewport(this._seriesData)\r\n },\r\n setMarginOptions: function(options) {\r\n this._marginOptions = options\r\n },\r\n getMarginOptions: function() {\r\n var _this$_marginOptions;\r\n return null !== (_this$_marginOptions = this._marginOptions) && void 0 !== _this$_marginOptions ? _this$_marginOptions : {}\r\n },\r\n _calculateRangeInterval: function(interval) {\r\n var isDateTime = \"datetime\" === this._options.dataType;\r\n var minArgs = [];\r\n var addToArgs = function(value) {\r\n (0, _type.isDefined)(value) && minArgs.push(isDateTime ? (0, _date.dateToMilliseconds)(value) : value)\r\n };\r\n addToArgs(this._tickInterval);\r\n addToArgs(this._estimatedTickInterval);\r\n (0, _type.isDefined)(interval) && minArgs.push(interval);\r\n addToArgs(this._aggregationInterval);\r\n return this._calculateWorkWeekInterval(_min.apply(this, minArgs))\r\n },\r\n _calculateWorkWeekInterval: function(businessInterval) {\r\n var options = this._options;\r\n if (\"datetime\" === options.dataType && options.workdaysOnly && businessInterval) {\r\n var workWeek = options.workWeek.length * dateIntervals.day;\r\n var weekend = dateIntervals.week - workWeek;\r\n if (workWeek !== businessInterval && weekend < businessInterval) {\r\n var weekendsCount = Math.ceil(businessInterval / dateIntervals.week);\r\n businessInterval = weekend >= businessInterval ? dateIntervals.day : businessInterval - weekend * weekendsCount\r\n } else {\r\n if (weekend >= businessInterval && businessInterval > dateIntervals.day) {\r\n businessInterval = dateIntervals.day\r\n }\r\n }\r\n }\r\n return businessInterval\r\n },\r\n _calculateValueMargins: function(ticks) {\r\n this._resetMargins();\r\n var that = this;\r\n var margins = that.getMarginOptions();\r\n var marginSize = (margins.size || 0) / 2;\r\n var options = that._options;\r\n var dataRange = that._getViewportRange();\r\n var viewPort = that.getViewport();\r\n var screenDelta = that._getScreenDelta();\r\n var isDiscrete = (options.type || \"\").indexOf(_axes_constants2.default.discrete) !== -1;\r\n var valueMarginsEnabled = options.valueMarginsEnabled && !isDiscrete && !that.customPositionIsBoundaryOrthogonalAxis();\r\n var translator = that._translator;\r\n var minValueMargin = options.minValueMargin;\r\n var maxValueMargin = options.maxValueMargin;\r\n var minPadding = 0;\r\n var maxPadding = 0;\r\n var interval = 0;\r\n var rangeInterval;\r\n if (dataRange.stubData || !screenDelta) {\r\n return {\r\n startPadding: 0,\r\n endPadding: 0\r\n }\r\n }\r\n\r\n function getConvertIntervalCoefficient(intervalInPx) {\r\n var ratioOfCanvasRange = translator.ratioOfCanvasRange();\r\n return ratioOfCanvasRange / (ratioOfCanvasRange * screenDelta / (intervalInPx + screenDelta))\r\n }\r\n if (that.isArgumentAxis && margins.checkInterval) {\r\n rangeInterval = that._calculateRangeInterval(dataRange.interval);\r\n var pxInterval = translator.getInterval(rangeInterval);\r\n if (isFinite(pxInterval)) {\r\n interval = Math.ceil(pxInterval / (2 * getConvertIntervalCoefficient(pxInterval)))\r\n } else {\r\n rangeInterval = 0\r\n }\r\n }\r\n var minPercentPadding;\r\n var maxPercentPadding;\r\n var maxPaddingValue = screenDelta * MAX_MARGIN_VALUE / 2;\r\n if (valueMarginsEnabled) {\r\n if ((0, _type.isDefined)(minValueMargin)) {\r\n minPercentPadding = isFinite(minValueMargin) ? minValueMargin : 0\r\n } else {\r\n if (!that.isArgumentAxis && margins.checkInterval && valueOf(dataRange.minVisible) > 0 && valueOf(dataRange.minVisible) === valueOf(dataRange.min)) {\r\n minPadding = MIN_BAR_MARGIN\r\n } else {\r\n minPadding = Math.max(marginSize, interval);\r\n minPadding = Math.min(maxPaddingValue, minPadding)\r\n }\r\n }\r\n if ((0, _type.isDefined)(maxValueMargin)) {\r\n maxPercentPadding = isFinite(maxValueMargin) ? maxValueMargin : 0\r\n } else {\r\n if (!that.isArgumentAxis && margins.checkInterval && valueOf(dataRange.maxVisible) < 0 && valueOf(dataRange.maxVisible) === valueOf(dataRange.max)) {\r\n maxPadding = MIN_BAR_MARGIN\r\n } else {\r\n maxPadding = Math.max(marginSize, interval);\r\n maxPadding = Math.min(maxPaddingValue, maxPadding)\r\n }\r\n }\r\n }\r\n var percentStick = margins.percentStick && !this.isArgumentAxis;\r\n if (percentStick) {\r\n if (1 === _abs(dataRange.max)) {\r\n maxPadding = 0\r\n }\r\n if (1 === _abs(dataRange.min)) {\r\n minPadding = 0\r\n }\r\n }\r\n var canvasStartEnd = that._getCanvasStartEnd();\r\n var commonMargin = 1 + (minPercentPadding || 0) + (maxPercentPadding || 0);\r\n var screenDeltaWithMargins = (screenDelta - minPadding - maxPadding) / commonMargin || screenDelta;\r\n if (void 0 !== minPercentPadding || void 0 !== maxPercentPadding) {\r\n if (void 0 !== minPercentPadding) {\r\n minPadding = screenDeltaWithMargins * minPercentPadding\r\n }\r\n if (void 0 !== maxPercentPadding) {\r\n maxPadding = screenDeltaWithMargins * maxPercentPadding\r\n }\r\n }\r\n var minValue;\r\n var maxValue;\r\n if (options.type !== _axes_constants2.default.discrete && ticks && ticks.length > 1 && !options.skipViewportExtending && !viewPort.action && false !== options.endOnTick) {\r\n var length = ticks.length;\r\n var firstTickPosition = translator.translate(ticks[0].value);\r\n var lastTickPosition = translator.translate(ticks[length - 1].value);\r\n var invertMultiplier = firstTickPosition > lastTickPosition ? -1 : 1;\r\n var minTickPadding = _max(invertMultiplier * (canvasStartEnd.start - firstTickPosition), 0);\r\n var maxTickPadding = _max(invertMultiplier * (lastTickPosition - canvasStartEnd.end), 0);\r\n if (minTickPadding > minPadding || maxTickPadding > maxPadding) {\r\n var commonPadding = maxTickPadding + minTickPadding;\r\n var coeff = getConvertIntervalCoefficient(commonPadding);\r\n if (minTickPadding >= minPadding) {\r\n minValue = ticks[0].value\r\n }\r\n if (maxTickPadding >= maxPadding) {\r\n maxValue = ticks[length - 1].value\r\n }\r\n minPadding = _max(minTickPadding, minPadding) / coeff;\r\n maxPadding = _max(maxTickPadding, maxPadding) / coeff\r\n }\r\n }\r\n minPercentPadding = void 0 === minPercentPadding ? minPadding / screenDeltaWithMargins : minPercentPadding;\r\n maxPercentPadding = void 0 === maxPercentPadding ? maxPadding / screenDeltaWithMargins : maxPercentPadding;\r\n if (!isDiscrete) {\r\n if (this._translator.isInverted()) {\r\n var _minValue, _maxValue;\r\n minValue = null !== (_minValue = minValue) && void 0 !== _minValue ? _minValue : translator.from(canvasStartEnd.start + screenDelta * minPercentPadding, -1);\r\n maxValue = null !== (_maxValue = maxValue) && void 0 !== _maxValue ? _maxValue : translator.from(canvasStartEnd.end - screenDelta * maxPercentPadding, 1)\r\n } else {\r\n var _minValue2, _maxValue2;\r\n minValue = null !== (_minValue2 = minValue) && void 0 !== _minValue2 ? _minValue2 : translator.from(canvasStartEnd.start - screenDelta * minPercentPadding, -1);\r\n maxValue = null !== (_maxValue2 = maxValue) && void 0 !== _maxValue2 ? _maxValue2 : translator.from(canvasStartEnd.end + screenDelta * maxPercentPadding, 1)\r\n }\r\n }\r\n\r\n function correctZeroLevel(minPoint, maxPoint) {\r\n var minExpectedPadding = _abs(canvasStartEnd.start - minPoint);\r\n var maxExpectedPadding = _abs(canvasStartEnd.end - maxPoint);\r\n var coeff = getConvertIntervalCoefficient(minExpectedPadding + maxExpectedPadding);\r\n minPadding = minExpectedPadding / coeff;\r\n maxPadding = maxExpectedPadding / coeff\r\n }\r\n if (!that.isArgumentAxis && \"datetime\" !== options.dataType) {\r\n if (minValue * dataRange.min <= 0 && minValue * dataRange.minVisible <= 0) {\r\n correctZeroLevel(translator.translate(0), translator.translate(maxValue));\r\n minValue = 0\r\n }\r\n if (maxValue * dataRange.max <= 0 && maxValue * dataRange.maxVisible <= 0) {\r\n correctZeroLevel(translator.translate(minValue), translator.translate(0));\r\n maxValue = 0\r\n }\r\n }\r\n return {\r\n startPadding: this._translator.isInverted() ? maxPadding : minPadding,\r\n endPadding: this._translator.isInverted() ? minPadding : maxPadding,\r\n minValue: minValue,\r\n maxValue: maxValue,\r\n interval: rangeInterval,\r\n isSpacedMargin: minPadding === maxPadding && 0 !== minPadding\r\n }\r\n },\r\n applyMargins: function() {\r\n if (this._isSynchronized) {\r\n return\r\n }\r\n var margins = this._calculateValueMargins(this._majorTicks);\r\n var canvas = (0, _extend.extend)({}, this._canvas, {\r\n startPadding: margins.startPadding,\r\n endPadding: margins.endPadding\r\n });\r\n this._translator.updateCanvas(this._processCanvas(canvas));\r\n if (isFinite(margins.interval)) {\r\n var br = this._translator.getBusinessRange();\r\n br.addRange({\r\n interval: margins.interval\r\n });\r\n this._translator.updateBusinessRange(br)\r\n }\r\n },\r\n _resetMargins: function() {\r\n this._reinitTranslator(this._getViewportRange());\r\n if (this._canvas) {\r\n this._translator.updateCanvas(this._processCanvas(this._canvas))\r\n }\r\n },\r\n _createConstantLines: function() {\r\n var _this = this;\r\n var constantLines = (this._options.constantLines || []).map(function(o) {\r\n return (0, _constant_line2.default)(_this, o)\r\n });\r\n this._outsideConstantLines = constantLines.filter(function(l) {\r\n return \"outside\" === l.labelPosition\r\n });\r\n this._insideConstantLines = constantLines.filter(function(l) {\r\n return \"inside\" === l.labelPosition\r\n })\r\n },\r\n draw: function(canvas, borderOptions) {\r\n var that = this;\r\n var options = this._options;\r\n that.borderOptions = borderOptions || {\r\n visible: false\r\n };\r\n that._resetMargins();\r\n that.createTicks(canvas);\r\n that.applyMargins();\r\n that._clearAxisGroups();\r\n initTickCoords(that._majorTicks);\r\n initTickCoords(that._minorTicks);\r\n initTickCoords(that._boundaryTicks);\r\n that._axisGroup.append(that._axesContainerGroup);\r\n that._drawAxis();\r\n that._drawTitle();\r\n drawTickMarks(that._majorTicks, options.tick);\r\n drawTickMarks(that._minorTicks, options.minorTick);\r\n drawTickMarks(that._boundaryTicks, options.tick);\r\n var drawGridLine = that._getGridLineDrawer();\r\n drawGrids(that._majorTicks, drawGridLine);\r\n drawGrids(that._minorTicks, drawGridLine);\r\n callAction(that._majorTicks, \"drawLabel\", that._getViewportRange());\r\n that._majorTicks.forEach(function(tick) {\r\n tick.labelRotationAngle = 0;\r\n tick.labelAlignment = void 0;\r\n tick.labelOffset = 0\r\n });\r\n callAction(that._outsideConstantLines.concat(that._insideConstantLines), \"draw\");\r\n callAction(that._strips, \"draw\");\r\n that._dateMarkers = that._drawDateMarkers() || [];\r\n that._labelAxesGroup && that._axisStripLabelGroup.append(that._labelAxesGroup);\r\n that._gridContainerGroup && that._axisGridGroup.append(that._gridContainerGroup);\r\n that._stripsGroup && that._axisStripGroup.append(that._stripsGroup);\r\n if (that._constantLinesGroup) {\r\n that._axisConstantLineGroups.above.inside.append(that._constantLinesGroup.above);\r\n that._axisConstantLineGroups.above.outside1.append(that._constantLinesGroup.above);\r\n that._axisConstantLineGroups.above.outside2.append(that._constantLinesGroup.above);\r\n that._axisConstantLineGroups.under.inside.append(that._constantLinesGroup.under);\r\n that._axisConstantLineGroups.under.outside1.append(that._constantLinesGroup.under);\r\n that._axisConstantLineGroups.under.outside2.append(that._constantLinesGroup.under)\r\n }\r\n that._measureTitle();\r\n measureLabels(that._majorTicks);\r\n var textWidth;\r\n var textHeight;\r\n var convertedTickInterval;\r\n var tickInterval = that._tickInterval;\r\n if ((0, _type.isDefined)(tickInterval)) {\r\n convertedTickInterval = that.getTranslator().getInterval(\"datetime\" === options.dataType ? (0, _date.dateToMilliseconds)(tickInterval) : tickInterval)\r\n }\r\n var usefulSpace = (0, _type.isDefined)(options.placeholderSize) ? options.placeholderSize - options.label.indentFromAxis : void 0;\r\n if (that._isHorizontal) {\r\n textWidth = convertedTickInterval;\r\n textHeight = usefulSpace\r\n } else {\r\n textWidth = usefulSpace;\r\n textHeight = convertedTickInterval\r\n }\r\n var displayMode = that._validateDisplayMode(options.label.displayMode);\r\n var overlappingMode = that._validateOverlappingMode(options.label.overlappingBehavior, displayMode);\r\n var wordWrapMode = options.label.wordWrap || \"none\";\r\n var overflowMode = options.label.textOverflow || \"none\";\r\n if ((\"none\" !== wordWrapMode || \"none\" !== overflowMode) && displayMode !== ROTATE && overlappingMode !== ROTATE && \"auto\" !== overlappingMode) {\r\n var correctByWidth = false;\r\n var correctByHeight = false;\r\n if (textWidth) {\r\n if (that._majorTicks.some(function(tick) {\r\n return tick.labelBBox.width > textWidth\r\n })) {\r\n correctByWidth = true\r\n }\r\n }\r\n if (textHeight) {\r\n if (that._majorTicks.some(function(tick) {\r\n return tick.labelBBox.height > textHeight\r\n })) {\r\n correctByHeight = true\r\n }\r\n }\r\n if (correctByWidth || correctByHeight) {\r\n that._majorTicks.forEach(function(tick) {\r\n tick.label && tick.label.setMaxSize(textWidth, textHeight, options.label)\r\n });\r\n measureLabels(that._majorTicks)\r\n }\r\n }\r\n measureLabels(that._outsideConstantLines);\r\n measureLabels(that._insideConstantLines);\r\n measureLabels(that._strips);\r\n measureLabels(that._dateMarkers);\r\n that._adjustConstantLineLabels(that._insideConstantLines);\r\n that._adjustStripLabels();\r\n var offset = that._constantLabelOffset = that._adjustConstantLineLabels(that._outsideConstantLines);\r\n if (!that._translator.getBusinessRange().isEmpty()) {\r\n that._setLabelsPlacement();\r\n offset = that._adjustLabels(offset)\r\n }\r\n offset = that._adjustDateMarkers(offset);\r\n that._adjustTitle(offset)\r\n },\r\n _measureTitle: _common.noop,\r\n animate: function() {\r\n callAction(this._majorTicks, \"animateLabels\")\r\n },\r\n updateSize: function(canvas, animate) {\r\n var updateTitle = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : true;\r\n var that = this;\r\n that.updateCanvas(canvas);\r\n if (updateTitle) {\r\n that._checkTitleOverflow();\r\n that._measureTitle();\r\n that._updateTitleCoords()\r\n }\r\n that._reinitTranslator(that._getViewportRange());\r\n that.applyMargins();\r\n var animationEnabled = !that._firstDrawing && animate;\r\n var options = this._options;\r\n initTickCoords(that._majorTicks);\r\n initTickCoords(that._minorTicks);\r\n initTickCoords(that._boundaryTicks);\r\n if (this._resetApplyingAnimation && !this._firstDrawing) {\r\n that._resetStartCoordinates()\r\n }\r\n cleanUpInvalidTicks(that._majorTicks);\r\n cleanUpInvalidTicks(that._minorTicks);\r\n cleanUpInvalidTicks(that._boundaryTicks);\r\n if (this._axisElement) {\r\n that._updateAxisElementPosition()\r\n }\r\n updateTicksPosition(that._majorTicks, options.tick, animationEnabled);\r\n updateTicksPosition(that._minorTicks, options.minorTick, animationEnabled);\r\n updateTicksPosition(that._boundaryTicks, options.tick);\r\n callAction(that._majorTicks, \"updateLabelPosition\", animationEnabled);\r\n that._outsideConstantLines.concat(that._insideConstantLines || []).forEach(function(l) {\r\n return l.updatePosition(animationEnabled)\r\n });\r\n callAction(that._strips, \"updatePosition\", animationEnabled);\r\n updateGridsPosition(that._majorTicks, animationEnabled);\r\n updateGridsPosition(that._minorTicks, animationEnabled);\r\n if (animationEnabled) {\r\n callAction(that._ticksToRemove || [], \"fadeOutElements\")\r\n }\r\n that.prepareAnimation();\r\n that._ticksToRemove = null;\r\n if (!that._translator.getBusinessRange().isEmpty()) {\r\n that._firstDrawing = false\r\n }\r\n this._resetApplyingAnimation = false\r\n },\r\n prepareAnimation: function() {\r\n var that = this;\r\n var action = \"saveCoords\";\r\n callAction(that._majorTicks, action);\r\n callAction(that._minorTicks, action);\r\n callAction(that._insideConstantLines, action);\r\n callAction(that._outsideConstantLines, action);\r\n callAction(that._strips, action)\r\n },\r\n _resetStartCoordinates: function() {\r\n var that = this;\r\n var action = \"resetCoordinates\";\r\n callAction(that._majorTicks, action);\r\n callAction(that._minorTicks, action);\r\n callAction(that._insideConstantLines, action);\r\n callAction(that._outsideConstantLines, action);\r\n callAction(that._strips, action)\r\n },\r\n applyClipRects: function(elementsClipID, canvasClipID) {\r\n this._axisGroup.attr({\r\n \"clip-path\": canvasClipID\r\n });\r\n this._axisStripGroup.attr({\r\n \"clip-path\": elementsClipID\r\n })\r\n },\r\n _mergeViewportOptions: function() {\r\n var that = this;\r\n var options = that._options;\r\n var visualRange = {};\r\n var visualRangeOptionValue = options._customVisualRange;\r\n if (((0, _type.isDefined)(options.max) || (0, _type.isDefined)(options.min)) && !(0, _type.isDefined)(visualRangeOptionValue.startValue) && !(0, _type.isDefined)(visualRangeOptionValue.endValue) && !(0, _type.isDefined)(visualRangeOptionValue.length)) {\r\n visualRange = {\r\n startValue: options.min,\r\n endValue: options.max\r\n }\r\n } else {\r\n visualRange = visualRangeOptionValue\r\n }\r\n that._setVisualRange(visualRange)\r\n },\r\n _validateVisualRange: function(visualRange) {\r\n var range = getVizRangeObject(visualRange);\r\n if (void 0 !== range.startValue) {\r\n range.startValue = this.validateUnit(range.startValue)\r\n }\r\n if (void 0 !== range.endValue) {\r\n range.endValue = this.validateUnit(range.endValue)\r\n }\r\n return convertVisualRangeObject(range, visualRange)\r\n },\r\n _validateOptions: function(options) {\r\n var that = this;\r\n if (void 0 !== options.min) {\r\n options.min = that.validateUnit(options.min, \"E2106\")\r\n }\r\n if (void 0 !== options.max) {\r\n options.max = that.validateUnit(options.max, \"E2106\")\r\n }\r\n options.wholeRange = that._validateVisualRange(options.wholeRange);\r\n options.visualRange = options._customVisualRange = that._validateVisualRange(options._customVisualRange);\r\n that._mergeViewportOptions()\r\n },\r\n validate: function() {\r\n var that = this;\r\n var options = that._options;\r\n var dataType = that.isArgumentAxis ? options.argumentType : options.valueType;\r\n var parser = dataType ? _parse_utils2.default.getParser(dataType) : function(unit) {\r\n return unit\r\n };\r\n that.parser = parser;\r\n options.dataType = dataType;\r\n that._validateOptions(options)\r\n },\r\n resetVisualRange: function(isSilent) {\r\n this._seriesData.minVisible = this._seriesData.min;\r\n this._seriesData.maxVisible = this._seriesData.max;\r\n this.handleZooming([null, null], {\r\n start: !!isSilent,\r\n end: !!isSilent\r\n })\r\n },\r\n _setVisualRange: function(visualRange, allowPartialUpdate) {\r\n var range = this.adjustRange(_utils2.default.getVizRangeObject(visualRange));\r\n if (allowPartialUpdate) {\r\n (0, _type.isDefined)(range.startValue) && (this._viewport.startValue = range.startValue);\r\n (0, _type.isDefined)(range.endValue) && (this._viewport.endValue = range.endValue)\r\n } else {\r\n this._viewport = range\r\n }\r\n },\r\n _applyZooming: function(visualRange, allowPartialUpdate) {\r\n var that = this;\r\n that._resetVisualRangeOption();\r\n that._setVisualRange(visualRange, allowPartialUpdate);\r\n var viewPort = that.getViewport();\r\n that._seriesData.breaks = that._initialBreaks = that._getScaleBreaks(that._options, {\r\n minVisible: viewPort.startValue,\r\n maxVisible: viewPort.endValue\r\n }, that._series, that.isArgumentAxis);\r\n that._translator.updateBusinessRange(that._getViewportRange())\r\n },\r\n getZoomStartEventArg: function(event, actionType) {\r\n return {\r\n axis: this,\r\n range: this.visualRange(),\r\n cancel: false,\r\n event: event,\r\n actionType: actionType\r\n }\r\n },\r\n getZoomEndEventArg: function(previousRange, event, actionType, zoomFactor, shift) {\r\n var newRange = this.visualRange();\r\n return {\r\n axis: this,\r\n previousRange: previousRange,\r\n range: newRange,\r\n cancel: false,\r\n event: event,\r\n actionType: actionType,\r\n zoomFactor: zoomFactor,\r\n shift: shift,\r\n rangeStart: newRange.startValue,\r\n rangeEnd: newRange.endValue\r\n }\r\n },\r\n getZoomBounds: function() {\r\n var wholeRange = _utils2.default.getVizRangeObject(this._options.wholeRange);\r\n var range = this.getTranslator().getBusinessRange();\r\n var secondPriorityRange = {\r\n startValue: getZoomBoundValue(this._initRange.startValue, range.min),\r\n endValue: getZoomBoundValue(this._initRange.endValue, range.max)\r\n };\r\n return {\r\n startValue: getZoomBoundValue(wholeRange.startValue, secondPriorityRange.startValue),\r\n endValue: getZoomBoundValue(wholeRange.endValue, secondPriorityRange.endValue)\r\n }\r\n },\r\n setInitRange: function() {\r\n this._initRange = {};\r\n if (0 === Object.keys(this._options.wholeRange || {}).length) {\r\n this._initRange = this.getZoomBounds()\r\n }\r\n },\r\n _resetVisualRangeOption: function() {\r\n this._options._customVisualRange = {}\r\n },\r\n setCustomVisualRange: function(range) {\r\n this._options._customVisualRange = range\r\n },\r\n visualRange: function visualRange() {\r\n var that = this;\r\n var args = arguments;\r\n var visualRange;\r\n if (0 === args.length) {\r\n var adjustedRange = that._getAdjustedBusinessRange();\r\n var startValue = adjustedRange.minVisible;\r\n var endValue = adjustedRange.maxVisible;\r\n if (that._options.type === _axes_constants2.default.discrete) {\r\n var _startValue, _endValue;\r\n startValue = null !== (_startValue = startValue) && void 0 !== _startValue ? _startValue : adjustedRange.categories[0];\r\n endValue = null !== (_endValue = endValue) && void 0 !== _endValue ? _endValue : adjustedRange.categories[adjustedRange.categories.length - 1];\r\n return {\r\n startValue: startValue,\r\n endValue: endValue,\r\n categories: _utils2.default.getCategoriesInfo(adjustedRange.categories, startValue, endValue).categories\r\n }\r\n }\r\n return {\r\n startValue: startValue,\r\n endValue: endValue\r\n }\r\n } else {\r\n if (_isArray(args[0])) {\r\n visualRange = args[0]\r\n } else {\r\n if ((0, _type.isPlainObject)(args[0])) {\r\n visualRange = (0, _extend.extend)({}, args[0])\r\n } else {\r\n visualRange = [args[0], args[1]]\r\n }\r\n }\r\n }\r\n var zoomResults = that.handleZooming(visualRange, args[1]);\r\n if (!zoomResults.isPrevented) {\r\n that._visualRange(that, zoomResults)\r\n }\r\n },\r\n handleZooming: function(visualRange, preventEvents, domEvent, action) {\r\n var that = this;\r\n preventEvents = preventEvents || {};\r\n if ((0, _type.isDefined)(visualRange)) {\r\n visualRange = that._validateVisualRange(visualRange);\r\n visualRange.action = action\r\n }\r\n var zoomStartEvent = that.getZoomStartEventArg(domEvent, action);\r\n var previousRange = zoomStartEvent.range;\r\n !preventEvents.start && that._eventTrigger(\"zoomStart\", zoomStartEvent);\r\n var zoomResults = {\r\n isPrevented: zoomStartEvent.cancel,\r\n skipEventRising: preventEvents.skipEventRising,\r\n range: visualRange || zoomStartEvent.range\r\n };\r\n if (!zoomStartEvent.cancel) {\r\n (0, _type.isDefined)(visualRange) && that._applyZooming(visualRange, preventEvents.allowPartialUpdate);\r\n if (!(0, _type.isDefined)(that._storedZoomEndParams)) {\r\n that._storedZoomEndParams = {\r\n startRange: previousRange,\r\n type: this.getOptions().type\r\n }\r\n }\r\n that._storedZoomEndParams.event = domEvent;\r\n that._storedZoomEndParams.action = action;\r\n that._storedZoomEndParams.prevent = !!preventEvents.end\r\n }\r\n return zoomResults\r\n },\r\n handleZoomEnd: function() {\r\n var that = this;\r\n if ((0, _type.isDefined)(that._storedZoomEndParams) && !that._storedZoomEndParams.prevent) {\r\n var previousRange = that._storedZoomEndParams.startRange;\r\n var domEvent = that._storedZoomEndParams.event;\r\n var action = that._storedZoomEndParams.action;\r\n var previousBusinessRange = {\r\n minVisible: previousRange.startValue,\r\n maxVisible: previousRange.endValue,\r\n categories: previousRange.categories\r\n };\r\n var typeIsNotChanged = that.getOptions().type === that._storedZoomEndParams.type;\r\n var shift = typeIsNotChanged ? (0, _math2.adjust)(that.getVisualRangeCenter() - that.getVisualRangeCenter(previousBusinessRange)) : NaN;\r\n var zoomFactor = typeIsNotChanged ? +(Math.round(that.getVisualRangeLength(previousBusinessRange) / that.getVisualRangeLength() + \"e+2\") + \"e-2\") : NaN;\r\n var zoomEndEvent = that.getZoomEndEventArg(previousRange, domEvent, action, zoomFactor, shift);\r\n zoomEndEvent.cancel = that.isZoomingLowerLimitOvercome(1 === zoomFactor ? \"pan\" : \"zoom\", zoomFactor);\r\n that._eventTrigger(\"zoomEnd\", zoomEndEvent);\r\n if (zoomEndEvent.cancel) {\r\n that.restorePreviousVisualRange(previousRange)\r\n }\r\n that._storedZoomEndParams = null\r\n }\r\n },\r\n restorePreviousVisualRange: function(previousRange) {\r\n var that = this;\r\n that._storedZoomEndParams = null;\r\n that._applyZooming(previousRange);\r\n that._visualRange(that, previousRange)\r\n },\r\n isZoomingLowerLimitOvercome: function(actionType, zoomFactor, range) {\r\n var that = this;\r\n var options = that._options;\r\n var minZoom = options.minVisualRangeLength;\r\n var isOvercoming = \"zoom\" === actionType && zoomFactor >= 1;\r\n var businessRange = that._translator.getBusinessRange();\r\n var visualRange;\r\n if ((0, _type.isDefined)(range)) {\r\n visualRange = that.adjustRange(_utils2.default.getVizRangeObject(range));\r\n visualRange = {\r\n minVisible: visualRange.startValue,\r\n maxVisible: visualRange.endValue,\r\n categories: businessRange.categories\r\n }\r\n }\r\n var visualRangeLength = that.getVisualRangeLength(visualRange);\r\n if (\"discrete\" !== options.type) {\r\n if ((0, _type.isDefined)(minZoom)) {\r\n if (\"datetime\" === options.dataType && !(0, _type.isNumeric)(minZoom)) {\r\n minZoom = (0, _date.dateToMilliseconds)(minZoom)\r\n }\r\n isOvercoming &= minZoom >= visualRangeLength\r\n } else {\r\n var canvasLength = that._translator.canvasLength;\r\n var fullRange = {\r\n minVisible: businessRange.min,\r\n maxVisible: businessRange.max,\r\n categories: businessRange.categories\r\n };\r\n isOvercoming &= that.getVisualRangeLength(fullRange) / canvasLength >= visualRangeLength\r\n }\r\n } else {\r\n !(0, _type.isDefined)(minZoom) && (minZoom = 1);\r\n isOvercoming &= (0, _type.isDefined)(range) && that.getVisualRangeLength() === minZoom && visualRangeLength <= minZoom\r\n }\r\n return !!isOvercoming\r\n },\r\n dataVisualRangeIsReduced: function() {\r\n var minDataValue;\r\n var maxDataValue;\r\n var translator = this.getTranslator();\r\n if (\"discrete\" === this._options.type) {\r\n var categories = translator.getBusinessRange().categories;\r\n minDataValue = categories[0];\r\n maxDataValue = categories[categories.length - 1]\r\n } else {\r\n var seriesData = this._seriesData;\r\n minDataValue = seriesData.min;\r\n maxDataValue = seriesData.max\r\n }\r\n if (!(0, _type.isDefined)(minDataValue) || !(0, _type.isDefined)(maxDataValue)) {\r\n return false\r\n }\r\n var startPoint = translator.translate(minDataValue);\r\n var endPoint = translator.translate(maxDataValue);\r\n var edges = [Math.min(startPoint, endPoint), Math.max(startPoint, endPoint)];\r\n var visualRange = this.visualRange();\r\n var visualRangeStartPoint = translator.translate(visualRange.startValue);\r\n var visualRangeEndPoint = translator.translate(visualRange.endValue);\r\n return visualRangeStartPoint > edges[0] && visualRangeStartPoint < edges[1] || visualRangeEndPoint > edges[0] && visualRangeEndPoint < edges[1] || visualRangeStartPoint === visualRangeEndPoint && edges[0] !== edges[1]\r\n },\r\n isExtremePosition: function(isMax) {\r\n var extremeDataValue;\r\n var seriesData;\r\n if (\"discrete\" === this._options.type) {\r\n seriesData = this._translator.getBusinessRange();\r\n extremeDataValue = isMax ? seriesData.categories[seriesData.categories.length - 1] : seriesData.categories[0]\r\n } else {\r\n seriesData = this.getZoomBounds();\r\n extremeDataValue = isMax ? seriesData.endValue : seriesData.startValue\r\n }\r\n var translator = this.getTranslator();\r\n var extremePoint = translator.translate(extremeDataValue);\r\n var visualRange = this.visualRange();\r\n var visualRangePoint = isMax ? translator.translate(visualRange.endValue) : translator.translate(visualRange.startValue);\r\n return _abs(visualRangePoint - extremePoint) < SCROLL_THRESHOLD\r\n },\r\n getViewport: function() {\r\n return this._viewport\r\n },\r\n getFullTicks: function() {\r\n var majors = this._majorTicks || [];\r\n if (this._options.type === _axes_constants2.default.discrete) {\r\n return convertTicksToValues(majors)\r\n } else {\r\n return convertTicksToValues(majors.concat(this._minorTicks, this._boundaryTicks)).sort(function(a, b) {\r\n return valueOf(a) - valueOf(b)\r\n })\r\n }\r\n },\r\n measureLabels: function(canvas, withIndents) {\r\n var that = this;\r\n var options = that._options;\r\n var widthAxis = options.visible ? options.width : 0;\r\n var ticks;\r\n var indent = withIndents ? options.label.indentFromAxis + .5 * options.tick.length : 0;\r\n var tickInterval;\r\n var viewportRange = that._getViewportRange();\r\n if (viewportRange.isEmpty() || !options.label.visible || !that._axisElementsGroup) {\r\n return {\r\n height: widthAxis,\r\n width: widthAxis,\r\n x: 0,\r\n y: 0\r\n }\r\n }\r\n if (that._majorTicks) {\r\n ticks = convertTicksToValues(that._majorTicks)\r\n } else {\r\n that.updateCanvas(canvas);\r\n ticks = that._createTicksAndLabelFormat(viewportRange, _common.noop);\r\n tickInterval = ticks.tickInterval;\r\n ticks = ticks.ticks\r\n }\r\n var maxText = ticks.reduce(function(prevLabel, tick, index) {\r\n var label = that.formatLabel(tick, options.label, viewportRange, void 0, tickInterval, ticks);\r\n if (prevLabel.length < label.length) {\r\n return label\r\n } else {\r\n return prevLabel\r\n }\r\n }, that.formatLabel(ticks[0], options.label, viewportRange, void 0, tickInterval, ticks));\r\n var text = that._renderer.text(maxText, 0, 0).css(that._textFontStyles).attr(that._textOptions).append(that._renderer.root);\r\n var box = text.getBBox();\r\n text.remove();\r\n return {\r\n x: box.x,\r\n y: box.y,\r\n width: box.width + indent,\r\n height: box.height + indent\r\n }\r\n },\r\n _setLabelsPlacement: function() {\r\n if (!this._options.label.visible) {\r\n return\r\n }\r\n var that = this;\r\n var labelOpt = that._options.label;\r\n var displayMode = that._validateDisplayMode(labelOpt.displayMode);\r\n var overlappingMode = that._validateOverlappingMode(labelOpt.overlappingBehavior, displayMode);\r\n var ignoreOverlapping = \"none\" === overlappingMode || \"ignore\" === overlappingMode;\r\n var behavior = {\r\n rotationAngle: labelOpt.rotationAngle,\r\n staggeringSpacing: labelOpt.staggeringSpacing\r\n };\r\n var notRecastStep;\r\n var boxes = that._majorTicks.map(function(tick) {\r\n return tick.labelBBox\r\n });\r\n var step = that._getStep(boxes);\r\n switch (displayMode) {\r\n case ROTATE:\r\n if (ignoreOverlapping) {\r\n notRecastStep = true;\r\n step = 1\r\n }\r\n that._applyLabelMode(displayMode, step, boxes, labelOpt, notRecastStep);\r\n break;\r\n case \"stagger\":\r\n if (ignoreOverlapping) {\r\n step = 2\r\n }\r\n that._applyLabelMode(displayMode, _max(step, 2), boxes, labelOpt);\r\n break;\r\n default:\r\n that._applyLabelOverlapping(boxes, overlappingMode, step, behavior)\r\n }\r\n },\r\n _applyLabelOverlapping: function(boxes, mode, step, behavior) {\r\n var that = this;\r\n var labelOpt = that._options.label;\r\n var majorTicks = that._majorTicks;\r\n if (\"none\" === mode || \"ignore\" === mode) {\r\n return\r\n }\r\n var checkLabels = function(box, index, array) {\r\n if (0 === index) {\r\n return false\r\n }\r\n return _axes_constants2.default.areLabelsOverlap(box, array[index - 1], labelOpt.minSpacing, labelOpt.alignment)\r\n };\r\n if (step > 1 && boxes.some(checkLabels)) {\r\n that._applyLabelMode(mode, step, boxes, behavior)\r\n }\r\n that._checkBoundedLabelsOverlapping(majorTicks, boxes, mode)\r\n },\r\n _applyLabelMode: function(mode, step, boxes, behavior, notRecastStep) {\r\n var that = this;\r\n var majorTicks = that._majorTicks;\r\n var labelOpt = that._options.label;\r\n var angle = behavior.rotationAngle;\r\n var labelHeight;\r\n var alignment;\r\n var func;\r\n switch (mode) {\r\n case ROTATE:\r\n if (!labelOpt.userAlignment) {\r\n alignment = angle < 0 ? RIGHT : LEFT;\r\n if (angle % 90 === 0) {\r\n alignment = CENTER\r\n }\r\n }\r\n step = notRecastStep ? step : that._getStep(boxes, angle);\r\n func = function(tick) {\r\n tick.label.rotate(angle);\r\n tick.labelRotationAngle = angle;\r\n alignment && (tick.labelAlignment = alignment)\r\n };\r\n updateLabels(majorTicks, step, func);\r\n break;\r\n case \"stagger\":\r\n labelHeight = that._getMaxLabelHeight(boxes, behavior.staggeringSpacing);\r\n func = function(tick, index) {\r\n if (index / (step - 1) % 2 !== 0) {\r\n tick.labelOffset = labelHeight\r\n }\r\n };\r\n updateLabels(majorTicks, step - 1, func);\r\n break;\r\n case \"auto\":\r\n case \"_auto\":\r\n if (2 === step) {\r\n that._applyLabelMode(\"stagger\", step, boxes, behavior)\r\n } else {\r\n that._applyLabelMode(ROTATE, step, boxes, {\r\n rotationAngle: getOptimalAngle(boxes, labelOpt)\r\n })\r\n }\r\n break;\r\n default:\r\n updateLabels(majorTicks, step)\r\n }\r\n },\r\n getMarkerTrackers: _common.noop,\r\n _drawDateMarkers: _common.noop,\r\n _adjustDateMarkers: _common.noop,\r\n coordsIn: _common.noop,\r\n areCoordsOutsideAxis: _common.noop,\r\n _getSkippedCategory: _common.noop,\r\n _initAxisPositions: _common.noop,\r\n _drawTitle: _common.noop,\r\n _updateTitleCoords: _common.noop,\r\n _adjustConstantLineLabels: _common.noop,\r\n _createTranslator: function() {\r\n return new _translator2d2.default.Translator2D({}, {}, {})\r\n },\r\n _updateTranslator: function() {\r\n var translator = this._translator;\r\n translator.update(translator.getBusinessRange(), this._canvas || {}, this._getTranslatorOptions())\r\n },\r\n _getTranslatorOptions: function() {\r\n var _options$workWeek2, _options$breakStyle$w, _options$breakStyle;\r\n var options = this._options;\r\n return {\r\n isHorizontal: this._isHorizontal,\r\n shiftZeroValue: !this.isArgumentAxis,\r\n interval: options.semiDiscreteInterval,\r\n firstDayOfWeek: null === (_options$workWeek2 = options.workWeek) || void 0 === _options$workWeek2 ? void 0 : _options$workWeek2[0],\r\n stick: this._getStick(),\r\n breaksSize: null !== (_options$breakStyle$w = null === (_options$breakStyle = options.breakStyle) || void 0 === _options$breakStyle ? void 0 : _options$breakStyle.width) && void 0 !== _options$breakStyle$w ? _options$breakStyle$w : 0\r\n }\r\n },\r\n getVisibleArea: function() {\r\n var canvas = this._getCanvasStartEnd();\r\n return [canvas.start, canvas.end].sort(function(a, b) {\r\n return a - b\r\n })\r\n },\r\n _getCanvasStartEnd: function() {\r\n var isHorizontal = this._isHorizontal;\r\n var canvas = this._canvas || {};\r\n var invert = this._translator.getBusinessRange().invert;\r\n var coords = isHorizontal ? [canvas.left, canvas.width - canvas.right] : [canvas.height - canvas.bottom, canvas.top];\r\n invert && coords.reverse();\r\n return {\r\n start: coords[0],\r\n end: coords[1]\r\n }\r\n },\r\n _getScreenDelta: function() {\r\n var that = this;\r\n var canvas = that._getCanvasStartEnd();\r\n var breaks = that._seriesData ? that._seriesData.breaks : [];\r\n var breaksLength = breaks.length;\r\n var screenDelta = _abs(canvas.start - canvas.end);\r\n return screenDelta - (breaksLength ? breaks[breaksLength - 1].cumulativeWidth : 0)\r\n },\r\n _getScaleBreaks: function() {\r\n return []\r\n },\r\n _adjustTitle: _common.noop,\r\n _checkTitleOverflow: _common.noop,\r\n getSpiderTicks: _common.noop,\r\n setSpiderTicks: _common.noop,\r\n _checkBoundedLabelsOverlapping: _common.noop,\r\n drawScaleBreaks: _common.noop,\r\n _visualRange: _common.noop,\r\n _rotateConstantLine: _common.noop,\r\n applyVisualRangeSetter: function(visualRangeSetter) {\r\n this._visualRange = visualRangeSetter\r\n },\r\n getCategoriesSorter: function(argCategories) {\r\n var sort;\r\n if (this.isArgumentAxis) {\r\n sort = argCategories\r\n } else {\r\n var categoriesSortingMethod = this._options.categoriesSortingMethod;\r\n sort = null !== categoriesSortingMethod && void 0 !== categoriesSortingMethod ? categoriesSortingMethod : this._options.categories\r\n }\r\n return sort\r\n },\r\n _getAdjustedBusinessRange: function() {\r\n return this.adjustViewport(this._translator.getBusinessRange())\r\n }\r\n};\r\n","/*!\n * devextreme-vue\n * Version: 20.1.7\n * Build date: Tue Aug 25 2020\n *\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-vue\n */\n\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar VueType = require(\"vue\");\nvar Vue = VueType.default || VueType;\nvar chart_1 = require(\"devextreme/viz/chart\");\nvar component_1 = require(\"./core/component\");\nvar configuration_component_1 = require(\"./core/configuration-component\");\nvar DxChart = Vue.extend({\n extends: component_1.DxComponent,\n props: {\n adaptiveLayout: Object,\n adjustOnZoom: Boolean,\n animation: [Boolean, Object],\n annotations: Array,\n argumentAxis: Object,\n autoHidePointMarkers: Boolean,\n barGroupPadding: Number,\n barGroupWidth: Number,\n commonAnnotationSettings: Object,\n commonAxisSettings: Object,\n commonPaneSettings: Object,\n commonSeriesSettings: Object,\n containerBackgroundColor: String,\n crosshair: Object,\n customizeAnnotation: Function,\n customizeLabel: Function,\n customizePoint: Function,\n dataPrepareSettings: Object,\n dataSource: [Array, Object, String],\n defaultPane: String,\n disabled: Boolean,\n elementAttr: Object,\n export: Object,\n legend: Object,\n loadingIndicator: Object,\n margin: Object,\n maxBubbleSize: Number,\n minBubbleSize: Number,\n negativesAsZeroes: Boolean,\n onArgumentAxisClick: [Function, String],\n onDisposing: Function,\n onDone: Function,\n onDrawn: Function,\n onExported: Function,\n onExporting: Function,\n onFileSaving: Function,\n onIncidentOccurred: Function,\n onInitialized: Function,\n onLegendClick: [Function, String],\n onOptionChanged: Function,\n onPointClick: [Function, String],\n onPointHoverChanged: Function,\n onPointSelectionChanged: Function,\n onSeriesClick: [Function, String],\n onSeriesHoverChanged: Function,\n onSeriesSelectionChanged: Function,\n onTooltipHidden: Function,\n onTooltipShown: Function,\n onZoomEnd: Function,\n onZoomStart: Function,\n palette: [Array, String],\n paletteExtensionMode: String,\n panes: [Array, Object],\n pathModified: Boolean,\n pointSelectionMode: String,\n redrawOnResize: Boolean,\n resizePanesOnZoom: Boolean,\n resolveLabelOverlapping: String,\n rotated: Boolean,\n rtlEnabled: Boolean,\n scrollBar: Object,\n series: [Array, Object],\n seriesSelectionMode: String,\n seriesTemplate: Object,\n size: Object,\n stickyHovering: Boolean,\n synchronizeMultiAxes: Boolean,\n theme: String,\n title: [Object, String],\n tooltip: Object,\n valueAxis: [Array, Object],\n zoomAndPan: Object\n },\n computed: {\n instance: function () {\n return this.$_instance;\n }\n },\n beforeCreate: function () {\n this.$_WidgetClass = chart_1.default;\n this.$_expectedChildren = {\n adaptiveLayout: { isCollectionItem: false, optionName: \"adaptiveLayout\" },\n animation: { isCollectionItem: false, optionName: \"animation\" },\n annotation: { isCollectionItem: true, optionName: \"annotations\" },\n argumentAxis: { isCollectionItem: false, optionName: \"argumentAxis\" },\n chartTitle: { isCollectionItem: false, optionName: \"title\" },\n commonAnnotationSettings: { isCollectionItem: false, optionName: \"commonAnnotationSettings\" },\n commonAxisSettings: { isCollectionItem: false, optionName: \"commonAxisSettings\" },\n commonPaneSettings: { isCollectionItem: false, optionName: \"commonPaneSettings\" },\n commonSeriesSettings: { isCollectionItem: false, optionName: \"commonSeriesSettings\" },\n crosshair: { isCollectionItem: false, optionName: \"crosshair\" },\n dataPrepareSettings: { isCollectionItem: false, optionName: \"dataPrepareSettings\" },\n export: { isCollectionItem: false, optionName: \"export\" },\n legend: { isCollectionItem: false, optionName: \"legend\" },\n loadingIndicator: { isCollectionItem: false, optionName: \"loadingIndicator\" },\n margin: { isCollectionItem: false, optionName: \"margin\" },\n pane: { isCollectionItem: true, optionName: \"panes\" },\n scrollBar: { isCollectionItem: false, optionName: \"scrollBar\" },\n series: { isCollectionItem: true, optionName: \"series\" },\n seriesTemplate: { isCollectionItem: false, optionName: \"seriesTemplate\" },\n size: { isCollectionItem: false, optionName: \"size\" },\n title: { isCollectionItem: false, optionName: \"title\" },\n tooltip: { isCollectionItem: false, optionName: \"tooltip\" },\n valueAxis: { isCollectionItem: true, optionName: \"valueAxis\" },\n zoomAndPan: { isCollectionItem: false, optionName: \"zoomAndPan\" }\n };\n }\n});\nexports.DxChart = DxChart;\nvar DxAdaptiveLayout = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n height: Number,\n keepLabels: Boolean,\n width: Number\n }\n});\nexports.DxAdaptiveLayout = DxAdaptiveLayout;\nDxAdaptiveLayout.$_optionName = \"adaptiveLayout\";\nvar DxAggregation = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n calculate: Function,\n enabled: Boolean,\n method: String\n }\n});\nexports.DxAggregation = DxAggregation;\nDxAggregation.$_optionName = \"aggregation\";\nvar DxAggregationInterval = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n days: Number,\n hours: Number,\n milliseconds: Number,\n minutes: Number,\n months: Number,\n quarters: Number,\n seconds: Number,\n weeks: Number,\n years: Number\n }\n});\nexports.DxAggregationInterval = DxAggregationInterval;\nDxAggregationInterval.$_optionName = \"aggregationInterval\";\nvar DxAnimation = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n duration: Number,\n easing: String,\n enabled: Boolean,\n maxPointCountSupported: Number\n }\n});\nexports.DxAnimation = DxAnimation;\nDxAnimation.$_optionName = \"animation\";\nvar DxAnnotation = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n allowDragging: Boolean,\n argument: {},\n arrowLength: Number,\n arrowWidth: Number,\n axis: String,\n border: Object,\n color: String,\n customizeTooltip: Function,\n data: Object,\n description: String,\n font: Object,\n height: Number,\n image: [Object, String],\n name: String,\n offsetX: Number,\n offsetY: Number,\n opacity: Number,\n paddingLeftRight: Number,\n paddingTopBottom: Number,\n series: String,\n shadow: Object,\n template: {},\n text: String,\n textOverflow: String,\n tooltipEnabled: Boolean,\n tooltipTemplate: {},\n type: String,\n value: {},\n width: Number,\n wordWrap: String,\n x: Number,\n y: Number\n }\n});\nexports.DxAnnotation = DxAnnotation;\nDxAnnotation.$_optionName = \"annotations\";\nDxAnnotation.$_isCollectionItem = true;\nDxAnnotation.$_expectedChildren = {\n annotationBorder: { isCollectionItem: false, optionName: \"border\" },\n annotationImage: { isCollectionItem: false, optionName: \"image\" },\n border: { isCollectionItem: false, optionName: \"border\" },\n font: { isCollectionItem: false, optionName: \"font\" },\n image: { isCollectionItem: false, optionName: \"image\" },\n shadow: { isCollectionItem: false, optionName: \"shadow\" }\n};\nvar DxAnnotationBorder = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n cornerRadius: Number,\n dashStyle: String,\n opacity: Number,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxAnnotationBorder = DxAnnotationBorder;\nDxAnnotationBorder.$_optionName = \"border\";\nvar DxAnnotationImage = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n height: Number,\n url: String,\n width: Number\n }\n});\nexports.DxAnnotationImage = DxAnnotationImage;\nDxAnnotationImage.$_optionName = \"image\";\nvar DxArgumentAxis = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n aggregateByCategory: Boolean,\n aggregationGroupWidth: Number,\n aggregationInterval: [Number, Object, String],\n allowDecimals: Boolean,\n argumentType: String,\n axisDivisionFactor: Number,\n breaks: Array,\n breakStyle: Object,\n categories: Array,\n color: String,\n constantLines: Array,\n constantLineStyle: Object,\n customPosition: {},\n customPositionAxis: String,\n discreteAxisDivisionMode: String,\n endOnTick: Boolean,\n grid: Object,\n holidays: Array,\n hoverMode: String,\n inverted: Boolean,\n label: Object,\n linearThreshold: Number,\n logarithmBase: Number,\n max: {},\n maxValueMargin: Number,\n min: {},\n minorGrid: Object,\n minorTick: Object,\n minorTickCount: Number,\n minorTickInterval: [Number, Object, String],\n minValueMargin: Number,\n minVisualRangeLength: [Number, Object, String],\n offset: Number,\n opacity: Number,\n placeholderSize: Number,\n position: String,\n singleWorkdays: Array,\n strips: Array,\n stripStyle: Object,\n tick: Object,\n tickInterval: [Number, Object, String],\n title: [Object, String],\n type: String,\n valueMarginsEnabled: Boolean,\n visible: Boolean,\n visualRange: [Array, Object],\n visualRangeUpdateMode: String,\n wholeRange: [Array, Object],\n width: Number,\n workdaysOnly: Boolean,\n workWeek: Array\n }\n});\nexports.DxArgumentAxis = DxArgumentAxis;\nDxArgumentAxis.$_optionName = \"argumentAxis\";\nDxArgumentAxis.$_expectedChildren = {\n aggregationInterval: { isCollectionItem: false, optionName: \"aggregationInterval\" },\n axisConstantLineStyle: { isCollectionItem: false, optionName: \"constantLineStyle\" },\n axisLabel: { isCollectionItem: false, optionName: \"label\" },\n axisTitle: { isCollectionItem: false, optionName: \"title\" },\n break: { isCollectionItem: true, optionName: \"breaks\" },\n breakStyle: { isCollectionItem: false, optionName: \"breakStyle\" },\n constantLine: { isCollectionItem: true, optionName: \"constantLines\" },\n constantLineStyle: { isCollectionItem: false, optionName: \"constantLineStyle\" },\n grid: { isCollectionItem: false, optionName: \"grid\" },\n label: { isCollectionItem: false, optionName: \"label\" },\n minorGrid: { isCollectionItem: false, optionName: \"minorGrid\" },\n minorTick: { isCollectionItem: false, optionName: \"minorTick\" },\n minorTickInterval: { isCollectionItem: false, optionName: \"minorTickInterval\" },\n minVisualRangeLength: { isCollectionItem: false, optionName: \"minVisualRangeLength\" },\n strip: { isCollectionItem: true, optionName: \"strips\" },\n stripStyle: { isCollectionItem: false, optionName: \"stripStyle\" },\n tick: { isCollectionItem: false, optionName: \"tick\" },\n tickInterval: { isCollectionItem: false, optionName: \"tickInterval\" },\n title: { isCollectionItem: false, optionName: \"title\" },\n visualRange: { isCollectionItem: false, optionName: \"visualRange\" },\n wholeRange: { isCollectionItem: false, optionName: \"wholeRange\" }\n};\nvar DxArgumentFormat = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n currency: String,\n formatter: Function,\n parser: Function,\n precision: Number,\n type: String\n }\n});\nexports.DxArgumentFormat = DxArgumentFormat;\nDxArgumentFormat.$_optionName = \"argumentFormat\";\nvar DxAxisConstantLineStyle = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n dashStyle: String,\n label: Object,\n paddingLeftRight: Number,\n paddingTopBottom: Number,\n width: Number\n }\n});\nexports.DxAxisConstantLineStyle = DxAxisConstantLineStyle;\nDxAxisConstantLineStyle.$_optionName = \"constantLineStyle\";\nvar DxAxisConstantLineStyleLabel = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n font: Object,\n horizontalAlignment: String,\n position: String,\n verticalAlignment: String,\n visible: Boolean\n }\n});\nexports.DxAxisConstantLineStyleLabel = DxAxisConstantLineStyleLabel;\nDxAxisConstantLineStyleLabel.$_optionName = \"label\";\nvar DxAxisLabel = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n alignment: String,\n customizeHint: Function,\n customizeText: Function,\n displayMode: String,\n font: Object,\n format: [Object, Function, String],\n indentFromAxis: Number,\n overlappingBehavior: String,\n position: String,\n rotationAngle: Number,\n staggeringSpacing: Number,\n textOverflow: String,\n visible: Boolean,\n wordWrap: String\n }\n});\nexports.DxAxisLabel = DxAxisLabel;\nDxAxisLabel.$_optionName = \"label\";\nvar DxAxisTitle = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n alignment: String,\n font: Object,\n margin: Number,\n text: String,\n textOverflow: String,\n wordWrap: String\n }\n});\nexports.DxAxisTitle = DxAxisTitle;\nDxAxisTitle.$_optionName = \"title\";\nvar DxBorder = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n bottom: Boolean,\n color: String,\n cornerRadius: Number,\n dashStyle: String,\n left: Boolean,\n opacity: Number,\n right: Boolean,\n top: Boolean,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxBorder = DxBorder;\nDxBorder.$_optionName = \"border\";\nvar DxBreak = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n endValue: {},\n startValue: {}\n }\n});\nexports.DxBreak = DxBreak;\nDxBreak.$_optionName = \"breaks\";\nDxBreak.$_isCollectionItem = true;\nvar DxBreakStyle = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n line: String,\n width: Number\n }\n});\nexports.DxBreakStyle = DxBreakStyle;\nDxBreakStyle.$_optionName = \"breakStyle\";\nvar DxChartTitle = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n font: Object,\n horizontalAlignment: String,\n margin: [Number, Object],\n placeholderSize: Number,\n subtitle: [Object, String],\n text: String,\n textOverflow: String,\n verticalAlignment: String,\n wordWrap: String\n }\n});\nexports.DxChartTitle = DxChartTitle;\nDxChartTitle.$_optionName = \"title\";\nDxChartTitle.$_expectedChildren = {\n chartTitleSubtitle: { isCollectionItem: false, optionName: \"subtitle\" },\n font: { isCollectionItem: false, optionName: \"font\" },\n margin: { isCollectionItem: false, optionName: \"margin\" },\n subtitle: { isCollectionItem: false, optionName: \"subtitle\" }\n};\nvar DxChartTitleSubtitle = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n font: Object,\n offset: Number,\n text: String,\n textOverflow: String,\n wordWrap: String\n }\n});\nexports.DxChartTitleSubtitle = DxChartTitleSubtitle;\nDxChartTitleSubtitle.$_optionName = \"subtitle\";\nDxChartTitleSubtitle.$_expectedChildren = {\n font: { isCollectionItem: false, optionName: \"font\" }\n};\nvar DxCommonAnnotationSettings = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n allowDragging: Boolean,\n argument: {},\n arrowLength: Number,\n arrowWidth: Number,\n axis: String,\n border: Object,\n color: String,\n customizeTooltip: Function,\n data: Object,\n description: String,\n font: Object,\n height: Number,\n image: [Object, String],\n offsetX: Number,\n offsetY: Number,\n opacity: Number,\n paddingLeftRight: Number,\n paddingTopBottom: Number,\n series: String,\n shadow: Object,\n template: {},\n text: String,\n textOverflow: String,\n tooltipEnabled: Boolean,\n tooltipTemplate: {},\n type: String,\n value: {},\n width: Number,\n wordWrap: String,\n x: Number,\n y: Number\n }\n});\nexports.DxCommonAnnotationSettings = DxCommonAnnotationSettings;\nDxCommonAnnotationSettings.$_optionName = \"commonAnnotationSettings\";\nvar DxCommonAxisSettings = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n allowDecimals: Boolean,\n breakStyle: Object,\n color: String,\n constantLineStyle: Object,\n discreteAxisDivisionMode: String,\n endOnTick: Boolean,\n grid: Object,\n inverted: Boolean,\n label: Object,\n maxValueMargin: Number,\n minorGrid: Object,\n minorTick: Object,\n minValueMargin: Number,\n opacity: Number,\n placeholderSize: Number,\n stripStyle: Object,\n tick: Object,\n title: Object,\n valueMarginsEnabled: Boolean,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxCommonAxisSettings = DxCommonAxisSettings;\nDxCommonAxisSettings.$_optionName = \"commonAxisSettings\";\nDxCommonAxisSettings.$_expectedChildren = {\n commonAxisSettingsConstantLineStyle: { isCollectionItem: false, optionName: \"constantLineStyle\" },\n commonAxisSettingsLabel: { isCollectionItem: false, optionName: \"label\" },\n commonAxisSettingsTitle: { isCollectionItem: false, optionName: \"title\" },\n constantLineStyle: { isCollectionItem: false, optionName: \"constantLineStyle\" },\n label: { isCollectionItem: false, optionName: \"label\" },\n title: { isCollectionItem: false, optionName: \"title\" }\n};\nvar DxCommonAxisSettingsConstantLineStyle = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n dashStyle: String,\n label: Object,\n paddingLeftRight: Number,\n paddingTopBottom: Number,\n width: Number\n }\n});\nexports.DxCommonAxisSettingsConstantLineStyle = DxCommonAxisSettingsConstantLineStyle;\nDxCommonAxisSettingsConstantLineStyle.$_optionName = \"constantLineStyle\";\nDxCommonAxisSettingsConstantLineStyle.$_expectedChildren = {\n commonAxisSettingsConstantLineStyleLabel: { isCollectionItem: false, optionName: \"label\" },\n label: { isCollectionItem: false, optionName: \"label\" }\n};\nvar DxCommonAxisSettingsConstantLineStyleLabel = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n font: Object,\n position: String,\n visible: Boolean\n }\n});\nexports.DxCommonAxisSettingsConstantLineStyleLabel = DxCommonAxisSettingsConstantLineStyleLabel;\nDxCommonAxisSettingsConstantLineStyleLabel.$_optionName = \"label\";\nvar DxCommonAxisSettingsLabel = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n alignment: String,\n displayMode: String,\n font: Object,\n indentFromAxis: Number,\n overlappingBehavior: String,\n position: String,\n rotationAngle: Number,\n staggeringSpacing: Number,\n textOverflow: String,\n visible: Boolean,\n wordWrap: String\n }\n});\nexports.DxCommonAxisSettingsLabel = DxCommonAxisSettingsLabel;\nDxCommonAxisSettingsLabel.$_optionName = \"label\";\nvar DxCommonAxisSettingsTitle = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n alignment: String,\n font: Object,\n margin: Number,\n textOverflow: String,\n wordWrap: String\n }\n});\nexports.DxCommonAxisSettingsTitle = DxCommonAxisSettingsTitle;\nDxCommonAxisSettingsTitle.$_optionName = \"title\";\nvar DxCommonPaneSettings = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n backgroundColor: String,\n border: Object\n }\n});\nexports.DxCommonPaneSettings = DxCommonPaneSettings;\nDxCommonPaneSettings.$_optionName = \"commonPaneSettings\";\nDxCommonPaneSettings.$_expectedChildren = {\n border: { isCollectionItem: false, optionName: \"border\" },\n paneBorder: { isCollectionItem: false, optionName: \"border\" }\n};\nvar DxCommonSeriesSettings = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n aggregation: Object,\n area: Object,\n argumentField: String,\n axis: String,\n bar: Object,\n barOverlapGroup: String,\n barPadding: Number,\n barWidth: Number,\n border: Object,\n bubble: Object,\n candlestick: Object,\n closeValueField: String,\n color: String,\n cornerRadius: Number,\n dashStyle: String,\n fullstackedarea: Object,\n fullstackedbar: Object,\n fullstackedline: Object,\n fullstackedspline: Object,\n fullstackedsplinearea: Object,\n highValueField: String,\n hoverMode: String,\n hoverStyle: Object,\n ignoreEmptyPoints: Boolean,\n innerColor: String,\n label: Object,\n line: Object,\n lowValueField: String,\n maxLabelCount: Number,\n minBarSize: Number,\n opacity: Number,\n openValueField: String,\n pane: String,\n point: Object,\n rangearea: Object,\n rangebar: Object,\n rangeValue1Field: String,\n rangeValue2Field: String,\n reduction: Object,\n scatter: Object,\n selectionMode: String,\n selectionStyle: Object,\n showInLegend: Boolean,\n sizeField: String,\n spline: Object,\n splinearea: Object,\n stack: String,\n stackedarea: Object,\n stackedbar: Object,\n stackedline: Object,\n stackedspline: Object,\n stackedsplinearea: Object,\n steparea: Object,\n stepline: Object,\n stock: Object,\n tagField: String,\n type: String,\n valueErrorBar: Object,\n valueField: String,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxCommonSeriesSettings = DxCommonSeriesSettings;\nDxCommonSeriesSettings.$_optionName = \"commonSeriesSettings\";\nDxCommonSeriesSettings.$_expectedChildren = {\n aggregation: { isCollectionItem: false, optionName: \"aggregation\" },\n border: { isCollectionItem: false, optionName: \"border\" },\n commonSeriesSettingsHoverStyle: { isCollectionItem: false, optionName: \"hoverStyle\" },\n commonSeriesSettingsLabel: { isCollectionItem: false, optionName: \"label\" },\n commonSeriesSettingsSelectionStyle: { isCollectionItem: false, optionName: \"selectionStyle\" },\n hoverStyle: { isCollectionItem: false, optionName: \"hoverStyle\" },\n label: { isCollectionItem: false, optionName: \"label\" },\n point: { isCollectionItem: false, optionName: \"point\" },\n reduction: { isCollectionItem: false, optionName: \"reduction\" },\n selectionStyle: { isCollectionItem: false, optionName: \"selectionStyle\" },\n seriesBorder: { isCollectionItem: false, optionName: \"border\" },\n valueErrorBar: { isCollectionItem: false, optionName: \"valueErrorBar\" }\n};\nvar DxCommonSeriesSettingsHoverStyle = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n border: Object,\n color: String,\n dashStyle: String,\n hatching: Object,\n width: Number\n }\n});\nexports.DxCommonSeriesSettingsHoverStyle = DxCommonSeriesSettingsHoverStyle;\nDxCommonSeriesSettingsHoverStyle.$_optionName = \"hoverStyle\";\nDxCommonSeriesSettingsHoverStyle.$_expectedChildren = {\n border: { isCollectionItem: false, optionName: \"border\" },\n hatching: { isCollectionItem: false, optionName: \"hatching\" },\n seriesBorder: { isCollectionItem: false, optionName: \"border\" }\n};\nvar DxCommonSeriesSettingsLabel = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n alignment: String,\n argumentFormat: [Object, Function, String],\n backgroundColor: String,\n border: Object,\n connector: Object,\n customizeText: Function,\n font: Object,\n format: [Object, Function, String],\n horizontalOffset: Number,\n position: String,\n rotationAngle: Number,\n showForZeroValues: Boolean,\n verticalOffset: Number,\n visible: Boolean\n }\n});\nexports.DxCommonSeriesSettingsLabel = DxCommonSeriesSettingsLabel;\nDxCommonSeriesSettingsLabel.$_optionName = \"label\";\nDxCommonSeriesSettingsLabel.$_expectedChildren = {\n argumentFormat: { isCollectionItem: false, optionName: \"argumentFormat\" },\n border: { isCollectionItem: false, optionName: \"border\" },\n connector: { isCollectionItem: false, optionName: \"connector\" },\n font: { isCollectionItem: false, optionName: \"font\" },\n format: { isCollectionItem: false, optionName: \"format\" },\n seriesBorder: { isCollectionItem: false, optionName: \"border\" }\n};\nvar DxCommonSeriesSettingsSelectionStyle = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n border: Object,\n color: String,\n dashStyle: String,\n hatching: Object,\n width: Number\n }\n});\nexports.DxCommonSeriesSettingsSelectionStyle = DxCommonSeriesSettingsSelectionStyle;\nDxCommonSeriesSettingsSelectionStyle.$_optionName = \"selectionStyle\";\nDxCommonSeriesSettingsSelectionStyle.$_expectedChildren = {\n border: { isCollectionItem: false, optionName: \"border\" },\n hatching: { isCollectionItem: false, optionName: \"hatching\" },\n seriesBorder: { isCollectionItem: false, optionName: \"border\" }\n};\nvar DxConnector = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxConnector = DxConnector;\nDxConnector.$_optionName = \"connector\";\nvar DxConstantLine = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n dashStyle: String,\n displayBehindSeries: Boolean,\n extendAxis: Boolean,\n label: Object,\n paddingLeftRight: Number,\n paddingTopBottom: Number,\n value: {},\n width: Number\n }\n});\nexports.DxConstantLine = DxConstantLine;\nDxConstantLine.$_optionName = \"constantLines\";\nDxConstantLine.$_isCollectionItem = true;\nvar DxConstantLineLabel = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n font: Object,\n horizontalAlignment: String,\n position: String,\n text: String,\n verticalAlignment: String,\n visible: Boolean\n }\n});\nexports.DxConstantLineLabel = DxConstantLineLabel;\nDxConstantLineLabel.$_optionName = \"label\";\nvar DxConstantLineStyle = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n dashStyle: String,\n label: Object,\n paddingLeftRight: Number,\n paddingTopBottom: Number,\n width: Number\n }\n});\nexports.DxConstantLineStyle = DxConstantLineStyle;\nDxConstantLineStyle.$_optionName = \"constantLineStyle\";\nvar DxCrosshair = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n dashStyle: String,\n enabled: Boolean,\n horizontalLine: [Boolean, Object],\n label: Object,\n opacity: Number,\n verticalLine: [Boolean, Object],\n width: Number\n }\n});\nexports.DxCrosshair = DxCrosshair;\nDxCrosshair.$_optionName = \"crosshair\";\nDxCrosshair.$_expectedChildren = {\n horizontalLine: { isCollectionItem: false, optionName: \"horizontalLine\" },\n horizontalLineLabel: { isCollectionItem: false, optionName: \"label\" },\n label: { isCollectionItem: false, optionName: \"label\" },\n verticalLine: { isCollectionItem: false, optionName: \"verticalLine\" }\n};\nvar DxDataPrepareSettings = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n checkTypeForAllData: Boolean,\n convertToAxisDataType: Boolean,\n sortingMethod: [Boolean, Function]\n }\n});\nexports.DxDataPrepareSettings = DxDataPrepareSettings;\nDxDataPrepareSettings.$_optionName = \"dataPrepareSettings\";\nvar DxDragBoxStyle = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n opacity: Number\n }\n});\nexports.DxDragBoxStyle = DxDragBoxStyle;\nDxDragBoxStyle.$_optionName = \"dragBoxStyle\";\nvar DxExport = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n backgroundColor: String,\n enabled: Boolean,\n fileName: String,\n formats: Array,\n margin: Number,\n printingEnabled: Boolean,\n proxyUrl: String,\n svgToCanvas: Function\n }\n});\nexports.DxExport = DxExport;\nDxExport.$_optionName = \"export\";\nvar DxFont = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n family: String,\n opacity: Number,\n size: [Number, String],\n weight: Number\n }\n});\nexports.DxFont = DxFont;\nDxFont.$_optionName = \"font\";\nvar DxFormat = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n currency: String,\n formatter: Function,\n parser: Function,\n precision: Number,\n type: String\n }\n});\nexports.DxFormat = DxFormat;\nDxFormat.$_optionName = \"format\";\nvar DxGrid = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n opacity: Number,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxGrid = DxGrid;\nDxGrid.$_optionName = \"grid\";\nvar DxHatching = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n direction: String,\n opacity: Number,\n step: Number,\n width: Number\n }\n});\nexports.DxHatching = DxHatching;\nDxHatching.$_optionName = \"hatching\";\nvar DxHeight = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n rangeMaxPoint: Number,\n rangeMinPoint: Number\n }\n});\nexports.DxHeight = DxHeight;\nDxHeight.$_optionName = \"height\";\nvar DxHorizontalLine = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n dashStyle: String,\n label: Object,\n opacity: Number,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxHorizontalLine = DxHorizontalLine;\nDxHorizontalLine.$_optionName = \"horizontalLine\";\nDxHorizontalLine.$_expectedChildren = {\n horizontalLineLabel: { isCollectionItem: false, optionName: \"label\" },\n label: { isCollectionItem: false, optionName: \"label\" }\n};\nvar DxHorizontalLineLabel = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n backgroundColor: String,\n customizeText: Function,\n font: Object,\n format: [Object, Function, String],\n visible: Boolean\n }\n});\nexports.DxHorizontalLineLabel = DxHorizontalLineLabel;\nDxHorizontalLineLabel.$_optionName = \"label\";\nvar DxHoverStyle = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n border: Object,\n color: String,\n dashStyle: String,\n hatching: Object,\n size: Number,\n width: Number\n }\n});\nexports.DxHoverStyle = DxHoverStyle;\nDxHoverStyle.$_optionName = \"hoverStyle\";\nvar DxImage = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n height: Number,\n url: String,\n width: Number\n }\n});\nexports.DxImage = DxImage;\nDxImage.$_optionName = \"image\";\nvar DxLabel = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n alignment: String,\n argumentFormat: [Object, Function, String],\n backgroundColor: String,\n border: Object,\n connector: Object,\n customizeHint: Function,\n customizeText: Function,\n displayMode: String,\n font: Object,\n format: [Object, Function, String],\n horizontalAlignment: String,\n horizontalOffset: Number,\n indentFromAxis: Number,\n overlappingBehavior: String,\n position: String,\n rotationAngle: Number,\n showForZeroValues: Boolean,\n staggeringSpacing: Number,\n text: String,\n textOverflow: String,\n verticalAlignment: String,\n verticalOffset: Number,\n visible: Boolean,\n wordWrap: String\n }\n});\nexports.DxLabel = DxLabel;\nDxLabel.$_optionName = \"label\";\nvar DxLegend = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n backgroundColor: String,\n border: Object,\n columnCount: Number,\n columnItemSpacing: Number,\n customizeHint: Function,\n customizeItems: Function,\n customizeText: Function,\n font: Object,\n horizontalAlignment: String,\n hoverMode: String,\n itemsAlignment: String,\n itemTextPosition: String,\n margin: [Number, Object],\n markerSize: Number,\n markerTemplate: {},\n orientation: String,\n paddingLeftRight: Number,\n paddingTopBottom: Number,\n position: String,\n rowCount: Number,\n rowItemSpacing: Number,\n title: [Object, String],\n verticalAlignment: String,\n visible: Boolean\n }\n});\nexports.DxLegend = DxLegend;\nDxLegend.$_optionName = \"legend\";\nDxLegend.$_expectedChildren = {\n annotationBorder: { isCollectionItem: false, optionName: \"border\" },\n border: { isCollectionItem: false, optionName: \"border\" },\n font: { isCollectionItem: false, optionName: \"font\" },\n legendTitle: { isCollectionItem: false, optionName: \"title\" },\n margin: { isCollectionItem: false, optionName: \"margin\" },\n title: { isCollectionItem: false, optionName: \"title\" }\n};\nvar DxLegendTitle = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n font: Object,\n horizontalAlignment: String,\n margin: Object,\n placeholderSize: Number,\n subtitle: [Object, String],\n text: String,\n verticalAlignment: String\n }\n});\nexports.DxLegendTitle = DxLegendTitle;\nDxLegendTitle.$_optionName = \"title\";\nDxLegendTitle.$_expectedChildren = {\n font: { isCollectionItem: false, optionName: \"font\" },\n legendTitleSubtitle: { isCollectionItem: false, optionName: \"subtitle\" },\n margin: { isCollectionItem: false, optionName: \"margin\" },\n subtitle: { isCollectionItem: false, optionName: \"subtitle\" }\n};\nvar DxLegendTitleSubtitle = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n font: Object,\n offset: Number,\n text: String\n }\n});\nexports.DxLegendTitleSubtitle = DxLegendTitleSubtitle;\nDxLegendTitleSubtitle.$_optionName = \"subtitle\";\nDxLegendTitleSubtitle.$_expectedChildren = {\n font: { isCollectionItem: false, optionName: \"font\" }\n};\nvar DxLength = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n days: Number,\n hours: Number,\n milliseconds: Number,\n minutes: Number,\n months: Number,\n quarters: Number,\n seconds: Number,\n weeks: Number,\n years: Number\n }\n});\nexports.DxLength = DxLength;\nDxLength.$_optionName = \"length\";\nvar DxLoadingIndicator = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n backgroundColor: String,\n enabled: Boolean,\n font: Object,\n show: Boolean,\n text: String\n }\n});\nexports.DxLoadingIndicator = DxLoadingIndicator;\nDxLoadingIndicator.$_optionName = \"loadingIndicator\";\nDxLoadingIndicator.$_expectedChildren = {\n font: { isCollectionItem: false, optionName: \"font\" }\n};\nvar DxMargin = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n bottom: Number,\n left: Number,\n right: Number,\n top: Number\n }\n});\nexports.DxMargin = DxMargin;\nDxMargin.$_optionName = \"margin\";\nvar DxMinorGrid = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n opacity: Number,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxMinorGrid = DxMinorGrid;\nDxMinorGrid.$_optionName = \"minorGrid\";\nvar DxMinorTick = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n length: Number,\n opacity: Number,\n shift: Number,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxMinorTick = DxMinorTick;\nDxMinorTick.$_optionName = \"minorTick\";\nvar DxMinorTickInterval = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n days: Number,\n hours: Number,\n milliseconds: Number,\n minutes: Number,\n months: Number,\n quarters: Number,\n seconds: Number,\n weeks: Number,\n years: Number\n }\n});\nexports.DxMinorTickInterval = DxMinorTickInterval;\nDxMinorTickInterval.$_optionName = \"minorTickInterval\";\nvar DxMinVisualRangeLength = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n days: Number,\n hours: Number,\n milliseconds: Number,\n minutes: Number,\n months: Number,\n quarters: Number,\n seconds: Number,\n weeks: Number,\n years: Number\n }\n});\nexports.DxMinVisualRangeLength = DxMinVisualRangeLength;\nDxMinVisualRangeLength.$_optionName = \"minVisualRangeLength\";\nvar DxPane = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n backgroundColor: String,\n border: Object,\n height: [Number, String],\n name: String\n }\n});\nexports.DxPane = DxPane;\nDxPane.$_optionName = \"panes\";\nDxPane.$_isCollectionItem = true;\nvar DxPaneBorder = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n bottom: Boolean,\n color: String,\n dashStyle: String,\n left: Boolean,\n opacity: Number,\n right: Boolean,\n top: Boolean,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxPaneBorder = DxPaneBorder;\nDxPaneBorder.$_optionName = \"border\";\nvar DxPoint = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n border: Object,\n color: String,\n hoverMode: String,\n hoverStyle: Object,\n image: [Object, String],\n selectionMode: String,\n selectionStyle: Object,\n size: Number,\n symbol: String,\n visible: Boolean\n }\n});\nexports.DxPoint = DxPoint;\nDxPoint.$_optionName = \"point\";\nDxPoint.$_expectedChildren = {\n border: { isCollectionItem: false, optionName: \"border\" },\n hoverStyle: { isCollectionItem: false, optionName: \"hoverStyle\" },\n image: { isCollectionItem: false, optionName: \"image\" },\n pointBorder: { isCollectionItem: false, optionName: \"border\" },\n pointHoverStyle: { isCollectionItem: false, optionName: \"hoverStyle\" },\n pointImage: { isCollectionItem: false, optionName: \"image\" },\n pointSelectionStyle: { isCollectionItem: false, optionName: \"selectionStyle\" },\n selectionStyle: { isCollectionItem: false, optionName: \"selectionStyle\" }\n};\nvar DxPointBorder = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxPointBorder = DxPointBorder;\nDxPointBorder.$_optionName = \"border\";\nvar DxPointHoverStyle = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n border: Object,\n color: String,\n size: Number\n }\n});\nexports.DxPointHoverStyle = DxPointHoverStyle;\nDxPointHoverStyle.$_optionName = \"hoverStyle\";\nDxPointHoverStyle.$_expectedChildren = {\n border: { isCollectionItem: false, optionName: \"border\" },\n pointBorder: { isCollectionItem: false, optionName: \"border\" }\n};\nvar DxPointImage = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n height: [Number, Object],\n url: [Object, String],\n width: [Number, Object]\n }\n});\nexports.DxPointImage = DxPointImage;\nDxPointImage.$_optionName = \"image\";\nDxPointImage.$_expectedChildren = {\n height: { isCollectionItem: false, optionName: \"height\" },\n url: { isCollectionItem: false, optionName: \"url\" },\n width: { isCollectionItem: false, optionName: \"width\" }\n};\nvar DxPointSelectionStyle = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n border: Object,\n color: String,\n size: Number\n }\n});\nexports.DxPointSelectionStyle = DxPointSelectionStyle;\nDxPointSelectionStyle.$_optionName = \"selectionStyle\";\nDxPointSelectionStyle.$_expectedChildren = {\n border: { isCollectionItem: false, optionName: \"border\" },\n pointBorder: { isCollectionItem: false, optionName: \"border\" }\n};\nvar DxReduction = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n level: String\n }\n});\nexports.DxReduction = DxReduction;\nDxReduction.$_optionName = \"reduction\";\nvar DxScrollBar = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n offset: Number,\n opacity: Number,\n position: String,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxScrollBar = DxScrollBar;\nDxScrollBar.$_optionName = \"scrollBar\";\nvar DxSelectionStyle = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n border: Object,\n color: String,\n dashStyle: String,\n hatching: Object,\n size: Number,\n width: Number\n }\n});\nexports.DxSelectionStyle = DxSelectionStyle;\nDxSelectionStyle.$_optionName = \"selectionStyle\";\nvar DxSeries = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n aggregation: Object,\n argumentField: String,\n axis: String,\n barOverlapGroup: String,\n barPadding: Number,\n barWidth: Number,\n border: Object,\n closeValueField: String,\n color: String,\n cornerRadius: Number,\n dashStyle: String,\n highValueField: String,\n hoverMode: String,\n hoverStyle: Object,\n ignoreEmptyPoints: Boolean,\n innerColor: String,\n label: Object,\n lowValueField: String,\n maxLabelCount: Number,\n minBarSize: Number,\n name: String,\n opacity: Number,\n openValueField: String,\n pane: String,\n point: Object,\n rangeValue1Field: String,\n rangeValue2Field: String,\n reduction: Object,\n selectionMode: String,\n selectionStyle: Object,\n showInLegend: Boolean,\n sizeField: String,\n stack: String,\n tag: {},\n tagField: String,\n type: String,\n valueErrorBar: Object,\n valueField: String,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxSeries = DxSeries;\nDxSeries.$_optionName = \"series\";\nDxSeries.$_isCollectionItem = true;\nvar DxSeriesBorder = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n dashStyle: String,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxSeriesBorder = DxSeriesBorder;\nDxSeriesBorder.$_optionName = \"border\";\nvar DxSeriesTemplate = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n customizeSeries: Function,\n nameField: String\n }\n});\nexports.DxSeriesTemplate = DxSeriesTemplate;\nDxSeriesTemplate.$_optionName = \"seriesTemplate\";\nvar DxShadow = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n blur: Number,\n color: String,\n offsetX: Number,\n offsetY: Number,\n opacity: Number\n }\n});\nexports.DxShadow = DxShadow;\nDxShadow.$_optionName = \"shadow\";\nvar DxSize = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n height: Number,\n width: Number\n }\n});\nexports.DxSize = DxSize;\nDxSize.$_optionName = \"size\";\nvar DxStrip = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n endValue: {},\n label: Object,\n paddingLeftRight: Number,\n paddingTopBottom: Number,\n startValue: {}\n }\n});\nexports.DxStrip = DxStrip;\nDxStrip.$_optionName = \"strips\";\nDxStrip.$_isCollectionItem = true;\nvar DxStripLabel = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n font: Object,\n horizontalAlignment: String,\n text: String,\n verticalAlignment: String\n }\n});\nexports.DxStripLabel = DxStripLabel;\nDxStripLabel.$_optionName = \"label\";\nvar DxStripStyle = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n label: Object,\n paddingLeftRight: Number,\n paddingTopBottom: Number\n }\n});\nexports.DxStripStyle = DxStripStyle;\nDxStripStyle.$_optionName = \"stripStyle\";\nDxStripStyle.$_expectedChildren = {\n label: { isCollectionItem: false, optionName: \"label\" },\n stripStyleLabel: { isCollectionItem: false, optionName: \"label\" }\n};\nvar DxStripStyleLabel = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n font: Object,\n horizontalAlignment: String,\n verticalAlignment: String\n }\n});\nexports.DxStripStyleLabel = DxStripStyleLabel;\nDxStripStyleLabel.$_optionName = \"label\";\nvar DxSubtitle = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n font: Object,\n offset: Number,\n text: String,\n textOverflow: String,\n wordWrap: String\n }\n});\nexports.DxSubtitle = DxSubtitle;\nDxSubtitle.$_optionName = \"subtitle\";\nvar DxTick = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n length: Number,\n opacity: Number,\n shift: Number,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxTick = DxTick;\nDxTick.$_optionName = \"tick\";\nvar DxTickInterval = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n days: Number,\n hours: Number,\n milliseconds: Number,\n minutes: Number,\n months: Number,\n quarters: Number,\n seconds: Number,\n weeks: Number,\n years: Number\n }\n});\nexports.DxTickInterval = DxTickInterval;\nDxTickInterval.$_optionName = \"tickInterval\";\nvar DxTitle = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n alignment: String,\n font: Object,\n horizontalAlignment: String,\n margin: Number,\n placeholderSize: Number,\n subtitle: [Object, String],\n text: String,\n textOverflow: String,\n verticalAlignment: String,\n wordWrap: String\n }\n});\nexports.DxTitle = DxTitle;\nDxTitle.$_optionName = \"title\";\nvar DxTooltip = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n argumentFormat: [Object, Function, String],\n arrowLength: Number,\n border: Object,\n color: String,\n container: {},\n contentTemplate: {},\n cornerRadius: Number,\n customizeTooltip: Function,\n enabled: Boolean,\n font: Object,\n format: [Object, Function, String],\n interactive: Boolean,\n location: String,\n opacity: Number,\n paddingLeftRight: Number,\n paddingTopBottom: Number,\n shadow: Object,\n shared: Boolean,\n zIndex: Number\n }\n});\nexports.DxTooltip = DxTooltip;\nDxTooltip.$_optionName = \"tooltip\";\nDxTooltip.$_expectedChildren = {\n argumentFormat: { isCollectionItem: false, optionName: \"argumentFormat\" },\n border: { isCollectionItem: false, optionName: \"border\" },\n font: { isCollectionItem: false, optionName: \"font\" },\n format: { isCollectionItem: false, optionName: \"format\" },\n shadow: { isCollectionItem: false, optionName: \"shadow\" },\n tooltipBorder: { isCollectionItem: false, optionName: \"border\" }\n};\nvar DxTooltipBorder = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n dashStyle: String,\n opacity: Number,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxTooltipBorder = DxTooltipBorder;\nDxTooltipBorder.$_optionName = \"border\";\nvar DxUrl = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n rangeMaxPoint: String,\n rangeMinPoint: String\n }\n});\nexports.DxUrl = DxUrl;\nDxUrl.$_optionName = \"url\";\nvar DxValueAxis = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n allowDecimals: Boolean,\n autoBreaksEnabled: Boolean,\n axisDivisionFactor: Number,\n breaks: Array,\n breakStyle: Object,\n categories: Array,\n color: String,\n constantLines: Array,\n constantLineStyle: Object,\n customPosition: {},\n discreteAxisDivisionMode: String,\n endOnTick: Boolean,\n grid: Object,\n inverted: Boolean,\n label: Object,\n linearThreshold: Number,\n logarithmBase: Number,\n max: {},\n maxAutoBreakCount: Number,\n maxValueMargin: Number,\n min: {},\n minorGrid: Object,\n minorTick: Object,\n minorTickCount: Number,\n minorTickInterval: [Number, Object, String],\n minValueMargin: Number,\n minVisualRangeLength: [Number, Object, String],\n multipleAxesSpacing: Number,\n name: String,\n offset: Number,\n opacity: Number,\n pane: String,\n placeholderSize: Number,\n position: String,\n showZero: Boolean,\n strips: Array,\n stripStyle: Object,\n synchronizedValue: Number,\n tick: Object,\n tickInterval: [Number, Object, String],\n title: [Object, String],\n type: String,\n valueMarginsEnabled: Boolean,\n valueType: String,\n visible: Boolean,\n visualRange: [Array, Object],\n visualRangeUpdateMode: String,\n wholeRange: [Array, Object],\n width: Number\n }\n});\nexports.DxValueAxis = DxValueAxis;\nDxValueAxis.$_optionName = \"valueAxis\";\nDxValueAxis.$_isCollectionItem = true;\nDxValueAxis.$_expectedChildren = {\n axisConstantLineStyle: { isCollectionItem: false, optionName: \"constantLineStyle\" },\n axisLabel: { isCollectionItem: false, optionName: \"label\" },\n axisTitle: { isCollectionItem: false, optionName: \"title\" },\n break: { isCollectionItem: true, optionName: \"breaks\" },\n constantLine: { isCollectionItem: true, optionName: \"constantLines\" },\n constantLineStyle: { isCollectionItem: false, optionName: \"constantLineStyle\" },\n label: { isCollectionItem: false, optionName: \"label\" },\n minorTickInterval: { isCollectionItem: false, optionName: \"minorTickInterval\" },\n minVisualRangeLength: { isCollectionItem: false, optionName: \"minVisualRangeLength\" },\n strip: { isCollectionItem: true, optionName: \"strips\" },\n tickInterval: { isCollectionItem: false, optionName: \"tickInterval\" },\n title: { isCollectionItem: false, optionName: \"title\" },\n visualRange: { isCollectionItem: false, optionName: \"visualRange\" },\n wholeRange: { isCollectionItem: false, optionName: \"wholeRange\" }\n};\nvar DxValueErrorBar = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n displayMode: String,\n edgeLength: Number,\n highValueField: String,\n lineWidth: Number,\n lowValueField: String,\n opacity: Number,\n type: String,\n value: Number\n }\n});\nexports.DxValueErrorBar = DxValueErrorBar;\nDxValueErrorBar.$_optionName = \"valueErrorBar\";\nvar DxVerticalLine = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n color: String,\n dashStyle: String,\n label: Object,\n opacity: Number,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxVerticalLine = DxVerticalLine;\nDxVerticalLine.$_optionName = \"verticalLine\";\nDxVerticalLine.$_expectedChildren = {\n horizontalLineLabel: { isCollectionItem: false, optionName: \"label\" },\n label: { isCollectionItem: false, optionName: \"label\" }\n};\nvar DxVisualRange = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n endValue: {},\n length: [Number, Object, String],\n startValue: {}\n }\n});\nexports.DxVisualRange = DxVisualRange;\nDxVisualRange.$_optionName = \"visualRange\";\nvar DxWholeRange = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n endValue: {},\n length: [Number, Object, String],\n startValue: {}\n }\n});\nexports.DxWholeRange = DxWholeRange;\nDxWholeRange.$_optionName = \"wholeRange\";\nvar DxWidth = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n rangeMaxPoint: Number,\n rangeMinPoint: Number\n }\n});\nexports.DxWidth = DxWidth;\nDxWidth.$_optionName = \"width\";\nvar DxZoomAndPan = Vue.extend({\n extends: configuration_component_1.DxConfiguration,\n props: {\n allowMouseWheel: Boolean,\n allowTouchGestures: Boolean,\n argumentAxis: String,\n dragBoxStyle: Object,\n dragToZoom: Boolean,\n panKey: String,\n valueAxis: String\n }\n});\nexports.DxZoomAndPan = DxZoomAndPan;\nDxZoomAndPan.$_optionName = \"zoomAndPan\";\nDxZoomAndPan.$_expectedChildren = {\n dragBoxStyle: { isCollectionItem: false, optionName: \"dragBoxStyle\" }\n};\nexports.default = DxChart;\n","/**\r\n * DevExtreme (viz/chart_components/shutter_zoom.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar dragEvents = require(\"../../events/drag\");\r\nvar SHUTTER_EVENTS_NS = \".shutter-zoom\";\r\nvar DRAG_START_EVENT_NAME = dragEvents.start + SHUTTER_EVENTS_NS;\r\nvar DRAG_UPDATE_EVENT_NAME = dragEvents.move + SHUTTER_EVENTS_NS;\r\nvar DRAG_END_EVENT_NAME = dragEvents.end + SHUTTER_EVENTS_NS;\r\n\r\nfunction getPointerCoord(rootOffset, canvas, rotated, e) {\r\n var coord = Math.floor(rotated ? e.pageY - rootOffset.top : e.pageX - rootOffset.left);\r\n var min = rotated ? canvas.y1 : canvas.x1;\r\n var max = rotated ? canvas.y2 : canvas.x2;\r\n if (coord < min) {\r\n coord = min\r\n } else {\r\n if (coord > max) {\r\n coord = max\r\n }\r\n }\r\n return coord\r\n}\r\n\r\nfunction checkCoords(rootOffset, canvas, e) {\r\n var x = e.pageX - rootOffset.left;\r\n var y = e.pageY - rootOffset.top;\r\n return x >= canvas.x1 && x <= canvas.x2 && y >= canvas.y1 && y <= canvas.y2\r\n}\r\n\r\nfunction dragStartHandler(ctx) {\r\n return function(e) {\r\n var offset = ctx.getRootOffset();\r\n var canvas = ctx.getCanvas();\r\n if (!checkCoords(offset, canvas, e)) {\r\n e.cancel = true;\r\n return\r\n }\r\n ctx.rootOffset = offset;\r\n ctx.canvas = canvas;\r\n ctx.startCoord = getPointerCoord(offset, canvas, ctx.rotated, e);\r\n ctx.triggerStart();\r\n ctx.rect.attr({\r\n x: canvas.x1,\r\n y: canvas.y1,\r\n width: canvas.width,\r\n height: canvas.height\r\n }).append(ctx.root)\r\n }\r\n}\r\n\r\nfunction dragHandler(ctx) {\r\n return function(e) {\r\n var curCoord = getPointerCoord(ctx.rootOffset, ctx.canvas, ctx.rotated, e);\r\n var attr = {};\r\n ctx.curCoord = curCoord;\r\n attr[ctx.rotated ? \"y\" : \"x\"] = Math.min(ctx.startCoord, curCoord);\r\n attr[ctx.rotated ? \"height\" : \"width\"] = Math.abs(ctx.startCoord - curCoord);\r\n ctx.rect.attr(attr)\r\n }\r\n}\r\n\r\nfunction dragEndHandler(ctx) {\r\n return function(e) {\r\n ctx.triggerEnd();\r\n ctx.rect.remove()\r\n }\r\n}\r\n\r\nfunction shutterZoom(options) {\r\n var chart = options.chart;\r\n var renderer = options.renderer;\r\n var rotated = options.rotated;\r\n var rect = renderer.rect(0, 0, 0, 0).attr(options.shutterOptions);\r\n var shutter = {\r\n rect: rect,\r\n root: renderer.root,\r\n rotated: rotated,\r\n triggerStart: function() {\r\n chart._eventTrigger(\"zoomStart\")\r\n },\r\n triggerEnd: function() {\r\n var tr = chart._argumentAxes[0].getTranslator();\r\n var rangeStart = Math.min(this.startCoord, this.curCoord);\r\n var rangeEnd = Math.max(this.startCoord, this.curCoord);\r\n chart._eventTrigger(\"zoomEnd\", {\r\n rangeStart: tr.from(rangeStart),\r\n rangeEnd: tr.from(rangeEnd)\r\n })\r\n },\r\n dispose: function() {\r\n renderer.root.off(SHUTTER_EVENTS_NS);\r\n rect.dispose()\r\n },\r\n getRootOffset: function() {\r\n return renderer.getRootOffset()\r\n },\r\n getCanvas: function() {\r\n var canvas = chart._canvas;\r\n var panes = chart.panes;\r\n var firstPane = panes[0].canvas;\r\n var lastPane = panes[panes.length - 1].canvas;\r\n return {\r\n x1: firstPane.left,\r\n y1: firstPane.top,\r\n x2: canvas.width - lastPane.right,\r\n y2: canvas.height - lastPane.bottom,\r\n width: canvas.width - firstPane.left - lastPane.right,\r\n height: canvas.height - firstPane.top - lastPane.bottom\r\n }\r\n }\r\n };\r\n renderer.root.off(SHUTTER_EVENTS_NS).on(DRAG_START_EVENT_NAME, {\r\n direction: rotated ? \"vertical\" : \"horizontal\",\r\n immediate: true\r\n }, dragStartHandler(shutter)).on(DRAG_UPDATE_EVENT_NAME, dragHandler(shutter)).on(DRAG_END_EVENT_NAME, dragEndHandler(shutter));\r\n return shutter\r\n}\r\nmodule.exports = {\r\n name: \"shutter_zoom\",\r\n init: function() {\r\n var options = this.option(\"shutterZoom\") || {};\r\n if (!options.enabled) {\r\n return\r\n }\r\n this._shutterZoom = shutterZoom({\r\n chart: this,\r\n renderer: this._renderer,\r\n rotated: this.option(\"rotated\"),\r\n shutterOptions: options\r\n })\r\n },\r\n dispose: function() {\r\n this._shutterZoom && this._shutterZoom.dispose()\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/axes/xy_axes.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _range = require(\"../translators/range\");\r\nvar _range2 = _interopRequireDefault(_range);\r\nvar _format_helper = require(\"../../format_helper\");\r\nvar _date = require(\"../../core/utils/date\");\r\nvar _date2 = _interopRequireDefault(_date);\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _datetime_breaks = require(\"./datetime_breaks\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _utils2 = _interopRequireDefault(_utils);\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _axes_constants = require(\"./axes_constants\");\r\nvar _axes_constants2 = _interopRequireDefault(_axes_constants);\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar getNextDateUnit = _date2.default.getNextDateUnit;\r\nvar correctDateWithUnitBeginning = _date2.default.correctDateWithUnitBeginning;\r\nvar _math = Math;\r\nvar _max = _math.max;\r\nvar TOP = _axes_constants2.default.top;\r\nvar BOTTOM = _axes_constants2.default.bottom;\r\nvar LEFT = _axes_constants2.default.left;\r\nvar RIGHT = _axes_constants2.default.right;\r\nvar CENTER = _axes_constants2.default.center;\r\nvar SCALE_BREAK_OFFSET = 3;\r\nvar RANGE_RATIO = .3;\r\nvar WAVED_LINE_CENTER = 2;\r\nvar WAVED_LINE_TOP = 0;\r\nvar WAVED_LINE_BOTTOM = 4;\r\nvar WAVED_LINE_LENGTH = 24;\r\nvar TICKS_CORRECTIONS = {\r\n left: -1,\r\n top: -1,\r\n right: 0,\r\n bottom: 0,\r\n center: -.5\r\n};\r\n\r\nfunction prepareDatesDifferences(datesDifferences, tickInterval) {\r\n var dateUnitInterval;\r\n var i;\r\n if (\"week\" === tickInterval) {\r\n tickInterval = \"day\"\r\n }\r\n if (\"quarter\" === tickInterval) {\r\n tickInterval = \"month\"\r\n }\r\n if (datesDifferences[tickInterval]) {\r\n for (i = 0; i < _date2.default.dateUnitIntervals.length; i++) {\r\n dateUnitInterval = _date2.default.dateUnitIntervals[i];\r\n if (datesDifferences[dateUnitInterval]) {\r\n datesDifferences[dateUnitInterval] = false;\r\n datesDifferences.count--\r\n }\r\n if (dateUnitInterval === tickInterval) {\r\n break\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction sortingBreaks(breaks) {\r\n return breaks.sort(function(a, b) {\r\n return a.from - b.from\r\n })\r\n}\r\n\r\nfunction filterBreaks(breaks, viewport, breakStyle) {\r\n var minVisible = viewport.minVisible;\r\n var maxVisible = viewport.maxVisible;\r\n var breakSize = breakStyle ? breakStyle.width : 0;\r\n return breaks.reduce(function(result, currentBreak) {\r\n var from = currentBreak.from;\r\n var to = currentBreak.to;\r\n var lastResult = result[result.length - 1];\r\n var newBreak;\r\n if (!(0, _type.isDefined)(from) || !(0, _type.isDefined)(to)) {\r\n return result\r\n }\r\n if (from > to) {\r\n to = [from, from = to][0]\r\n }\r\n if (result.length && from < lastResult.to) {\r\n if (to > lastResult.to) {\r\n lastResult.to = to > maxVisible ? maxVisible : to;\r\n if (lastResult.gapSize) {\r\n lastResult.gapSize = void 0;\r\n lastResult.cumulativeWidth += breakSize\r\n }\r\n }\r\n } else {\r\n if ((from >= minVisible && from < maxVisible || to <= maxVisible && to > minVisible) && to - from < maxVisible - minVisible) {\r\n var _lastResult$cumulativ;\r\n from = from >= minVisible ? from : minVisible;\r\n to = to <= maxVisible ? to : maxVisible;\r\n newBreak = {\r\n from: from,\r\n to: to,\r\n cumulativeWidth: (null !== (_lastResult$cumulativ = null === lastResult || void 0 === lastResult ? void 0 : lastResult.cumulativeWidth) && void 0 !== _lastResult$cumulativ ? _lastResult$cumulativ : 0) + breakSize\r\n };\r\n if (currentBreak.gapSize) {\r\n var _lastResult$cumulativ2;\r\n newBreak.gapSize = _date2.default.convertMillisecondsToDateUnits(to - from);\r\n newBreak.cumulativeWidth = null !== (_lastResult$cumulativ2 = null === lastResult || void 0 === lastResult ? void 0 : lastResult.cumulativeWidth) && void 0 !== _lastResult$cumulativ2 ? _lastResult$cumulativ2 : 0\r\n }\r\n result.push(newBreak)\r\n }\r\n }\r\n return result\r\n }, [])\r\n}\r\n\r\nfunction getMarkerDates(min, max, markerInterval) {\r\n var origMin = min;\r\n var dates;\r\n min = correctDateWithUnitBeginning(min, markerInterval);\r\n max = correctDateWithUnitBeginning(max, markerInterval);\r\n dates = _date2.default.getSequenceByInterval(min, max, markerInterval);\r\n if (dates.length && origMin > dates[0]) {\r\n dates = dates.slice(1)\r\n }\r\n return dates\r\n}\r\n\r\nfunction getStripHorizontalAlignmentPosition(alignment) {\r\n var position = \"start\";\r\n if (\"center\" === alignment) {\r\n position = \"center\"\r\n }\r\n if (\"right\" === alignment) {\r\n position = \"end\"\r\n }\r\n return position\r\n}\r\n\r\nfunction getStripVerticalAlignmentPosition(alignment) {\r\n var position = \"start\";\r\n if (\"center\" === alignment) {\r\n position = \"center\"\r\n }\r\n if (\"bottom\" === alignment) {\r\n position = \"end\"\r\n }\r\n return position\r\n}\r\n\r\nfunction getMarkerInterval(tickInterval) {\r\n var markerInterval = getNextDateUnit(tickInterval);\r\n if (\"quarter\" === markerInterval) {\r\n markerInterval = getNextDateUnit(markerInterval)\r\n }\r\n return markerInterval\r\n}\r\n\r\nfunction getMarkerFormat(curDate, prevDate, tickInterval, markerInterval) {\r\n var format = markerInterval;\r\n var datesDifferences = prevDate && _date2.default.getDatesDifferences(prevDate, curDate);\r\n if (prevDate && \"year\" !== tickInterval) {\r\n prepareDatesDifferences(datesDifferences, tickInterval);\r\n format = (0, _format_helper.getDateFormatByDifferences)(datesDifferences)\r\n }\r\n return format\r\n}\r\n\r\nfunction getMaxSide(act, boxes) {\r\n return boxes.reduce(function(prevValue, box) {\r\n return _max(prevValue, act(box))\r\n }, 0)\r\n}\r\n\r\nfunction getDistanceByAngle(bBox, rotationAngle) {\r\n rotationAngle = _math.abs(rotationAngle);\r\n rotationAngle = rotationAngle % 180 >= 90 ? 90 - rotationAngle % 90 : rotationAngle % 90;\r\n var a = rotationAngle * (_math.PI / 180);\r\n if (a >= _math.atan(bBox.height / bBox.width)) {\r\n return bBox.height / _math.abs(_math.sin(a))\r\n } else {\r\n return bBox.width\r\n }\r\n}\r\n\r\nfunction getMaxConstantLinePadding(constantLines) {\r\n return constantLines.reduce(function(padding, options) {\r\n return _max(padding, options.paddingTopBottom)\r\n }, 0)\r\n}\r\n\r\nfunction getConstantLineLabelMarginForVerticalAlignment(constantLines, alignment, labelHeight) {\r\n return constantLines.some(function(options) {\r\n return options.label.verticalAlignment === alignment\r\n }) && labelHeight || 0\r\n}\r\n\r\nfunction getLeftMargin(bBox) {\r\n return _math.abs(bBox.x) || 0\r\n}\r\n\r\nfunction getRightMargin(bBox) {\r\n return _math.abs(bBox.width - _math.abs(bBox.x)) || 0\r\n}\r\n\r\nfunction generateRangesOnPoints(points, edgePoints, getRange) {\r\n var i;\r\n var length;\r\n var maxRange = null;\r\n var ranges = [];\r\n var curValue;\r\n var prevValue;\r\n var curRange;\r\n for (i = 1, length = points.length; i < length; i++) {\r\n curValue = points[i];\r\n prevValue = points[i - 1];\r\n curRange = getRange(curValue, prevValue);\r\n if (edgePoints.indexOf(curValue) >= 0) {\r\n if (!maxRange || curRange > maxRange.length) {\r\n maxRange = {\r\n start: curValue,\r\n end: prevValue,\r\n length: curRange\r\n }\r\n }\r\n } else {\r\n if (maxRange && curRange < maxRange.length) {\r\n ranges.push(maxRange)\r\n } else {\r\n ranges.push({\r\n start: curValue,\r\n end: prevValue,\r\n length: curRange\r\n })\r\n }\r\n maxRange = null\r\n }\r\n }\r\n if (maxRange) {\r\n ranges.push(maxRange)\r\n }\r\n return ranges\r\n}\r\n\r\nfunction generateAutoBreaks(_ref, series, _ref2) {\r\n var logarithmBase = _ref.logarithmBase,\r\n type = _ref.type,\r\n maxAutoBreakCount = _ref.maxAutoBreakCount;\r\n var minVisible = _ref2.minVisible,\r\n maxVisible = _ref2.maxVisible;\r\n var breaks = [];\r\n var getRange = \"logarithmic\" === type ? function(min, max) {\r\n return _utils2.default.getLog(max / min, logarithmBase)\r\n } : function(min, max) {\r\n return max - min\r\n };\r\n var visibleRange = getRange(minVisible, maxVisible);\r\n var points = series.reduce(function(result, s) {\r\n var points = s.getPointsInViewPort();\r\n result[0] = result[0].concat(points[0]);\r\n result[1] = result[1].concat(points[1]);\r\n return result\r\n }, [\r\n [],\r\n []\r\n ]);\r\n var sortedAllPoints = points[0].concat(points[1]).sort(function(a, b) {\r\n return b - a\r\n });\r\n var edgePoints = points[1].filter(function(p) {\r\n return points[0].indexOf(p) < 0\r\n });\r\n var minDiff = RANGE_RATIO * visibleRange;\r\n var ranges = generateRangesOnPoints(sortedAllPoints, edgePoints, getRange).sort(function(a, b) {\r\n return b.length - a.length\r\n });\r\n var epsilon = _math.min.apply(null, ranges.map(function(r) {\r\n return r.length\r\n })) / 1e3;\r\n var _maxAutoBreakCount = (0, _type.isDefined)(maxAutoBreakCount) ? _math.min(maxAutoBreakCount, ranges.length) : ranges.length;\r\n for (var i = 0; i < _maxAutoBreakCount; i++) {\r\n if (ranges[i].length >= minDiff) {\r\n if (visibleRange <= ranges[i].length) {\r\n break\r\n }\r\n visibleRange -= ranges[i].length;\r\n if (visibleRange > epsilon || visibleRange < -epsilon) {\r\n breaks.push({\r\n from: ranges[i].start,\r\n to: ranges[i].end\r\n });\r\n minDiff = RANGE_RATIO * visibleRange\r\n }\r\n } else {\r\n break\r\n }\r\n }\r\n sortingBreaks(breaks);\r\n return breaks\r\n}\r\nmodule.exports = {\r\n linear: {\r\n _getStep: function(boxes, rotationAngle) {\r\n var spacing = this._options.label.minSpacing;\r\n var func = this._isHorizontal ? function(box) {\r\n return box.width + spacing\r\n } : function(box) {\r\n return box.height\r\n };\r\n var maxLabelLength = getMaxSide(func, boxes);\r\n if (rotationAngle) {\r\n maxLabelLength = getDistanceByAngle({\r\n width: maxLabelLength,\r\n height: this._getMaxLabelHeight(boxes, 0)\r\n }, rotationAngle)\r\n }\r\n return _axes_constants2.default.getTicksCountInRange(this._majorTicks, this._isHorizontal ? \"x\" : \"y\", maxLabelLength)\r\n },\r\n _getMaxLabelHeight: function(boxes, spacing) {\r\n return getMaxSide(function(box) {\r\n return box.height\r\n }, boxes) + spacing\r\n },\r\n _validateOverlappingMode: function(mode, displayMode) {\r\n if (this._isHorizontal && (\"rotate\" === displayMode || \"stagger\" === displayMode) || !this._isHorizontal) {\r\n return _axes_constants2.default.validateOverlappingMode(mode)\r\n }\r\n return mode\r\n },\r\n _validateDisplayMode: function(mode) {\r\n return this._isHorizontal ? mode : \"standard\"\r\n },\r\n getMarkerTrackers: function() {\r\n return this._markerTrackers\r\n },\r\n _getSharpParam: function(opposite) {\r\n return this._isHorizontal ^ opposite ? \"h\" : \"v\"\r\n },\r\n _createAxisElement: function() {\r\n return this._renderer.path([], \"line\")\r\n },\r\n _updateAxisElementPosition: function() {\r\n var axisCoord = this._axisPosition;\r\n var canvas = this._getCanvasStartEnd();\r\n this._axisElement.attr({\r\n points: this._isHorizontal ? [canvas.start, axisCoord, canvas.end, axisCoord] : [axisCoord, canvas.start, axisCoord, canvas.end]\r\n })\r\n },\r\n _getTranslatedCoord: function(value, offset) {\r\n return this._translator.translate(value, offset)\r\n },\r\n _initAxisPositions: function() {\r\n var that = this;\r\n if (that.customPositionIsAvailable() && !(0, _type.isDefined)(that._customBoundaryPosition)) {\r\n that._customBoundaryPosition = that.getCustomBoundaryPosition()\r\n }\r\n if (!that.customPositionIsAvailable() || that.customPositionIsBoundary()) {\r\n that._axisPosition = that.getPredefinedPosition(that.getResolvedBoundaryPosition())\r\n } else {\r\n that._axisPosition = that.getCustomPosition()\r\n }\r\n },\r\n _getTickMarkPoints: function(coords, length, tickOptions) {\r\n var isHorizontal = this._isHorizontal;\r\n var tickOrientation = this._options.tickOrientation;\r\n var labelPosition = this._options.label.position;\r\n var tickStartCoord;\r\n if ((0, _type.isDefined)(tickOrientation)) {\r\n tickStartCoord = TICKS_CORRECTIONS[tickOrientation] * length\r\n } else {\r\n var shift = tickOptions.shift || 0;\r\n if (!isHorizontal && labelPosition === LEFT || isHorizontal && labelPosition !== BOTTOM) {\r\n shift = -shift\r\n }\r\n tickStartCoord = shift + this.getTickStartPositionShift(length)\r\n }\r\n return [coords.x + (isHorizontal ? 0 : tickStartCoord), coords.y + (isHorizontal ? tickStartCoord : 0), coords.x + (isHorizontal ? 0 : tickStartCoord + length), coords.y + (isHorizontal ? tickStartCoord + length : 0)]\r\n },\r\n getTickStartPositionShift: function(length) {\r\n var width = this._options.width;\r\n var position = this.getResolvedBoundaryPosition();\r\n return length % 2 === 1 ? width % 2 === 0 && (position === LEFT || position === TOP) || width % 2 === 1 && (position === RIGHT || position === BOTTOM) && !this.hasCustomPosition() ? Math.floor(-length / 2) : -Math.floor(length / 2) : -length / 2 + (width % 2 === 0 ? 0 : position === BOTTOM || position === RIGHT ? -1 : 1)\r\n },\r\n _getTitleCoords: function() {\r\n var that = this;\r\n var horizontal = that._isHorizontal;\r\n var x = that._axisPosition;\r\n var y = that._axisPosition;\r\n var align = that._options.title.alignment;\r\n var canvas = that._getCanvasStartEnd();\r\n var fromStartToEnd = horizontal || that._options.position === LEFT;\r\n var canvasStart = fromStartToEnd ? canvas.start : canvas.end;\r\n var canvasEnd = fromStartToEnd ? canvas.end : canvas.start;\r\n var coord = align === LEFT ? canvasStart : align === RIGHT ? canvasEnd : canvas.start + (canvas.end - canvas.start) / 2;\r\n if (horizontal) {\r\n x = coord\r\n } else {\r\n y = coord\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _drawTitleText: function(group, coords) {\r\n var options = this._options;\r\n var titleOptions = options.title;\r\n var attrs = {\r\n opacity: titleOptions.opacity,\r\n align: titleOptions.alignment,\r\n \"class\": titleOptions.cssClass\r\n };\r\n if (!titleOptions.text || !group) {\r\n return\r\n }\r\n coords = coords || this._getTitleCoords();\r\n if (!this._isHorizontal) {\r\n attrs.rotate = options.position === LEFT ? 270 : 90\r\n }\r\n var text = this._renderer.text(titleOptions.text, coords.x, coords.y).css(_utils2.default.patchFontOptions(titleOptions.font)).attr(attrs).append(group);\r\n this._checkTitleOverflow(text);\r\n return text\r\n },\r\n _updateTitleCoords: function() {\r\n this._title && this._title.element.attr(this._getTitleCoords())\r\n },\r\n _drawTitle: function() {\r\n var title = this._drawTitleText(this._axisTitleGroup);\r\n if (title) {\r\n this._title = {\r\n element: title\r\n }\r\n }\r\n },\r\n _measureTitle: function() {\r\n if (this._title) {\r\n if (this._title.bBox && !this._title.originalSize) {\r\n this._title.originalSize = this._title.bBox\r\n }\r\n this._title.bBox = this._title.element.getBBox()\r\n }\r\n },\r\n _drawDateMarker: function(date, options, range) {\r\n var that = this;\r\n var markerOptions = that._options.marker;\r\n var invert = that._translator.getBusinessRange().invert;\r\n var textIndent = markerOptions.width + markerOptions.textLeftIndent;\r\n var pathElement;\r\n if (null === options.x) {\r\n return\r\n }\r\n if (!options.withoutStick) {\r\n pathElement = that._renderer.path([options.x, options.y, options.x, options.y + markerOptions.separatorHeight], \"line\").attr({\r\n \"stroke-width\": markerOptions.width,\r\n stroke: markerOptions.color,\r\n \"stroke-opacity\": markerOptions.opacity,\r\n sharp: \"h\"\r\n }).append(that._axisElementsGroup)\r\n }\r\n var text = String(that.formatLabel(date, options.labelOptions, range));\r\n return {\r\n date: date,\r\n x: options.x,\r\n y: options.y,\r\n cropped: options.withoutStick,\r\n label: that._renderer.text(text, options.x, options.y).css(_utils2.default.patchFontOptions(markerOptions.label.font)).append(that._axisElementsGroup),\r\n line: pathElement,\r\n getEnd: function() {\r\n return this.x + (invert ? -1 : 1) * (textIndent + this.labelBBox.width)\r\n },\r\n setTitle: function() {\r\n this.title = text\r\n },\r\n hideLabel: function() {\r\n this.label.dispose();\r\n this.label = null;\r\n this.title = text\r\n },\r\n hide: function() {\r\n if (pathElement) {\r\n pathElement.dispose();\r\n pathElement = null\r\n }\r\n this.label.dispose();\r\n this.label = null;\r\n this.hidden = true\r\n }\r\n }\r\n },\r\n _drawDateMarkers: function() {\r\n var that = this;\r\n var options = that._options;\r\n var translator = that._translator;\r\n var viewport = that._getViewportRange();\r\n var minBound = viewport.minVisible;\r\n var dateMarkers = [];\r\n var dateMarker;\r\n\r\n function draw(markerDate, format, withoutStick) {\r\n return that._drawDateMarker(markerDate, {\r\n x: translator.translate(markerDate),\r\n y: markersAreaTop,\r\n labelOptions: that._getLabelFormatOptions(format),\r\n withoutStick: withoutStick\r\n }, viewport)\r\n }\r\n if (viewport.isEmpty() || !options.marker.visible || \"datetime\" !== options.argumentType || \"discrete\" === options.type || that._majorTicks.length <= 1) {\r\n return []\r\n }\r\n var markersAreaTop = that._axisPosition + options.marker.topIndent;\r\n var tickInterval = _date2.default.getDateUnitInterval(this._tickInterval);\r\n var markerInterval = getMarkerInterval(tickInterval);\r\n var markerDates = getMarkerDates(minBound, viewport.maxVisible, markerInterval);\r\n if (markerDates.length > 1 || 1 === markerDates.length && minBound < markerDates[0]) {\r\n dateMarkers = markerDates.reduce(function(markers, curDate, i, dates) {\r\n var marker = draw(curDate, getMarkerFormat(curDate, dates[i - 1] || minBound < curDate && minBound, tickInterval, markerInterval));\r\n marker && markers.push(marker);\r\n return markers\r\n }, []);\r\n if (minBound < markerDates[0]) {\r\n dateMarker = draw(minBound, getMarkerFormat(minBound, markerDates[0], tickInterval, markerInterval), true);\r\n dateMarker && dateMarkers.unshift(dateMarker)\r\n }\r\n }\r\n return dateMarkers\r\n },\r\n _adjustDateMarkers: function(offset) {\r\n offset = offset || 0;\r\n var that = this;\r\n var markerOptions = this._options.marker;\r\n var textIndent = markerOptions.width + markerOptions.textLeftIndent;\r\n var invert = this._translator.getBusinessRange().invert;\r\n var canvas = that._getCanvasStartEnd();\r\n var dateMarkers = this._dateMarkers;\r\n if (!dateMarkers.length) {\r\n return offset\r\n }\r\n if (dateMarkers[0].cropped) {\r\n if (!this._checkMarkersPosition(invert, dateMarkers[1], dateMarkers[0])) {\r\n dateMarkers[0].hideLabel()\r\n }\r\n }\r\n var prevDateMarker;\r\n dateMarkers.forEach(function(marker, i, markers) {\r\n if (marker.cropped) {\r\n return\r\n }\r\n if (invert ? marker.getEnd() < canvas.end : marker.getEnd() > canvas.end) {\r\n marker.hideLabel()\r\n } else {\r\n if (that._checkMarkersPosition(invert, marker, prevDateMarker)) {\r\n prevDateMarker = marker\r\n } else {\r\n marker.hide()\r\n }\r\n }\r\n });\r\n this._dateMarkers.forEach(function(marker) {\r\n if (marker.label) {\r\n var labelBBox = marker.labelBBox;\r\n var dy = marker.y + markerOptions.textTopIndent - labelBBox.y;\r\n marker.label.attr({\r\n translateX: invert ? marker.x - textIndent - labelBBox.x - labelBBox.width : marker.x + textIndent - labelBBox.x,\r\n translateY: dy + offset\r\n })\r\n }\r\n if (marker.line) {\r\n marker.line.attr({\r\n translateY: offset\r\n })\r\n }\r\n });\r\n that._initializeMarkersTrackers(offset);\r\n return offset + markerOptions.topIndent + markerOptions.separatorHeight\r\n },\r\n _checkMarkersPosition: function(invert, dateMarker, prevDateMarker) {\r\n if (void 0 === prevDateMarker) {\r\n return true\r\n }\r\n return invert ? dateMarker.x < prevDateMarker.getEnd() : dateMarker.x > prevDateMarker.getEnd()\r\n },\r\n _initializeMarkersTrackers: function(offset) {\r\n var that = this;\r\n var separatorHeight = that._options.marker.separatorHeight;\r\n var renderer = that._renderer;\r\n var businessRange = this._translator.getBusinessRange();\r\n var canvas = that._getCanvasStartEnd();\r\n var group = that._axisElementsGroup;\r\n that._markerTrackers = this._dateMarkers.filter(function(marker) {\r\n return !marker.hidden\r\n }).map(function(marker, i, markers) {\r\n var nextMarker = markers[i + 1] || {\r\n x: canvas.end,\r\n date: businessRange.max\r\n };\r\n var x = marker.x;\r\n var y = marker.y + offset;\r\n var markerTracker = renderer.path([x, y, x, y + separatorHeight, nextMarker.x, y + separatorHeight, nextMarker.x, y, x, y], \"area\").attr({\r\n \"stroke-width\": 1,\r\n stroke: \"grey\",\r\n fill: \"grey\",\r\n opacity: 1e-4\r\n }).append(group);\r\n markerTracker.data(\"range\", {\r\n startValue: marker.date,\r\n endValue: nextMarker.date\r\n });\r\n if (marker.title) {\r\n markerTracker.setTitle(marker.title)\r\n }\r\n return markerTracker\r\n })\r\n },\r\n _getLabelFormatOptions: function(formatString) {\r\n var that = this;\r\n var markerLabelOptions = that._markerLabelOptions;\r\n if (!markerLabelOptions) {\r\n that._markerLabelOptions = markerLabelOptions = (0, _extend.extend)(true, {}, that._options.marker.label)\r\n }\r\n if (!(0, _type.isDefined)(that._options.marker.label.format)) {\r\n markerLabelOptions.format = formatString\r\n }\r\n return markerLabelOptions\r\n },\r\n _adjustConstantLineLabels: function(constantLines) {\r\n var that = this;\r\n var axisPosition = that._options.position;\r\n var canvas = that.getCanvas();\r\n var canvasLeft = canvas.left;\r\n var canvasRight = canvas.width - canvas.right;\r\n var canvasTop = canvas.top;\r\n var canvasBottom = canvas.height - canvas.bottom;\r\n var verticalCenter = canvasTop + (canvasBottom - canvasTop) / 2;\r\n var horizontalCenter = canvasLeft + (canvasRight - canvasLeft) / 2;\r\n var maxLabel = 0;\r\n constantLines.forEach(function(item) {\r\n var isHorizontal = that._isHorizontal;\r\n var linesOptions = item.options;\r\n var paddingTopBottom = linesOptions.paddingTopBottom;\r\n var paddingLeftRight = linesOptions.paddingLeftRight;\r\n var labelOptions = linesOptions.label;\r\n var labelVerticalAlignment = labelOptions.verticalAlignment;\r\n var labelHorizontalAlignment = labelOptions.horizontalAlignment;\r\n var labelIsInside = \"inside\" === labelOptions.position;\r\n var label = item.label;\r\n var box = item.labelBBox;\r\n var translateX;\r\n var translateY;\r\n if (null === label || box.isEmpty) {\r\n return\r\n }\r\n if (isHorizontal) {\r\n if (labelIsInside) {\r\n if (labelHorizontalAlignment === LEFT) {\r\n translateX = item.coord - paddingLeftRight - box.x - box.width\r\n } else {\r\n translateX = item.coord + paddingLeftRight - box.x\r\n }\r\n switch (labelVerticalAlignment) {\r\n case CENTER:\r\n translateY = verticalCenter - box.y - box.height / 2;\r\n break;\r\n case BOTTOM:\r\n translateY = canvasBottom - paddingTopBottom - box.y - box.height;\r\n break;\r\n default:\r\n translateY = canvasTop + paddingTopBottom - box.y\r\n }\r\n } else {\r\n if (axisPosition === labelVerticalAlignment) {\r\n maxLabel = _max(maxLabel, box.height + paddingTopBottom)\r\n }\r\n translateX = item.coord - box.x - box.width / 2;\r\n if (labelVerticalAlignment === BOTTOM) {\r\n translateY = canvasBottom + paddingTopBottom - box.y\r\n } else {\r\n translateY = canvasTop - paddingTopBottom - box.y - box.height\r\n }\r\n }\r\n } else {\r\n if (labelIsInside) {\r\n if (labelVerticalAlignment === BOTTOM) {\r\n translateY = item.coord + paddingTopBottom - box.y\r\n } else {\r\n translateY = item.coord - paddingTopBottom - box.y - box.height\r\n }\r\n switch (labelHorizontalAlignment) {\r\n case CENTER:\r\n translateX = horizontalCenter - box.x - box.width / 2;\r\n break;\r\n case RIGHT:\r\n translateX = canvasRight - paddingLeftRight - box.x - box.width;\r\n break;\r\n default:\r\n translateX = canvasLeft + paddingLeftRight - box.x\r\n }\r\n } else {\r\n if (axisPosition === labelHorizontalAlignment) {\r\n maxLabel = _max(maxLabel, box.width + paddingLeftRight)\r\n }\r\n translateY = item.coord - box.y - box.height / 2;\r\n if (labelHorizontalAlignment === RIGHT) {\r\n translateX = canvasRight + paddingLeftRight - box.x\r\n } else {\r\n translateX = canvasLeft - paddingLeftRight - box.x - box.width\r\n }\r\n }\r\n }\r\n label.attr({\r\n translateX: translateX,\r\n translateY: translateY\r\n })\r\n });\r\n return maxLabel\r\n },\r\n _drawConstantLinesForEstimating: function(constantLines) {\r\n var that = this;\r\n var renderer = this._renderer;\r\n var group = renderer.g();\r\n constantLines.forEach(function(options) {\r\n that._drawConstantLineLabelText(options.label.text, 0, 0, options.label, group).attr({\r\n align: \"center\"\r\n })\r\n });\r\n return group.append(renderer.root)\r\n },\r\n _estimateLabelHeight: function(bBox, labelOptions) {\r\n var height = bBox.height;\r\n var drawingType = labelOptions.drawingType;\r\n if (\"stagger\" === this._validateDisplayMode(drawingType) || \"stagger\" === this._validateOverlappingMode(labelOptions.overlappingBehavior, drawingType)) {\r\n height = 2 * height + labelOptions.staggeringSpacing\r\n }\r\n if (\"rotate\" === this._validateDisplayMode(drawingType) || \"rotate\" === this._validateOverlappingMode(labelOptions.overlappingBehavior, drawingType)) {\r\n var sinCos = _utils2.default.getCosAndSin(labelOptions.rotationAngle);\r\n height = height * sinCos.cos + bBox.width * sinCos.sin\r\n }\r\n return height && (height + labelOptions.indentFromAxis || 0) || 0\r\n },\r\n estimateMargins: function(canvas) {\r\n this.updateCanvas(canvas);\r\n var that = this;\r\n var range = that._getViewportRange();\r\n var ticksData = this._createTicksAndLabelFormat(range);\r\n var ticks = ticksData.ticks;\r\n var tickInterval = ticksData.tickInterval;\r\n var options = this._options;\r\n var constantLineOptions = that._outsideConstantLines.filter(function(l) {\r\n return l.labelOptions.visible\r\n }).map(function(l) {\r\n return l.options\r\n });\r\n var rootElement = that._renderer.root;\r\n var labelIsVisible = options.label.visible && !range.isEmpty() && ticks.length;\r\n var labelValue = labelIsVisible && that.formatLabel(ticks[ticks.length - 1], options.label, void 0, void 0, tickInterval, ticks);\r\n var labelElement = labelIsVisible && that._renderer.text(labelValue, 0, 0).css(that._textFontStyles).attr(that._textOptions).append(rootElement);\r\n var titleElement = that._drawTitleText(rootElement, {\r\n x: 0,\r\n y: 0\r\n });\r\n var constantLinesLabelsElement = that._drawConstantLinesForEstimating(constantLineOptions);\r\n var labelBox = labelElement && labelElement.getBBox() || {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n };\r\n var titleBox = titleElement && titleElement.getBBox() || {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n };\r\n var constantLinesBox = constantLinesLabelsElement.getBBox();\r\n var titleHeight = titleBox.height ? titleBox.height + options.title.margin : 0;\r\n var labelHeight = that._estimateLabelHeight(labelBox, options.label);\r\n var constantLinesHeight = constantLinesBox.height ? constantLinesBox.height + getMaxConstantLinePadding(constantLineOptions) : 0;\r\n var height = labelHeight + titleHeight;\r\n var margins = {\r\n left: _max(getLeftMargin(labelBox), getLeftMargin(constantLinesBox)),\r\n right: _max(getRightMargin(labelBox), getRightMargin(constantLinesBox)),\r\n top: (\"top\" === options.position ? height : 0) + getConstantLineLabelMarginForVerticalAlignment(constantLineOptions, \"top\", constantLinesHeight),\r\n bottom: (\"top\" !== options.position ? height : 0) + getConstantLineLabelMarginForVerticalAlignment(constantLineOptions, \"bottom\", constantLinesHeight)\r\n };\r\n labelElement && labelElement.remove();\r\n titleElement && titleElement.remove();\r\n constantLinesLabelsElement && constantLinesLabelsElement.remove();\r\n return margins\r\n },\r\n _checkAlignmentConstantLineLabels: function(labelOptions) {\r\n var position = labelOptions.position;\r\n var verticalAlignment = (labelOptions.verticalAlignment || \"\").toLowerCase();\r\n var horizontalAlignment = (labelOptions.horizontalAlignment || \"\").toLowerCase();\r\n if (this._isHorizontal) {\r\n if (\"outside\" === position) {\r\n verticalAlignment = verticalAlignment === BOTTOM ? BOTTOM : TOP;\r\n horizontalAlignment = CENTER\r\n } else {\r\n verticalAlignment = verticalAlignment === CENTER ? CENTER : verticalAlignment === BOTTOM ? BOTTOM : TOP;\r\n horizontalAlignment = horizontalAlignment === LEFT ? LEFT : RIGHT\r\n }\r\n } else {\r\n if (\"outside\" === position) {\r\n verticalAlignment = CENTER;\r\n horizontalAlignment = horizontalAlignment === LEFT ? LEFT : RIGHT\r\n } else {\r\n verticalAlignment = verticalAlignment === BOTTOM ? BOTTOM : TOP;\r\n horizontalAlignment = horizontalAlignment === RIGHT ? RIGHT : horizontalAlignment === CENTER ? CENTER : LEFT\r\n }\r\n }\r\n labelOptions.verticalAlignment = verticalAlignment;\r\n labelOptions.horizontalAlignment = horizontalAlignment\r\n },\r\n _getConstantLineLabelsCoords: function(value, lineLabelOptions) {\r\n var that = this;\r\n var x = value;\r\n var y = value;\r\n if (that._isHorizontal) {\r\n y = that._orthogonalPositions[\"top\" === lineLabelOptions.verticalAlignment ? \"start\" : \"end\"]\r\n } else {\r\n x = that._orthogonalPositions[\"right\" === lineLabelOptions.horizontalAlignment ? \"end\" : \"start\"]\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _getAdjustedStripLabelCoords: function(strip) {\r\n var stripOptions = strip.options;\r\n var paddingTopBottom = stripOptions.paddingTopBottom;\r\n var paddingLeftRight = stripOptions.paddingLeftRight;\r\n var horizontalAlignment = stripOptions.label.horizontalAlignment;\r\n var verticalAlignment = stripOptions.label.verticalAlignment;\r\n var box = strip.labelBBox;\r\n var labelHeight = box.height;\r\n var labelWidth = box.width;\r\n var labelCoords = strip.labelCoords;\r\n var y = labelCoords.y - box.y;\r\n var x = labelCoords.x - box.x;\r\n if (verticalAlignment === TOP) {\r\n y += paddingTopBottom\r\n } else {\r\n if (verticalAlignment === CENTER) {\r\n y -= labelHeight / 2\r\n } else {\r\n if (verticalAlignment === BOTTOM) {\r\n y -= paddingTopBottom + labelHeight\r\n }\r\n }\r\n }\r\n if (horizontalAlignment === LEFT) {\r\n x += paddingLeftRight\r\n } else {\r\n if (horizontalAlignment === CENTER) {\r\n x -= labelWidth / 2\r\n } else {\r\n if (horizontalAlignment === RIGHT) {\r\n x -= paddingLeftRight + labelWidth\r\n }\r\n }\r\n }\r\n return {\r\n translateX: x,\r\n translateY: y\r\n }\r\n },\r\n _adjustTitle: function(offset) {\r\n offset = offset || 0;\r\n if (!this._title) {\r\n return\r\n }\r\n var that = this;\r\n var options = that._options;\r\n var position = options.position;\r\n var margin = options.title.margin;\r\n var title = that._title;\r\n var boxTitle = title.bBox;\r\n var x = boxTitle.x;\r\n var y = boxTitle.y;\r\n var width = boxTitle.width;\r\n var height = boxTitle.height;\r\n var axisPosition = that._axisPosition;\r\n var loCoord = axisPosition - margin - offset;\r\n var hiCoord = axisPosition + margin + offset;\r\n var params = {};\r\n if (that._isHorizontal) {\r\n if (position === TOP) {\r\n params.translateY = loCoord - (y + height)\r\n } else {\r\n params.translateY = hiCoord - y\r\n }\r\n } else {\r\n if (position === LEFT) {\r\n params.translateX = loCoord - (x + width)\r\n } else {\r\n params.translateX = hiCoord - x\r\n }\r\n }\r\n title.element.attr(params)\r\n },\r\n _checkTitleOverflow: function(titleElement) {\r\n if (!this._title && !titleElement) {\r\n return\r\n }\r\n var canvasLength = this._getScreenDelta();\r\n var title = titleElement ? {\r\n bBox: titleElement.getBBox(),\r\n element: titleElement\r\n } : this._title;\r\n var titleOptions = this._options.title;\r\n var boxTitle = title.bBox;\r\n if ((this._isHorizontal ? boxTitle.width : boxTitle.height) > canvasLength) {\r\n title.element.setMaxSize(canvasLength, void 0, {\r\n wordWrap: titleOptions.wordWrap || \"none\",\r\n textOverflow: titleOptions.textOverflow || \"ellipsis\"\r\n });\r\n this._wrapped = titleOptions.wordWrap && \"none\" !== titleOptions.wordWrap\r\n } else {\r\n var moreThanOriginalSize = title.originalSize && canvasLength > (this._isHorizontal ? title.originalSize.width : title.originalSize.height);\r\n !this._wrapped && moreThanOriginalSize && title.element.restoreText()\r\n }\r\n },\r\n coordsIn: function(x, y) {\r\n var canvas = this.getCanvas();\r\n var isHorizontal = this._options.isHorizontal;\r\n var position = this._options.position;\r\n var coord = isHorizontal ? y : x;\r\n if (isHorizontal && (x < canvas.left || x > canvas.width - canvas.right) || !isHorizontal && (y < canvas.top || y > canvas.height - canvas.bottom)) {\r\n return false\r\n }\r\n if (isHorizontal && position === _axes_constants2.default.top || !isHorizontal && position === _axes_constants2.default.left) {\r\n return coord < canvas[position]\r\n }\r\n return coord > canvas[isHorizontal ? \"height\" : \"width\"] - canvas[position]\r\n },\r\n _boundaryTicksVisibility: {\r\n min: true,\r\n max: true\r\n },\r\n adjust: function(alignToBounds) {\r\n var that = this;\r\n var seriesData = that._seriesData;\r\n var viewport = {\r\n min: seriesData.min,\r\n max: seriesData.max\r\n };\r\n if (!alignToBounds) {\r\n viewport = that._series.filter(function(s) {\r\n return s.isVisible()\r\n }).reduce(function(range, s) {\r\n var seriesRange = s.getViewport();\r\n range.min = (0, _type.isDefined)(seriesRange.min) ? range.min < seriesRange.min ? range.min : seriesRange.min : range.min;\r\n range.max = (0, _type.isDefined)(seriesRange.max) ? range.max > seriesRange.max ? range.max : seriesRange.max : range.max;\r\n if (s.showZero) {\r\n range = new _range2.default.Range(range);\r\n range.correctValueZeroLevel()\r\n }\r\n return range\r\n }, {})\r\n }\r\n if ((0, _type.isDefined)(viewport.min) && (0, _type.isDefined)(viewport.max)) {\r\n seriesData.minVisible = viewport.min;\r\n seriesData.maxVisible = viewport.max\r\n }\r\n seriesData.breaks = that._initialBreaks = that._getScaleBreaks(that._options, {\r\n minVisible: seriesData.minVisible,\r\n maxVisible: seriesData.maxVisible\r\n }, that._series, that.isArgumentAxis);\r\n that._translator.updateBusinessRange(that._getViewportRange())\r\n },\r\n hasWrap: function() {\r\n return this._wrapped\r\n },\r\n getAxisPosition: function() {\r\n return this._axisPosition\r\n },\r\n _getStick: function() {\r\n return !this._options.valueMarginsEnabled\r\n },\r\n _getStripLabelCoords: function(from, to, stripLabelOptions) {\r\n var that = this;\r\n var orthogonalPositions = that._orthogonalPositions;\r\n var isHorizontal = that._isHorizontal;\r\n var horizontalAlignment = stripLabelOptions.horizontalAlignment;\r\n var verticalAlignment = stripLabelOptions.verticalAlignment;\r\n var x;\r\n var y;\r\n if (isHorizontal) {\r\n if (horizontalAlignment === CENTER) {\r\n x = from + (to - from) / 2\r\n } else {\r\n if (horizontalAlignment === LEFT) {\r\n x = from\r\n } else {\r\n if (horizontalAlignment === RIGHT) {\r\n x = to\r\n }\r\n }\r\n }\r\n y = orthogonalPositions[getStripVerticalAlignmentPosition(verticalAlignment)]\r\n } else {\r\n x = orthogonalPositions[getStripHorizontalAlignmentPosition(horizontalAlignment)];\r\n if (verticalAlignment === TOP) {\r\n y = from\r\n } else {\r\n if (verticalAlignment === CENTER) {\r\n y = to + (from - to) / 2\r\n } else {\r\n if (verticalAlignment === BOTTOM) {\r\n y = to\r\n }\r\n }\r\n }\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _getTranslatedValue: function(value, offset) {\r\n var pos1 = this._translator.translate(value, offset, \"semidiscrete\" === this._options.type && this._options.tickInterval);\r\n var pos2 = this._axisPosition;\r\n var isHorizontal = this._isHorizontal;\r\n return {\r\n x: isHorizontal ? pos1 : pos2,\r\n y: isHorizontal ? pos2 : pos1\r\n }\r\n },\r\n areCoordsOutsideAxis: function(coords) {\r\n var coord = this._isHorizontal ? coords.x : coords.y;\r\n var visibleArea = this.getVisibleArea();\r\n if (coord < visibleArea[0] || coord > visibleArea[1]) {\r\n return true\r\n }\r\n return false\r\n },\r\n _getSkippedCategory: function(ticks) {\r\n var skippedCategory;\r\n if (this._options.type === _axes_constants2.default.discrete && this._tickOffset && 0 !== ticks.length) {\r\n skippedCategory = ticks[ticks.length - 1]\r\n }\r\n return skippedCategory\r\n },\r\n _getScaleBreaks: function(axisOptions, viewport, series, isArgumentAxis) {\r\n var that = this;\r\n var breaks = (axisOptions.breaks || []).map(function(b) {\r\n return {\r\n from: that.parser(b.startValue),\r\n to: that.parser(b.endValue)\r\n }\r\n });\r\n if (\"discrete\" !== axisOptions.type && \"datetime\" === axisOptions.dataType && axisOptions.workdaysOnly) {\r\n breaks = breaks.concat((0, _datetime_breaks.generateDateBreaks)(viewport.minVisible, viewport.maxVisible, axisOptions.workWeek, axisOptions.singleWorkdays, axisOptions.holidays))\r\n }\r\n if (!isArgumentAxis && \"discrete\" !== axisOptions.type && \"datetime\" !== axisOptions.dataType && axisOptions.autoBreaksEnabled && 0 !== axisOptions.maxAutoBreakCount) {\r\n breaks = breaks.concat(generateAutoBreaks(axisOptions, series, viewport))\r\n }\r\n return filterBreaks(sortingBreaks(breaks), viewport, axisOptions.breakStyle)\r\n },\r\n _drawBreak: function(translatedEnd, positionFrom, positionTo, width, options, group) {\r\n var that = this;\r\n var breakStart = translatedEnd - (!that._translator.isInverted() ? width + 1 : 0);\r\n var attr = {\r\n \"stroke-width\": 1,\r\n stroke: options.borderColor,\r\n sharp: !options.isWaved ? options.isHorizontal ? \"h\" : \"v\" : void 0\r\n };\r\n var spaceAttr = {\r\n stroke: options.color,\r\n \"stroke-width\": width\r\n };\r\n var getPoints = that._isHorizontal ? rotateLine : function(p) {\r\n return p\r\n };\r\n var drawer = getLineDrawer(that._renderer, group, getPoints, positionFrom, breakStart, positionTo, options.isWaved);\r\n drawer(width / 2, spaceAttr);\r\n drawer(0, attr);\r\n drawer(width, attr)\r\n },\r\n _createBreakClipRect: function(from, to) {\r\n var that = this;\r\n var canvas = that._canvas;\r\n var clipWidth = to - from;\r\n var clipRect;\r\n if (that._isHorizontal) {\r\n clipRect = that._renderer.clipRect(canvas.left, from, canvas.width, clipWidth)\r\n } else {\r\n clipRect = that._renderer.clipRect(from, canvas.top, clipWidth, canvas.height)\r\n }\r\n that._breaksElements = that._breaksElements || [];\r\n that._breaksElements.push(clipRect);\r\n return clipRect.id\r\n },\r\n _createBreaksGroup: function(clipFrom, clipTo) {\r\n var that = this;\r\n var group = that._renderer.g().attr({\r\n \"class\": that._axisCssPrefix + \"breaks\",\r\n \"clip-path\": that._createBreakClipRect(clipFrom, clipTo)\r\n }).append(that._scaleBreaksGroup);\r\n that._breaksElements = that._breaksElements || [];\r\n that._breaksElements.push(group);\r\n return group\r\n },\r\n _disposeBreaksGroup: function() {\r\n (this._breaksElements || []).forEach(function(clipRect) {\r\n clipRect.dispose()\r\n });\r\n this._breaksElements = null\r\n },\r\n drawScaleBreaks: function(customCanvas) {\r\n var that = this;\r\n var options = that._options;\r\n var breakStyle = options.breakStyle;\r\n var position = options.position;\r\n var positionFrom;\r\n var positionTo;\r\n var breaks = that._translator.getBusinessRange().breaks || [];\r\n var additionGroup;\r\n var additionBreakFrom;\r\n var additionBreakTo;\r\n that._disposeBreaksGroup();\r\n if (!(breaks && breaks.length)) {\r\n return\r\n }\r\n var breakOptions = {\r\n color: that._options.containerColor,\r\n borderColor: breakStyle.color,\r\n isHorizontal: that._isHorizontal,\r\n isWaved: \"straight\" !== breakStyle.line.toLowerCase()\r\n };\r\n if (customCanvas) {\r\n positionFrom = customCanvas.start;\r\n positionTo = customCanvas.end\r\n } else {\r\n positionFrom = that._orthogonalPositions.start - (options.visible && !that._axisShift && (position === LEFT || position === TOP) ? SCALE_BREAK_OFFSET : 0);\r\n positionTo = that._orthogonalPositions.end + (options.visible && (position === RIGHT || position === BOTTOM) ? SCALE_BREAK_OFFSET : 0)\r\n }\r\n var mainGroup = that._createBreaksGroup(positionFrom, positionTo);\r\n if (that._axisShift && options.visible) {\r\n additionBreakFrom = that._axisPosition - that._axisShift - SCALE_BREAK_OFFSET;\r\n additionBreakTo = additionBreakFrom + 2 * SCALE_BREAK_OFFSET;\r\n additionGroup = that._createBreaksGroup(additionBreakFrom, additionBreakTo);\r\n }\r\n breaks.forEach(function(br) {\r\n if (!br.gapSize) {\r\n var breakCoord = that._getTranslatedCoord(br.to);\r\n that._drawBreak(breakCoord, positionFrom, positionTo, breakStyle.width, breakOptions, mainGroup);\r\n if (that._axisShift && options.visible) {\r\n that._drawBreak(breakCoord, additionBreakFrom, additionBreakTo, breakStyle.width, breakOptions, additionGroup)\r\n }\r\n }\r\n })\r\n },\r\n _getSpiderCategoryOption: _common.noop,\r\n shift: function(margins) {\r\n var that = this;\r\n var options = that._options;\r\n var isHorizontal = options.isHorizontal;\r\n var axesSpacing = that.getMultipleAxesSpacing();\r\n var constantLinesGroups = that._axisConstantLineGroups;\r\n\r\n function shiftGroup(side, group) {\r\n var attr = {\r\n translateX: 0,\r\n translateY: 0\r\n };\r\n var shift = margins[side] ? margins[side] + axesSpacing : 0;\r\n attr[isHorizontal ? \"translateY\" : \"translateX\"] = (side === LEFT || side === TOP ? -1 : 1) * shift;\r\n (group[side] || group).attr(attr);\r\n return shift\r\n }\r\n that._axisShift = shiftGroup(options.position, that._axisGroup);\r\n (isHorizontal ? [TOP, BOTTOM] : [LEFT, RIGHT]).forEach(function(side) {\r\n shiftGroup(side, constantLinesGroups.above);\r\n shiftGroup(side, constantLinesGroups.under)\r\n })\r\n },\r\n getCustomPosition: function(position) {\r\n var that = this;\r\n var orthogonalAxis = that.getOrthogonalAxis();\r\n var resolvedPosition = null !== position && void 0 !== position ? position : that.getResolvedPositionOption();\r\n var offset = that.getOptions().offset;\r\n var orthogonalTranslator = orthogonalAxis.getTranslator();\r\n var orthogonalAxisType = orthogonalAxis.getOptions().type;\r\n var validPosition = orthogonalAxis.validateUnit(resolvedPosition);\r\n var currentPosition;\r\n if (\"discrete\" === orthogonalAxisType && (!orthogonalTranslator._categories || orthogonalTranslator._categories.indexOf(validPosition) < 0)) {\r\n validPosition = void 0\r\n }\r\n if (that.positionIsBoundary(resolvedPosition)) {\r\n currentPosition = that.getPredefinedPosition(resolvedPosition)\r\n } else {\r\n if (!(0, _type.isDefined)(validPosition)) {\r\n currentPosition = that.getPredefinedPosition(that.getOptions().position)\r\n } else {\r\n currentPosition = orthogonalTranslator.to(validPosition, -1)\r\n }\r\n }\r\n if (isFinite(currentPosition) && isFinite(offset)) {\r\n currentPosition += offset\r\n }\r\n return currentPosition\r\n },\r\n getCustomBoundaryPosition: function(position) {\r\n var that = this;\r\n var orthogonalAxis = that.getOrthogonalAxis();\r\n var resolvedPosition = null !== position && void 0 !== position ? position : that.getResolvedPositionOption();\r\n var orthogonalTranslator = orthogonalAxis.getTranslator();\r\n var visibleArea = orthogonalTranslator.getCanvasVisibleArea();\r\n if (!(0, _type.isDefined)(orthogonalAxis._orthogonalPositions) || 0 === orthogonalTranslator.canvasLength) {\r\n return\r\n }\r\n var currentPosition = that.getCustomPosition(resolvedPosition);\r\n if (!(0, _type.isDefined)(currentPosition)) {\r\n return that.getResolvedBoundaryPosition()\r\n } else {\r\n if (currentPosition <= visibleArea.min) {\r\n return that._isHorizontal ? TOP : LEFT\r\n } else {\r\n if (currentPosition >= visibleArea.max) {\r\n return that._isHorizontal ? BOTTOM : RIGHT\r\n }\r\n }\r\n }\r\n return currentPosition\r\n },\r\n getResolvedPositionOption: function() {\r\n var _options$customPositi;\r\n var options = this.getOptions();\r\n return null !== (_options$customPositi = options.customPosition) && void 0 !== _options$customPositi ? _options$customPositi : options.position\r\n },\r\n customPositionIsAvailable: function() {\r\n var options = this.getOptions();\r\n return (0, _type.isDefined)(this.getOrthogonalAxis()) && ((0, _type.isDefined)(options.customPosition) || isFinite(options.offset))\r\n },\r\n hasCustomPosition: function() {\r\n return this.customPositionIsAvailable() && !this.customPositionIsBoundary()\r\n },\r\n getResolvedBoundaryPosition: function() {\r\n return this.customPositionIsBoundary() ? this._customBoundaryPosition : this.getOptions().position\r\n },\r\n customPositionEqualsToPredefined: function() {\r\n return this.customPositionIsBoundary() && this._customBoundaryPosition === this.getOptions().position\r\n },\r\n customPositionIsBoundary: function() {\r\n return this.positionIsBoundary(this._customBoundaryPosition)\r\n },\r\n positionIsBoundary: function(position) {\r\n return [TOP, LEFT, BOTTOM, RIGHT].indexOf(position) >= 0\r\n },\r\n getPredefinedPosition: function(position) {\r\n var _this$_orthogonalPosi;\r\n return null === (_this$_orthogonalPosi = this._orthogonalPositions) || void 0 === _this$_orthogonalPosi ? void 0 : _this$_orthogonalPosi[position === TOP || position === LEFT ? \"start\" : \"end\"]\r\n },\r\n resolveOverlappingForCustomPositioning: function(oppositeAxes) {\r\n var that = this;\r\n if (!that.hasCustomPosition() && !that.customPositionIsBoundary() && !oppositeAxes.some(function(a) {\r\n return a.hasCustomPosition()\r\n })) {\r\n return\r\n }\r\n var overlappingObj = {\r\n axes: [],\r\n ticks: []\r\n };\r\n oppositeAxes.filter(function(orthogonalAxis) {\r\n return orthogonalAxis.pane === that.pane\r\n }).forEach(function(orthogonalAxis) {\r\n for (var i = 0; i < that._majorTicks.length; i++) {\r\n var tick = that._majorTicks[i];\r\n var label = tick.label;\r\n if (label) {\r\n if (overlappingObj.axes.indexOf(orthogonalAxis) < 0 && that._detectElementsOverlapping(label, orthogonalAxis._axisElement)) {\r\n overlappingObj.axes.push(orthogonalAxis);\r\n that._shiftThroughOrthogonalAxisOverlappedTick(label, orthogonalAxis)\r\n }\r\n for (var j = 0; j < orthogonalAxis._majorTicks.length; j++) {\r\n var oppositeTick = orthogonalAxis._majorTicks[j];\r\n var oppositeLabel = oppositeTick.label;\r\n if (oppositeLabel && that._detectElementsOverlapping(label, oppositeLabel)) {\r\n overlappingObj.ticks.push(tick);\r\n that._shiftThroughAxisOverlappedTick(tick);\r\n i = that._majorTicks.length;\r\n break\r\n }\r\n }\r\n }\r\n if (tick.mark && overlappingObj.ticks.indexOf(tick) < 0) {\r\n if (that._isHorizontal && tick.mark.attr(\"translateY\")) {\r\n tick.mark.attr({\r\n translateY: 0\r\n })\r\n } else {\r\n if (!that._isHorizontal && tick.mark.attr(\"translateX\")) {\r\n tick.mark.attr({\r\n translateX: 0\r\n })\r\n }\r\n }\r\n }\r\n }\r\n })\r\n },\r\n _shiftThroughOrthogonalAxisOverlappedTick: function(label, orthogonalAxis) {\r\n var that = this;\r\n var labelBBox = label.getBBox();\r\n var orthogonalAxisPosition = orthogonalAxis.getAxisPosition();\r\n var orthogonalAxisLabelOptions = orthogonalAxis.getOptions().label;\r\n var orthogonalAxisLabelPosition = orthogonalAxisLabelOptions.position;\r\n var orthogonalAxisLabelIndent = orthogonalAxisLabelOptions.indentFromAxis / 2;\r\n var translateCoordName = that._isHorizontal ? \"translateX\" : \"translateY\";\r\n var defaultOrthogonalAxisLabelPosition = that._isHorizontal ? LEFT : TOP;\r\n var translate = label.attr(translateCoordName);\r\n var labelCoord = (that._isHorizontal ? labelBBox.x : labelBBox.y) + translate;\r\n var labelSize = that._isHorizontal ? labelBBox.width : labelBBox.height;\r\n var outsidePart = orthogonalAxisPosition - labelCoord;\r\n var insidePart = labelCoord + labelSize - orthogonalAxisPosition;\r\n var attr = {};\r\n attr[translateCoordName] = translate;\r\n if (outsidePart > 0 && insidePart > 0) {\r\n if (insidePart - outsidePart > 1) {\r\n attr[translateCoordName] += outsidePart + orthogonalAxisLabelIndent\r\n } else {\r\n if (outsidePart - insidePart > 1) {\r\n attr[translateCoordName] -= insidePart + orthogonalAxisLabelIndent\r\n } else {\r\n attr[translateCoordName] += orthogonalAxisLabelPosition === defaultOrthogonalAxisLabelPosition ? outsidePart + orthogonalAxisLabelIndent : -(insidePart + orthogonalAxisLabelIndent)\r\n }\r\n }\r\n label.attr(attr)\r\n }\r\n },\r\n _shiftThroughAxisOverlappedTick: function(tick) {\r\n var _tick$mark;\r\n var that = this;\r\n var label = tick.label;\r\n if (!label) {\r\n return\r\n }\r\n var labelBBox = label.getBBox();\r\n var tickMarkBBox = null === (_tick$mark = tick.mark) || void 0 === _tick$mark ? void 0 : _tick$mark.getBBox();\r\n var axisPosition = that.getAxisPosition();\r\n var labelOptions = that.getOptions().label;\r\n var labelIndent = labelOptions.indentFromAxis;\r\n var labelPosition = labelOptions.position;\r\n var defaultLabelPosition = that._isHorizontal ? TOP : LEFT;\r\n var translateCoordName = that._isHorizontal ? \"translateY\" : \"translateX\";\r\n var translate = label.attr(translateCoordName);\r\n var labelCoord = (that._isHorizontal ? labelBBox.y : labelBBox.x) + translate;\r\n var labelSize = that._isHorizontal ? labelBBox.height : labelBBox.width;\r\n var attr = {};\r\n attr[translateCoordName] = translate + (labelPosition === defaultLabelPosition ? axisPosition - labelCoord + labelIndent : -(labelCoord - axisPosition + labelSize + labelIndent));\r\n label.attr(attr);\r\n if (tick.mark) {\r\n var markerCoord = that._isHorizontal ? tickMarkBBox.y : tickMarkBBox.x;\r\n var markerSize = that._isHorizontal ? tickMarkBBox.height : tickMarkBBox.width;\r\n attr[translateCoordName] = 2 * (axisPosition - markerCoord) - markerSize + 1;\r\n tick.mark.attr(attr)\r\n }\r\n },\r\n _detectElementsOverlapping: function(element1, element2) {\r\n if (!element1 || !element2) {\r\n return false\r\n }\r\n var bBox1 = element1.getBBox();\r\n var x1 = bBox1.x + element1.attr(\"translateX\");\r\n var y1 = bBox1.y + element1.attr(\"translateY\");\r\n var bBox2 = element2.getBBox();\r\n var x2 = bBox2.x + element2.attr(\"translateX\");\r\n var y2 = bBox2.y + element2.attr(\"translateY\");\r\n return (x2 >= x1 && x2 <= x1 + bBox1.width || x1 >= x2 && x1 <= x2 + bBox2.width) && (y2 >= y1 && y2 <= y1 + bBox1.height || y1 >= y2 && y1 <= y2 + bBox2.height)\r\n }\r\n }\r\n};\r\n\r\nfunction getLineDrawer(renderer, root, rotatePoints, positionFrom, breakStart, positionTo, isWaved) {\r\n var elementType = isWaved ? \"bezier\" : \"line\";\r\n var group = renderer.g().append(root);\r\n return function(offset, attr) {\r\n renderer.path(rotatePoints(getPoints(positionFrom, breakStart, positionTo, offset, isWaved)), elementType).attr(attr).append(group)\r\n }\r\n}\r\n\r\nfunction getPoints(positionFrom, breakStart, positionTo, offset, isWaved) {\r\n if (!isWaved) {\r\n return [positionFrom, breakStart + offset, positionTo, breakStart + offset]\r\n }\r\n breakStart += offset;\r\n var currentPosition;\r\n var topPoint = breakStart + WAVED_LINE_TOP;\r\n var centerPoint = breakStart + WAVED_LINE_CENTER;\r\n var bottomPoint = breakStart + WAVED_LINE_BOTTOM;\r\n var points = [\r\n [positionFrom, centerPoint]\r\n ];\r\n for (currentPosition = positionFrom; currentPosition < positionTo + WAVED_LINE_LENGTH; currentPosition += WAVED_LINE_LENGTH) {\r\n points.push([currentPosition + 6, topPoint, currentPosition + 6, topPoint, currentPosition + 12, centerPoint, currentPosition + 18, bottomPoint, currentPosition + 18, bottomPoint, currentPosition + 24, centerPoint])\r\n }\r\n return [].concat.apply([], points)\r\n}\r\n\r\nfunction rotateLine(lineCoords) {\r\n var points = [];\r\n var i;\r\n for (i = 0; i < lineCoords.length; i += 2) {\r\n points.push(lineCoords[i + 1]);\r\n points.push(lineCoords[i])\r\n }\r\n return points\r\n}\r\n","/**\r\n * DevExtreme (viz/core/series_family.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _utils = require(\"./utils\");\r\nvar round = Math.round,\r\n abs = Math.abs,\r\n pow = Math.pow,\r\n sqrt = Math.sqrt;\r\nvar _min = Math.min;\r\nvar DEFAULT_BAR_GROUP_PADDING = .3;\r\n\r\nfunction validateBarPadding(barPadding) {\r\n return barPadding < 0 || barPadding > 1 ? void 0 : barPadding\r\n}\r\n\r\nfunction validateBarGroupPadding(barGroupPadding) {\r\n return barGroupPadding < 0 || barGroupPadding > 1 ? DEFAULT_BAR_GROUP_PADDING : barGroupPadding\r\n}\r\n\r\nfunction isStackExist(series, arg, equalBarWidth) {\r\n return series.some(function(s) {\r\n return equalBarWidth && !s.getOptions().ignoreEmptyPoints || s.getPointsByArg(arg, true).some(function(point) {\r\n return point.hasValue()\r\n })\r\n })\r\n}\r\n\r\nfunction correctStackCoordinates(series, currentStacks, arg, stack, parameters, barsArea, seriesStackIndexCallback) {\r\n series.forEach(function(series) {\r\n var stackIndex = seriesStackIndexCallback(currentStacks.indexOf(stack), currentStacks.length);\r\n var points = series.getPointsByArg(arg, true);\r\n var barPadding = validateBarPadding(series.getOptions().barPadding);\r\n var barWidth = series.getOptions().barWidth;\r\n var offset = getOffset(stackIndex, parameters);\r\n var width = parameters.width;\r\n var extraParameters;\r\n if (stackIndex === -1) {\r\n return\r\n }\r\n if ((0, _type.isDefined)(barPadding) || (0, _type.isDefined)(barWidth)) {\r\n extraParameters = calculateParams(barsArea, currentStacks.length, 1 - barPadding, barWidth);\r\n width = extraParameters.width;\r\n offset = getOffset(stackIndex, extraParameters)\r\n }\r\n correctPointCoordinates(points, width, offset)\r\n })\r\n}\r\n\r\nfunction adjustBarSeriesDimensionsCore(series, options, seriesStackIndexCallback) {\r\n var commonStacks = [];\r\n var allArguments = [];\r\n var seriesInStacks = {};\r\n var barWidth = options.barWidth;\r\n var barGroupWidth = options.barGroupWidth;\r\n var interval = series[0] && series[0].getArgumentAxis().getTranslator().getInterval();\r\n var barsArea = barGroupWidth ? interval > barGroupWidth ? barGroupWidth : interval : interval * (1 - validateBarGroupPadding(options.barGroupPadding));\r\n series.forEach(function(s, i) {\r\n var stackName = s.getStackName() || s.getBarOverlapGroup() || i.toString();\r\n var argument;\r\n for (argument in s.pointsByArgument) {\r\n if (allArguments.indexOf(argument.valueOf()) === -1) {\r\n allArguments.push(argument.valueOf())\r\n }\r\n }\r\n if (commonStacks.indexOf(stackName) === -1) {\r\n commonStacks.push(stackName);\r\n seriesInStacks[stackName] = []\r\n }\r\n seriesInStacks[stackName].push(s)\r\n });\r\n allArguments.forEach(function(arg) {\r\n var currentStacks = commonStacks.reduce(function(stacks, stack) {\r\n if (isStackExist(seriesInStacks[stack], arg, options.equalBarWidth)) {\r\n stacks.push(stack)\r\n }\r\n return stacks\r\n }, []);\r\n var parameters = calculateParams(barsArea, currentStacks.length, barWidth);\r\n commonStacks.forEach(function(stack) {\r\n correctStackCoordinates(seriesInStacks[stack], currentStacks, arg, stack, parameters, barsArea, seriesStackIndexCallback)\r\n })\r\n })\r\n}\r\n\r\nfunction calculateParams(barsArea, count, percentWidth, fixedBarWidth) {\r\n var spacing;\r\n var width;\r\n if (fixedBarWidth) {\r\n width = _min(fixedBarWidth, round(barsArea / count));\r\n spacing = count > 1 ? round((barsArea - width * count) / (count - 1)) : 0\r\n } else {\r\n if ((0, _type.isDefined)(percentWidth)) {\r\n width = round(barsArea * percentWidth / count);\r\n spacing = round(count > 1 ? (barsArea - barsArea * percentWidth) / (count - 1) : 0)\r\n } else {\r\n spacing = round(barsArea / count * .2);\r\n width = round((barsArea - spacing * (count - 1)) / count)\r\n }\r\n }\r\n return {\r\n width: width > 1 ? width : 1,\r\n spacing: spacing,\r\n middleIndex: count / 2\r\n }\r\n}\r\n\r\nfunction getOffset(stackIndex, parameters) {\r\n return (stackIndex - parameters.middleIndex + .5) * parameters.width - (parameters.middleIndex - stackIndex - .5) * parameters.spacing\r\n}\r\n\r\nfunction correctPointCoordinates(points, width, offset) {\r\n (0, _iterator.each)(points, function(_, point) {\r\n point.correctCoordinates({\r\n width: width,\r\n offset: offset\r\n })\r\n })\r\n}\r\n\r\nfunction getValueType(value) {\r\n return value >= 0 ? \"positive\" : \"negative\"\r\n}\r\n\r\nfunction getVisibleSeries(that) {\r\n return that.series.filter(function(s) {\r\n return s.isVisible()\r\n })\r\n}\r\n\r\nfunction getAbsStackSumByArg(stackKeepers, stackName, argument) {\r\n var positiveStackValue = (stackKeepers.positive[stackName] || {})[argument] || 0;\r\n var negativeStackValue = -(stackKeepers.negative[stackName] || {})[argument] || 0;\r\n return positiveStackValue + negativeStackValue\r\n}\r\n\r\nfunction getStackSumByArg(stackKeepers, stackName, argument) {\r\n var positiveStackValue = (stackKeepers.positive[stackName] || {})[argument] || 0;\r\n var negativeStackValue = (stackKeepers.negative[stackName] || {})[argument] || 0;\r\n return positiveStackValue + negativeStackValue\r\n}\r\n\r\nfunction getSeriesStackIndexCallback(inverted) {\r\n if (!inverted) {\r\n return function(index) {\r\n return index\r\n }\r\n } else {\r\n return function(index, stackCount) {\r\n return stackCount - index - 1\r\n }\r\n }\r\n}\r\n\r\nfunction isInverted(series) {\r\n return series[0] && series[0].getArgumentAxis().getTranslator().isInverted()\r\n}\r\n\r\nfunction adjustBarSeriesDimensions() {\r\n var series = getVisibleSeries(this);\r\n adjustBarSeriesDimensionsCore(series, this._options, getSeriesStackIndexCallback(isInverted(series)))\r\n}\r\n\r\nfunction getFirstValueSign(series) {\r\n var points = series.getPoints();\r\n var value;\r\n for (var i = 0; i < points.length; i++) {\r\n var point = points[i];\r\n value = point.initialValue && point.initialValue.valueOf();\r\n if (abs(value) > 0) {\r\n break\r\n }\r\n }\r\n return (0, _math.sign)(value)\r\n}\r\n\r\nfunction adjustStackedSeriesValues() {\r\n var that = this;\r\n var negativesAsZeroes = that._options.negativesAsZeroes;\r\n var series = getVisibleSeries(that);\r\n var stackKeepers = {\r\n positive: {},\r\n negative: {}\r\n };\r\n var holesStack = {\r\n left: {},\r\n right: {}\r\n };\r\n var lastSeriesInPositiveStack = {};\r\n var lastSeriesInNegativeStack = {};\r\n series.forEach(function(singleSeries) {\r\n var stackName = singleSeries.getStackName() || singleSeries.getBarOverlapGroup();\r\n var hole = false;\r\n var stack = getFirstValueSign(singleSeries) < 0 ? lastSeriesInNegativeStack : lastSeriesInPositiveStack;\r\n singleSeries._prevSeries = stack[stackName];\r\n stack[stackName] = singleSeries;\r\n singleSeries.holes = (0, _extend.extend)(true, {}, holesStack);\r\n singleSeries.getPoints().forEach(function(point, index, points) {\r\n var value = point.initialValue && point.initialValue.valueOf();\r\n var argument = point.argument.valueOf();\r\n var stacks = value >= 0 ? stackKeepers.positive : stackKeepers.negative;\r\n var isNotBarSeries = \"bar\" !== singleSeries.type;\r\n if (negativesAsZeroes && value < 0) {\r\n stacks = stackKeepers.positive;\r\n value = 0;\r\n point.resetValue()\r\n }\r\n stacks[stackName] = stacks[stackName] || {};\r\n var currentStack = stacks[stackName];\r\n if (currentStack[argument]) {\r\n if (isNotBarSeries) {\r\n point.correctValue(currentStack[argument])\r\n }\r\n currentStack[argument] += value\r\n } else {\r\n currentStack[argument] = value;\r\n if (isNotBarSeries) {\r\n point.resetCorrection()\r\n }\r\n }\r\n if (!point.hasValue()) {\r\n var prevPoint = points[index - 1];\r\n if (!hole && prevPoint && prevPoint.hasValue()) {\r\n argument = prevPoint.argument.valueOf();\r\n prevPoint._skipSetRightHole = true;\r\n holesStack.right[argument] = (holesStack.right[argument] || 0) + (prevPoint.value.valueOf() - (isFinite(prevPoint.minValue) ? prevPoint.minValue.valueOf() : 0))\r\n }\r\n hole = true\r\n } else {\r\n if (hole) {\r\n hole = false;\r\n holesStack.left[argument] = (holesStack.left[argument] || 0) + (point.value.valueOf() - (isFinite(point.minValue) ? point.minValue.valueOf() : 0));\r\n point._skipSetLeftHole = true\r\n }\r\n }\r\n })\r\n });\r\n series.forEach(function(singleSeries) {\r\n var holes = singleSeries.holes;\r\n singleSeries.getPoints().forEach(function(point) {\r\n var argument = point.argument.valueOf();\r\n point.resetHoles();\r\n !point._skipSetLeftHole && point.setHole(holes.left[argument] || holesStack.left[argument] && 0, \"left\");\r\n !point._skipSetRightHole && point.setHole(holes.right[argument] || holesStack.right[argument] && 0, \"right\");\r\n point._skipSetLeftHole = null;\r\n point._skipSetRightHole = null\r\n })\r\n });\r\n that._stackKeepers = stackKeepers;\r\n series.forEach(function(singleSeries) {\r\n singleSeries.getPoints().forEach(function(point) {\r\n var argument = point.argument.valueOf();\r\n var stackName = singleSeries.getStackName() || singleSeries.getBarOverlapGroup();\r\n var absTotal = getAbsStackSumByArg(stackKeepers, stackName, argument);\r\n var total = getStackSumByArg(stackKeepers, stackName, argument);\r\n point.setPercentValue(absTotal, total, holesStack.left[argument], holesStack.right[argument])\r\n })\r\n })\r\n}\r\n\r\nfunction updateStackedSeriesValues() {\r\n var that = this;\r\n var series = getVisibleSeries(that);\r\n var stack = that._stackKeepers;\r\n var stackKeepers = {\r\n positive: {},\r\n negative: {}\r\n };\r\n (0, _iterator.each)(series, function(_, singleSeries) {\r\n var minBarSize = singleSeries.getOptions().minBarSize;\r\n var valueAxisTranslator = singleSeries.getValueAxis().getTranslator();\r\n var minShownBusinessValue = minBarSize && valueAxisTranslator.getMinBarSize(minBarSize);\r\n var stackName = singleSeries.getStackName();\r\n (0, _iterator.each)(singleSeries.getPoints(), function(index, point) {\r\n if (!point.hasValue()) {\r\n return\r\n }\r\n var value = point.initialValue && point.initialValue.valueOf();\r\n var argument = point.argument.valueOf();\r\n if (that.fullStacked) {\r\n value = value / getAbsStackSumByArg(stack, stackName, argument) || 0\r\n }\r\n var updateValue = valueAxisTranslator.checkMinBarSize(value, minShownBusinessValue, point.value);\r\n var valueType = getValueType(updateValue);\r\n var currentStack = stackKeepers[valueType][stackName] = stackKeepers[valueType][stackName] || {};\r\n if (currentStack[argument]) {\r\n point.minValue = currentStack[argument];\r\n currentStack[argument] += updateValue\r\n } else {\r\n currentStack[argument] = updateValue\r\n }\r\n point.value = currentStack[argument]\r\n })\r\n });\r\n if (that.fullStacked) {\r\n updateFullStackedSeriesValues(series, stackKeepers)\r\n }\r\n}\r\n\r\nfunction updateFullStackedSeriesValues(series, stackKeepers) {\r\n (0, _iterator.each)(series, function(_, singleSeries) {\r\n var stackName = singleSeries.getStackName ? singleSeries.getStackName() : \"default\";\r\n (0, _iterator.each)(singleSeries.getPoints(), function(index, point) {\r\n var stackSum = getAbsStackSumByArg(stackKeepers, stackName, point.argument.valueOf());\r\n point.value = point.value / stackSum;\r\n if ((0, _type.isNumeric)(point.minValue)) {\r\n point.minValue = point.minValue / stackSum\r\n }\r\n })\r\n })\r\n}\r\n\r\nfunction updateBarSeriesValues() {\r\n (0, _iterator.each)(this.series, function(_, singleSeries) {\r\n var minBarSize = singleSeries.getOptions().minBarSize;\r\n var valueAxisTranslator = singleSeries.getValueAxis().getTranslator();\r\n var minShownBusinessValue = minBarSize && valueAxisTranslator.getMinBarSize(minBarSize);\r\n if (minShownBusinessValue) {\r\n (0, _iterator.each)(singleSeries.getPoints(), function(index, point) {\r\n if (point.hasValue()) {\r\n point.value = valueAxisTranslator.checkMinBarSize(point.initialValue, minShownBusinessValue)\r\n }\r\n })\r\n }\r\n })\r\n}\r\n\r\nfunction adjustCandlestickSeriesDimensions() {\r\n var series = getVisibleSeries(this);\r\n adjustBarSeriesDimensionsCore(series, {\r\n barWidth: null,\r\n equalBarWidth: true,\r\n barGroupPadding: .3\r\n }, getSeriesStackIndexCallback(isInverted(series)))\r\n}\r\n\r\nfunction adjustBubbleSeriesDimensions() {\r\n var series = getVisibleSeries(this);\r\n if (!series.length) {\r\n return\r\n }\r\n var options = this._options;\r\n var visibleAreaX = series[0].getArgumentAxis().getVisibleArea();\r\n var visibleAreaY = series[0].getValueAxis().getVisibleArea();\r\n var min = _min(visibleAreaX[1] - visibleAreaX[0], visibleAreaY[1] - visibleAreaY[0]);\r\n var minBubbleArea = pow(options.minBubbleSize, 2);\r\n var maxBubbleArea = pow(min * options.maxBubbleSize, 2);\r\n var equalBubbleSize = (min * options.maxBubbleSize + options.minBubbleSize) / 2;\r\n var minPointSize = 1 / 0;\r\n var maxPointSize = -(1 / 0);\r\n var pointSize;\r\n var bubbleArea;\r\n var sizeProportion;\r\n (0, _iterator.each)(series, function(_, seriesItem) {\r\n (0, _iterator.each)(seriesItem.getPoints(), function(_, point) {\r\n maxPointSize = maxPointSize > point.size ? maxPointSize : point.size;\r\n minPointSize = minPointSize < point.size ? minPointSize : point.size\r\n })\r\n });\r\n var sizeDispersion = maxPointSize - minPointSize;\r\n var areaDispersion = abs(maxBubbleArea - minBubbleArea);\r\n (0, _iterator.each)(series, function(_, seriesItem) {\r\n (0, _iterator.each)(seriesItem.getPoints(), function(_, point) {\r\n if (maxPointSize === minPointSize) {\r\n pointSize = round(equalBubbleSize)\r\n } else {\r\n sizeProportion = abs(point.size - minPointSize) / sizeDispersion;\r\n bubbleArea = areaDispersion * sizeProportion + minBubbleArea;\r\n pointSize = round(sqrt(bubbleArea))\r\n }\r\n point.correctCoordinates(pointSize)\r\n })\r\n })\r\n}\r\n\r\nfunction SeriesFamily(options) {\r\n var that = this;\r\n that.type = (0, _utils.normalizeEnum)(options.type);\r\n that.pane = options.pane;\r\n that.series = [];\r\n that.updateOptions(options);\r\n switch (that.type) {\r\n case \"bar\":\r\n that.adjustSeriesDimensions = adjustBarSeriesDimensions;\r\n that.updateSeriesValues = updateBarSeriesValues;\r\n that.adjustSeriesValues = adjustStackedSeriesValues;\r\n break;\r\n case \"rangebar\":\r\n that.adjustSeriesDimensions = adjustBarSeriesDimensions;\r\n break;\r\n case \"fullstackedbar\":\r\n that.fullStacked = true;\r\n that.adjustSeriesDimensions = adjustBarSeriesDimensions;\r\n that.adjustSeriesValues = adjustStackedSeriesValues;\r\n that.updateSeriesValues = updateStackedSeriesValues;\r\n break;\r\n case \"stackedbar\":\r\n that.adjustSeriesDimensions = adjustBarSeriesDimensions;\r\n that.adjustSeriesValues = adjustStackedSeriesValues;\r\n that.updateSeriesValues = updateStackedSeriesValues;\r\n break;\r\n case \"fullstackedarea\":\r\n case \"fullstackedline\":\r\n case \"fullstackedspline\":\r\n case \"fullstackedsplinearea\":\r\n that.fullStacked = true;\r\n that.adjustSeriesValues = adjustStackedSeriesValues;\r\n break;\r\n case \"stackedarea\":\r\n case \"stackedsplinearea\":\r\n case \"stackedline\":\r\n case \"stackedspline\":\r\n that.adjustSeriesValues = adjustStackedSeriesValues;\r\n break;\r\n case \"candlestick\":\r\n case \"stock\":\r\n that.adjustSeriesDimensions = adjustCandlestickSeriesDimensions;\r\n break;\r\n case \"bubble\":\r\n that.adjustSeriesDimensions = adjustBubbleSeriesDimensions\r\n }\r\n}\r\nexports.SeriesFamily = SeriesFamily;\r\nSeriesFamily.prototype = {\r\n constructor: SeriesFamily,\r\n adjustSeriesDimensions: _common.noop,\r\n adjustSeriesValues: _common.noop,\r\n updateSeriesValues: _common.noop,\r\n updateOptions: function(options) {\r\n this._options = options\r\n },\r\n dispose: function() {\r\n this.series = null\r\n },\r\n add: function(series) {\r\n var type = this.type;\r\n this.series = (0, _utils.map)(series, function(singleSeries) {\r\n return singleSeries.type === type ? singleSeries : null\r\n })\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/axes/tick_generator.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _utils = require(\"../core/utils\");\r\nvar _date = require(\"../../core/utils/date\");\r\nvar _date2 = _interopRequireDefault(_date);\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _math = require(\"../../core/utils/math\");\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\n\r\nfunction _slicedToArray(arr, i) {\r\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest()\r\n}\r\n\r\nfunction _nonIterableRest() {\r\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n if (!o) {\r\n return\r\n }\r\n if (\"string\" === typeof o) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n var n = Object.prototype.toString.call(o).slice(8, -1);\r\n if (\"Object\" === n && o.constructor) {\r\n n = o.constructor.name\r\n }\r\n if (\"Map\" === n || \"Set\" === n) {\r\n return Array.from(o)\r\n }\r\n if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n if (null == len || len > arr.length) {\r\n len = arr.length\r\n }\r\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n arr2[i] = arr[i]\r\n }\r\n return arr2\r\n}\r\n\r\nfunction _iterableToArrayLimit(arr, i) {\r\n if (\"undefined\" === typeof Symbol || !(Symbol.iterator in Object(arr))) {\r\n return\r\n }\r\n var _arr = [];\r\n var _n = true;\r\n var _d = false;\r\n var _e = void 0;\r\n try {\r\n for (var _s, _i = arr[Symbol.iterator](); !(_n = (_s = _i.next()).done); _n = true) {\r\n _arr.push(_s.value);\r\n if (i && _arr.length === i) {\r\n break\r\n }\r\n }\r\n } catch (err) {\r\n _d = true;\r\n _e = err\r\n } finally {\r\n try {\r\n if (!_n && null != _i.return) {\r\n _i.return()\r\n }\r\n } finally {\r\n if (_d) {\r\n throw _e\r\n }\r\n }\r\n }\r\n return _arr\r\n}\r\n\r\nfunction _arrayWithHoles(arr) {\r\n if (Array.isArray(arr)) {\r\n return arr\r\n }\r\n}\r\nvar convertDateUnitToMilliseconds = _date2.default.convertDateUnitToMilliseconds;\r\nvar dateToMilliseconds = _date2.default.dateToMilliseconds;\r\nvar math = Math;\r\nvar mathAbs = math.abs;\r\nvar mathFloor = math.floor;\r\nvar mathCeil = math.ceil;\r\nvar mathPow = math.pow;\r\nvar NUMBER_MULTIPLIERS = [1, 2, 2.5, 5];\r\nvar LOGARITHMIC_MULTIPLIERS = [1, 2, 3, 5];\r\nvar DATETIME_MULTIPLIERS = {\r\n millisecond: [1, 2, 5, 10, 25, 50, 100, 250, 500],\r\n second: [1, 2, 3, 5, 10, 15, 20, 30],\r\n minute: [1, 2, 3, 5, 10, 15, 20, 30],\r\n hour: [1, 2, 3, 4, 6, 8, 12],\r\n day: [1, 2],\r\n week: [1, 2],\r\n month: [1, 2, 3, 6]\r\n};\r\nvar DATETIME_MULTIPLIERS_WITH_BIG_WEEKEND = (0, _extend.extend)({}, DATETIME_MULTIPLIERS, {\r\n day: [1]\r\n});\r\nvar DATETIME_MINOR_MULTIPLIERS = {\r\n millisecond: [1, 2, 5, 10, 25, 50, 100, 250, 500],\r\n second: [1, 2, 3, 5, 10, 15, 20, 30],\r\n minute: [1, 2, 3, 5, 10, 15, 20, 30],\r\n hour: [1, 2, 3, 4, 6, 8, 12],\r\n day: [1, 2, 3, 7, 14],\r\n month: [1, 2, 3, 6]\r\n};\r\nvar MINOR_DELIMITERS = [2, 4, 5, 8, 10];\r\nvar VISIBILITY_DELIMITER = 3;\r\nvar MINUTE = 6e4;\r\n\r\nfunction dummyGenerator(options) {\r\n return function(data, screenDelta, tickInterval, forceTickInterval) {\r\n var count = mathFloor(screenDelta / options.axisDivisionFactor);\r\n count = count < 1 ? 1 : count;\r\n var interval = screenDelta / count;\r\n return {\r\n ticks: interval > 0 ? Array.apply(null, new Array(count + 1)).map(function(_, i) {\r\n return interval * i\r\n }) : [],\r\n tickInterval: interval\r\n }\r\n }\r\n}\r\n\r\nfunction discreteGenerator(options) {\r\n return function(data, screenDelta, tickInterval, forceTickInterval) {\r\n var categories = (0, _utils.getCategoriesInfo)(data.categories, data.min, data.max).categories;\r\n return {\r\n ticks: categories,\r\n tickInterval: mathCeil(categories.length * options.axisDivisionFactor / screenDelta)\r\n }\r\n }\r\n}\r\nvar getValue = function(value) {\r\n return value\r\n};\r\nvar getLogValue = function(base, allowNegatives, linearThreshold) {\r\n return function(value) {\r\n return (0, _utils.getLogExt)(value, base, allowNegatives, linearThreshold)\r\n }\r\n};\r\nvar raiseTo = function(base, allowNegatives, linearThreshold) {\r\n return function(value) {\r\n return (0, _utils.raiseToExt)(value, base, allowNegatives, linearThreshold)\r\n }\r\n};\r\nvar mathRaiseTo = function(base) {\r\n return function(value) {\r\n return (0, _utils.raiseTo)(value, base)\r\n }\r\n};\r\nvar logAbsValue = function(base) {\r\n return function(value) {\r\n return 0 === value ? 0 : (0, _utils.getLog)(mathAbs(value), base)\r\n }\r\n};\r\nvar correctValueByInterval = function(post, round, getValue) {\r\n return function(value, interval) {\r\n return (0, _math.adjust)(post(round((0, _math.adjust)(getValue(value) / interval)) * interval))\r\n }\r\n};\r\n\r\nfunction correctMinValueByEndOnTick(floorFunc, ceilFunc, resolveEndOnTick, endOnTick) {\r\n if ((0, _type.isDefined)(endOnTick)) {\r\n return endOnTick ? floorFunc : ceilFunc\r\n }\r\n return function(value, interval, businessViewInfo, forceEndOnTick) {\r\n var floorTickValue = floorFunc(value, interval);\r\n if (value - floorTickValue === 0 || !(0, _type.isDefined)(businessViewInfo) || resolveEndOnTick(value, floorTickValue, interval, businessViewInfo) || forceEndOnTick) {\r\n return floorTickValue\r\n }\r\n return ceilFunc(value, interval)\r\n }\r\n}\r\n\r\nfunction resolveEndOnTick(curValue, tickValue, interval, businessViewInfo) {\r\n var prevTickDataDiff = interval - mathAbs(tickValue - curValue);\r\n var intervalCount = math.max(mathCeil(businessViewInfo.businessDelta / interval), 2);\r\n var businessRatio = businessViewInfo.screenDelta / (intervalCount * interval);\r\n var potentialTickScreenDiff = math.round(businessRatio * prevTickDataDiff);\r\n var delimiterFactor = (0, _utils.getLogExt)(businessRatio * interval / businessViewInfo.axisDivisionFactor, 2) + 1;\r\n var delimiterMultiplier = (businessViewInfo.isSpacedMargin ? 2 : 1) * delimiterFactor;\r\n var screenDelimiter = math.round(VISIBILITY_DELIMITER * delimiterMultiplier);\r\n return businessViewInfo.businessDelta > businessViewInfo.interval && potentialTickScreenDiff >= screenDelimiter\r\n}\r\n\r\nfunction resolveEndOnTickLog(base) {\r\n return function(curValue, tickValue, interval, businessViewInfo) {\r\n return resolveEndOnTick((0, _utils.getLogExt)(curValue, base), (0, _utils.getLogExt)(tickValue, base), interval, businessViewInfo)\r\n }\r\n}\r\n\r\nfunction resolveEndOnTickDate(curValue, tickValue, interval, businessViewInfo) {\r\n return resolveEndOnTick(curValue.valueOf(), tickValue.valueOf(), dateToMilliseconds(interval), businessViewInfo)\r\n}\r\n\r\nfunction getBusinessDelta(data, breaks) {\r\n var spacing = 0;\r\n if (breaks) {\r\n spacing = breaks.reduce(function(prev, item) {\r\n return prev + (item.to - item.from)\r\n }, 0)\r\n }\r\n return mathAbs(data.max - data.min - spacing)\r\n}\r\n\r\nfunction getBusinessDeltaLog(base, allowNegatives, linearThreshold) {\r\n var getLog = getLogValue(base, allowNegatives, linearThreshold);\r\n return function(data, breaks) {\r\n var spacing = 0;\r\n if (breaks) {\r\n spacing = breaks.reduce(function(prev, item) {\r\n return prev + mathAbs(getLog(item.to / item.from))\r\n }, 0)\r\n }\r\n return mathCeil(mathAbs(getLog(data.max) - getLog(data.min)) - spacing)\r\n }\r\n}\r\n\r\nfunction getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor, addTickCount) {\r\n var count = screenDelta / axisDivisionFactor - (addTickCount || 0);\r\n count = count < 1 ? 1 : count;\r\n return businessDelta / count\r\n}\r\n\r\nfunction getMultiplierFactor(interval, factorDelta) {\r\n return mathPow(10, mathFloor((0, _utils.getLogExt)(interval, 10)) + (factorDelta || 0))\r\n}\r\n\r\nfunction calculateTickInterval(businessDelta, screenDelta, tickInterval, forceTickInterval, axisDivisionFactor, multipliers, allowDecimals, addTickCount, _, minTickInterval) {\r\n var interval = getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor, addTickCount);\r\n var result = 1;\r\n var onlyIntegers = false === allowDecimals;\r\n if (!forceTickInterval || !tickInterval) {\r\n if (interval >= 1 || !onlyIntegers && interval > 0) {\r\n result = adjustInterval(interval, multipliers, onlyIntegers)\r\n }\r\n if (!tickInterval || !forceTickInterval && tickInterval < result) {\r\n tickInterval = result\r\n }\r\n }\r\n if (!forceTickInterval && minTickInterval) {\r\n minTickInterval = adjustInterval(minTickInterval, multipliers, onlyIntegers);\r\n if (minTickInterval > tickInterval) {\r\n tickInterval = minTickInterval\r\n }\r\n }\r\n return tickInterval\r\n}\r\n\r\nfunction adjustInterval(interval, multipliers, onlyIntegers) {\r\n var factor = getMultiplierFactor(interval, -1);\r\n var result = 1;\r\n multipliers = multipliers || NUMBER_MULTIPLIERS;\r\n if (interval > 0) {\r\n interval /= factor;\r\n result = multipliers.concat(10 * multipliers[0]).map(function(m) {\r\n return 10 * m\r\n }).reduce(function(r, m) {\r\n if (.1 === factor && onlyIntegers && 25 === m) {\r\n return r\r\n }\r\n return r < interval ? m : r\r\n }, 0);\r\n result = (0, _math.adjust)(result * factor, factor)\r\n }\r\n return result\r\n}\r\n\r\nfunction calculateMinorTickInterval(businessDelta, screenDelta, tickInterval, axisDivisionFactor) {\r\n var interval = getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor);\r\n return tickInterval || MINOR_DELIMITERS.reduce(function(r, d) {\r\n var cur = businessDelta / d;\r\n return cur >= interval ? cur : r\r\n }, 0)\r\n}\r\n\r\nfunction getCalculateTickIntervalLog(skipCalculationLimits) {\r\n return function(businessDelta, screenDelta, tickInterval, forceTickInterval, axisDivisionFactor, multipliers, allowDecimals, _, __, minTickInterval) {\r\n var interval = getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor);\r\n var result = 0;\r\n var adjustInterval = getAdjustIntervalLog(skipCalculationLimits);\r\n if (!forceTickInterval || !tickInterval) {\r\n if (interval > 0) {\r\n result = adjustInterval(interval, multipliers)\r\n }\r\n if (!tickInterval || !forceTickInterval && tickInterval < result) {\r\n tickInterval = result\r\n }\r\n }\r\n if (!forceTickInterval && minTickInterval) {\r\n minTickInterval = adjustInterval(minTickInterval, multipliers);\r\n if (minTickInterval > tickInterval) {\r\n tickInterval = minTickInterval\r\n }\r\n }\r\n return tickInterval\r\n }\r\n}\r\n\r\nfunction getAdjustIntervalLog(skipCalculationLimits) {\r\n return function(interval, multipliers) {\r\n var factor = getMultiplierFactor(interval);\r\n multipliers = multipliers || LOGARITHMIC_MULTIPLIERS;\r\n if (!skipCalculationLimits && factor < 1) {\r\n factor = 1\r\n }\r\n return multipliers.concat(10 * multipliers[0]).reduce(function(r, m) {\r\n return r < interval ? m * factor : r\r\n }, 0)\r\n }\r\n}\r\n\r\nfunction getDataTimeMultipliers(gapSize) {\r\n if (gapSize && gapSize > 2) {\r\n return DATETIME_MULTIPLIERS_WITH_BIG_WEEKEND\r\n } else {\r\n return DATETIME_MULTIPLIERS\r\n }\r\n}\r\n\r\nfunction numbersReducer(interval, key) {\r\n return function(r, m) {\r\n if (!r && interval <= convertDateUnitToMilliseconds(key, m)) {\r\n r = {};\r\n r[key + \"s\"] = m\r\n }\r\n return r\r\n }\r\n}\r\n\r\nfunction yearsReducer(interval, factor) {\r\n return function(r, m) {\r\n var years = factor * m;\r\n if (!r && interval <= convertDateUnitToMilliseconds(\"year\", years) && 2.5 !== years) {\r\n r = {\r\n years: years\r\n }\r\n }\r\n return r\r\n }\r\n}\r\n\r\nfunction calculateTickIntervalDateTime(businessDelta, screenDelta, tickInterval, forceTickInterval, axisDivisionFactor, multipliers, allowDecimals, addTickCount, gapSize, minTickInterval) {\r\n if (!forceTickInterval || !tickInterval) {\r\n var result = adjustIntervalDateTime(getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor), multipliers, null, gapSize);\r\n if (!tickInterval || !forceTickInterval && dateToMilliseconds(tickInterval) <= dateToMilliseconds(result)) {\r\n tickInterval = result\r\n }\r\n }\r\n if (!forceTickInterval && minTickInterval) {\r\n minTickInterval = adjustIntervalDateTime(minTickInterval, multipliers, null, gapSize);\r\n if (dateToMilliseconds(minTickInterval) > dateToMilliseconds(tickInterval)) {\r\n tickInterval = minTickInterval\r\n }\r\n }\r\n return tickInterval\r\n}\r\n\r\nfunction adjustIntervalDateTime(interval, multipliers, _, gapSize) {\r\n var result;\r\n multipliers = multipliers || getDataTimeMultipliers(gapSize);\r\n for (var key in multipliers) {\r\n result = multipliers[key].reduce(numbersReducer(interval, key), result);\r\n if (result) {\r\n break\r\n }\r\n }\r\n if (!result) {\r\n for (var factor = 1;; factor *= 10) {\r\n result = NUMBER_MULTIPLIERS.reduce(yearsReducer(interval, factor), result);\r\n if (result) {\r\n break\r\n }\r\n }\r\n }\r\n return result\r\n}\r\n\r\nfunction calculateMinorTickIntervalDateTime(businessDelta, screenDelta, tickInterval, axisDivisionFactor) {\r\n return calculateTickIntervalDateTime(businessDelta, screenDelta, tickInterval, true, axisDivisionFactor, DATETIME_MINOR_MULTIPLIERS)\r\n}\r\n\r\nfunction getTickIntervalByCustomTicks(getValue, postProcess) {\r\n return function(ticks) {\r\n return ticks ? postProcess(mathAbs((0, _math.adjust)(getValue(ticks[1]) - getValue(ticks[0])))) || void 0 : void 0\r\n }\r\n}\r\n\r\nfunction addInterval(value, interval, isNegative) {\r\n return _date2.default.addInterval(value, interval, isNegative)\r\n}\r\n\r\nfunction addIntervalLog(log, raise) {\r\n return function(value, interval, isNegative) {\r\n return raise(addInterval(log(value), interval, isNegative))\r\n }\r\n}\r\n\r\nfunction addIntervalDate(value, interval, isNegative) {\r\n return addInterval(value, interval, isNegative)\r\n}\r\n\r\nfunction addIntervalWithBreaks(addInterval, breaks, correctValue) {\r\n breaks = breaks.filter(function(b) {\r\n return !b.gapSize\r\n });\r\n return function(value, interval, isNegative) {\r\n var breakSize;\r\n value = addInterval(value, interval, isNegative);\r\n if (!breaks.every(function(item) {\r\n if (value >= addInterval(item.from, interval) && addInterval(value, interval) < item.to) {\r\n breakSize = item.to - item.from - 2 * (addInterval(item.from, interval) - item.from)\r\n }\r\n return !breakSize\r\n })) {\r\n value = correctValue(addInterval(value, breakSize), interval)\r\n }\r\n return value\r\n }\r\n}\r\n\r\nfunction calculateTicks(addInterval, correctMinValue, adjustInterval, resolveEndOnTick) {\r\n return function(data, tickInterval, endOnTick, gaps, breaks, businessDelta, screenDelta, axisDivisionFactor, generateExtraTick) {\r\n var correctTickValue = correctTickValueOnGapSize(addInterval, gaps);\r\n var min = data.min;\r\n var max = data.max;\r\n var businessViewInfo = {\r\n screenDelta: screenDelta,\r\n businessDelta: businessDelta,\r\n axisDivisionFactor: axisDivisionFactor,\r\n isSpacedMargin: data.isSpacedMargin,\r\n interval: tickInterval\r\n };\r\n var cur = correctMinValue(min, tickInterval, businessViewInfo);\r\n var ticks = [];\r\n if (null === breaks || void 0 === breaks ? void 0 : breaks.length) {\r\n addInterval = addIntervalWithBreaks(addInterval, breaks, correctMinValue)\r\n }\r\n if (cur > max) {\r\n cur = correctMinValue(min, adjustInterval(businessDelta / 2), businessViewInfo);\r\n if (cur > max) {\r\n endOnTick = true;\r\n cur = correctMinValue(min, tickInterval, businessViewInfo, endOnTick)\r\n }\r\n }\r\n cur = correctTickValue(cur);\r\n var prev;\r\n while (cur < max && cur !== prev || generateExtraTick && cur <= max) {\r\n ticks.push(cur);\r\n prev = cur;\r\n cur = correctTickValue(addInterval(cur, tickInterval))\r\n }\r\n if (endOnTick || cur - max === 0 || !(0, _type.isDefined)(endOnTick) && resolveEndOnTick(max, cur, tickInterval, businessViewInfo)) {\r\n ticks.push(cur)\r\n }\r\n return ticks\r\n }\r\n}\r\n\r\nfunction calculateMinorTicks(updateTickInterval, addInterval, correctMinValue, correctTickValue, ceil) {\r\n return function(min, max, majorTicks, minorTickInterval, tickInterval, breaks, maxCount) {\r\n var factor = tickInterval / minorTickInterval;\r\n var lastMajor = majorTicks[majorTicks.length - 1];\r\n var firstMajor = majorTicks[0];\r\n var tickBalance = maxCount - 1;\r\n if (null === breaks || void 0 === breaks ? void 0 : breaks.length) {\r\n addInterval = addIntervalWithBreaks(addInterval, breaks, correctMinValue)\r\n }\r\n minorTickInterval = updateTickInterval(minorTickInterval, firstMajor, firstMajor, factor);\r\n if (0 === minorTickInterval) {\r\n return []\r\n }\r\n var cur = correctTickValue(correctMinValue(min, tickInterval, min), minorTickInterval);\r\n minorTickInterval = updateTickInterval(minorTickInterval, firstMajor, cur, factor);\r\n var ticks = [];\r\n while (cur < firstMajor && (!tickBalance || tickBalance > 0)) {\r\n cur >= min && ticks.push(cur);\r\n tickBalance--;\r\n cur = addInterval(cur, minorTickInterval)\r\n }\r\n var middleTicks = majorTicks.reduce(function(r, tick) {\r\n tickBalance = maxCount - 1;\r\n if (null === r.prevTick) {\r\n r.prevTick = tick;\r\n return r\r\n }\r\n minorTickInterval = updateTickInterval(minorTickInterval, tick, r.prevTick, factor);\r\n var cur = correctTickValue(r.prevTick, minorTickInterval);\r\n while (cur < tick && (!tickBalance || tickBalance > 0)) {\r\n cur !== r.prevTick && r.minors.push(cur);\r\n tickBalance--;\r\n cur = addInterval(cur, minorTickInterval)\r\n }\r\n r.prevTick = tick;\r\n return r\r\n }, {\r\n prevTick: null,\r\n minors: []\r\n });\r\n ticks = ticks.concat(middleTicks.minors);\r\n var maxValue = ceil(max, tickInterval, min);\r\n minorTickInterval = updateTickInterval(minorTickInterval, maxValue, maxValue, factor);\r\n cur = correctTickValue(lastMajor, minorTickInterval);\r\n var prev;\r\n while (cur < max && cur !== prev) {\r\n ticks.push(cur);\r\n prev = cur;\r\n cur = addInterval(cur, minorTickInterval)\r\n }\r\n if (lastMajor - max !== 0 && cur - max === 0) {\r\n ticks.push(cur)\r\n }\r\n return ticks\r\n }\r\n}\r\n\r\nfunction filterTicks(ticks, breaks) {\r\n if (breaks.length) {\r\n var result = breaks.reduce(function(result, b) {\r\n var tmpTicks = [];\r\n var i;\r\n for (i = result[1]; i < ticks.length; i++) {\r\n var tickValue = ticks[i];\r\n if (tickValue < b.from) {\r\n tmpTicks.push(tickValue)\r\n }\r\n if (tickValue >= b.to) {\r\n break\r\n }\r\n }\r\n return [result[0].concat(tmpTicks), i]\r\n }, [\r\n [], 0\r\n ]);\r\n return result[0].concat(ticks.slice(result[1]))\r\n }\r\n return ticks\r\n}\r\n\r\nfunction correctTickValueOnGapSize(addInterval, breaks) {\r\n return function(value) {\r\n var gapSize;\r\n if (!breaks.every(function(item) {\r\n if (value >= item.from && value < item.to) {\r\n gapSize = item.gapSize\r\n }\r\n return !gapSize\r\n })) {\r\n value = addInterval(value, gapSize)\r\n }\r\n return value\r\n }\r\n}\r\n\r\nfunction generator(options, getBusinessDelta, calculateTickInterval, calculateMinorTickInterval, getMajorTickIntervalByCustomTicks, getMinorTickIntervalByCustomTicks, convertTickInterval, calculateTicks, calculateMinorTicks, processScaleBreaks) {\r\n function processCustomTicks(customTicks) {\r\n return {\r\n tickInterval: getMajorTickIntervalByCustomTicks(customTicks.majors),\r\n ticks: customTicks.majors || [],\r\n minorTickInterval: getMinorTickIntervalByCustomTicks(customTicks.minors),\r\n minorTicks: customTicks.minors || []\r\n }\r\n }\r\n\r\n function correctUserTickInterval(tickInterval, businessDelta, limit) {\r\n if (tickInterval && businessDelta / convertTickInterval(tickInterval) >= limit + 1) {\r\n options.incidentOccurred(\"W2003\");\r\n tickInterval = void 0\r\n }\r\n return tickInterval\r\n }\r\n\r\n function generateMajorTicks(ticks, data, businessDelta, screenDelta, tickInterval, forceTickInterval, customTicks, breaks) {\r\n if (customTicks.majors) {\r\n ticks.breaks = breaks;\r\n return ticks\r\n }\r\n var gaps = breaks.filter(function(b) {\r\n return b.gapSize\r\n });\r\n var majorTicks;\r\n tickInterval = options.skipCalculationLimits ? tickInterval : correctUserTickInterval(tickInterval, businessDelta, screenDelta);\r\n tickInterval = calculateTickInterval(businessDelta, screenDelta, tickInterval, forceTickInterval, options.axisDivisionFactor, options.numberMultipliers, options.allowDecimals, breaks.length, gaps[0] && gaps[0].gapSize.days, options.minTickInterval);\r\n if (!options.skipTickGeneration) {\r\n majorTicks = calculateTicks(data, tickInterval, options.endOnTick, gaps, breaks, businessDelta, screenDelta, options.axisDivisionFactor, options.generateExtraTick);\r\n breaks = processScaleBreaks(breaks, majorTicks, tickInterval);\r\n majorTicks = filterTicks(majorTicks, breaks);\r\n ticks.breaks = breaks;\r\n ticks.ticks = ticks.ticks.concat(majorTicks)\r\n }\r\n ticks.tickInterval = tickInterval;\r\n return ticks\r\n }\r\n\r\n function generateMinorTicks(ticks, data, businessDelta, screenDelta, minorTickInterval, minorTickCount, customTicks) {\r\n if (!options.calculateMinors) {\r\n return ticks\r\n }\r\n if (customTicks.minors) {\r\n return ticks\r\n }\r\n var minorBusinessDelta = convertTickInterval(ticks.tickInterval);\r\n var minorScreenDelta = screenDelta * minorBusinessDelta / businessDelta;\r\n var breaks = ticks.breaks;\r\n if (!minorTickInterval && minorTickCount) {\r\n minorTickInterval = getMinorTickIntervalByCustomTicks([minorBusinessDelta / (minorTickCount + 1), minorBusinessDelta / (minorTickCount + 1) * 2])\r\n } else {\r\n minorTickCount = void 0\r\n }\r\n minorTickInterval = correctUserTickInterval(minorTickInterval, minorBusinessDelta, minorScreenDelta);\r\n minorTickInterval = calculateMinorTickInterval(minorBusinessDelta, minorScreenDelta, minorTickInterval, options.minorAxisDivisionFactor);\r\n ticks.minorTicks = filterTicks(ticks.minorTicks.concat(calculateMinorTicks(data.min, data.max, ticks.ticks, minorTickInterval, ticks.tickInterval, breaks, minorTickCount)), breaks);\r\n ticks.minorTickInterval = minorTickInterval;\r\n return ticks\r\n }\r\n return function(data, screenDelta, tickInterval, forceTickInterval, customTicks, minorTickInterval, minorTickCount, breaks) {\r\n customTicks = customTicks || {};\r\n var businessDelta = getBusinessDelta(data, breaks);\r\n var result = processCustomTicks(customTicks);\r\n if (!isNaN(businessDelta)) {\r\n if (0 === businessDelta && !customTicks.majors) {\r\n result.ticks = [data.min]\r\n } else {\r\n result = generateMajorTicks(result, data, businessDelta, screenDelta, tickInterval, forceTickInterval, customTicks, breaks || []);\r\n if (!options.skipTickGeneration && businessDelta > 0) {\r\n result = generateMinorTicks(result, data, businessDelta, screenDelta, minorTickInterval, minorTickCount, customTicks)\r\n }\r\n }\r\n }\r\n return result\r\n }\r\n}\r\n\r\nfunction getBaseTick(breakValue, _ref, interval, getValue) {\r\n var _ref2 = _slicedToArray(_ref, 2),\r\n tick = _ref2[0],\r\n insideTick = _ref2[1];\r\n if (!(0, _type.isDefined)(tick) || mathAbs(getValue(breakValue) - getValue(tick)) / interval > .25) {\r\n if ((0, _type.isDefined)(insideTick)) {\r\n tick = insideTick\r\n } else {\r\n if (!(0, _type.isDefined)(tick)) {\r\n tick = breakValue\r\n }\r\n }\r\n }\r\n return tick\r\n}\r\n\r\nfunction getScaleBreaksProcessor(convertTickInterval, getValue, addCorrection) {\r\n return function(breaks, ticks, tickInterval) {\r\n var interval = convertTickInterval(tickInterval);\r\n var correction = .5 * interval;\r\n return breaks.reduce(function(result, b) {\r\n var breakTicks = ticks.filter(function(tick) {\r\n return tick <= b.from\r\n });\r\n var from = addCorrection(getBaseTick(b.from, [].concat(breakTicks[breakTicks.length - 1], ticks[breakTicks.length]), interval, getValue), correction);\r\n breakTicks = ticks.filter(function(tick) {\r\n return tick >= b.to\r\n });\r\n var to = addCorrection(getBaseTick(b.to, [].concat(breakTicks[0], ticks[ticks.length - breakTicks.length - 1]), interval, getValue), -correction);\r\n if (getValue(to) - getValue(from) < interval && !b.gapSize) {\r\n return result\r\n }\r\n if (b.gapSize) {\r\n return result.concat([b])\r\n }\r\n return result.concat([{\r\n from: from,\r\n to: to,\r\n cumulativeWidth: b.cumulativeWidth\r\n }])\r\n }, [])\r\n }\r\n}\r\n\r\nfunction numericGenerator(options) {\r\n var floor = correctValueByInterval(getValue, mathFloor, getValue);\r\n var ceil = correctValueByInterval(getValue, mathCeil, getValue);\r\n var calculateTickIntervalByCustomTicks = getTickIntervalByCustomTicks(getValue, getValue);\r\n return generator(options, getBusinessDelta, calculateTickInterval, calculateMinorTickInterval, calculateTickIntervalByCustomTicks, calculateTickIntervalByCustomTicks, getValue, calculateTicks(addInterval, correctMinValueByEndOnTick(floor, ceil, resolveEndOnTick, options.endOnTick), adjustInterval, resolveEndOnTick), calculateMinorTicks(getValue, addInterval, floor, addInterval, getValue), getScaleBreaksProcessor(getValue, getValue, function(value, correction) {\r\n return value + correction\r\n }))\r\n}\r\nvar correctValueByIntervalLog = function(post, getRound, getValue) {\r\n return function(value, interval) {\r\n return (0, _math.sign)(value) * (0, _math.adjust)(post(getRound(value)((0, _math.adjust)(getValue(value) / interval)) * interval))\r\n }\r\n};\r\n\r\nfunction logarithmicGenerator(options) {\r\n var base = options.logBase;\r\n var raise = raiseTo(base, options.allowNegatives, options.linearThreshold);\r\n var log = getLogValue(base, options.allowNegatives, options.linearThreshold);\r\n var absLog = logAbsValue(base);\r\n var absRaise = mathRaiseTo(base);\r\n var absFloor = function(value) {\r\n return value < 0 ? mathCeil : mathFloor\r\n };\r\n var absCeil = function(value) {\r\n return value < 0 ? mathFloor : mathCeil\r\n };\r\n var floor = correctValueByIntervalLog(absRaise, absFloor, absLog);\r\n var ceil = correctValueByIntervalLog(absRaise, absCeil, absLog);\r\n var ceilNumber = correctValueByInterval(getValue, mathCeil, getValue);\r\n return generator(options, getBusinessDeltaLog(base, options.allowNegatives, options.linearThreshold), getCalculateTickIntervalLog(options.skipCalculationLimits), calculateMinorTickInterval, getTickIntervalByCustomTicks(log, getValue), getTickIntervalByCustomTicks(getValue, getValue), getValue, calculateTicks(addIntervalLog(log, raise), correctMinValueByEndOnTick(floor, ceil, resolveEndOnTickLog(base), options.endOnTick), getAdjustIntervalLog(options.skipCalculationLimits), resolveEndOnTickLog(base)), calculateMinorTicks(function(_, tick, prevTick, factor) {\r\n return Math.max(Math.abs(tick), Math.abs(prevTick)) / factor\r\n }, addInterval, floor, ceilNumber, ceil), getScaleBreaksProcessor(getValue, log, function(value, correction) {\r\n return raise(log(value) + correction)\r\n }))\r\n}\r\n\r\nfunction dateGenerator(options) {\r\n function floor(value, interval) {\r\n var floorNumber = correctValueByInterval(getValue, mathFloor, getValue);\r\n var intervalObject = (0, _type.isString)(interval) ? _date2.default.getDateIntervalByString(interval.toLowerCase()) : interval;\r\n var divider = dateToMilliseconds(interval);\r\n if (intervalObject.days % 7 === 0 || interval.quarters) {\r\n intervalObject = adjustIntervalDateTime(divider)\r\n }\r\n var correctDateWithUnitBeginning = function(v) {\r\n return _date2.default.correctDateWithUnitBeginning(v, intervalObject, null, options.firstDayOfWeek)\r\n };\r\n var floorAtStartDate = function(v) {\r\n return new Date(mathFloor((v.getTime() - v.getTimezoneOffset() * MINUTE) / divider) * divider + v.getTimezoneOffset() * MINUTE)\r\n };\r\n value = correctDateWithUnitBeginning(value);\r\n if (\"years\" in intervalObject) {\r\n value.setFullYear(floorNumber(value.getFullYear(), intervalObject.years, 0))\r\n } else {\r\n if (\"quarters\" in intervalObject) {\r\n value = correctDateWithUnitBeginning(floorAtStartDate(value))\r\n } else {\r\n if (\"months\" in intervalObject) {\r\n value.setMonth(floorNumber(value.getMonth(), intervalObject.months, 0))\r\n } else {\r\n if (\"weeks\" in intervalObject || \"days\" in intervalObject) {\r\n value = correctDateWithUnitBeginning(floorAtStartDate(value))\r\n } else {\r\n if (\"hours\" in intervalObject) {\r\n value.setHours(floorNumber(value.getHours(), intervalObject.hours, 0))\r\n } else {\r\n if (\"minutes\" in intervalObject) {\r\n value.setMinutes(floorNumber(value.getMinutes(), intervalObject.minutes, 0))\r\n } else {\r\n if (\"seconds\" in intervalObject) {\r\n value.setSeconds(floorNumber(value.getSeconds(), intervalObject.seconds, 0))\r\n } else {\r\n if (\"milliseconds\" in intervalObject) {\r\n value = floorAtStartDate(value)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return value\r\n }\r\n\r\n function ceil(value, interval) {\r\n var newValue = floor(value, interval);\r\n while (value - newValue > 0) {\r\n newValue = addIntervalDate(newValue, interval)\r\n }\r\n return newValue\r\n }\r\n var calculateTickIntervalByCustomTicks = getTickIntervalByCustomTicks(getValue, _date2.default.convertMillisecondsToDateUnits);\r\n return generator(options, getBusinessDelta, calculateTickIntervalDateTime, calculateMinorTickIntervalDateTime, calculateTickIntervalByCustomTicks, calculateTickIntervalByCustomTicks, dateToMilliseconds, calculateTicks(addIntervalDate, correctMinValueByEndOnTick(floor, ceil, resolveEndOnTickDate, options.endOnTick), adjustIntervalDateTime, resolveEndOnTickDate), calculateMinorTicks(getValue, addIntervalDate, floor, addIntervalDate, getValue), getScaleBreaksProcessor(dateToMilliseconds, getValue, function(value, correction) {\r\n return new Date(value.getTime() + correction)\r\n }))\r\n}\r\nexports.tickGenerator = function(options) {\r\n var result;\r\n if (options.rangeIsEmpty) {\r\n result = dummyGenerator(options)\r\n } else {\r\n if (\"discrete\" === options.axisType) {\r\n result = discreteGenerator(options)\r\n } else {\r\n if (\"logarithmic\" === options.axisType) {\r\n result = logarithmicGenerator(options)\r\n } else {\r\n if (\"datetime\" === options.dataType) {\r\n result = dateGenerator(options)\r\n } else {\r\n result = numericGenerator(options)\r\n }\r\n }\r\n }\r\n }\r\n return result\r\n};\r\n","/**\r\n * DevExtreme (viz/translators/category_translator.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar isDefined = require(\"../../core/utils/type\").isDefined;\r\nvar adjust = require(\"../../core/utils/math\").adjust;\r\nvar round = Math.round;\r\n\r\nfunction getValue(value) {\r\n return value\r\n}\r\nmodule.exports = {\r\n translate: function(category, directionOffset) {\r\n var that = this;\r\n var canvasOptions = that._canvasOptions;\r\n var categoryIndex = that._categoriesToPoints[category.valueOf()];\r\n var specialValue = that.translateSpecialCase(category);\r\n var startPointIndex = canvasOptions.startPointIndex || 0;\r\n var stickInterval = that._options.stick ? 0 : .5;\r\n if (isDefined(specialValue)) {\r\n return round(specialValue)\r\n }\r\n if (!categoryIndex && 0 !== categoryIndex) {\r\n return null\r\n }\r\n directionOffset = directionOffset || 0;\r\n var stickDelta = categoryIndex + stickInterval - startPointIndex + .5 * directionOffset;\r\n return round(that._calculateProjection(canvasOptions.interval * stickDelta))\r\n },\r\n getInterval: function() {\r\n return this._canvasOptions.interval\r\n },\r\n getEventScale: function(zoomEvent) {\r\n var scale = zoomEvent.deltaScale || 1;\r\n return 1 - (1 - scale) / (.75 + this.visibleCategories.length / this._categories.length)\r\n },\r\n zoom: function(translate, scale) {\r\n var that = this;\r\n var categories = that._categories;\r\n var canvasOptions = that._canvasOptions;\r\n var stick = that._options.stick;\r\n var invert = canvasOptions.invert;\r\n var interval = canvasOptions.interval * scale;\r\n var translateCategories = translate / interval;\r\n var visibleCount = (that.visibleCategories || []).length;\r\n var startCategoryIndex = parseInt((canvasOptions.startPointIndex || 0) + translateCategories + .5);\r\n var categoriesLength = parseInt(adjust(canvasOptions.canvasLength / interval) + (stick ? 1 : 0)) || 1;\r\n var endCategoryIndex;\r\n if (invert) {\r\n startCategoryIndex = parseInt((canvasOptions.startPointIndex || 0) + visibleCount - translateCategories + .5) - categoriesLength\r\n }\r\n if (startCategoryIndex < 0) {\r\n startCategoryIndex = 0\r\n }\r\n endCategoryIndex = startCategoryIndex + categoriesLength;\r\n if (endCategoryIndex > categories.length) {\r\n endCategoryIndex = categories.length;\r\n startCategoryIndex = endCategoryIndex - categoriesLength;\r\n if (startCategoryIndex < 0) {\r\n startCategoryIndex = 0\r\n }\r\n }\r\n var newVisibleCategories = categories.slice(parseInt(startCategoryIndex), parseInt(endCategoryIndex));\r\n var newInterval = that._getDiscreteInterval(newVisibleCategories.length, canvasOptions);\r\n scale = newInterval / canvasOptions.interval;\r\n translate = that.translate(!invert ? newVisibleCategories[0] : newVisibleCategories[newVisibleCategories.length - 1]) * scale - (canvasOptions.startPoint + (stick ? 0 : newInterval / 2));\r\n return {\r\n min: newVisibleCategories[0],\r\n max: newVisibleCategories[newVisibleCategories.length - 1],\r\n translate: translate,\r\n scale: scale\r\n }\r\n },\r\n getMinScale: function(zoom) {\r\n var that = this;\r\n var canvasOptions = that._canvasOptions;\r\n var categoriesLength = (that.visibleCategories || that._categories).length;\r\n categoriesLength += (parseInt(.1 * categoriesLength) || 1) * (zoom ? -2 : 2);\r\n return canvasOptions.canvasLength / (Math.max(categoriesLength, 1) * canvasOptions.interval)\r\n },\r\n getScale: function(min, max) {\r\n var that = this;\r\n var canvasOptions = that._canvasOptions;\r\n var visibleArea = that.getCanvasVisibleArea();\r\n var stickOffset = !that._options.stick && 1;\r\n var minPoint = isDefined(min) ? that.translate(min, -stickOffset) : null;\r\n var maxPoint = isDefined(max) ? that.translate(max, +stickOffset) : null;\r\n if (null === minPoint) {\r\n minPoint = canvasOptions.invert ? visibleArea.max : visibleArea.min\r\n }\r\n if (null === maxPoint) {\r\n maxPoint = canvasOptions.invert ? visibleArea.min : visibleArea.max\r\n }\r\n return that.canvasLength / Math.abs(maxPoint - minPoint)\r\n },\r\n isValid: function(value) {\r\n return isDefined(value) ? this._categoriesToPoints[value.valueOf()] >= 0 : false\r\n },\r\n getCorrectValue: getValue,\r\n to: function(value, direction) {\r\n var canvasOptions = this._canvasOptions;\r\n var categoryIndex = this._categoriesToPoints[value.valueOf()];\r\n var startPointIndex = canvasOptions.startPointIndex || 0;\r\n var stickDelta = categoryIndex + (this._options.stick ? 0 : .5) - startPointIndex + (this._businessRange.invert ? -1 : 1) * direction * .5;\r\n return round(this._calculateProjection(canvasOptions.interval * stickDelta))\r\n },\r\n from: function(position) {\r\n var direction = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\r\n var canvasOptions = this._canvasOptions;\r\n var startPoint = canvasOptions.startPoint;\r\n var categories = this.visibleCategories || this._categories;\r\n var categoriesLength = categories.length;\r\n var stickInterval = this._options.stick ? .5 : 0;\r\n var result = round((position - startPoint) / canvasOptions.interval + stickInterval - .5 - .5 * direction);\r\n if (result >= categoriesLength) {\r\n result = categoriesLength - 1\r\n }\r\n if (result < 0) {\r\n result = 0\r\n }\r\n if (canvasOptions.invert) {\r\n result = categoriesLength - result - 1\r\n }\r\n return categories[result]\r\n },\r\n _add: function() {\r\n return NaN\r\n },\r\n _toValue: getValue,\r\n isValueProlonged: true\r\n};\r\n","/**\r\n * DevExtreme (viz/axes/polar_axes.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _utils = require(\"../core/utils\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _axes_constants = require(\"./axes_constants\");\r\nvar _axes_constants2 = _interopRequireDefault(_axes_constants);\r\nvar _xy_axes = require(\"./xy_axes\");\r\nvar _tick = require(\"./tick\");\r\nvar _base_axis = require(\"./base_axis\");\r\nvar _base_axis2 = _interopRequireDefault(_base_axis);\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 PI = Math.PI,\r\n abs = Math.abs,\r\n atan = Math.atan,\r\n round = Math.round;\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar HALF_PI_ANGLE = 90;\r\n\r\nfunction getPolarQuarter(angle) {\r\n var quarter;\r\n angle = (0, _utils.normalizeAngle)(angle);\r\n if (angle >= 315 && angle <= 360 || angle < 45 && angle >= 0) {\r\n quarter = 1\r\n } else {\r\n if (angle >= 45 && angle < 135) {\r\n quarter = 2\r\n } else {\r\n if (angle >= 135 && angle < 225) {\r\n quarter = 3\r\n } else {\r\n if (angle >= 225 && angle < 315) {\r\n quarter = 4\r\n }\r\n }\r\n }\r\n }\r\n return quarter\r\n}\r\nvar polarAxes = exports;\r\nvar circularAxes = polarAxes.circular = {\r\n _calculateValueMargins: function(ticks) {\r\n var _this$_getViewportRan = this._getViewportRange(),\r\n minVisible = _this$_getViewportRan.minVisible,\r\n maxVisible = _this$_getViewportRan.maxVisible;\r\n if (ticks && ticks.length > 1) {\r\n minVisible = minVisible < ticks[0].value ? minVisible : ticks[0].value;\r\n maxVisible = minVisible > ticks[ticks.length - 1].value ? maxVisible : ticks[ticks.length - 1].value\r\n }\r\n return {\r\n minValue: minVisible,\r\n maxValue: maxVisible\r\n }\r\n },\r\n applyMargins: function() {\r\n var margins = this._calculateValueMargins(this._majorTicks);\r\n var br = this._translator.getBusinessRange();\r\n br.addRange({\r\n minVisible: margins.minValue,\r\n maxVisible: margins.maxValue,\r\n interval: this._calculateRangeInterval(br.interval)\r\n });\r\n this._translator.updateBusinessRange(br)\r\n },\r\n _getTranslatorOptions: function() {\r\n return {\r\n isHorizontal: true,\r\n conversionValue: true,\r\n addSpiderCategory: this._getSpiderCategoryOption(),\r\n stick: this._getStick()\r\n }\r\n },\r\n getCenter: function() {\r\n return this._center\r\n },\r\n getRadius: function() {\r\n return this._radius\r\n },\r\n getAngles: function() {\r\n var options = this._options;\r\n return [options.startAngle, options.endAngle]\r\n },\r\n _updateRadius: function(canvas) {\r\n var rad = _min(canvas.width - canvas.left - canvas.right, canvas.height - canvas.top - canvas.bottom) / 2;\r\n this._radius = rad < 0 ? 0 : rad\r\n },\r\n _updateCenter: function(canvas) {\r\n this._center = {\r\n x: canvas.left + (canvas.width - canvas.right - canvas.left) / 2,\r\n y: canvas.top + (canvas.height - canvas.top - canvas.bottom) / 2\r\n }\r\n },\r\n _processCanvas: function(canvas) {\r\n this._updateRadius(canvas);\r\n this._updateCenter(canvas);\r\n return {\r\n left: 0,\r\n right: 0,\r\n width: this._getScreenDelta()\r\n }\r\n },\r\n _createAxisElement: function() {\r\n return this._renderer.circle()\r\n },\r\n _updateAxisElementPosition: function() {\r\n var center = this.getCenter();\r\n this._axisElement.attr({\r\n cx: center.x,\r\n cy: center.y,\r\n r: this.getRadius()\r\n })\r\n },\r\n _boundaryTicksVisibility: {\r\n min: true\r\n },\r\n _getSpiderCategoryOption: function() {\r\n return this._options.firstPointOnStartAngle\r\n },\r\n _validateOptions: function(options) {\r\n var that = this;\r\n var originValue = options.originValue;\r\n var wholeRange = options.wholeRange = {};\r\n var period = options.period;\r\n if ((0, _type.isDefined)(originValue)) {\r\n originValue = that.validateUnit(originValue)\r\n }\r\n if (period > 0 && options.argumentType === _axes_constants2.default.numeric) {\r\n originValue = originValue || 0;\r\n wholeRange.endValue = originValue + period;\r\n that._viewport = (0, _utils.getVizRangeObject)([originValue, wholeRange.endValue])\r\n }\r\n if ((0, _type.isDefined)(originValue)) {\r\n wholeRange.startValue = originValue\r\n }\r\n },\r\n getMargins: function() {\r\n var tickOptions = this._options.tick;\r\n var tickOuterLength = _max(tickOptions.visible ? tickOptions.length / 2 + tickOptions.shift : 0, 0);\r\n var radius = this.getRadius();\r\n var _this$_center = this._center,\r\n x = _this$_center.x,\r\n y = _this$_center.y;\r\n var labelBoxes = this._majorTicks.map(function(t) {\r\n return t.label && t.label.getBBox()\r\n }).filter(function(b) {\r\n return b\r\n });\r\n var canvas = (0, _extend.extend)({}, this._canvas, {\r\n left: x - radius,\r\n top: y - radius,\r\n right: this._canvas.width - (x + radius),\r\n bottom: this._canvas.height - (y + radius)\r\n });\r\n var margins = _base_axis2.default.calculateCanvasMargins(labelBoxes, canvas);\r\n Object.keys(margins).forEach(function(k) {\r\n return margins[k] = margins[k] < tickOuterLength ? tickOuterLength : margins[k]\r\n });\r\n return margins\r\n },\r\n updateSize: function() {\r\n var that = this;\r\n _base_axis2.default.Axis.prototype.updateSize.apply(that, arguments);\r\n _base_axis2.default.measureLabels(that._majorTicks);\r\n that._adjustLabelsCoord(0, 0, true);\r\n this._checkBoundedLabelsOverlapping(this._majorTicks, this._majorTicks.map(function(t) {\r\n return t.labelBBox\r\n }))\r\n },\r\n _setVisualRange: _common.noop,\r\n applyVisualRangeSetter: _common.noop,\r\n _getStick: function() {\r\n return this._options.firstPointOnStartAngle || this._options.type !== _axes_constants2.default.discrete\r\n },\r\n _getTranslatedCoord: function(value, offset) {\r\n return this._translator.translate(value, offset) - HALF_PI_ANGLE\r\n },\r\n _getCanvasStartEnd: function() {\r\n return {\r\n start: 0 - HALF_PI_ANGLE,\r\n end: 360 - HALF_PI_ANGLE\r\n }\r\n },\r\n _getStripGraphicAttributes: function(fromAngle, toAngle) {\r\n var center = this.getCenter();\r\n var angle = this.getAngles()[0];\r\n var r = this.getRadius();\r\n return {\r\n x: center.x,\r\n y: center.y,\r\n innerRadius: 0,\r\n outerRadius: r,\r\n startAngle: -toAngle - angle,\r\n endAngle: -fromAngle - angle\r\n }\r\n },\r\n _createStrip: function(coords) {\r\n return this._renderer.arc(coords.x, coords.y, coords.innerRadius, coords.outerRadius, coords.startAngle, coords.endAngle)\r\n },\r\n _getStripLabelCoords: function(from, to) {\r\n var that = this;\r\n var coords = that._getStripGraphicAttributes(from, to);\r\n var angle = coords.startAngle + (coords.endAngle - coords.startAngle) / 2;\r\n var cosSin = (0, _utils.getCosAndSin)(angle);\r\n var halfRad = that.getRadius() / 2;\r\n var center = that.getCenter();\r\n var x = round(center.x + halfRad * cosSin.cos);\r\n var y = round(center.y - halfRad * cosSin.sin);\r\n return {\r\n x: x,\r\n y: y,\r\n align: _axes_constants2.default.center\r\n }\r\n },\r\n _getConstantLineGraphicAttributes: function(value) {\r\n var center = this.getCenter();\r\n var r = this.getRadius();\r\n return {\r\n points: [center.x, center.y, center.x + r, center.y]\r\n }\r\n },\r\n _createConstantLine: function(value, attr) {\r\n return this._createPathElement(this._getConstantLineGraphicAttributes(value).points, attr)\r\n },\r\n _rotateConstantLine: function(line, value) {\r\n var _this$getCenter = this.getCenter(),\r\n x = _this$getCenter.x,\r\n y = _this$getCenter.y;\r\n line.rotate(value + this.getAngles()[0], x, y)\r\n },\r\n _getConstantLineLabelsCoords: function(value) {\r\n var that = this;\r\n var cosSin = (0, _utils.getCosAndSin)(-value - that.getAngles()[0]);\r\n var halfRad = that.getRadius() / 2;\r\n var center = that.getCenter();\r\n var x = round(center.x + halfRad * cosSin.cos);\r\n var y = round(center.y - halfRad * cosSin.sin);\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _checkAlignmentConstantLineLabels: _common.noop,\r\n _adjustDivisionFactor: function(val) {\r\n return 180 * val / (this.getRadius() * PI)\r\n },\r\n _getScreenDelta: function() {\r\n var angles = this.getAngles();\r\n return abs(angles[0] - angles[1])\r\n },\r\n _getTickMarkPoints: function(coords, length, _ref) {\r\n var _ref$shift = _ref.shift,\r\n shift = void 0 === _ref$shift ? 0 : _ref$shift;\r\n var center = this.getCenter();\r\n var corrections = {\r\n inside: -1,\r\n center: -.5,\r\n outside: 0\r\n };\r\n var radiusWithTicks = this.getRadius() + length * corrections[this._options.tickOrientation || \"center\"];\r\n return [center.x + radiusWithTicks + shift, center.y, center.x + radiusWithTicks + length + shift, center.y]\r\n },\r\n _getLabelAdjustedCoord: function(tick, _offset, _maxWidth, checkCanvas) {\r\n var that = this;\r\n var labelCoords = tick.labelCoords;\r\n var labelY = labelCoords.y;\r\n var labelAngle = labelCoords.angle;\r\n var cosSin = (0, _utils.getCosAndSin)(labelAngle);\r\n var cos = cosSin.cos;\r\n var sin = cosSin.sin;\r\n var box = tick.labelBBox;\r\n var halfWidth = box.width / 2;\r\n var halfHeight = box.height / 2;\r\n var indentFromAxis = that._options.label.indentFromAxis || 0;\r\n var x = labelCoords.x + indentFromAxis * cos;\r\n var y = labelY + (labelY - box.y - halfHeight) + indentFromAxis * sin;\r\n var shiftX = 0;\r\n var shiftY = 0;\r\n switch (getPolarQuarter(labelAngle)) {\r\n case 1:\r\n shiftX = halfWidth;\r\n shiftY = halfHeight * sin;\r\n break;\r\n case 2:\r\n shiftX = halfWidth * cos;\r\n shiftY = halfHeight;\r\n break;\r\n case 3:\r\n shiftX = -halfWidth;\r\n shiftY = halfHeight * sin;\r\n break;\r\n case 4:\r\n shiftX = halfWidth * cos;\r\n shiftY = -halfHeight\r\n }\r\n if (checkCanvas) {\r\n var canvas = that._canvas;\r\n var boxShiftX = x - labelCoords.x + shiftX;\r\n var boxShiftY = y - labelCoords.y + shiftY;\r\n if (box.x + boxShiftX < canvas.originalLeft) {\r\n shiftX -= box.x + boxShiftX - canvas.originalLeft\r\n }\r\n if (box.x + box.width + boxShiftX > canvas.width - canvas.originalRight) {\r\n shiftX -= box.x + box.width + boxShiftX - (canvas.width - canvas.originalRight)\r\n }\r\n if (box.y + boxShiftY < canvas.originalTop) {\r\n shiftY -= box.y + boxShiftY - canvas.originalTop\r\n }\r\n if (box.y + box.height + boxShiftY > canvas.height - canvas.originalBottom) {\r\n shiftY -= box.y + box.height + boxShiftY - (canvas.height - canvas.originalBottom)\r\n }\r\n }\r\n return {\r\n x: x + shiftX,\r\n y: y + shiftY\r\n }\r\n },\r\n _getGridLineDrawer: function() {\r\n var that = this;\r\n return function(tick, gridStyle) {\r\n var center = that.getCenter();\r\n return that._createPathElement(that._getGridPoints().points, gridStyle).rotate(tick.coords.angle, center.x, center.y)\r\n }\r\n },\r\n _getGridPoints: function() {\r\n var r = this.getRadius();\r\n var center = this.getCenter();\r\n return {\r\n points: [center.x, center.y, center.x + r, center.y]\r\n }\r\n },\r\n _getTranslatedValue: function(value, offset) {\r\n var startAngle = this.getAngles()[0];\r\n var angle = this._translator.translate(value, -offset);\r\n var coords = (0, _utils.convertPolarToXY)(this.getCenter(), startAngle, angle, this.getRadius());\r\n return {\r\n x: coords.x,\r\n y: coords.y,\r\n angle: this.getTranslatedAngle(angle)\r\n }\r\n },\r\n _getAdjustedStripLabelCoords: function(strip) {\r\n var box = strip.labelBBox;\r\n return {\r\n translateY: strip.label.attr(\"y\") - box.y - box.height / 2\r\n }\r\n },\r\n coordsIn: function(x, y) {\r\n return (0, _utils.convertXYToPolar)(this.getCenter(), x, y).r > this.getRadius()\r\n },\r\n _rotateTick: function(element, coords) {\r\n var center = this.getCenter();\r\n element.rotate(coords.angle, center.x, center.y)\r\n },\r\n _validateOverlappingMode: function(mode) {\r\n return _axes_constants2.default.validateOverlappingMode(mode)\r\n },\r\n _validateDisplayMode: function() {\r\n return \"standard\"\r\n },\r\n _getStep: function(boxes) {\r\n var that = this;\r\n var radius = that.getRadius() + (that._options.label.indentFromAxis || 0);\r\n var maxLabelBox = boxes.reduce(function(prevValue, box) {\r\n var curValue = prevValue;\r\n if (prevValue.width < box.width) {\r\n curValue.width = box.width\r\n }\r\n if (prevValue.height < box.height) {\r\n curValue.height = box.height\r\n }\r\n return curValue\r\n }, {\r\n width: 0,\r\n height: 0\r\n });\r\n var angle1 = abs(2 * atan(maxLabelBox.height / (2 * radius - maxLabelBox.width)) * 180 / PI);\r\n var angle2 = abs(2 * atan(maxLabelBox.width / (2 * radius - maxLabelBox.height)) * 180 / PI);\r\n return _axes_constants2.default.getTicksCountInRange(that._majorTicks, \"angle\", _max(angle1, angle2))\r\n },\r\n _checkBoundedLabelsOverlapping: function(majorTicks, boxes, mode) {\r\n var labelOpt = this._options.label;\r\n mode = mode || this._validateOverlappingMode(labelOpt.overlappingBehavior);\r\n if (\"hide\" !== mode) {\r\n return\r\n }\r\n var lastVisibleLabelIndex = majorTicks.reduce(function(lastVisibleLabelIndex, tick, index) {\r\n return tick.label ? index : lastVisibleLabelIndex\r\n }, null);\r\n if (!lastVisibleLabelIndex) {\r\n return\r\n }\r\n if (_axes_constants2.default.areLabelsOverlap(boxes[0], boxes[lastVisibleLabelIndex], labelOpt.minSpacing, _axes_constants2.default.center)) {\r\n \"first\" === labelOpt.hideFirstOrLast ? majorTicks[0].label.remove() : majorTicks[lastVisibleLabelIndex].label.remove()\r\n }\r\n },\r\n shift: function(margins) {\r\n this._axisGroup.attr({\r\n translateX: margins.right,\r\n translateY: margins.bottom\r\n })\r\n },\r\n getTranslatedAngle: function(angle) {\r\n var startAngle = this.getAngles()[0];\r\n return angle + startAngle - HALF_PI_ANGLE\r\n }\r\n};\r\npolarAxes.circularSpider = (0, _extend.extend)({}, circularAxes, {\r\n _createAxisElement: function() {\r\n return this._renderer.path([], \"area\")\r\n },\r\n _updateAxisElementPosition: function() {\r\n this._axisElement.attr({\r\n points: (0, _utils.map)(this.getSpiderTicks(), function(tick) {\r\n return {\r\n x: tick.coords.x,\r\n y: tick.coords.y\r\n }\r\n })\r\n })\r\n },\r\n _getStick: function() {\r\n return true\r\n },\r\n _getSpiderCategoryOption: function() {\r\n return true\r\n },\r\n getSpiderTicks: function() {\r\n var that = this;\r\n var ticks = that.getFullTicks();\r\n that._spiderTicks = ticks.map((0, _tick.tick)(that, that.renderer, {}, {}, that._getSkippedCategory(ticks), true));\r\n that._spiderTicks.forEach(function(tick) {\r\n tick.initCoords()\r\n });\r\n return that._spiderTicks\r\n },\r\n _getStripGraphicAttributes: function(fromAngle, toAngle) {\r\n var center = this.getCenter();\r\n var spiderTicks = this.getSpiderTicks();\r\n var firstTick;\r\n var lastTick;\r\n var nextTick;\r\n var tick;\r\n var points = [];\r\n var i = 0;\r\n var len = spiderTicks.length;\r\n while (i < len) {\r\n tick = spiderTicks[i].coords;\r\n if (tick.angle >= fromAngle && tick.angle <= toAngle) {\r\n if (!firstTick) {\r\n firstTick = (spiderTicks[i - 1] || spiderTicks[spiderTicks.length - 1]).coords;\r\n points.push((tick.x + firstTick.x) / 2, (tick.y + firstTick.y) / 2)\r\n }\r\n points.push(tick.x, tick.y);\r\n nextTick = (spiderTicks[i + 1] || spiderTicks[0]).coords;\r\n lastTick = {\r\n x: (tick.x + nextTick.x) / 2,\r\n y: (tick.y + nextTick.y) / 2\r\n }\r\n }\r\n i++\r\n }\r\n points.push(lastTick.x, lastTick.y);\r\n points.push(center.x, center.y);\r\n return {\r\n points: points\r\n }\r\n },\r\n _createStrip: function(_ref2) {\r\n var points = _ref2.points;\r\n return this._renderer.path(points, \"area\")\r\n },\r\n _getTranslatedCoord: function(value, offset) {\r\n return this._translator.translate(value, offset) - HALF_PI_ANGLE\r\n },\r\n _setTickOffset: function() {\r\n this._tickOffset = false\r\n }\r\n});\r\npolarAxes.linear = {\r\n _resetMargins: function() {\r\n this._reinitTranslator(this._getViewportRange())\r\n },\r\n _getStick: _xy_axes.linear._getStick,\r\n _getSpiderCategoryOption: _common.noop,\r\n _getTranslatorOptions: function() {\r\n return {\r\n isHorizontal: true,\r\n stick: this._getStick()\r\n }\r\n },\r\n getRadius: circularAxes.getRadius,\r\n getCenter: circularAxes.getCenter,\r\n getAngles: circularAxes.getAngles,\r\n _updateRadius: circularAxes._updateRadius,\r\n _updateCenter: circularAxes._updateCenter,\r\n _processCanvas: function(canvas) {\r\n this._updateRadius(canvas);\r\n this._updateCenter(canvas);\r\n return {\r\n left: 0,\r\n right: 0,\r\n startPadding: canvas.startPadding,\r\n endPadding: canvas.endPadding,\r\n width: this.getRadius()\r\n }\r\n },\r\n _createAxisElement: _xy_axes.linear._createAxisElement,\r\n _updateAxisElementPosition: function() {\r\n var centerCoord = this.getCenter();\r\n this._axisElement.attr({\r\n points: [centerCoord.x, centerCoord.y, centerCoord.x + this.getRadius(), centerCoord.y]\r\n }).rotate(this.getAngles()[0] - HALF_PI_ANGLE, centerCoord.x, centerCoord.y)\r\n },\r\n _getScreenDelta: function() {\r\n return this.getRadius()\r\n },\r\n _getTickMarkPoints: function(coords, length) {\r\n return [coords.x - length / 2, coords.y, coords.x + length / 2, coords.y]\r\n },\r\n _getLabelAdjustedCoord: function(tick) {\r\n var that = this;\r\n var labelCoords = tick.labelCoords;\r\n var labelY = labelCoords.y;\r\n var cosSin = (0, _utils.getCosAndSin)(labelCoords.angle);\r\n var indentFromAxis = that._options.label.indentFromAxis || 0;\r\n var box = tick.labelBBox;\r\n var x = labelCoords.x - abs(indentFromAxis * cosSin.sin) + abs(box.width / 2 * cosSin.cos) - box.width / 2;\r\n var y = labelY + (labelY - box.y) - abs(box.height / 2 * cosSin.sin) + abs(indentFromAxis * cosSin.cos);\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _getGridLineDrawer: function() {\r\n var that = this;\r\n return function(tick, gridStyle) {\r\n var grid = that._getGridPoints(tick.coords);\r\n return that._renderer.circle(grid.cx, grid.cy, grid.r).attr(gridStyle).sharp()\r\n }\r\n },\r\n _getGridPoints: function(coords) {\r\n var pos = this.getCenter();\r\n var radius = (0, _utils.getDistance)(pos.x, pos.y, coords.x, coords.y);\r\n if (radius > this.getRadius()) {\r\n return {\r\n cx: null,\r\n cy: null,\r\n r: null\r\n }\r\n }\r\n return {\r\n cx: pos.x,\r\n cy: pos.y,\r\n r: radius\r\n }\r\n },\r\n _getTranslatedValue: function(value, offset) {\r\n var startAngle = this.getAngles()[0];\r\n var xy = (0, _utils.convertPolarToXY)(this.getCenter(), startAngle, 0, this._translator.translate(value, offset));\r\n return {\r\n x: xy.x,\r\n y: xy.y,\r\n angle: startAngle - HALF_PI_ANGLE\r\n }\r\n },\r\n _getTranslatedCoord: function(value, offset) {\r\n return this._translator.translate(value, offset)\r\n },\r\n _getCanvasStartEnd: function() {\r\n var invert = this.getTranslator().getBusinessRange().invert;\r\n var coords = [0, this.getRadius()];\r\n invert && coords.reverse();\r\n return {\r\n start: coords[0],\r\n end: coords[1]\r\n }\r\n },\r\n _getStripGraphicAttributes: function(fromPoint, toPoint) {\r\n var center = this.getCenter();\r\n return {\r\n x: center.x,\r\n y: center.y,\r\n innerRadius: fromPoint,\r\n outerRadius: toPoint\r\n }\r\n },\r\n _createStrip: function(attrs) {\r\n return this._renderer.arc(attrs.x, attrs.y, attrs.innerRadius, attrs.outerRadius, 0, 360)\r\n },\r\n _getAdjustedStripLabelCoords: circularAxes._getAdjustedStripLabelCoords,\r\n _getStripLabelCoords: function(from, to) {\r\n var that = this;\r\n var labelPos = from + (to - from) / 2;\r\n var center = that.getCenter();\r\n var y = round(center.y - labelPos);\r\n return {\r\n x: center.x,\r\n y: y,\r\n align: _axes_constants2.default.center\r\n }\r\n },\r\n _getConstantLineGraphicAttributes: function(value) {\r\n var center = this.getCenter();\r\n return {\r\n cx: center.x,\r\n cy: center.y,\r\n r: value\r\n }\r\n },\r\n _createConstantLine: function(value, attr) {\r\n var attrs = this._getConstantLineGraphicAttributes(value);\r\n return this._renderer.circle(attrs.cx, attrs.cy, attrs.r).attr(attr).sharp()\r\n },\r\n _getConstantLineLabelsCoords: function(value) {\r\n var that = this;\r\n var center = that.getCenter();\r\n var y = round(center.y - value);\r\n return {\r\n x: center.x,\r\n y: y\r\n }\r\n },\r\n _checkAlignmentConstantLineLabels: _common.noop,\r\n _rotateTick: function(element, coords, isGridLine) {\r\n !isGridLine && element.rotate(coords.angle + HALF_PI_ANGLE, coords.x, coords.y)\r\n },\r\n _validateOverlappingMode: circularAxes._validateOverlappingMode,\r\n _validateDisplayMode: circularAxes._validateDisplayMode,\r\n _getStep: function(boxes) {\r\n var quarter = getPolarQuarter(this.getAngles()[0]);\r\n var spacing = this._options.label.minSpacing;\r\n var func = 2 === quarter || 4 === quarter ? function(box) {\r\n return box.width + spacing\r\n } : function(box) {\r\n return box.height\r\n };\r\n var maxLabelLength = boxes.reduce(function(prevValue, box) {\r\n return _max(prevValue, func(box))\r\n }, 0);\r\n return _axes_constants2.default.getTicksCountInRange(this._majorTicks, 2 === quarter || 4 === quarter ? \"x\" : \"y\", maxLabelLength)\r\n }\r\n};\r\npolarAxes.linearSpider = (0, _extend.extend)({}, polarAxes.linear, {\r\n _createPathElement: function(points, attr) {\r\n return this._renderer.path(points, \"area\").attr(attr).sharp()\r\n },\r\n setSpiderTicks: function(ticks) {\r\n this._spiderTicks = ticks\r\n },\r\n _getGridLineDrawer: function() {\r\n var that = this;\r\n return function(tick, gridStyle) {\r\n return that._createPathElement(that._getGridPoints(tick.coords).points, gridStyle)\r\n }\r\n },\r\n _getGridPoints: function(coords) {\r\n var pos = this.getCenter();\r\n var radius = (0, _utils.getDistance)(pos.x, pos.y, coords.x, coords.y);\r\n return this._getGridPointsByRadius(radius)\r\n },\r\n _getGridPointsByRadius: function(radius) {\r\n var pos = this.getCenter();\r\n if (radius > this.getRadius()) {\r\n return {\r\n points: null\r\n }\r\n }\r\n return {\r\n points: (0, _utils.map)(this._spiderTicks, function(tick) {\r\n var cosSin = (0, _utils.getCosAndSin)(tick.coords.angle);\r\n return {\r\n x: round(pos.x + radius * cosSin.cos),\r\n y: round(pos.y + radius * cosSin.sin)\r\n }\r\n })\r\n }\r\n },\r\n _getStripGraphicAttributes: function(fromPoint, toPoint) {\r\n var innerPoints = this._getGridPointsByRadius(toPoint).points;\r\n var outerPoints = this._getGridPointsByRadius(fromPoint).points;\r\n return {\r\n points: [outerPoints, innerPoints.reverse()]\r\n }\r\n },\r\n _createStrip: polarAxes.circularSpider._createStrip,\r\n _getConstantLineGraphicAttributes: function(value) {\r\n return this._getGridPointsByRadius(value)\r\n },\r\n _createConstantLine: function(value, attr) {\r\n return this._createPathElement(this._getConstantLineGraphicAttributes(value).points, attr)\r\n }\r\n});\r\n","/**\r\n * DevExtreme (viz/translators/logarithmic_translator.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar vizUtils = require(\"../core/utils\");\r\nvar isDefined = require(\"../../core/utils/type\").isDefined;\r\nvar raiseTo = vizUtils.raiseToExt;\r\nvar getLog = vizUtils.getLogExt;\r\nmodule.exports = {\r\n _fromValue: function(value) {\r\n return null !== value ? getLog(value, this._canvasOptions.base, this._businessRange.allowNegatives, this._businessRange.linearThreshold) : value\r\n },\r\n _toValue: function(value) {\r\n return null !== value ? raiseTo(value, this._canvasOptions.base, this._businessRange.allowNegatives, this._businessRange.linearThreshold) : value\r\n },\r\n getMinBarSize: function(minBarSize) {\r\n var visibleArea = this.getCanvasVisibleArea();\r\n var minValue = this.from(visibleArea.min + minBarSize);\r\n var canvasOptions = this._canvasOptions;\r\n return Math.pow(canvasOptions.base, canvasOptions.rangeMinVisible + this._fromValue(this.from(visibleArea.min)) - this._fromValue(!isDefined(minValue) ? this.from(visibleArea.max) : minValue))\r\n },\r\n checkMinBarSize: function(initialValue, minShownValue, stackValue) {\r\n var canvasOptions = this._canvasOptions;\r\n var prevValue = stackValue - initialValue;\r\n var baseMethod = this.constructor.prototype.checkMinBarSize;\r\n var minBarSize;\r\n var updateValue;\r\n if (isDefined(minShownValue) && prevValue > 0) {\r\n minBarSize = baseMethod(this._fromValue(stackValue / prevValue), this._fromValue(minShownValue) - canvasOptions.rangeMinVisible);\r\n updateValue = Math.pow(canvasOptions.base, this._fromValue(prevValue) + minBarSize) - prevValue\r\n } else {\r\n updateValue = baseMethod(initialValue, minShownValue)\r\n }\r\n return updateValue\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/axes/strip.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.default = createStrip;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction createStrip(axis, options) {\r\n var storedCoord;\r\n var lastStoredCoordinates;\r\n var labelOptions = options.label || {};\r\n return {\r\n options: options,\r\n label: null,\r\n rect: null,\r\n _getCoord: function() {\r\n var canvas = axis._getCanvasStartEnd();\r\n var range = axis._translator.getBusinessRange();\r\n return axis._getStripPos(options.startValue, options.endValue, canvas.start, canvas.end, range)\r\n },\r\n _drawLabel: function(coords) {\r\n return axis._renderer.text(labelOptions.text, coords.x, coords.y).css((0, _utils.patchFontOptions)((0, _extend.extend)({}, axis.getOptions().label.font, labelOptions.font))).attr({\r\n align: \"center\",\r\n \"class\": labelOptions.cssClass\r\n }).append(axis._axisStripLabelGroup)\r\n },\r\n draw: function() {\r\n if (axis._translator.getBusinessRange().isEmpty()) {\r\n return\r\n }\r\n if (((0, _type.isDefined)(options.startValue) || (0, _type.isDefined)(options.endValue)) && (0, _type.isDefined)(options.color)) {\r\n var stripPos = this._getCoord();\r\n this.labelCoords = labelOptions.text ? axis._getStripLabelCoords(stripPos.from, stripPos.to, labelOptions) : null;\r\n if (stripPos.outOfCanvas || !(0, _type.isDefined)(stripPos.to) || !(0, _type.isDefined)(stripPos.from)) {\r\n return\r\n }\r\n this.rect = axis._createStrip(axis._getStripGraphicAttributes(stripPos.from, stripPos.to)).attr({\r\n fill: options.color\r\n }).append(axis._axisStripGroup);\r\n this.label = labelOptions.text ? this._drawLabel(this.labelCoords) : null\r\n }\r\n },\r\n removeLabel: function() {},\r\n updatePosition: function(animate) {\r\n var stripPos = this._getCoord();\r\n if (animate && storedCoord) {\r\n this.label && this.label.attr(axis._getStripLabelCoords(storedCoord.from, storedCoord.to, options.label));\r\n this.rect && this.rect.attr(axis._getStripGraphicAttributes(storedCoord.from, storedCoord.to));\r\n this.label && this.label.animate(axis._getStripLabelCoords(stripPos.from, stripPos.to, options.label));\r\n this.rect && this.rect.animate(axis._getStripGraphicAttributes(stripPos.from, stripPos.to))\r\n } else {\r\n this.label && this.label.attr(axis._getStripLabelCoords(stripPos.from, stripPos.to, options.label));\r\n this.rect && this.rect.attr(axis._getStripGraphicAttributes(stripPos.from, stripPos.to))\r\n }\r\n },\r\n saveCoords: function() {\r\n lastStoredCoordinates = storedCoord;\r\n storedCoord = this._getCoord()\r\n },\r\n resetCoordinates: function() {\r\n storedCoord = lastStoredCoordinates\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (viz/chart_components/scroll_bar.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 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\nvar _events_engine = require(\"../../events/core/events_engine\");\r\nvar _events_engine2 = _interopRequireDefault(_events_engine);\r\nvar _utils = require(\"../../events/utils\");\r\nvar eventUtils = _interopRequireWildcard(_utils);\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _translator2d = require(\"../translators/translator2d\");\r\nvar _translator2d2 = _interopRequireDefault(_translator2d);\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _drag = require(\"../../events/drag\");\r\nvar _drag2 = _interopRequireDefault(_drag);\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 _min = Math.min;\r\nvar _max = Math.max;\r\nvar MIN_SCROLL_BAR_SIZE = 2;\r\nvar ScrollBar = function(renderer, group) {\r\n this._translator = new _translator2d2.default.Translator2D({}, {}, {});\r\n this._scroll = renderer.rect().append(group);\r\n this._addEvents()\r\n};\r\n\r\nfunction _getXCoord(canvas, pos, offset, width) {\r\n var x = 0;\r\n if (\"right\" === pos) {\r\n x = canvas.width - canvas.right + offset\r\n } else {\r\n if (\"left\" === pos) {\r\n x = canvas.left - offset - width\r\n }\r\n }\r\n return x\r\n}\r\n\r\nfunction _getYCoord(canvas, pos, offset, width) {\r\n var y = 0;\r\n if (\"top\" === pos) {\r\n y = canvas.top - offset\r\n } else {\r\n if (\"bottom\" === pos) {\r\n y = canvas.height - canvas.bottom + width + offset\r\n }\r\n }\r\n return y\r\n}\r\nScrollBar.prototype = {\r\n _addEvents: function() {\r\n var _this = this;\r\n var scrollElement = this._scroll.element;\r\n _events_engine2.default.on(scrollElement, _drag2.default.start, function(e) {\r\n eventUtils.fireEvent({\r\n type: \"dxc-scroll-start\",\r\n originalEvent: e,\r\n target: scrollElement\r\n })\r\n });\r\n _events_engine2.default.on(scrollElement, _drag2.default.move, function(e) {\r\n var dX = -e.offset.x * _this._scale;\r\n var dY = -e.offset.y * _this._scale;\r\n var lx = _this._offset - (_this._layoutOptions.vertical ? dY : dX) / _this._scale;\r\n _this._applyPosition(lx, lx + _this._translator.canvasLength / _this._scale);\r\n eventUtils.fireEvent({\r\n type: \"dxc-scroll-move\",\r\n originalEvent: e,\r\n target: scrollElement,\r\n offset: {\r\n x: dX,\r\n y: dY\r\n }\r\n })\r\n });\r\n _events_engine2.default.on(scrollElement, _drag2.default.end, function(e) {\r\n eventUtils.fireEvent({\r\n type: \"dxc-scroll-end\",\r\n originalEvent: e,\r\n target: scrollElement,\r\n offset: {\r\n x: -e.offset.x * _this._scale,\r\n y: -e.offset.y * _this._scale\r\n }\r\n })\r\n })\r\n },\r\n update: function(options) {\r\n var that = this;\r\n var position = options.position;\r\n var isVertical = options.rotated;\r\n var defaultPosition = isVertical ? \"right\" : \"top\";\r\n var secondaryPosition = isVertical ? \"left\" : \"bottom\";\r\n if (position !== defaultPosition && position !== secondaryPosition) {\r\n position = defaultPosition\r\n }\r\n that._scroll.attr({\r\n rotate: !options.rotated ? -90 : 0,\r\n rotateX: 0,\r\n rotateY: 0,\r\n fill: options.color,\r\n width: options.width,\r\n opacity: options.opacity\r\n });\r\n that._layoutOptions = {\r\n width: options.width,\r\n offset: options.offset,\r\n vertical: isVertical,\r\n position: position\r\n };\r\n return that\r\n },\r\n init: function(range, stick) {\r\n var that = this;\r\n var isDiscrete = \"discrete\" === range.axisType;\r\n that._translateWithOffset = isDiscrete && !stick && 1 || 0;\r\n that._translator.update((0, _extend.extend)({}, range, {\r\n minVisible: null,\r\n maxVisible: null,\r\n visibleCategories: null\r\n }, isDiscrete && {\r\n min: null,\r\n max: null\r\n } || {}), that._canvas, {\r\n isHorizontal: !that._layoutOptions.vertical,\r\n stick: stick\r\n });\r\n return that\r\n },\r\n getOptions: function() {\r\n return this._layoutOptions\r\n },\r\n setPane: function(panes) {\r\n var position = this._layoutOptions.position;\r\n var pane;\r\n if (\"left\" === position || \"top\" === position) {\r\n pane = panes[0]\r\n } else {\r\n pane = panes[panes.length - 1]\r\n }\r\n this.pane = pane.name;\r\n return this\r\n },\r\n updateSize: function(canvas) {\r\n this._canvas = (0, _extend.extend)({}, canvas);\r\n var options = this._layoutOptions;\r\n var pos = options.position;\r\n var offset = options.offset;\r\n var width = options.width;\r\n this._scroll.attr({\r\n translateX: _getXCoord(canvas, pos, offset, width),\r\n translateY: _getYCoord(canvas, pos, offset, width)\r\n })\r\n },\r\n getMultipleAxesSpacing: function() {\r\n return 0\r\n },\r\n estimateMargins: function() {\r\n return this.getMargins()\r\n },\r\n getMargins: function() {\r\n var options = this._layoutOptions;\r\n var margins = {\r\n left: 0,\r\n top: 0,\r\n right: 0,\r\n bottom: 0\r\n };\r\n margins[options.position] = options.width + options.offset;\r\n return margins\r\n },\r\n shift: function shift(margins) {\r\n var _that$_scroll$attr, _that$_scroll$attr2;\r\n var that = this;\r\n var options = that._layoutOptions;\r\n var side = options.position;\r\n var isVertical = options.vertical;\r\n var attr = {\r\n translateX: null !== (_that$_scroll$attr = that._scroll.attr(\"translateX\")) && void 0 !== _that$_scroll$attr ? _that$_scroll$attr : 0,\r\n translateY: null !== (_that$_scroll$attr2 = that._scroll.attr(\"translateY\")) && void 0 !== _that$_scroll$attr2 ? _that$_scroll$attr2 : 0\r\n };\r\n var shift = margins[side];\r\n attr[isVertical ? \"translateX\" : \"translateY\"] += (\"left\" === side || \"top\" === side ? -1 : 1) * shift;\r\n that._scroll.attr(attr)\r\n },\r\n hideTitle: _common.noop,\r\n hideOuterElements: _common.noop,\r\n setPosition: function(min, max) {\r\n var that = this;\r\n var translator = that._translator;\r\n var minPoint = (0, _type.isDefined)(min) ? translator.translate(min, -that._translateWithOffset) : translator.translate(\"canvas_position_start\");\r\n var maxPoint = (0, _type.isDefined)(max) ? translator.translate(max, that._translateWithOffset) : translator.translate(\"canvas_position_end\");\r\n that._offset = _min(minPoint, maxPoint);\r\n that._scale = translator.getScale(min, max);\r\n that._applyPosition(_min(minPoint, maxPoint), _max(minPoint, maxPoint))\r\n },\r\n customPositionIsAvailable: function() {\r\n return false\r\n },\r\n dispose: function() {\r\n this._scroll.dispose();\r\n this._scroll = this._translator = null\r\n },\r\n _applyPosition: function(x1, x2) {\r\n var that = this;\r\n var visibleArea = that._translator.getCanvasVisibleArea();\r\n x1 = _max(x1, visibleArea.min);\r\n x1 = _min(x1, visibleArea.max);\r\n x2 = _min(x2, visibleArea.max);\r\n x2 = _max(x2, visibleArea.min);\r\n var height = Math.abs(x2 - x1);\r\n that._scroll.attr({\r\n y: x1,\r\n height: height < MIN_SCROLL_BAR_SIZE ? MIN_SCROLL_BAR_SIZE : height\r\n })\r\n }\r\n};\r\nexports.ScrollBar = ScrollBar;\r\n","/**\r\n * DevExtreme (viz/translators/interval_translator.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar typeUtils = require(\"../../core/utils/type\");\r\nvar isNumber = typeUtils.isNumeric;\r\nvar isDefined = typeUtils.isDefined;\r\nvar dateUtils = require(\"../../core/utils/date\");\r\nvar addInterval = dateUtils.addInterval;\r\nvar dateToMilliseconds = dateUtils.dateToMilliseconds;\r\nvar floor = Math.floor;\r\nvar adjust = require(\"../../core/utils/math\").adjust;\r\nmodule.exports = {\r\n _intervalize: function(value, interval) {\r\n if (!isDefined(value)) {\r\n return\r\n }\r\n if (\"datetime\" === this._businessRange.dataType) {\r\n if (isNumber(value)) {\r\n value = new Date(value)\r\n } else {\r\n value = new Date(value.getTime())\r\n }\r\n value = dateUtils.correctDateWithUnitBeginning(value, interval, null, this._options.firstDayOfWeek)\r\n } else {\r\n value = adjust(floor(adjust(value / interval)) * interval, interval)\r\n }\r\n return value\r\n },\r\n translate: function(bp, direction, interval) {\r\n var that = this;\r\n var specialValue = that.translateSpecialCase(bp);\r\n if (isDefined(specialValue)) {\r\n return Math.round(specialValue)\r\n }\r\n interval = interval || that._options.interval;\r\n if (!that.isValid(bp, interval)) {\r\n return null\r\n }\r\n return that.to(bp, direction, interval)\r\n },\r\n getInterval: function() {\r\n return Math.round(this._canvasOptions.ratioOfCanvasRange * (this._businessRange.interval || Math.abs(this._canvasOptions.rangeMax - this._canvasOptions.rangeMin)))\r\n },\r\n zoom: function() {},\r\n getMinScale: function() {},\r\n getScale: function() {},\r\n _parse: function(value) {\r\n return \"datetime\" === this._businessRange.dataType ? new Date(value) : Number(value)\r\n },\r\n _fromValue: function(value) {\r\n return this._parse(value)\r\n },\r\n _toValue: function(value) {\r\n return this._parse(value)\r\n },\r\n isValid: function(value, interval) {\r\n var that = this;\r\n var co = that._canvasOptions;\r\n var rangeMin = co.rangeMin;\r\n var rangeMax = co.rangeMax;\r\n interval = interval || that._options.interval;\r\n if (null === value || isNaN(value)) {\r\n return false\r\n }\r\n value = \"datetime\" === that._businessRange.dataType && isNumber(value) ? new Date(value) : value;\r\n if (interval !== that._options.interval) {\r\n rangeMin = that._intervalize(rangeMin, interval);\r\n rangeMax = that._intervalize(rangeMax, interval)\r\n }\r\n if (value.valueOf() < rangeMin || value.valueOf() >= addInterval(rangeMax, interval)) {\r\n return false\r\n }\r\n return true\r\n },\r\n to: function(bp, direction, interval) {\r\n var that = this;\r\n interval = interval || that._options.interval;\r\n var v1 = that._intervalize(bp, interval);\r\n var v2 = addInterval(v1, interval);\r\n var res = that._to(v1);\r\n var p2 = that._to(v2);\r\n if (!direction) {\r\n res = floor((res + p2) / 2)\r\n } else {\r\n if (direction > 0) {\r\n res = p2\r\n }\r\n }\r\n return res\r\n },\r\n _to: function(value) {\r\n var co = this._canvasOptions;\r\n var rMin = co.rangeMinVisible;\r\n var rMax = co.rangeMaxVisible;\r\n var offset = value - rMin;\r\n if (value < rMin) {\r\n offset = 0\r\n } else {\r\n if (value > rMax) {\r\n offset = addInterval(rMax, this._options.interval) - rMin\r\n }\r\n }\r\n return this._conversionValue(this._calculateProjection(offset * this._canvasOptions.ratioOfCanvasRange))\r\n },\r\n from: function(position, direction) {\r\n var that = this;\r\n var origInterval = that._options.interval;\r\n var interval = origInterval;\r\n var co = that._canvasOptions;\r\n var rMin = co.rangeMinVisible;\r\n var rMax = co.rangeMaxVisible;\r\n var value;\r\n if (\"datetime\" === that._businessRange.dataType) {\r\n interval = dateToMilliseconds(origInterval)\r\n }\r\n value = that._calculateUnProjection((position - that._canvasOptions.startPoint) / that._canvasOptions.ratioOfCanvasRange);\r\n value = that._intervalize(addInterval(value, interval / 2, direction > 0), origInterval);\r\n if (value < rMin) {\r\n value = rMin\r\n } else {\r\n if (value > rMax) {\r\n value = rMax\r\n }\r\n }\r\n return value\r\n },\r\n _add: function() {\r\n return NaN\r\n },\r\n isValueProlonged: true\r\n};\r\n","/**\r\n * DevExtreme (viz/axes/smart_formatter.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.smartFormatter = smartFormatter;\r\nexports.formatRange = formatRange;\r\nvar _format_helper = require(\"../../format_helper\");\r\nvar _format_helper2 = _interopRequireDefault(_format_helper);\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _date = require(\"../../core/utils/date\");\r\nvar _date2 = _interopRequireDefault(_date);\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _utils = require(\"../core/utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _format = _format_helper2.default.format;\r\nvar abs = Math.abs,\r\n floor = Math.floor;\r\nvar EXPONENTIAL = \"exponential\";\r\nvar formats = [\"fixedPoint\", \"thousands\", \"millions\", \"billions\", \"trillions\", EXPONENTIAL];\r\nvar dateUnitIntervals = [\"millisecond\", \"second\", \"minute\", \"hour\", \"day\", \"month\", \"year\"];\r\n\r\nfunction getDatesDifferences(prevDate, curDate, nextDate, tickFormat) {\r\n var prevDifferences;\r\n var nextDifferences;\r\n var dateUnitInterval;\r\n var dateUnitsLength = dateUnitIntervals.length;\r\n var i;\r\n var j;\r\n if (\"week\" === tickFormat) {\r\n tickFormat = \"day\"\r\n } else {\r\n if (\"quarter\" === tickFormat) {\r\n tickFormat = \"month\"\r\n } else {\r\n if (\"shorttime\" === tickFormat) {\r\n tickFormat = \"hour\"\r\n } else {\r\n if (\"longtime\" === tickFormat) {\r\n tickFormat = \"second\"\r\n }\r\n }\r\n }\r\n }\r\n var tickFormatIndex = dateUnitIntervals.indexOf(tickFormat);\r\n if (nextDate) {\r\n nextDifferences = _date2.default.getDatesDifferences(curDate, nextDate);\r\n prevDifferences = _date2.default.getDatesDifferences(curDate, prevDate);\r\n if (nextDifferences[tickFormat]) {\r\n for (i = dateUnitsLength - 1; i >= tickFormatIndex; i--) {\r\n dateUnitInterval = dateUnitIntervals[i];\r\n if (i === tickFormatIndex) {\r\n setDateUnitInterval(nextDifferences, tickFormatIndex + (nextDifferences.millisecond ? 2 : 1))\r\n } else {\r\n if (nextDifferences[dateUnitInterval]) {\r\n resetDateUnitInterval(nextDifferences, i);\r\n break\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n prevDifferences = _date2.default.getDatesDifferences(prevDate, curDate);\r\n for (i = dateUnitsLength - 1; i >= tickFormatIndex; i--) {\r\n dateUnitInterval = dateUnitIntervals[i];\r\n if (prevDifferences[dateUnitInterval]) {\r\n if (i - tickFormatIndex > 1) {\r\n for (j = tickFormatIndex + 1; j >= 0; j--) {\r\n resetDateUnitInterval(prevDifferences, j)\r\n }\r\n break\r\n } else {\r\n if (isDateTimeStart(curDate, dateUnitInterval)) {\r\n for (j = i - 1; j > 0; j--) {\r\n resetDateUnitInterval(prevDifferences, j)\r\n }\r\n break\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return nextDate ? nextDifferences : prevDifferences\r\n}\r\n\r\nfunction isDateTimeStart(date, dateUnitInterval) {\r\n var unitNumbers = [date.getMilliseconds(), date.getSeconds(), date.getMinutes(), date.getHours(), date.getDate(), date.getMonth()];\r\n var unitIndex = dateUnitIntervals.indexOf(dateUnitInterval);\r\n var i;\r\n for (i = 0; i < unitIndex; i++) {\r\n if (4 === i && 1 !== unitNumbers[i] || 4 !== i && 0 !== unitNumbers[i]) {\r\n return false\r\n }\r\n }\r\n return true\r\n}\r\n\r\nfunction resetDateUnitInterval(differences, intervalIndex) {\r\n var dateUnitInterval = dateUnitIntervals[intervalIndex];\r\n if (differences[dateUnitInterval]) {\r\n differences[dateUnitInterval] = false;\r\n differences.count--\r\n }\r\n}\r\n\r\nfunction setDateUnitInterval(differences, intervalIndex) {\r\n var dateUnitInterval = dateUnitIntervals[intervalIndex];\r\n if (false === differences[dateUnitInterval]) {\r\n differences[dateUnitInterval] = true;\r\n differences.count++\r\n }\r\n}\r\n\r\nfunction getNoZeroIndex(str) {\r\n return str.length - parseInt(str).toString().length\r\n}\r\n\r\nfunction getTransitionTickIndex(ticks, value) {\r\n var i;\r\n var curDiff;\r\n var minDiff;\r\n var nearestTickIndex = 0;\r\n minDiff = abs(value - ticks[0]);\r\n for (i = 1; i < ticks.length; i++) {\r\n curDiff = abs(value - ticks[i]);\r\n if (curDiff < minDiff) {\r\n minDiff = curDiff;\r\n nearestTickIndex = i\r\n }\r\n }\r\n return nearestTickIndex\r\n}\r\n\r\nfunction splitDecimalNumber(value) {\r\n return value.toString().split(\".\")\r\n}\r\n\r\nfunction createFormat(type) {\r\n var formatter;\r\n if ((0, _type.isFunction)(type)) {\r\n formatter = type;\r\n type = null\r\n }\r\n return {\r\n type: type,\r\n formatter: formatter\r\n }\r\n}\r\n\r\nfunction smartFormatter(tick, options) {\r\n var tickInterval = options.tickInterval;\r\n var tickIntervalIndex;\r\n var tickIndex;\r\n var actualIndex;\r\n var stringTick = abs(tick).toString();\r\n var precision = 0;\r\n var typeFormat;\r\n var offset = 0;\r\n var separatedTickInterval;\r\n var indexOfFormat = 0;\r\n var indexOfTick = -1;\r\n var datesDifferences;\r\n var format = options.labelOptions.format;\r\n var ticks = options.ticks;\r\n var log10Tick;\r\n var prevDateIndex;\r\n var nextDateIndex;\r\n var isLogarithmic = \"logarithmic\" === options.type;\r\n if (1 === ticks.length && 0 === ticks.indexOf(tick) && !(0, _type.isDefined)(tickInterval)) {\r\n tickInterval = abs(tick) >= 1 ? 1 : (0, _math.adjust)(1 - abs(tick), tick)\r\n }\r\n if (!(0, _type.isDefined)(format) && \"discrete\" !== options.type && tick && (10 === options.logarithmBase || !isLogarithmic)) {\r\n if (\"datetime\" !== options.dataType && (0, _type.isDefined)(tickInterval)) {\r\n if (ticks.length && ticks.indexOf(tick) === -1) {\r\n indexOfTick = getTransitionTickIndex(ticks, tick);\r\n tickInterval = (0, _math.adjust)(abs(tick - ticks[indexOfTick]), tick)\r\n }\r\n separatedTickInterval = splitDecimalNumber(tickInterval);\r\n if (separatedTickInterval < 2) {\r\n separatedTickInterval = splitDecimalNumber(tick)\r\n }\r\n if (isLogarithmic) {\r\n log10Tick = (0, _utils.getAdjustedLog10)(abs(tick));\r\n if (log10Tick > 0) {\r\n typeFormat = formats[floor(log10Tick / 3)] || EXPONENTIAL\r\n } else {\r\n if (log10Tick < -4) {\r\n typeFormat = EXPONENTIAL\r\n } else {\r\n precision = void 0\r\n }\r\n }\r\n } else {\r\n if (separatedTickInterval.length > 1 && !(0, _type.isExponential)(tickInterval)) {\r\n precision = separatedTickInterval[1].length;\r\n typeFormat = formats[indexOfFormat]\r\n } else {\r\n if ((0, _type.isExponential)(tickInterval) && (stringTick.indexOf(\".\") !== -1 || (0, _type.isExponential)(tick))) {\r\n typeFormat = EXPONENTIAL;\r\n if (!(0, _type.isExponential)(tick)) {\r\n precision = abs(getNoZeroIndex(stringTick.split(\".\")[1]) - (0, _math.getExponent)(tickInterval) + 1)\r\n } else {\r\n precision = Math.max(abs((0, _math.getExponent)(tick) - (0, _math.getExponent)(tickInterval)), abs((0, _math.getPrecision)(tick) - (0, _math.getPrecision)(tickInterval)))\r\n }\r\n } else {\r\n tickIntervalIndex = floor((0, _utils.getAdjustedLog10)(tickInterval));\r\n actualIndex = tickIndex = floor((0, _utils.getAdjustedLog10)(abs(tick)));\r\n if (tickIndex - tickIntervalIndex >= 2) {\r\n actualIndex = tickIntervalIndex\r\n }\r\n indexOfFormat = floor(actualIndex / 3);\r\n offset = 3 * indexOfFormat;\r\n if (indexOfFormat < 5) {\r\n if (tickIntervalIndex - offset === 2 && tickIndex >= 3) {\r\n indexOfFormat++;\r\n offset = 3 * indexOfFormat\r\n }\r\n typeFormat = formats[indexOfFormat]\r\n } else {\r\n typeFormat = formats[formats.length - 1]\r\n }\r\n if (offset > 0) {\r\n separatedTickInterval = splitDecimalNumber(tickInterval / Math.pow(10, offset));\r\n if (separatedTickInterval[1]) {\r\n precision = separatedTickInterval[1].length\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (void 0 !== typeFormat || void 0 !== precision) {\r\n format = {\r\n type: typeFormat,\r\n precision: precision\r\n }\r\n }\r\n } else {\r\n if (\"datetime\" === options.dataType) {\r\n typeFormat = _date2.default.getDateFormatByTickInterval(tickInterval);\r\n if (options.showTransition && ticks.length) {\r\n indexOfTick = ticks.map(Number).indexOf(+tick);\r\n if (1 === ticks.length && 0 === indexOfTick) {\r\n typeFormat = _format_helper2.default.getDateFormatByTicks(ticks)\r\n } else {\r\n if (indexOfTick === -1) {\r\n prevDateIndex = getTransitionTickIndex(ticks, tick)\r\n } else {\r\n prevDateIndex = 0 === indexOfTick ? ticks.length - 1 : indexOfTick - 1;\r\n nextDateIndex = 0 === indexOfTick ? 1 : -1\r\n }\r\n datesDifferences = getDatesDifferences(ticks[prevDateIndex], tick, ticks[nextDateIndex], typeFormat);\r\n typeFormat = _format_helper2.default.getDateFormatByDifferences(datesDifferences, typeFormat)\r\n }\r\n }\r\n format = createFormat(typeFormat)\r\n }\r\n }\r\n }\r\n return _format(tick, format)\r\n}\r\n\r\nfunction getHighDiffFormat(diff) {\r\n var stop = false;\r\n for (var i in diff) {\r\n if (true === diff[i] || \"hour\" === i || stop) {\r\n diff[i] = false;\r\n stop = true\r\n } else {\r\n if (false === diff[i]) {\r\n diff[i] = true\r\n }\r\n }\r\n }\r\n return createFormat(_format_helper2.default.getDateFormatByDifferences(diff))\r\n}\r\n\r\nfunction getHighAndSelfDiffFormat(diff, interval) {\r\n var stop = false;\r\n for (var i in diff) {\r\n if (stop) {\r\n diff[i] = false\r\n } else {\r\n if (i === interval) {\r\n stop = true\r\n } else {\r\n diff[i] = true\r\n }\r\n }\r\n }\r\n return createFormat(_format_helper2.default.getDateFormatByDifferences(diff))\r\n}\r\n\r\nfunction formatDateRange(startValue, endValue, tickInterval) {\r\n var diff = getDatesDifferences(startValue, endValue);\r\n var typeFormat = _date2.default.getDateFormatByTickInterval(tickInterval);\r\n var diffFormatType = _format_helper2.default.getDateFormatByDifferences(diff, typeFormat);\r\n var diffFormat = createFormat(diffFormatType);\r\n var values = [];\r\n if (tickInterval in diff) {\r\n var rangeFormat = getHighAndSelfDiffFormat(getDatesDifferences(startValue, endValue), tickInterval);\r\n var value = _format(startValue, rangeFormat);\r\n if (value) {\r\n values.push(value)\r\n }\r\n } else {\r\n var _rangeFormat = getHighDiffFormat(getDatesDifferences(startValue, endValue));\r\n var highValue = _format(startValue, _rangeFormat);\r\n if (highValue) {\r\n values.push(highValue)\r\n }\r\n values.push(\"\".concat(_format(startValue, diffFormat), \" - \").concat(_format(endValue, diffFormat)))\r\n }\r\n return values.join(\", \")\r\n}\r\n\r\nfunction processDateInterval(interval) {\r\n if ((0, _type.isObject)(interval)) {\r\n var dateUnits = Object.keys(interval);\r\n var sum = dateUnits.reduce(function(sum, k) {\r\n return interval[k] + sum\r\n }, 0);\r\n if (1 === sum) {\r\n var dateUnit = dateUnits.filter(function(k) {\r\n return 1 === interval[k]\r\n })[0];\r\n return dateUnit.slice(0, dateUnit.length - 1)\r\n }\r\n }\r\n return interval\r\n}\r\n\r\nfunction formatRange(startValue, endValue, tickInterval, _ref) {\r\n var dataType = _ref.dataType,\r\n type = _ref.type,\r\n logarithmBase = _ref.logarithmBase;\r\n if (\"discrete\" === type) {\r\n return \"\"\r\n }\r\n if (\"datetime\" === dataType) {\r\n return formatDateRange(startValue, endValue, processDateInterval(tickInterval))\r\n }\r\n var formatOptions = {\r\n ticks: [],\r\n type: type,\r\n dataType: dataType,\r\n tickInterval: tickInterval,\r\n logarithmBase: logarithmBase,\r\n labelOptions: {}\r\n };\r\n return \"\".concat(smartFormatter(startValue, formatOptions), \" - \").concat(smartFormatter(endValue, formatOptions))\r\n}\r\n","/**\r\n * DevExtreme (viz/chart_components/advanced_chart.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _range = require(\"../translators/range\");\r\nvar _range2 = _interopRequireDefault(_range);\r\nvar _base_axis = require(\"../axes/base_axis\");\r\nvar _base_axis2 = _interopRequireDefault(_base_axis);\r\nvar _series_family = require(\"../core/series_family\");\r\nvar _series_family2 = _interopRequireDefault(_series_family);\r\nvar _base_chart = require(\"./base_chart\");\r\nvar _crosshair = require(\"./crosshair\");\r\nvar _crosshair2 = _interopRequireDefault(_crosshair);\r\nvar _range_data_calculator = require(\"../series/helpers/range_data_calculator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _utils = require(\"../core/utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\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 _isArray = Array.isArray;\r\nvar DEFAULT_AXIS_NAME = \"defaultAxisName\";\r\nvar FONT = \"font\";\r\nvar COMMON_AXIS_SETTINGS = \"commonAxisSettings\";\r\nvar DEFAULT_PANE_NAME = \"default\";\r\nvar VISUAL_RANGE = \"VISUAL_RANGE\";\r\n\r\nfunction prepareAxis(axisOptions) {\r\n return _isArray(axisOptions) ? 0 === axisOptions.length ? [{}] : axisOptions : [axisOptions]\r\n}\r\n\r\nfunction processBubbleMargin(opt, bubbleSize) {\r\n if (opt.processBubbleSize) {\r\n opt.size = bubbleSize\r\n }\r\n return opt\r\n}\r\n\r\nfunction estimateBubbleSize(size, panesCount, maxSize, rotated) {\r\n var width = rotated ? size.width / panesCount : size.width;\r\n var height = rotated ? size.height : size.height / panesCount;\r\n return Math.min(width, height) * maxSize\r\n}\r\n\r\nfunction setAxisVisualRangeByOption(arg, axis, isDirectOption, index) {\r\n var options;\r\n var visualRange;\r\n if (isDirectOption) {\r\n visualRange = arg.value;\r\n options = {\r\n skipEventRising: true\r\n };\r\n var pathElements = arg.fullName.split(\".\");\r\n var destElem = pathElements[pathElements.length - 1];\r\n if (\"endValue\" === destElem || \"startValue\" === destElem) {\r\n options = {\r\n allowPartialUpdate: true\r\n };\r\n visualRange = _defineProperty({}, destElem, arg.value)\r\n }\r\n } else {\r\n visualRange = ((0, _type.isDefined)(index) ? arg.value[index] : arg.value).visualRange\r\n }\r\n axis.visualRange(visualRange, options)\r\n}\r\n\r\nfunction getAxisTypes(groupsData, axis, isArgumentAxes) {\r\n if (isArgumentAxes) {\r\n return {\r\n argumentAxisType: groupsData.argumentAxisType,\r\n argumentType: groupsData.argumentType\r\n }\r\n }\r\n var _groupsData$groups$fi = groupsData.groups.filter(function(g) {\r\n return g.valueAxis === axis\r\n })[0],\r\n valueAxisType = _groupsData$groups$fi.valueAxisType,\r\n valueType = _groupsData$groups$fi.valueType;\r\n return {\r\n valueAxisType: valueAxisType,\r\n valueType: valueType\r\n }\r\n}\r\nvar AdvancedChart = _base_chart.BaseChart.inherit({\r\n _setDeprecatedOptions: function() {\r\n this.callBase.apply(this, arguments);\r\n (0, _extend2.extend)(this._deprecatedOptions, {\r\n barWidth: {\r\n since: \"18.1\",\r\n message: \"Use the 'commonSeriesSettings.barPadding' or 'series.barPadding' option instead\"\r\n },\r\n equalBarWidth: {\r\n since: \"18.1\",\r\n message: \"Use the 'commonSeriesSettings.ignoreEmptyPoints' or 'series.ignoreEmptyPoints' option instead\"\r\n }\r\n })\r\n },\r\n _fontFields: [COMMON_AXIS_SETTINGS + \".label.\" + FONT, COMMON_AXIS_SETTINGS + \".title.\" + FONT],\r\n _partialOptionChangesMap: {\r\n visualRange: VISUAL_RANGE,\r\n _customVisualRange: VISUAL_RANGE,\r\n strips: \"REFRESH_AXES\",\r\n constantLines: \"REFRESH_AXES\"\r\n },\r\n _partialOptionChangesPath: {\r\n argumentAxis: [\"strips\", \"constantLines\", \"visualRange\", \"_customVisualRange\"],\r\n valueAxis: [\"strips\", \"constantLines\", \"visualRange\", \"_customVisualRange\"]\r\n },\r\n _initCore: function() {\r\n this._panesClipRects = {};\r\n this.callBase()\r\n },\r\n _disposeCore: function() {\r\n var disposeObjectsInArray = this._disposeObjectsInArray;\r\n var panesClipRects = this._panesClipRects;\r\n this.callBase();\r\n disposeObjectsInArray.call(panesClipRects, \"fixed\");\r\n disposeObjectsInArray.call(panesClipRects, \"base\");\r\n disposeObjectsInArray.call(panesClipRects, \"wide\");\r\n this._panesClipRects = null\r\n },\r\n _dispose: function() {\r\n var that = this;\r\n var disposeObjectsInArray = this._disposeObjectsInArray;\r\n that.callBase();\r\n that.panes = null;\r\n if (that._legend) {\r\n that._legend.dispose();\r\n that._legend = null\r\n }\r\n disposeObjectsInArray.call(that, \"panesBackground\");\r\n disposeObjectsInArray.call(that, \"seriesFamilies\");\r\n that._disposeAxes()\r\n },\r\n _createPanes: function() {\r\n this._cleanPanesClipRects(\"fixed\");\r\n this._cleanPanesClipRects(\"base\");\r\n this._cleanPanesClipRects(\"wide\")\r\n },\r\n _cleanPanesClipRects: function(clipArrayName) {\r\n var clipArray = this._panesClipRects[clipArrayName];\r\n (clipArray || []).forEach(function(clipRect) {\r\n return clipRect && clipRect.dispose()\r\n });\r\n this._panesClipRects[clipArrayName] = []\r\n },\r\n _getElementsClipRectID: function(paneName) {\r\n var clipShape = this._panesClipRects.fixed[this._getPaneIndex(paneName)];\r\n return clipShape && clipShape.id\r\n },\r\n _getPaneIndex: function(paneName) {\r\n var paneIndex;\r\n var name = paneName || DEFAULT_PANE_NAME;\r\n (0, _iterator.each)(this.panes, function(index, pane) {\r\n if (pane.name === name) {\r\n paneIndex = index;\r\n return false\r\n }\r\n });\r\n return paneIndex\r\n },\r\n _updateSize: function() {\r\n this.callBase();\r\n (0, _utils.setCanvasValues)(this._canvas)\r\n },\r\n _reinitAxes: function() {\r\n this.panes = this._createPanes();\r\n this._populateAxes();\r\n this._axesReinitialized = true\r\n },\r\n _getCrosshairMargins: function() {\r\n var crosshairOptions = this._getCrosshairOptions() || {};\r\n var crosshairEnabled = crosshairOptions.enabled;\r\n var margins = _crosshair2.default.getMargins();\r\n return {\r\n x: crosshairEnabled && crosshairOptions.horizontalLine.visible ? margins.x : 0,\r\n y: crosshairEnabled && crosshairOptions.verticalLine.visible ? margins.y : 0\r\n }\r\n },\r\n _populateAxes: function() {\r\n var that = this;\r\n var panes = that.panes;\r\n var rotated = that._isRotated();\r\n var argumentAxesOptions = prepareAxis(that.option(\"argumentAxis\") || {})[0];\r\n var valueAxisOption = that.option(\"valueAxis\");\r\n var valueAxesOptions = prepareAxis(valueAxisOption || {});\r\n var argumentAxesPopulatedOptions = [];\r\n var valueAxesPopulatedOptions = [];\r\n var axisNames = [];\r\n var valueAxesCounter = 0;\r\n var paneWithNonVirtualAxis;\r\n var crosshairMargins = that._getCrosshairMargins();\r\n\r\n function getNextAxisName() {\r\n return DEFAULT_AXIS_NAME + valueAxesCounter++\r\n }\r\n if (rotated) {\r\n paneWithNonVirtualAxis = \"right\" === argumentAxesOptions.position ? panes[panes.length - 1].name : panes[0].name\r\n } else {\r\n paneWithNonVirtualAxis = \"top\" === argumentAxesOptions.position ? panes[0].name : panes[panes.length - 1].name\r\n }\r\n argumentAxesPopulatedOptions = (0, _utils.map)(panes, function(pane) {\r\n var virtual = pane.name !== paneWithNonVirtualAxis;\r\n return that._populateAxesOptions(\"argumentAxis\", argumentAxesOptions, {\r\n pane: pane.name,\r\n name: null,\r\n optionPath: \"argumentAxis\",\r\n crosshairMargin: rotated ? crosshairMargins.x : crosshairMargins.y\r\n }, rotated, virtual)\r\n });\r\n (0, _iterator.each)(valueAxesOptions, function(priority, axisOptions) {\r\n var _axisOptions$panes;\r\n var axisPanes = [];\r\n var name = axisOptions.name;\r\n if (name && (0, _array.inArray)(name, axisNames) !== -1) {\r\n that._incidentOccurred(\"E2102\");\r\n return\r\n }\r\n name && axisNames.push(name);\r\n if (axisOptions.pane) {\r\n axisPanes.push(axisOptions.pane)\r\n }\r\n if (null === (_axisOptions$panes = axisOptions.panes) || void 0 === _axisOptions$panes ? void 0 : _axisOptions$panes.length) {\r\n axisPanes = axisPanes.concat(axisOptions.panes.slice(0))\r\n }\r\n axisPanes = (0, _utils.unique)(axisPanes);\r\n if (!axisPanes.length) {\r\n axisPanes.push(void 0)\r\n }(0, _iterator.each)(axisPanes, function(_, pane) {\r\n var optionPath = _isArray(valueAxisOption) ? \"valueAxis[\".concat(priority, \"]\") : \"valueAxis\";\r\n valueAxesPopulatedOptions.push(that._populateAxesOptions(\"valueAxis\", axisOptions, {\r\n name: name || getNextAxisName(),\r\n pane: pane,\r\n priority: priority,\r\n optionPath: optionPath,\r\n crosshairMargin: rotated ? crosshairMargins.y : crosshairMargins.x\r\n }, rotated))\r\n })\r\n });\r\n that._redesignAxes(argumentAxesPopulatedOptions, true, paneWithNonVirtualAxis);\r\n that._redesignAxes(valueAxesPopulatedOptions, false)\r\n },\r\n _redesignAxes: function(options, isArgumentAxes, paneWithNonVirtualAxis) {\r\n var that = this;\r\n var axesBasis = [];\r\n var axes = isArgumentAxes ? that._argumentAxes : that._valueAxes;\r\n (0, _iterator.each)(options, function(_, opt) {\r\n var curAxes = axes && axes.filter(function(a) {\r\n return a.name === opt.name && (!(0, _type.isDefined)(opt.pane) && that.panes.some(function(p) {\r\n return p.name === a.pane\r\n }) || a.pane === opt.pane)\r\n });\r\n if (curAxes && curAxes.length > 0) {\r\n (0, _iterator.each)(curAxes, function(_, axis) {\r\n var axisTypes = getAxisTypes(that._groupsData, axis, isArgumentAxes);\r\n axis.updateOptions(opt);\r\n if (isArgumentAxes) {\r\n axis.setTypes(axisTypes.argumentAxisType, axisTypes.argumentType, \"argumentType\")\r\n } else {\r\n axis.setTypes(axisTypes.valueAxisType, axisTypes.valueType, \"valueType\")\r\n }\r\n axis.validate();\r\n axesBasis.push({\r\n axis: axis\r\n })\r\n })\r\n } else {\r\n axesBasis.push({\r\n options: opt\r\n })\r\n }\r\n });\r\n if (axes) {\r\n (0, _iterator.reverseEach)(axes, function(index, axis) {\r\n if (!axesBasis.some(function(basis) {\r\n return basis.axis && basis.axis === axis\r\n })) {\r\n that._disposeAxis(index, isArgumentAxes)\r\n }\r\n })\r\n } else {\r\n if (isArgumentAxes) {\r\n axes = that._argumentAxes = []\r\n } else {\r\n axes = that._valueAxes = []\r\n }\r\n }(0, _iterator.each)(axesBasis, function(_, basis) {\r\n var axis = basis.axis;\r\n if (basis.axis && isArgumentAxes) {\r\n basis.axis.isVirtual = basis.axis.pane !== paneWithNonVirtualAxis\r\n } else {\r\n if (basis.options) {\r\n axis = that._createAxis(isArgumentAxes, basis.options, isArgumentAxes ? basis.options.pane !== paneWithNonVirtualAxis : void 0);\r\n axes.push(axis)\r\n }\r\n }\r\n axis.applyVisualRangeSetter(that._getVisualRangeSetter())\r\n })\r\n },\r\n _disposeAxis: function(index, isArgumentAxis) {\r\n var axes = isArgumentAxis ? this._argumentAxes : this._valueAxes;\r\n var axis = axes[index];\r\n if (!axis) {\r\n return\r\n }\r\n axis.dispose();\r\n axes.splice(index, 1)\r\n },\r\n _disposeAxes: function() {\r\n var that = this;\r\n var disposeObjectsInArray = that._disposeObjectsInArray;\r\n disposeObjectsInArray.call(that, \"_argumentAxes\");\r\n disposeObjectsInArray.call(that, \"_valueAxes\")\r\n },\r\n _appendAdditionalSeriesGroups: function() {\r\n this._crosshairCursorGroup.linkAppend();\r\n this._scrollBar && this._scrollBarGroup.linkAppend()\r\n },\r\n _getLegendTargets: function() {\r\n var _this = this;\r\n return (this.series || []).map(function(s) {\r\n var item = _this._getLegendOptions(s);\r\n item.legendData.series = s;\r\n if (!s.getOptions().showInLegend) {\r\n item.legendData.visible = false\r\n }\r\n return item\r\n })\r\n },\r\n _legendItemTextField: \"name\",\r\n _seriesPopulatedHandlerCore: function() {\r\n this._processSeriesFamilies();\r\n this._processValueAxisFormat()\r\n },\r\n _renderTrackers: function() {\r\n var that = this;\r\n var i;\r\n for (i = 0; i < that.series.length; ++i) {\r\n that.series[i].drawTrackers()\r\n }\r\n },\r\n _specialProcessSeries: function() {\r\n this._processSeriesFamilies()\r\n },\r\n _processSeriesFamilies: function() {\r\n var _that$seriesFamilies;\r\n var that = this;\r\n var types = [];\r\n var families = [];\r\n var paneSeries;\r\n var themeManager = that._themeManager;\r\n var negativesAsZeroes = themeManager.getOptions(\"negativesAsZeroes\");\r\n var negativesAsZeros = themeManager.getOptions(\"negativesAsZeros\");\r\n var familyOptions = {\r\n equalBarWidth: themeManager.getOptions(\"equalBarWidth\"),\r\n minBubbleSize: themeManager.getOptions(\"minBubbleSize\"),\r\n maxBubbleSize: themeManager.getOptions(\"maxBubbleSize\"),\r\n barWidth: themeManager.getOptions(\"barWidth\"),\r\n barGroupPadding: themeManager.getOptions(\"barGroupPadding\"),\r\n barGroupWidth: themeManager.getOptions(\"barGroupWidth\"),\r\n negativesAsZeroes: (0, _type.isDefined)(negativesAsZeroes) ? negativesAsZeroes : negativesAsZeros\r\n };\r\n if (null === (_that$seriesFamilies = that.seriesFamilies) || void 0 === _that$seriesFamilies ? void 0 : _that$seriesFamilies.length) {\r\n (0, _iterator.each)(that.seriesFamilies, function(_, family) {\r\n family.updateOptions(familyOptions);\r\n family.adjustSeriesValues()\r\n });\r\n return\r\n }(0, _iterator.each)(that.series, function(_, item) {\r\n if ((0, _array.inArray)(item.type, types) === -1) {\r\n types.push(item.type)\r\n }\r\n });\r\n (0, _iterator.each)(that._getLayoutTargets(), function(_, pane) {\r\n paneSeries = that._getSeriesForPane(pane.name);\r\n (0, _iterator.each)(types, function(_, type) {\r\n var family = new _series_family2.default.SeriesFamily({\r\n type: type,\r\n pane: pane.name,\r\n equalBarWidth: familyOptions.equalBarWidth,\r\n minBubbleSize: familyOptions.minBubbleSize,\r\n maxBubbleSize: familyOptions.maxBubbleSize,\r\n barWidth: familyOptions.barWidth,\r\n barGroupPadding: familyOptions.barGroupPadding,\r\n barGroupWidth: familyOptions.barGroupWidth,\r\n negativesAsZeroes: familyOptions.negativesAsZeroes,\r\n rotated: that._isRotated()\r\n });\r\n family.add(paneSeries);\r\n family.adjustSeriesValues();\r\n families.push(family)\r\n })\r\n });\r\n that.seriesFamilies = families\r\n },\r\n _updateSeriesDimensions: function() {\r\n var that = this;\r\n var i;\r\n var seriesFamilies = that.seriesFamilies || [];\r\n for (i = 0; i < seriesFamilies.length; i++) {\r\n var family = seriesFamilies[i];\r\n family.updateSeriesValues();\r\n family.adjustSeriesDimensions()\r\n }\r\n },\r\n _getLegendCallBack: function(series) {\r\n return this._legend && this._legend.getActionCallback(series)\r\n },\r\n _appendAxesGroups: function() {\r\n var that = this;\r\n that._stripsGroup.linkAppend();\r\n that._gridGroup.linkAppend();\r\n that._axesGroup.linkAppend();\r\n that._constantLinesGroup.linkAppend();\r\n that._labelAxesGroup.linkAppend();\r\n that._scaleBreaksGroup.linkAppend()\r\n },\r\n _populateMarginOptions: function() {\r\n var that = this;\r\n var bubbleSize = estimateBubbleSize(that.getSize(), that.panes.length, that._themeManager.getOptions(\"maxBubbleSize\"), that._isRotated());\r\n var argumentMarginOptions = {};\r\n that._valueAxes.forEach(function(valueAxis) {\r\n var groupSeries = that.series.filter(function(series) {\r\n return series.getValueAxis() === valueAxis\r\n });\r\n var marginOptions = {};\r\n groupSeries.forEach(function(series) {\r\n if (series.isVisible()) {\r\n var seriesMarginOptions = processBubbleMargin(series.getMarginOptions(), bubbleSize);\r\n marginOptions = (0, _utils.mergeMarginOptions)(marginOptions, seriesMarginOptions);\r\n argumentMarginOptions = (0, _utils.mergeMarginOptions)(argumentMarginOptions, seriesMarginOptions)\r\n }\r\n });\r\n valueAxis.setMarginOptions(marginOptions)\r\n });\r\n that._argumentAxes.forEach(function(a) {\r\n return a.setMarginOptions(argumentMarginOptions)\r\n })\r\n },\r\n _populateBusinessRange: function(updatedAxis, keepRange) {\r\n var that = this;\r\n var rotated = that._isRotated();\r\n var argRange = new _range2.default.Range({\r\n rotated: !!rotated\r\n });\r\n var series = that._getVisibleSeries();\r\n that._valueAxes.forEach(function(valueAxis) {\r\n var groupRange = new _range2.default.Range({\r\n rotated: !!rotated,\r\n pane: valueAxis.pane,\r\n axis: valueAxis.name\r\n });\r\n var groupSeries = series.filter(function(series) {\r\n return series.getValueAxis() === valueAxis\r\n });\r\n groupSeries.forEach(function(series) {\r\n var seriesRange = series.getRangeData();\r\n groupRange.addRange(seriesRange.val);\r\n argRange.addRange(seriesRange.arg)\r\n });\r\n if (!updatedAxis || updatedAxis && groupSeries.length && valueAxis === updatedAxis) {\r\n valueAxis.setGroupSeries(groupSeries);\r\n valueAxis.setBusinessRange(groupRange, that._axesReinitialized || keepRange, that._argumentAxes[0]._lastVisualRangeUpdateMode)\r\n }\r\n });\r\n if (!updatedAxis || updatedAxis && series.length) {\r\n that._argumentAxes.forEach(function(a) {\r\n return a.setBusinessRange(argRange, that._axesReinitialized, void 0, that._groupsData.categories)\r\n })\r\n }\r\n that._populateMarginOptions()\r\n },\r\n getArgumentAxis: function() {\r\n return (this._argumentAxes || []).filter(function(a) {\r\n return !a.isVirtual\r\n })[0]\r\n },\r\n getValueAxis: function(name) {\r\n var _this2 = this;\r\n return (this._valueAxes || []).filter((0, _type.isDefined)(name) ? function(a) {\r\n return a.name === name\r\n } : function(a) {\r\n return a.pane === _this2.defaultPane\r\n })[0]\r\n },\r\n _getGroupsData: function() {\r\n var that = this;\r\n var groups = [];\r\n that._valueAxes.forEach(function(axis) {\r\n groups.push({\r\n series: that.series.filter(function(series) {\r\n return series.getValueAxis() === axis\r\n }),\r\n valueAxis: axis,\r\n valueOptions: axis.getOptions()\r\n })\r\n });\r\n return {\r\n groups: groups,\r\n argumentAxes: that._argumentAxes,\r\n argumentOptions: that._argumentAxes[0].getOptions()\r\n }\r\n },\r\n _groupSeries: function() {\r\n var that = this;\r\n that._correctValueAxes(false);\r\n that._groupsData = that._getGroupsData()\r\n },\r\n _processValueAxisFormat: function() {\r\n var axesWithFullStackedFormat = [];\r\n this.series.forEach(function(series) {\r\n var axis = series.getValueAxis();\r\n if (series.isFullStackedSeries()) {\r\n axis.setPercentLabelFormat();\r\n axesWithFullStackedFormat.push(axis)\r\n }\r\n });\r\n this._valueAxes.forEach(function(axis) {\r\n if (axesWithFullStackedFormat.indexOf(axis) === -1) {\r\n axis.resetAutoLabelFormat()\r\n }\r\n })\r\n },\r\n _populateAxesOptions: function(typeSelector, userOptions, axisOptions, rotated, virtual) {\r\n var that = this;\r\n var preparedUserOptions = that._prepareStripsAndConstantLines(typeSelector, userOptions, rotated);\r\n var options = (0, _extend2.extend)(true, {}, preparedUserOptions, axisOptions, that._prepareAxisOptions(typeSelector, preparedUserOptions, rotated));\r\n if (virtual) {\r\n options.visible = options.tick.visible = options.minorTick.visible = options.label.visible = false;\r\n options.title = {}\r\n }\r\n return options\r\n },\r\n _getValFilter: function(series) {\r\n return (0, _range_data_calculator.getViewPortFilter)(series.getValueAxis().visualRange() || {})\r\n },\r\n _createAxis: function(isArgumentAxes, options, virtual) {\r\n var that = this;\r\n var typeSelector = isArgumentAxes ? \"argumentAxis\" : \"valueAxis\";\r\n var renderingSettings = (0, _extend2.extend)({\r\n renderer: that._renderer,\r\n incidentOccurred: that._incidentOccurred,\r\n eventTrigger: that._eventTrigger,\r\n axisClass: isArgumentAxes ? \"arg\" : \"val\",\r\n widgetClass: \"dxc\",\r\n stripsGroup: that._stripsGroup,\r\n labelAxesGroup: that._labelAxesGroup,\r\n constantLinesGroup: that._constantLinesGroup,\r\n scaleBreaksGroup: that._scaleBreaksGroup,\r\n axesContainerGroup: that._axesGroup,\r\n gridGroup: that._gridGroup,\r\n isArgumentAxis: isArgumentAxes\r\n }, that._getAxisRenderingOptions(typeSelector));\r\n var axis = new _base_axis2.default.Axis(renderingSettings);\r\n axis.updateOptions(options);\r\n axis.isVirtual = virtual;\r\n return axis\r\n },\r\n _applyVisualRangeByVirtualAxes: function(axis, range) {\r\n return false\r\n },\r\n _applyCustomVisualRangeOption: function(axis, range) {\r\n var that = this;\r\n if (axis.getOptions().optionPath) {\r\n that._parseVisualRangeOption(\"\".concat(axis.getOptions().optionPath, \".visualRange\"), range)\r\n }\r\n },\r\n _getVisualRangeSetter: function() {\r\n var chart = this;\r\n return function(axis, _ref) {\r\n var skipEventRising = _ref.skipEventRising,\r\n range = _ref.range;\r\n chart._applyCustomVisualRangeOption(axis, range);\r\n axis.setCustomVisualRange(range);\r\n axis.skipEventRising = skipEventRising;\r\n if (!chart._applyVisualRangeByVirtualAxes(axis, range)) {\r\n if (chart._applyingChanges) {\r\n chart._change_VISUAL_RANGE()\r\n } else {\r\n chart._requestChange([VISUAL_RANGE])\r\n }\r\n }\r\n }\r\n },\r\n _getTrackerSettings: function() {\r\n return (0, _extend2.extend)(this.callBase(), {\r\n argumentAxis: this.getArgumentAxis()\r\n })\r\n },\r\n _prepareStripsAndConstantLines: function(typeSelector, userOptions, rotated) {\r\n userOptions = this._themeManager.getOptions(typeSelector, userOptions, rotated);\r\n if (userOptions.strips) {\r\n (0, _iterator.each)(userOptions.strips, function(i) {\r\n userOptions.strips[i] = (0, _extend2.extend)(true, {}, userOptions.stripStyle, userOptions.strips[i])\r\n })\r\n }\r\n if (userOptions.constantLines) {\r\n (0, _iterator.each)(userOptions.constantLines, function(i, line) {\r\n userOptions.constantLines[i] = (0, _extend2.extend)(true, {}, userOptions.constantLineStyle, line)\r\n })\r\n }\r\n return userOptions\r\n },\r\n refresh: function() {\r\n this._disposeAxes();\r\n this.callBase()\r\n },\r\n _layoutAxes: function(drawAxes) {\r\n var that = this;\r\n var cleanPanesCanvases = drawAxes();\r\n var needSpace = that.checkForMoreSpaceForPanesCanvas();\r\n if (needSpace) {\r\n var size = this._layout.backward(this._rect, this._rect, [needSpace.width, needSpace.height]);\r\n needSpace.width = Math.max(0, size[0]);\r\n needSpace.height = Math.max(0, size[1]);\r\n this._canvas = this._createCanvasFromRect(this._rect);\r\n drawAxes(needSpace, cleanPanesCanvases)\r\n }\r\n },\r\n checkForMoreSpaceForPanesCanvas: function() {\r\n return this.layoutManager.needMoreSpaceForPanesCanvas(this._getLayoutTargets(), this._isRotated())\r\n },\r\n _parseVisualRangeOption: function(fullName, value) {\r\n var that = this;\r\n var name = fullName.split(/[.[]/)[0];\r\n var index = fullName.match(/\\d+/g);\r\n index = (0, _type.isDefined)(index) ? parseInt(index[0]) : index;\r\n if (fullName.indexOf(\"visualRange\") > 0) {\r\n that._setCustomVisualRange(name, index, value)\r\n } else {\r\n if ((\"object\" === (0, _type.type)(value) || _isArray(value)) && name.indexOf(\"Axis\") > 0 && JSON.stringify(value).indexOf(\"visualRange\") > 0) {\r\n if ((0, _type.isDefined)(value.visualRange)) {\r\n that._setCustomVisualRange(name, index, value.visualRange)\r\n } else {\r\n if (_isArray(value)) {\r\n value.forEach(function(a, i) {\r\n return (0, _type.isDefined)(a.visualRange) && that._setCustomVisualRange(name, i, a.visualRange)\r\n })\r\n }\r\n }\r\n }\r\n }\r\n },\r\n _setCustomVisualRange: function(axesName, index, value) {\r\n var that = this;\r\n var options = that._options.silent(axesName);\r\n if (!options) {\r\n return\r\n }\r\n if (!(0, _type.isDefined)(index)) {\r\n options._customVisualRange = value\r\n } else {\r\n options[index]._customVisualRange = value\r\n }\r\n that._axesReinitialized = true\r\n },\r\n _raiseZoomEndHandlers: function() {\r\n this._valueAxes.forEach(function(axis) {\r\n return axis.handleZoomEnd()\r\n })\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n (0, _extend2.extend)(this._optionsByReference, {\r\n \"valueAxis.visualRange\": true\r\n })\r\n },\r\n _notifyOptionChanged: function(option, value, previousValue) {\r\n this.callBase.apply(this, arguments);\r\n if (!this._optionChangedLocker) {\r\n this._parseVisualRangeOption(option, value)\r\n }\r\n },\r\n _notifyVisualRange: function() {\r\n var that = this;\r\n that._valueAxes.forEach(function(axis) {\r\n if (axis.getOptions().optionPath) {\r\n var path = \"\".concat(axis.getOptions().optionPath, \".visualRange\");\r\n var visualRange = (0, _utils.convertVisualRangeObject)(axis.visualRange(), !_isArray(that.option(path)));\r\n if (!axis.skipEventRising || !(0, _utils.rangesAreEqual)(visualRange, that.option(path))) {\r\n that.option(path, visualRange)\r\n } else {\r\n axis.skipEventRising = null\r\n }\r\n }\r\n })\r\n },\r\n _notify: function() {\r\n this.callBase();\r\n this._axesReinitialized = false;\r\n if (true !== this.option(\"disableTwoWayBinding\")) {\r\n this._notifyVisualRange()\r\n }\r\n },\r\n _getAxesForScaling: function() {\r\n return this._valueAxes\r\n },\r\n _getAxesByOptionPath: function(arg, isDirectOption, optionName) {\r\n var that = this;\r\n var sourceAxes = that._getAxesForScaling();\r\n var axes = [];\r\n if (isDirectOption) {\r\n var axisPath;\r\n if (arg.fullName) {\r\n axisPath = arg.fullName.slice(0, arg.fullName.indexOf(\".\"))\r\n }\r\n axes = sourceAxes.filter(function(a) {\r\n return a.getOptions().optionPath === axisPath\r\n })\r\n } else {\r\n if (\"object\" === (0, _type.type)(arg.value)) {\r\n axes = sourceAxes.filter(function(a) {\r\n return a.getOptions().optionPath === arg.name\r\n })\r\n } else {\r\n if (_isArray(arg.value)) {\r\n arg.value.forEach(function(v, index) {\r\n var axis = sourceAxes.filter(function(a) {\r\n return a.getOptions().optionPath === \"\".concat(arg.name, \"[\").concat(index, \"]\")\r\n })[0];\r\n (0, _type.isDefined)(v[optionName]) && (0, _type.isDefined)(axis) && (axes[index] = axis)\r\n })\r\n }\r\n }\r\n }\r\n return axes\r\n },\r\n _optionChanged: function(arg) {\r\n var that = this;\r\n if (!that._optionChangedLocker) {\r\n var optionName = \"visualRange\";\r\n var axes;\r\n var isDirectOption = arg.fullName.indexOf(optionName) > 0 ? true : that.getPartialChangeOptionsName(arg).indexOf(optionName) > -1 ? false : void 0;\r\n if ((0, _type.isDefined)(isDirectOption)) {\r\n axes = that._getAxesByOptionPath(arg, isDirectOption, optionName);\r\n if (axes) {\r\n if (axes.length > 1 || _isArray(arg.value)) {\r\n axes.forEach(function(a, index) {\r\n return setAxisVisualRangeByOption(arg, a, isDirectOption, index)\r\n })\r\n } else {\r\n if (1 === axes.length) {\r\n setAxisVisualRangeByOption(arg, axes[0], isDirectOption)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n that.callBase(arg)\r\n },\r\n _change_VISUAL_RANGE: function() {\r\n var that = this;\r\n that._recreateSizeDependentObjects(false);\r\n if (!that._changes.has(\"FULL_RENDER\")) {\r\n var resizePanesOnZoom = that.option(\"resizePanesOnZoom\");\r\n that._doRender({\r\n force: true,\r\n drawTitle: false,\r\n drawLegend: false,\r\n adjustAxes: null !== resizePanesOnZoom && void 0 !== resizePanesOnZoom ? resizePanesOnZoom : that.option(\"adjustAxesOnZoom\") || false,\r\n animate: false\r\n });\r\n that._raiseZoomEndHandlers()\r\n }\r\n },\r\n resetVisualRange: function() {\r\n var that = this;\r\n that._valueAxes.forEach(function(axis) {\r\n axis.resetVisualRange(false);\r\n that._applyCustomVisualRangeOption(axis)\r\n });\r\n that._requestChange([VISUAL_RANGE])\r\n },\r\n _legendDataField: \"series\",\r\n _adjustSeriesLabels: _common.noop,\r\n _correctValueAxes: _common.noop\r\n});\r\nexports.AdvancedChart = AdvancedChart;\r\n","/**\r\n * DevExtreme (viz/core/annotations.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.plugins = exports.__test_utils = exports.createAnnotations = void 0;\r\nvar _dom_adapter = require(\"../../core/dom_adapter\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _tooltip = require(\"../core/tooltip\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"./utils\");\r\nvar _plaque = require(\"./plaque\");\r\nvar _pointer = require(\"../../events/pointer\");\r\nvar _pointer2 = _interopRequireDefault(_pointer);\r\nvar _drag = require(\"../../events/drag\");\r\nvar _drag2 = _interopRequireDefault(_drag);\r\nvar _utils2 = require(\"../../events/utils\");\r\nvar _events_engine = require(\"../../events/core/events_engine\");\r\nvar _events_engine2 = _interopRequireDefault(_events_engine);\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar EVENT_NS = \"annotations\";\r\nvar DOT_EVENT_NS = \".\" + EVENT_NS;\r\nvar POINTER_ACTION = (0, _utils2.addNamespace)([_pointer2.default.down, _pointer2.default.move], EVENT_NS);\r\nvar POINTER_UP_EVENT_NAME = (0, _utils2.addNamespace)(_pointer2.default.up, EVENT_NS);\r\nvar DRAG_START_EVENT_NAME = _drag2.default.start + DOT_EVENT_NS;\r\nvar DRAG_EVENT_NAME = _drag2.default.move + DOT_EVENT_NS;\r\nvar DRAG_END_EVENT_NAME = _drag2.default.end + DOT_EVENT_NS;\r\n\r\nfunction coreAnnotation(options, contentTemplate) {\r\n return {\r\n draw: function(widget, group) {\r\n var _this = this;\r\n var annotationGroup = widget._renderer.g().append(group).css((0, _utils.patchFontOptions)(options.font));\r\n this.plaque = new _plaque.Plaque((0, _extend.extend)(true, {}, options, {\r\n cornerRadius: (options.border || {}).cornerRadius\r\n }), widget, annotationGroup, contentTemplate, (0, _type.isDefined)(options.value) || (0, _type.isDefined)(options.argument));\r\n this.plaque.draw(widget._getAnnotationCoords(this));\r\n if (options.allowDragging) {\r\n annotationGroup.on(DRAG_START_EVENT_NAME, {\r\n immediate: true\r\n }, function(e) {\r\n _this._dragOffsetX = _this.plaque.x - e.pageX;\r\n _this._dragOffsetY = _this.plaque.y - e.pageY\r\n }).on(DRAG_EVENT_NAME, function(e) {\r\n _this.plaque.move(e.pageX + _this._dragOffsetX, e.pageY + _this._dragOffsetY)\r\n }).on(DRAG_END_EVENT_NAME, function(e) {\r\n _this.offsetX = (_this.offsetX || 0) + e.offset.x;\r\n _this.offsetY = (_this.offsetY || 0) + e.offset.y\r\n })\r\n }\r\n },\r\n hitTest: function(x, y) {\r\n return this.plaque.hitTest(x, y)\r\n },\r\n showTooltip: function(tooltip, _ref) {\r\n var x = _ref.x,\r\n y = _ref.y;\r\n if (tooltip.annotation !== this) {\r\n tooltip.setTemplate(this.options.tooltipTemplate);\r\n if (tooltip.show(this.options, {\r\n x: x,\r\n y: y\r\n }, {\r\n target: this.options\r\n }, this.options.customizeTooltip)) {\r\n tooltip.annotation = this\r\n }\r\n } else {\r\n tooltip.move(x, y)\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction getTemplateFunction(options, widget) {\r\n var template;\r\n if (\"text\" === options.type) {\r\n template = function(item, groupElement) {\r\n var text = widget._renderer.text(item.text).attr({\r\n \"class\": item.cssClass\r\n }).append({\r\n element: groupElement\r\n });\r\n if (item.width > 0 || item.height > 0) {\r\n text.setMaxSize(item.width, item.height, {\r\n wordWrap: item.wordWrap,\r\n textOverflow: item.textOverflow\r\n })\r\n }\r\n }\r\n } else {\r\n if (\"image\" === options.type) {\r\n template = function(item, groupElement) {\r\n var _ref2 = item.image || {},\r\n width = _ref2.width,\r\n height = _ref2.height,\r\n url = _ref2.url,\r\n location = _ref2.location;\r\n var outerWidth = item.width,\r\n outerHeight = item.height;\r\n var imageWidth = outerWidth > 0 ? Math.min(width, outerWidth) : width;\r\n var imageHeight = outerHeight > 0 ? Math.min(height, outerHeight) : height;\r\n widget._renderer.image(0, 0, imageWidth, imageHeight, url, location || \"center\").append({\r\n element: groupElement\r\n })\r\n }\r\n } else {\r\n if (\"custom\" === options.type) {\r\n template = options.template\r\n }\r\n }\r\n }\r\n return template\r\n}\r\n\r\nfunction getImageObject(image) {\r\n return \"string\" === typeof image ? {\r\n url: image\r\n } : image\r\n}\r\nvar createAnnotations = exports.createAnnotations = function(widget, items) {\r\n var commonAnnotationSettings = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n var customizeAnnotation = arguments.length > 3 ? arguments[3] : void 0;\r\n var pullOptions = arguments.length > 4 ? arguments[4] : void 0;\r\n var commonImageOptions = getImageObject(commonAnnotationSettings.image);\r\n return items.reduce(function(arr, item) {\r\n var currentImageOptions = getImageObject(item.image);\r\n var customizedItem = (0, _type.isFunction)(customizeAnnotation) ? customizeAnnotation(item) : {};\r\n if (customizedItem) {\r\n customizedItem.image = getImageObject(customizedItem.image)\r\n }\r\n var options = (0, _extend.extend)(true, {}, commonAnnotationSettings, item, {\r\n image: commonImageOptions\r\n }, {\r\n image: currentImageOptions\r\n }, customizedItem);\r\n var templateFunction = getTemplateFunction(options, widget);\r\n var annotation = templateFunction && (0, _extend.extend)(true, pullOptions(options), coreAnnotation(options, widget._getTemplate(templateFunction)));\r\n annotation && arr.push(annotation);\r\n return arr\r\n }, [])\r\n};\r\nvar chartPlugin = {\r\n name: \"annotations_chart\",\r\n init: function() {},\r\n dispose: function() {},\r\n members: {\r\n _getAnnotationCoords: function(annotation) {\r\n var _axis, _axis2;\r\n var coords = {\r\n offsetX: annotation.offsetX,\r\n offsetY: annotation.offsetY\r\n };\r\n var argCoordName = this._options.silent(\"rotated\") ? \"y\" : \"x\";\r\n var valCoordName = this._options.silent(\"rotated\") ? \"x\" : \"y\";\r\n var argAxis = this.getArgumentAxis();\r\n var argument = argAxis.validateUnit(annotation.argument);\r\n var axis = this.getValueAxis(annotation.axis);\r\n var series;\r\n var pane = null === (_axis = axis) || void 0 === _axis ? void 0 : _axis.pane;\r\n if (annotation.series) {\r\n var _series;\r\n series = this.series.filter(function(s) {\r\n return s.name === annotation.series\r\n })[0];\r\n axis = null === (_series = series) || void 0 === _series ? void 0 : _series.getValueAxis();\r\n (0, _type.isDefined)(axis) && (pane = axis.pane)\r\n }\r\n if ((0, _type.isDefined)(argument)) {\r\n if (series) {\r\n var center = series.getPointCenterByArg(argument);\r\n center && (coords[argCoordName] = center[argCoordName])\r\n } else {\r\n coords[argCoordName] = argAxis.getTranslator().translate(argument)\r\n }!(0, _type.isDefined)(pane) && (pane = argAxis.pane)\r\n }\r\n var value = null === (_axis2 = axis) || void 0 === _axis2 ? void 0 : _axis2.validateUnit(annotation.value);\r\n if ((0, _type.isDefined)(value)) {\r\n var _axis3;\r\n coords[valCoordName] = null === (_axis3 = axis) || void 0 === _axis3 ? void 0 : _axis3.getTranslator().translate(value);\r\n !(0, _type.isDefined)(pane) && (0, _type.isDefined)(axis) && (pane = axis.pane)\r\n }\r\n coords.canvas = this._getCanvasForPane(pane);\r\n if ((0, _type.isDefined)(coords[argCoordName]) && !(0, _type.isDefined)(value)) {\r\n var _series2;\r\n if (!(0, _type.isDefined)(axis) && !(0, _type.isDefined)(series)) {\r\n coords[valCoordName] = argAxis.getAxisPosition()\r\n } else {\r\n if ((0, _type.isDefined)(axis) && !(0, _type.isDefined)(series)) {\r\n coords[valCoordName] = this._argumentAxes.filter(function(a) {\r\n return a.pane === axis.pane\r\n })[0].getAxisPosition()\r\n } else {\r\n if (null === (_series2 = series) || void 0 === _series2 ? void 0 : _series2.checkSeriesViewportCoord(argAxis, coords[argCoordName])) {\r\n coords[valCoordName] = series.getSeriesPairCoord(coords[argCoordName], true)\r\n }\r\n }\r\n }\r\n }\r\n if (!(0, _type.isDefined)(argument) && (0, _type.isDefined)(coords[valCoordName])) {\r\n if ((0, _type.isDefined)(axis) && !(0, _type.isDefined)(series)) {\r\n coords[argCoordName] = axis.getAxisPosition()\r\n } else {\r\n if ((0, _type.isDefined)(series)) {\r\n if (series.checkSeriesViewportCoord(axis, coords[valCoordName])) {\r\n coords[argCoordName] = series.getSeriesPairCoord(coords[valCoordName], false)\r\n }\r\n }\r\n }\r\n }\r\n return coords\r\n },\r\n _annotationsPointerEventHandler: function(event) {\r\n var originalEvent = event.originalEvent || {};\r\n var touch = originalEvent.touches && originalEvent.touches[0] || {};\r\n var rootOffset = this._renderer.getRootOffset();\r\n var coords = {\r\n x: touch.pageX || originalEvent.pageX || event.pageX,\r\n y: touch.pageY || originalEvent.pageY || event.pageY\r\n };\r\n var annotation = this._annotations.items.filter(function(a) {\r\n return a.hitTest(coords.x - rootOffset.left, coords.y - rootOffset.top)\r\n })[0];\r\n if (!annotation || !annotation.options.tooltipEnabled) {\r\n this._annotations.hideTooltip();\r\n return\r\n }\r\n this.hideTooltip();\r\n this.clearHover();\r\n if (annotation.options.allowDragging && event.type === _pointer2.default.down) {\r\n this._annotations._hideToolTipForDrag = true\r\n }\r\n if (!this._annotations._hideToolTipForDrag) {\r\n annotation.showTooltip(this._annotations.tooltip, coords);\r\n event.stopPropagation()\r\n }\r\n },\r\n _pullOptions: function(options) {\r\n return {\r\n type: options.type,\r\n name: options.name,\r\n x: options.x,\r\n y: options.y,\r\n value: options.value,\r\n argument: options.argument,\r\n axis: options.axis,\r\n series: options.series,\r\n options: options,\r\n offsetX: options.offsetX,\r\n offsetY: options.offsetY\r\n }\r\n }\r\n }\r\n};\r\nvar polarChartPlugin = {\r\n name: \"annotations_polar_chart\",\r\n init: function() {},\r\n dispose: function() {},\r\n members: {\r\n _getAnnotationCoords: function(annotation) {\r\n var coords = {\r\n offsetX: annotation.offsetX,\r\n offsetY: annotation.offsetY,\r\n canvas: this._calcCanvas()\r\n };\r\n var argAxis = this.getArgumentAxis();\r\n var argument = argAxis.validateUnit(annotation.argument);\r\n var value = this.getValueAxis().validateUnit(annotation.value);\r\n var radius = annotation.radius;\r\n var angle = annotation.angle;\r\n var pointCoords;\r\n var series;\r\n if (annotation.series) {\r\n series = this.series.filter(function(s) {\r\n return s.name === annotation.series\r\n })[0]\r\n }(0, _extend.extend)(true, coords, this.getXYFromPolar(angle, radius, argument, value));\r\n if ((0, _type.isDefined)(series)) {\r\n if ((0, _type.isDefined)(coords.angle) && !(0, _type.isDefined)(value) && !(0, _type.isDefined)(radius)) {\r\n if (!(0, _type.isDefined)(argument)) {\r\n argument = argAxis.getTranslator().from(isFinite(angle) ? this.getActualAngle(angle) : coords.angle)\r\n }\r\n pointCoords = series.getSeriesPairCoord({\r\n argument: argument,\r\n angle: -coords.angle\r\n }, true)\r\n } else {\r\n if ((0, _type.isDefined)(coords.radius) && !(0, _type.isDefined)(argument) && !(0, _type.isDefined)(angle)) {\r\n pointCoords = series.getSeriesPairCoord({\r\n radius: coords.radius\r\n }, false)\r\n }\r\n }\r\n if ((0, _type.isDefined)(pointCoords)) {\r\n coords.x = pointCoords.x;\r\n coords.y = pointCoords.y\r\n }\r\n }\r\n if (annotation.series && !(0, _type.isDefined)(pointCoords)) {\r\n coords.x = coords.y = void 0\r\n }\r\n return coords\r\n },\r\n _annotationsPointerEventHandler: chartPlugin.members._annotationsPointerEventHandler,\r\n _pullOptions: function(options) {\r\n var polarOptions = (0, _extend.extend)({}, {\r\n radius: options.radius,\r\n angle: options.angle\r\n }, chartPlugin.members._pullOptions(options));\r\n delete polarOptions.axis;\r\n return polarOptions\r\n }\r\n }\r\n};\r\nvar corePlugin = {\r\n name: \"annotations_core\",\r\n init: function() {\r\n this._annotations = {\r\n items: [],\r\n _hideToolTipForDrag: false,\r\n tooltip: new _tooltip.Tooltip({\r\n cssClass: \"\".concat(this._rootClassPrefix, \"-annotation-tooltip\"),\r\n eventTrigger: this._eventTrigger,\r\n widgetRoot: this.element(),\r\n widget: this\r\n }),\r\n hideTooltip: function() {\r\n this.tooltip.annotation = null;\r\n this.tooltip.hide()\r\n }\r\n };\r\n this._annotations.tooltip.setRendererOptions(this._getRendererOptions());\r\n var tooltipOptions = (0, _extend.extend)({}, this._themeManager.getOptions(\"tooltip\"));\r\n tooltipOptions.contentTemplate = tooltipOptions.customizeTooltip = void 0;\r\n this._annotations.tooltip.update(tooltipOptions)\r\n },\r\n dispose: function() {\r\n this._annotationsGroup.linkRemove().linkOff();\r\n _events_engine2.default.off((0, _dom_adapter.getDocument)(), DOT_EVENT_NS);\r\n this._annotationsGroup.off(DOT_EVENT_NS);\r\n this._annotations.tooltip && this._annotations.tooltip.dispose()\r\n },\r\n extenders: {\r\n _createHtmlStructure: function() {\r\n var _this2 = this;\r\n this._annotationsGroup = this._renderer.g().attr({\r\n \"class\": \"\".concat(this._rootClassPrefix, \"-annotations\")\r\n }).linkOn(this._renderer.root, \"annotations\").linkAppend();\r\n _events_engine2.default.on((0, _dom_adapter.getDocument)(), POINTER_ACTION, function() {\r\n return _this2._annotations.hideTooltip()\r\n });\r\n _events_engine2.default.on((0, _dom_adapter.getDocument)(), POINTER_UP_EVENT_NAME, function(event) {\r\n _this2._annotations._hideToolTipForDrag = false;\r\n _this2._annotationsPointerEventHandler(event)\r\n });\r\n this._annotationsGroup.on(POINTER_ACTION, this._annotationsPointerEventHandler.bind(this))\r\n },\r\n _renderExtraElements: function() {\r\n var _this3 = this;\r\n this._annotationsGroup.clear();\r\n this._annotations.items.forEach(function(item) {\r\n return item.draw(_this3, _this3._annotationsGroup)\r\n })\r\n },\r\n _stopCurrentHandling: function() {\r\n this._annotations.hideTooltip()\r\n }\r\n },\r\n members: {\r\n _buildAnnotations: function() {\r\n this._annotations.items = [];\r\n var items = this._getOption(\"annotations\");\r\n if (!(null === items || void 0 === items ? void 0 : items.length)) {\r\n return\r\n }\r\n this._annotations.items = createAnnotations(this, items, this._getOption(\"commonAnnotationSettings\"), this._getOption(\"customizeAnnotation\"), this._pullOptions)\r\n },\r\n _getAnnotationCoords: function() {\r\n return {}\r\n },\r\n _pullOptions: function() {\r\n return {}\r\n }\r\n },\r\n customize: function(constructor) {\r\n constructor.addChange({\r\n code: \"ANNOTATIONITEMS\",\r\n handler: function() {\r\n this._requestChange([\"ANNOTATIONS\"])\r\n },\r\n isOptionChange: true,\r\n option: \"annotations\"\r\n });\r\n constructor.addChange({\r\n code: \"ANNOTATIONSSETTINGS\",\r\n handler: function() {\r\n this._requestChange([\"ANNOTATIONS\"])\r\n },\r\n isOptionChange: true,\r\n option: \"commonAnnotationSettings\"\r\n });\r\n constructor.addChange({\r\n code: \"ANNOTATIONS\",\r\n handler: function() {\r\n this._buildAnnotations();\r\n this._change([\"FORCE_RENDER\"])\r\n },\r\n isThemeDependent: true,\r\n isOptionChange: true\r\n })\r\n },\r\n fontFields: [\"commonAnnotationSettings.font\"]\r\n};\r\nvar plugins = exports.plugins = {\r\n core: corePlugin,\r\n chart: chartPlugin,\r\n polarChart: polarChartPlugin\r\n};\r\n","/**\r\n * DevExtreme (viz/chart_components/zoom_and_pan.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _wheel = require(\"../../events/core/wheel\");\r\nvar _transform = require(\"../../events/transform\");\r\nvar _transform2 = _interopRequireDefault(_transform);\r\nvar _drag = require(\"../../events/drag\");\r\nvar _drag2 = _interopRequireDefault(_drag);\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar EVENTS_NS = \".zoomAndPanNS\";\r\nvar DRAG_START_EVENT_NAME = _drag2.default.start + EVENTS_NS;\r\nvar DRAG_EVENT_NAME = _drag2.default.move + EVENTS_NS;\r\nvar DRAG_END_EVENT_NAME = _drag2.default.end + EVENTS_NS;\r\nvar PINCH_START_EVENT_NAME = _transform2.default.pinchstart + EVENTS_NS;\r\nvar PINCH_EVENT_NAME = _transform2.default.pinch + EVENTS_NS;\r\nvar PINCH_END_EVENT_NAME = _transform2.default.pinchend + EVENTS_NS;\r\nvar SCROLL_BAR_START_EVENT_NAME = \"dxc-scroll-start\" + EVENTS_NS;\r\nvar SCROLL_BAR_MOVE_EVENT_NAME = \"dxc-scroll-move\" + EVENTS_NS;\r\nvar SCROLL_BAR_END_EVENT_NAME = \"dxc-scroll-end\" + EVENTS_NS;\r\nvar GESTURE_TIMEOUT = 300;\r\nvar MIN_DRAG_DELTA = 5;\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar _abs = Math.abs;\r\n\r\nfunction canvasToRect(canvas) {\r\n return {\r\n x: canvas.left,\r\n y: canvas.top,\r\n width: canvas.width - canvas.left - canvas.right,\r\n height: canvas.height - canvas.top - canvas.bottom\r\n }\r\n}\r\n\r\nfunction checkCoords(rect, coords) {\r\n var x = coords.x;\r\n var y = coords.y;\r\n return x >= rect.x && x <= rect.width + rect.x && y >= rect.y && y <= rect.height + rect.y\r\n}\r\n\r\nfunction sortAxes(axes, onlyAxisToNotify) {\r\n if (onlyAxisToNotify) {\r\n axes = axes.sort(function(a, b) {\r\n if (a === onlyAxisToNotify) {\r\n return -1\r\n }\r\n if (b === onlyAxisToNotify) {\r\n return 1\r\n }\r\n return 0\r\n })\r\n }\r\n return axes\r\n}\r\n\r\nfunction isNotEmptyAxisBusinessRange(axis) {\r\n return !axis.getTranslator().getBusinessRange().isEmpty()\r\n}\r\nmodule.exports = {\r\n name: \"zoom_and_pan\",\r\n init: function() {\r\n var chart = this;\r\n var renderer = this._renderer;\r\n\r\n function cancelEvent(e) {\r\n if (e.originalEvent) {\r\n cancelEvent(e.originalEvent)\r\n }\r\n if (false !== e.cancelable) {\r\n e.cancel = true\r\n }\r\n }\r\n\r\n function startAxesViewportChanging(zoomAndPan, actionField, e) {\r\n var options = zoomAndPan.options;\r\n var actionData = zoomAndPan.actionData;\r\n var axes = [];\r\n if (options.argumentAxis[actionField]) {\r\n axes.push(chart.getArgumentAxis())\r\n }\r\n if (options.valueAxis[actionField]) {\r\n axes = axes.concat(actionData.valueAxes)\r\n }\r\n axes.reduce(function(isPrevented, axis) {\r\n if (isPrevented) {\r\n return isPrevented\r\n }\r\n if (isNotEmptyAxisBusinessRange(axis)) {\r\n return axis.handleZooming(null, {\r\n end: true\r\n }, e, actionField).isPrevented\r\n }\r\n return isPrevented\r\n }, false) && cancelEvent(e)\r\n }\r\n\r\n function axesViewportChanging(zoomAndPan, actionField, e, offsetCalc, centerCalc) {\r\n function zoomAxes(axes, criteria, coordField, e, actionData) {\r\n var zoom = {\r\n zoomed: false\r\n };\r\n criteria && axes.filter(isNotEmptyAxisBusinessRange).forEach(function(axis) {\r\n var options = axis.getOptions();\r\n var viewport = axis.visualRange();\r\n var scale = axis.getTranslator().getEventScale(e);\r\n var translate = -offsetCalc(e, actionData, coordField, scale);\r\n zoom = (0, _extend.extend)(true, zoom, axis.getTranslator().zoom(translate, scale, axis.getZoomBounds()));\r\n var range = axis.adjustRange((0, _utils.getVizRangeObject)([zoom.min, zoom.max]));\r\n var isMinZoom = axis.isZoomingLowerLimitOvercome(actionField, scale, range);\r\n if (!(0, _type.isDefined)(viewport) || viewport.startValue.valueOf() !== range.startValue.valueOf() || viewport.endValue.valueOf() !== range.endValue.valueOf()) {\r\n axis.handleZooming(isMinZoom ? null : range, {\r\n start: true,\r\n end: true\r\n }, e, actionField);\r\n if (!isMinZoom) {\r\n zoom.zoomed = true;\r\n zoom.deltaTranslate = translate - zoom.translate\r\n }\r\n } else {\r\n if (\"touch\" === e.pointerType && \"discrete\" === options.type) {\r\n var isMinPosition = axis.isExtremePosition(false);\r\n var isMaxPosition = axis.isExtremePosition(true);\r\n var zoomInEnabled = scale > 1 && !isMinZoom;\r\n var zoomOutEnabled = scale < 1 && (!isMinPosition || !isMaxPosition);\r\n var panningEnabled = 1 === scale && !(isMinPosition && (translate < 0 && !options.inverted || translate > 0 && options.inverted) || isMaxPosition && (translate > 0 && !options.inverted || translate < 0 && options.inverted));\r\n zoom.enabled = zoomInEnabled || zoomOutEnabled || panningEnabled\r\n }\r\n }\r\n });\r\n return zoom\r\n }\r\n\r\n function storeOffset(e, actionData, zoom, coordField) {\r\n if (zoom.zoomed) {\r\n actionData.offset[coordField] = (e.offset ? e.offset[coordField] : actionData.offset[coordField]) + zoom.deltaTranslate\r\n }\r\n }\r\n\r\n function storeCenter(center, actionData, zoom, coordField) {\r\n if (zoom.zoomed) {\r\n actionData.center[coordField] = center[coordField] + zoom.deltaTranslate\r\n }\r\n }\r\n var rotated = chart.option(\"rotated\");\r\n var actionData = zoomAndPan.actionData;\r\n var options = zoomAndPan.options;\r\n var argZoom = {};\r\n var valZoom = {};\r\n if (!actionData.fallback) {\r\n argZoom = zoomAxes(chart._argumentAxes, options.argumentAxis[actionField], rotated ? \"y\" : \"x\", e, actionData);\r\n valZoom = zoomAxes(actionData.valueAxes, options.valueAxis[actionField], rotated ? \"x\" : \"y\", e, actionData);\r\n chart._requestChange([\"VISUAL_RANGE\"]);\r\n storeOffset(e, actionData, argZoom, rotated ? \"y\" : \"x\");\r\n storeOffset(e, actionData, valZoom, rotated ? \"x\" : \"y\")\r\n }\r\n var center = centerCalc(e);\r\n storeCenter(center, actionData, argZoom, rotated ? \"y\" : \"x\");\r\n storeCenter(center, actionData, valZoom, rotated ? \"x\" : \"y\");\r\n if (!argZoom.zoomed && !valZoom.zoomed) {\r\n actionData.center = center\r\n }\r\n return argZoom.zoomed || valZoom.zoomed || actionData.fallback || argZoom.enabled || valZoom.enabled\r\n }\r\n\r\n function finishAxesViewportChanging(zoomAndPan, actionField, e, offsetCalc) {\r\n function zoomAxes(axes, criteria, coordField, e, actionData, onlyAxisToNotify) {\r\n var zoomStarted = false;\r\n criteria && axes.forEach(function(axis) {\r\n var silent = onlyAxisToNotify && axis !== onlyAxisToNotify;\r\n var scale = e.scale || 1;\r\n var zoom = axis.getTranslator().zoom(-offsetCalc(e, actionData, coordField, scale), scale, axis.getZoomBounds());\r\n var range = {\r\n startValue: zoom.min,\r\n endValue: zoom.max\r\n };\r\n var isMinZoom = axis.isZoomingLowerLimitOvercome(actionField, scale, range);\r\n axis.handleZooming(isMinZoom ? null : range, {\r\n start: true,\r\n end: silent\r\n }, e, actionField);\r\n isMinZoom ? axis.handleZoomEnd() : zoomStarted = true\r\n });\r\n return zoomStarted\r\n }\r\n var rotated = chart.option(\"rotated\");\r\n var actionData = zoomAndPan.actionData;\r\n var options = zoomAndPan.options;\r\n var zoomStarted = true;\r\n if (actionData.fallback) {\r\n zoomStarted &= zoomAxes(chart._argumentAxes, options.argumentAxis[actionField], rotated ? \"y\" : \"x\", e, actionData, chart.getArgumentAxis());\r\n zoomStarted |= zoomAxes(actionData.valueAxes, options.valueAxis[actionField], rotated ? \"x\" : \"y\", e, actionData)\r\n } else {\r\n var axes = [];\r\n if (options.argumentAxis[actionField]) {\r\n axes.push(chart.getArgumentAxis())\r\n }\r\n if (options.valueAxis[actionField]) {\r\n axes = axes.concat(actionData.valueAxes)\r\n }\r\n axes.filter(isNotEmptyAxisBusinessRange).forEach(function(axis) {\r\n axis.handleZooming(null, {\r\n start: true\r\n }, e, actionField)\r\n });\r\n zoomStarted = zoomStarted && axes.length\r\n }\r\n zoomStarted && chart._requestChange([\"VISUAL_RANGE\"])\r\n }\r\n\r\n function prepareActionData(coords, action) {\r\n var axes = chart._argumentAxes.filter(function(axis) {\r\n return checkCoords(canvasToRect(axis.getCanvas()), coords)\r\n });\r\n return {\r\n fallback: chart._lastRenderingTime > GESTURE_TIMEOUT,\r\n cancel: !axes.length || !(0, _type.isDefined)(action),\r\n action: action,\r\n curAxisRect: axes.length && canvasToRect(axes[0].getCanvas()),\r\n valueAxes: axes.length && chart._valueAxes.filter(function(axis) {\r\n return checkCoords(canvasToRect(axis.getCanvas()), coords)\r\n }),\r\n offset: {\r\n x: 0,\r\n y: 0\r\n },\r\n center: coords,\r\n startCenter: coords\r\n }\r\n }\r\n\r\n function getPointerCoord(rect, e) {\r\n var rootOffset = renderer.getRootOffset();\r\n return {\r\n x: _min(_max(e.pageX - rootOffset.left, rect.x), rect.width + rect.x),\r\n y: _min(_max(e.pageY - rootOffset.top, rect.y), rect.height + rect.y)\r\n }\r\n }\r\n\r\n function calcCenterForPinch(e) {\r\n var rootOffset = renderer.getRootOffset();\r\n var x1 = e.pointers[0].pageX;\r\n var x2 = e.pointers[1].pageX;\r\n var y1 = e.pointers[0].pageY;\r\n var y2 = e.pointers[1].pageY;\r\n return {\r\n x: _min(x1, x2) + _abs(x2 - x1) / 2 - rootOffset.left,\r\n y: _min(y1, y2) + _abs(y2 - y1) / 2 - rootOffset.top\r\n }\r\n }\r\n\r\n function calcCenterForDrag(e) {\r\n var rootOffset = renderer.getRootOffset();\r\n return {\r\n x: e.pageX - rootOffset.left,\r\n y: e.pageY - rootOffset.top\r\n }\r\n }\r\n\r\n function calcOffsetForDrag(e, actionData, coordField) {\r\n return e.offset[coordField] - actionData.offset[coordField]\r\n }\r\n\r\n function preventDefaults(e) {\r\n if (false !== e.cancelable) {\r\n e.preventDefault();\r\n e.stopPropagation()\r\n }\r\n chart._stopCurrentHandling()\r\n }\r\n var zoomAndPan = {\r\n dragStartHandler: function(e) {\r\n var options = zoomAndPan.options;\r\n var isTouch = \"touch\" === e.pointerType;\r\n var wantPan = options.argumentAxis.pan || options.valueAxis.pan;\r\n var wantZoom = options.argumentAxis.zoom || options.valueAxis.zoom;\r\n var panKeyPressed = (0, _type.isDefined)(options.panKey) && e[(0, _utils.normalizeEnum)(options.panKey) + \"Key\"];\r\n var dragToZoom = options.dragToZoom;\r\n var action;\r\n e._cancelPreventDefault = true;\r\n if (isTouch) {\r\n if (options.allowTouchGestures && wantPan) {\r\n var cancelPanning = !zoomAndPan.panningVisualRangeEnabled() || zoomAndPan.skipEvent;\r\n action = cancelPanning ? null : \"pan\"\r\n }\r\n } else {\r\n if (dragToZoom && wantPan && panKeyPressed) {\r\n action = \"pan\"\r\n } else {\r\n if (!dragToZoom && wantPan) {\r\n action = \"pan\"\r\n } else {\r\n if (dragToZoom && wantZoom) {\r\n action = \"zoom\"\r\n }\r\n }\r\n }\r\n }\r\n var actionData = prepareActionData(calcCenterForDrag(e), action);\r\n if (actionData.cancel) {\r\n zoomAndPan.skipEvent = false;\r\n if (false !== e.cancelable) {\r\n e.cancel = true\r\n }\r\n return\r\n }\r\n zoomAndPan.actionData = actionData;\r\n if (\"zoom\" === action) {\r\n actionData.startCoords = getPointerCoord(actionData.curAxisRect, e);\r\n actionData.rect = renderer.rect(0, 0, 0, 0).attr(options.dragBoxStyle).append(renderer.root)\r\n } else {\r\n startAxesViewportChanging(zoomAndPan, \"pan\", e)\r\n }\r\n },\r\n dragHandler: function(e) {\r\n var rotated = chart.option(\"rotated\");\r\n var options = zoomAndPan.options;\r\n var actionData = zoomAndPan.actionData;\r\n var isTouch = \"touch\" === e.pointerType;\r\n e._cancelPreventDefault = true;\r\n if (!actionData || isTouch && !zoomAndPan.panningVisualRangeEnabled()) {\r\n return\r\n }\r\n if (\"zoom\" === actionData.action) {\r\n preventDefaults(e);\r\n var curCanvas = actionData.curAxisRect;\r\n var startCoords = actionData.startCoords;\r\n var curCoords = getPointerCoord(curCanvas, e);\r\n var zoomArg = options.argumentAxis.zoom;\r\n var zoomVal = options.valueAxis.zoom;\r\n var rect = {\r\n x: _min(startCoords.x, curCoords.x),\r\n y: _min(startCoords.y, curCoords.y),\r\n width: _abs(startCoords.x - curCoords.x),\r\n height: _abs(startCoords.y - curCoords.y)\r\n };\r\n if (!zoomArg || !zoomVal) {\r\n if (!zoomArg && !rotated || !zoomVal && rotated) {\r\n rect.x = curCanvas.x;\r\n rect.width = curCanvas.width\r\n } else {\r\n rect.y = curCanvas.y;\r\n rect.height = curCanvas.height\r\n }\r\n }\r\n actionData.rect.attr(rect)\r\n } else {\r\n if (\"pan\" === actionData.action) {\r\n axesViewportChanging(zoomAndPan, \"pan\", e, calcOffsetForDrag, function(e) {\r\n return e.offset\r\n });\r\n var deltaOffsetY = Math.abs(e.offset.y - actionData.offset.y);\r\n var deltaOffsetX = Math.abs(e.offset.x - actionData.offset.x);\r\n if (isTouch && (deltaOffsetY > MIN_DRAG_DELTA && deltaOffsetY > Math.abs(actionData.offset.x) || deltaOffsetX > MIN_DRAG_DELTA && deltaOffsetX > Math.abs(actionData.offset.y))) {\r\n return\r\n }\r\n preventDefaults(e)\r\n }\r\n }\r\n },\r\n dragEndHandler: function(e) {\r\n var rotated = chart.option(\"rotated\");\r\n var options = zoomAndPan.options;\r\n var actionData = zoomAndPan.actionData;\r\n var isTouch = \"touch\" === e.pointerType;\r\n var panIsEmpty = actionData && \"pan\" === actionData.action && !actionData.fallback && 0 === actionData.offset.x && 0 === actionData.offset.y;\r\n if (!actionData || isTouch && !zoomAndPan.panningVisualRangeEnabled() || panIsEmpty) {\r\n return\r\n }(!isTouch || !zoomAndPan.actionData.isNative) && preventDefaults(e);\r\n if (\"zoom\" === actionData.action) {\r\n var zoomAxes = function(axes, criteria, coordField, startCoords, curCoords, onlyAxisToNotify) {\r\n axes = sortAxes(axes, onlyAxisToNotify);\r\n var curCoord = curCoords[coordField];\r\n var startCoord = startCoords[coordField];\r\n var zoomStarted = false;\r\n if (criteria && _abs(curCoord - startCoord) > MIN_DRAG_DELTA) {\r\n axes.some(function(axis) {\r\n var tr = axis.getTranslator();\r\n if (tr.getBusinessRange().isEmpty()) {\r\n return\r\n }\r\n var silent = onlyAxisToNotify && axis !== onlyAxisToNotify;\r\n var range = [tr.from(startCoord), tr.from(curCoord)];\r\n var isMinZoom = axis.isZoomingLowerLimitOvercome(actionData.action, tr.getMinScale(true), range);\r\n var result = axis.handleZooming(isMinZoom ? null : range, {\r\n start: !!silent,\r\n end: !!silent\r\n }, e, actionData.action);\r\n isMinZoom ? axis.handleZoomEnd() : zoomStarted = true;\r\n return onlyAxisToNotify && result.isPrevented\r\n })\r\n }\r\n return zoomStarted\r\n };\r\n var curCoords = getPointerCoord(actionData.curAxisRect, e);\r\n var argumentAxesZoomed = zoomAxes(chart._argumentAxes, options.argumentAxis.zoom, rotated ? \"y\" : \"x\", actionData.startCoords, curCoords, chart.getArgumentAxis());\r\n var valueAxesZoomed = zoomAxes(actionData.valueAxes, options.valueAxis.zoom, rotated ? \"x\" : \"y\", actionData.startCoords, curCoords);\r\n if (valueAxesZoomed || argumentAxesZoomed) {\r\n chart._requestChange([\"VISUAL_RANGE\"])\r\n }\r\n actionData.rect.dispose()\r\n } else {\r\n if (\"pan\" === actionData.action) {\r\n finishAxesViewportChanging(zoomAndPan, \"pan\", e, calcOffsetForDrag)\r\n }\r\n }\r\n zoomAndPan.actionData = null\r\n },\r\n pinchStartHandler: function(e) {\r\n var actionData = prepareActionData(calcCenterForPinch(e), \"zoom\");\r\n actionData.isNative = !zoomAndPan.panningVisualRangeEnabled();\r\n if (actionData.cancel) {\r\n cancelEvent(e);\r\n return\r\n }\r\n zoomAndPan.actionData = actionData;\r\n startAxesViewportChanging(zoomAndPan, \"zoom\", e)\r\n },\r\n pinchHandler: function(e) {\r\n if (!zoomAndPan.actionData) {\r\n return\r\n }\r\n var viewportChanged = axesViewportChanging(zoomAndPan, \"zoom\", e, function(e, actionData, coordField, scale) {\r\n return calcCenterForPinch(e)[coordField] - actionData.center[coordField] + (actionData.center[coordField] - actionData.center[coordField] * scale)\r\n }, calcCenterForPinch);\r\n zoomAndPan.defineTouchBehavior(!viewportChanged, e);\r\n !viewportChanged && (zoomAndPan.actionData = null)\r\n },\r\n pinchEndHandler: function(e) {\r\n if (!zoomAndPan.actionData) {\r\n return\r\n }\r\n finishAxesViewportChanging(zoomAndPan, \"zoom\", e, function(e, actionData, coordField, scale) {\r\n return actionData.center[coordField] - actionData.startCenter[coordField] + (actionData.startCenter[coordField] - actionData.startCenter[coordField] * scale)\r\n });\r\n zoomAndPan.actionData = null\r\n },\r\n cleanup: function() {\r\n renderer.root.off(EVENTS_NS);\r\n zoomAndPan.actionData && zoomAndPan.actionData.rect && zoomAndPan.actionData.rect.dispose();\r\n zoomAndPan.actionData = null;\r\n renderer.root.css({\r\n \"touch-action\": \"\",\r\n \"-ms-touch-action\": \"\"\r\n })\r\n },\r\n setup: function(options) {\r\n zoomAndPan.cleanup();\r\n if (!options.argumentAxis.pan) {\r\n renderer.root.on(SCROLL_BAR_START_EVENT_NAME, cancelEvent)\r\n }\r\n if (options.argumentAxis.none && options.valueAxis.none) {\r\n return\r\n }\r\n zoomAndPan.options = options;\r\n var rotated = chart.option(\"rotated\");\r\n if ((options.argumentAxis.zoom || options.valueAxis.zoom) && options.allowMouseWheel) {\r\n renderer.root.on(_wheel.name + EVENTS_NS, function(e) {\r\n function zoomAxes(axes, coord, delta, onlyAxisToNotify) {\r\n axes = sortAxes(axes, onlyAxisToNotify);\r\n var zoomStarted = false;\r\n axes.some(function(axis) {\r\n var translator = axis.getTranslator();\r\n if (translator.getBusinessRange().isEmpty()) {\r\n return\r\n }\r\n var silent = onlyAxisToNotify && axis !== onlyAxisToNotify;\r\n var scale = translator.getMinScale(delta > 0);\r\n var zoom = translator.zoom(-(coord - coord * scale), scale, axis.getZoomBounds());\r\n var range = {\r\n startValue: zoom.min,\r\n endValue: zoom.max\r\n };\r\n var isMinZoom = axis.isZoomingLowerLimitOvercome(\"zoom\", scale, range);\r\n var result = axis.handleZooming(isMinZoom ? null : range, {\r\n start: !!silent,\r\n end: !!silent\r\n }, e, \"zoom\");\r\n isMinZoom ? axis.handleZoomEnd() : zoomStarted = true;\r\n return onlyAxisToNotify && result.isPrevented\r\n });\r\n return !!zoomStarted\r\n }\r\n var coords = calcCenterForDrag(e);\r\n var axesZoomed = false;\r\n var targetAxes;\r\n if (options.valueAxis.zoom) {\r\n targetAxes = chart._valueAxes.filter(function(axis) {\r\n return checkCoords(canvasToRect(axis.getCanvas()), coords)\r\n });\r\n if (0 === targetAxes.length) {\r\n var targetCanvas = chart._valueAxes.reduce(function(r, axis) {\r\n if (!r && axis.coordsIn(coords.x, coords.y)) {\r\n r = axis.getCanvas()\r\n }\r\n return r\r\n }, null);\r\n if (targetCanvas) {\r\n targetAxes = chart._valueAxes.filter(function(axis) {\r\n return checkCoords(canvasToRect(axis.getCanvas()), {\r\n x: targetCanvas.left,\r\n y: targetCanvas.top\r\n })\r\n })\r\n }\r\n }\r\n axesZoomed |= zoomAxes(targetAxes, rotated ? coords.x : coords.y, e.delta)\r\n }\r\n if (options.argumentAxis.zoom) {\r\n var canZoom = chart._argumentAxes.some(function(axis) {\r\n if (checkCoords(canvasToRect(axis.getCanvas()), coords) || axis.coordsIn(coords.x, coords.y)) {\r\n return true\r\n }\r\n return false\r\n });\r\n axesZoomed |= canZoom && zoomAxes(chart._argumentAxes, rotated ? coords.y : coords.x, e.delta, chart.getArgumentAxis())\r\n }\r\n if (axesZoomed) {\r\n chart._requestChange([\"VISUAL_RANGE\"]);\r\n zoomAndPan.panningVisualRangeEnabled(targetAxes) && preventDefaults(e)\r\n }\r\n })\r\n }\r\n if (options.allowTouchGestures) {\r\n if (options.argumentAxis.zoom || options.valueAxis.zoom) {\r\n renderer.root.on(PINCH_START_EVENT_NAME, {\r\n passive: false\r\n }, zoomAndPan.pinchStartHandler).on(PINCH_EVENT_NAME, {\r\n passive: false\r\n }, zoomAndPan.pinchHandler).on(PINCH_END_EVENT_NAME, zoomAndPan.pinchEndHandler)\r\n }\r\n }\r\n renderer.root.on(DRAG_START_EVENT_NAME, {\r\n immediate: true,\r\n passive: false\r\n }, zoomAndPan.dragStartHandler).on(DRAG_EVENT_NAME, {\r\n immediate: true,\r\n passive: false\r\n }, zoomAndPan.dragHandler).on(DRAG_END_EVENT_NAME, zoomAndPan.dragEndHandler);\r\n if (options.argumentAxis.pan) {\r\n renderer.root.on(SCROLL_BAR_START_EVENT_NAME, function(e) {\r\n zoomAndPan.actionData = {\r\n valueAxes: [],\r\n offset: {\r\n x: 0,\r\n y: 0\r\n },\r\n center: {\r\n x: 0,\r\n y: 0\r\n }\r\n };\r\n preventDefaults(e);\r\n startAxesViewportChanging(zoomAndPan, \"pan\", e)\r\n }).on(SCROLL_BAR_MOVE_EVENT_NAME, function(e) {\r\n preventDefaults(e);\r\n axesViewportChanging(zoomAndPan, \"pan\", e, calcOffsetForDrag, function(e) {\r\n return e.offset\r\n })\r\n }).on(SCROLL_BAR_END_EVENT_NAME, function(e) {\r\n preventDefaults(e);\r\n finishAxesViewportChanging(zoomAndPan, \"pan\", e, calcOffsetForDrag);\r\n zoomAndPan.actionData = null\r\n })\r\n }\r\n },\r\n defineTouchBehavior: function(isDefault, e) {\r\n zoomAndPan.actionData && (zoomAndPan.actionData.isNative = isDefault);\r\n if (!isDefault) {\r\n preventDefaults(e)\r\n }\r\n },\r\n panningVisualRangeEnabled: function(targetAxes) {\r\n if (null === targetAxes || void 0 === targetAxes ? void 0 : targetAxes.length) {\r\n return targetAxes.some(function(axis) {\r\n return !axis.isExtremePosition(false) || !axis.isExtremePosition(true)\r\n })\r\n }\r\n var enablePanByValueAxis = chart._valueAxes.some(function(axis) {\r\n return !axis.isExtremePosition(false) || !axis.isExtremePosition(true)\r\n });\r\n var enablePanByArgumentAxis = chart._argumentAxes.some(function(axis) {\r\n return !axis.isExtremePosition(false) || !axis.isExtremePosition(true)\r\n });\r\n return enablePanByValueAxis || enablePanByArgumentAxis\r\n }\r\n };\r\n this._zoomAndPan = zoomAndPan\r\n },\r\n members: {\r\n _setupZoomAndPan: function() {\r\n this._zoomAndPan.setup(this._themeManager.getOptions(\"zoomAndPan\"))\r\n }\r\n },\r\n dispose: function() {\r\n this._zoomAndPan.cleanup()\r\n },\r\n customize: function(constructor) {\r\n constructor.addChange({\r\n code: \"ZOOM_AND_PAN\",\r\n handler: function() {\r\n this._setupZoomAndPan()\r\n },\r\n isThemeDependent: true,\r\n isOptionChange: true,\r\n option: \"zoomAndPan\"\r\n })\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/chart_components/multi_axes_synchronizer.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _console = require(\"../../core/utils/console\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _math2 = require(\"../../core/utils/math\");\r\nvar _math = Math;\r\nvar _floor = _math.floor;\r\nvar _max = _math.max;\r\nvar _abs = _math.abs;\r\n\r\nfunction getValueAxesPerPanes(valueAxes) {\r\n var result = {};\r\n valueAxes.forEach(function(axis) {\r\n var pane = axis.pane;\r\n if (!result[pane]) {\r\n result[pane] = []\r\n }\r\n result[pane].push(axis)\r\n });\r\n return result\r\n}\r\nvar linearConverter = {\r\n transform: function(v, b) {\r\n return (0, _math2.adjust)((0, _utils.getLog)(v, b))\r\n },\r\n addInterval: function(v, i) {\r\n return (0, _math2.adjust)(v + i)\r\n },\r\n getInterval: function(base, tickInterval) {\r\n return tickInterval\r\n }\r\n};\r\nvar logConverter = {\r\n transform: function(v, b) {\r\n return (0, _math2.adjust)((0, _utils.raiseTo)(v, b))\r\n },\r\n addInterval: function(v, i) {\r\n return (0, _math2.adjust)(v * i)\r\n },\r\n getInterval: function(base, tickInterval) {\r\n return _math.pow(base, tickInterval)\r\n }\r\n};\r\n\r\nfunction convertAxisInfo(axisInfo, converter) {\r\n if (!axisInfo.isLogarithmic) {\r\n return\r\n }\r\n var base = axisInfo.logarithmicBase;\r\n var tickValues = axisInfo.tickValues;\r\n var tick;\r\n var ticks = [];\r\n axisInfo.minValue = converter.transform(axisInfo.minValue, base);\r\n axisInfo.oldMinValue = converter.transform(axisInfo.oldMinValue, base);\r\n axisInfo.maxValue = converter.transform(axisInfo.maxValue, base);\r\n axisInfo.oldMaxValue = converter.transform(axisInfo.oldMaxValue, base);\r\n axisInfo.tickInterval = _math.round(axisInfo.tickInterval);\r\n if (axisInfo.tickInterval < 1) {\r\n axisInfo.tickInterval = 1\r\n }\r\n var interval = converter.getInterval(base, axisInfo.tickInterval);\r\n tick = converter.transform(tickValues[0], base);\r\n while (ticks.length < tickValues.length) {\r\n ticks.push(tick);\r\n tick = converter.addInterval(tick, interval)\r\n }\r\n ticks.tickInterval = axisInfo.tickInterval;\r\n axisInfo.tickValues = ticks\r\n}\r\n\r\nfunction populateAxesInfo(axes) {\r\n return axes.reduce(function(result, axis) {\r\n var ticksValues = axis.getTicksValues();\r\n var majorTicks = ticksValues.majorTicksValues;\r\n var options = axis.getOptions();\r\n var businessRange = axis.getTranslator().getBusinessRange();\r\n var visibleArea = axis.getVisibleArea();\r\n var axisInfo;\r\n var tickInterval = axis._tickInterval;\r\n var synchronizedValue = options.synchronizedValue;\r\n if (majorTicks && majorTicks.length > 0 && (0, _type.isNumeric)(majorTicks[0]) && \"discrete\" !== options.type && !businessRange.isEmpty() && !(businessRange.breaks && businessRange.breaks.length) && \"zoom\" !== axis.getViewport().action) {\r\n axis.applyMargins();\r\n var startValue = axis.getTranslator().from(visibleArea[0]);\r\n var endValue = axis.getTranslator().from(visibleArea[1]);\r\n var minValue = startValue < endValue ? startValue : endValue;\r\n var maxValue = startValue < endValue ? endValue : startValue;\r\n if (minValue === maxValue && (0, _type.isDefined)(synchronizedValue)) {\r\n tickInterval = _abs(majorTicks[0] - synchronizedValue) || 1;\r\n minValue = majorTicks[0] - tickInterval;\r\n maxValue = majorTicks[0] + tickInterval\r\n }\r\n axisInfo = {\r\n axis: axis,\r\n isLogarithmic: \"logarithmic\" === options.type,\r\n logarithmicBase: businessRange.base,\r\n tickValues: majorTicks,\r\n minorValues: ticksValues.minorTicksValues,\r\n minorTickInterval: axis._minorTickInterval,\r\n minValue: minValue,\r\n oldMinValue: minValue,\r\n maxValue: maxValue,\r\n oldMaxValue: maxValue,\r\n inverted: businessRange.invert,\r\n tickInterval: tickInterval,\r\n synchronizedValue: synchronizedValue\r\n };\r\n convertAxisInfo(axisInfo, linearConverter);\r\n result.push(axisInfo)\r\n }\r\n return result\r\n }, [])\r\n}\r\n\r\nfunction updateTickValues(axesInfo) {\r\n var maxTicksCount = axesInfo.reduce(function(max, axisInfo) {\r\n return _max(max, axisInfo.tickValues.length)\r\n }, 0);\r\n axesInfo.forEach(function(axisInfo) {\r\n var ticksMultiplier;\r\n var ticksCount;\r\n var additionalStartTicksCount = 0;\r\n var synchronizedValue = axisInfo.synchronizedValue;\r\n var tickValues = axisInfo.tickValues;\r\n var tickInterval = axisInfo.tickInterval;\r\n if ((0, _type.isDefined)(synchronizedValue)) {\r\n axisInfo.baseTickValue = axisInfo.invertedBaseTickValue = synchronizedValue;\r\n axisInfo.tickValues = [axisInfo.baseTickValue]\r\n } else {\r\n if (tickValues.length > 1 && tickInterval) {\r\n ticksMultiplier = _floor((maxTicksCount + 1) / tickValues.length);\r\n ticksCount = ticksMultiplier > 1 ? _floor((maxTicksCount + 1) / ticksMultiplier) : maxTicksCount;\r\n additionalStartTicksCount = _floor((ticksCount - tickValues.length) / 2);\r\n while (additionalStartTicksCount > 0 && 0 !== tickValues[0]) {\r\n tickValues.unshift((0, _math2.adjust)(tickValues[0] - tickInterval));\r\n additionalStartTicksCount--\r\n }\r\n while (tickValues.length < ticksCount) {\r\n tickValues.push((0, _math2.adjust)(tickValues[tickValues.length - 1] + tickInterval))\r\n }\r\n axisInfo.tickInterval = tickInterval / ticksMultiplier\r\n }\r\n axisInfo.baseTickValue = tickValues[0];\r\n axisInfo.invertedBaseTickValue = tickValues[tickValues.length - 1]\r\n }\r\n })\r\n}\r\n\r\nfunction getAxisRange(axisInfo) {\r\n return axisInfo.maxValue - axisInfo.minValue || 1\r\n}\r\n\r\nfunction getMainAxisInfo(axesInfo) {\r\n for (var i = 0; i < axesInfo.length; i++) {\r\n if (!axesInfo[i].stubData) {\r\n return axesInfo[i]\r\n }\r\n }\r\n return null\r\n}\r\n\r\nfunction correctMinMaxValues(axesInfo) {\r\n var mainAxisInfo = getMainAxisInfo(axesInfo);\r\n var mainAxisInfoTickInterval = mainAxisInfo.tickInterval;\r\n axesInfo.forEach(function(axisInfo) {\r\n var scale;\r\n var move;\r\n var mainAxisBaseValueOffset;\r\n var valueFromAxisInfo;\r\n if (axisInfo !== mainAxisInfo) {\r\n if (mainAxisInfoTickInterval && axisInfo.tickInterval) {\r\n if (axisInfo.stubData && (0, _type.isDefined)(axisInfo.synchronizedValue)) {\r\n axisInfo.oldMinValue = axisInfo.minValue = axisInfo.baseTickValue - (mainAxisInfo.baseTickValue - mainAxisInfo.minValue) / mainAxisInfoTickInterval * axisInfo.tickInterval;\r\n axisInfo.oldMaxValue = axisInfo.maxValue = axisInfo.baseTickValue - (mainAxisInfo.baseTickValue - mainAxisInfo.maxValue) / mainAxisInfoTickInterval * axisInfo.tickInterval\r\n }\r\n scale = mainAxisInfoTickInterval / getAxisRange(mainAxisInfo) / axisInfo.tickInterval * getAxisRange(axisInfo);\r\n axisInfo.maxValue = axisInfo.minValue + getAxisRange(axisInfo) / scale\r\n }\r\n if (mainAxisInfo.inverted && !axisInfo.inverted || !mainAxisInfo.inverted && axisInfo.inverted) {\r\n mainAxisBaseValueOffset = mainAxisInfo.maxValue - mainAxisInfo.invertedBaseTickValue\r\n } else {\r\n mainAxisBaseValueOffset = mainAxisInfo.baseTickValue - mainAxisInfo.minValue\r\n }\r\n valueFromAxisInfo = getAxisRange(axisInfo);\r\n move = (mainAxisBaseValueOffset / getAxisRange(mainAxisInfo) - (axisInfo.baseTickValue - axisInfo.minValue) / valueFromAxisInfo) * valueFromAxisInfo;\r\n axisInfo.minValue -= move;\r\n axisInfo.maxValue -= move\r\n }\r\n })\r\n}\r\n\r\nfunction calculatePaddings(axesInfo) {\r\n var minPadding;\r\n var maxPadding;\r\n var startPadding = 0;\r\n var endPadding = 0;\r\n axesInfo.forEach(function(axisInfo) {\r\n var inverted = axisInfo.inverted;\r\n minPadding = axisInfo.minValue > axisInfo.oldMinValue ? (axisInfo.minValue - axisInfo.oldMinValue) / getAxisRange(axisInfo) : 0;\r\n maxPadding = axisInfo.maxValue < axisInfo.oldMaxValue ? (axisInfo.oldMaxValue - axisInfo.maxValue) / getAxisRange(axisInfo) : 0;\r\n startPadding = _max(startPadding, inverted ? maxPadding : minPadding);\r\n endPadding = _max(endPadding, inverted ? minPadding : maxPadding)\r\n });\r\n return {\r\n start: startPadding,\r\n end: endPadding\r\n }\r\n}\r\n\r\nfunction correctMinMaxValuesByPaddings(axesInfo, paddings) {\r\n axesInfo.forEach(function(info) {\r\n var range = getAxisRange(info);\r\n var inverted = info.inverted;\r\n info.minValue = (0, _math2.adjust)(info.minValue - paddings[inverted ? \"end\" : \"start\"] * range);\r\n info.maxValue = (0, _math2.adjust)(info.maxValue + paddings[inverted ? \"start\" : \"end\"] * range)\r\n })\r\n}\r\n\r\nfunction updateTickValuesIfSynchronizedValueUsed(axesInfo) {\r\n var hasSynchronizedValue = false;\r\n axesInfo.forEach(function(info) {\r\n hasSynchronizedValue = hasSynchronizedValue || (0, _type.isDefined)(info.synchronizedValue)\r\n });\r\n axesInfo.forEach(function(info) {\r\n var tickInterval = info.tickInterval;\r\n var tickValues = info.tickValues;\r\n var maxValue = info.maxValue;\r\n var minValue = info.minValue;\r\n var tick;\r\n if (hasSynchronizedValue && tickInterval) {\r\n while ((tick = (0, _math2.adjust)(tickValues[0] - tickInterval)) >= minValue) {\r\n tickValues.unshift(tick)\r\n }\r\n tick = tickValues[tickValues.length - 1];\r\n while ((tick = (0, _math2.adjust)(tick + tickInterval)) <= maxValue) {\r\n tickValues.push(tick)\r\n }\r\n }\r\n while (tickValues[0] + tickInterval / 10 < minValue) {\r\n tickValues.shift()\r\n }\r\n while (tickValues[tickValues.length - 1] - tickInterval / 10 > maxValue) {\r\n tickValues.pop()\r\n }\r\n })\r\n}\r\n\r\nfunction applyMinMaxValues(axesInfo) {\r\n axesInfo.forEach(function(info) {\r\n var axis = info.axis;\r\n var range = axis.getTranslator().getBusinessRange();\r\n if (range.min === range.minVisible) {\r\n range.min = info.minValue\r\n }\r\n if (range.max === range.maxVisible) {\r\n range.max = info.maxValue\r\n }\r\n range.minVisible = info.minValue;\r\n range.maxVisible = info.maxValue;\r\n if (range.min > range.minVisible) {\r\n range.min = range.minVisible\r\n }\r\n if (range.max < range.maxVisible) {\r\n range.max = range.maxVisible\r\n }\r\n axis.getTranslator().updateBusinessRange(range);\r\n axis.setTicks({\r\n majorTicks: info.tickValues,\r\n minorTicks: info.minorValues\r\n })\r\n })\r\n}\r\n\r\nfunction correctAfterSynchronize(axesInfo) {\r\n var invalidAxisInfo = [];\r\n var correctValue;\r\n axesInfo.forEach(function(info) {\r\n if (info.oldMaxValue - info.oldMinValue === 0) {\r\n invalidAxisInfo.push(info)\r\n } else {\r\n if (!(0, _type.isDefined)(correctValue) && !(0, _type.isDefined)(info.synchronizedValue)) {\r\n correctValue = _abs((info.maxValue - info.minValue) / (info.tickValues[_floor(info.tickValues.length / 2)] - info.minValue || info.maxValue))\r\n }\r\n }\r\n });\r\n if (!(0, _type.isDefined)(correctValue)) {\r\n return\r\n }\r\n invalidAxisInfo.forEach(function(info) {\r\n var firstTick = info.tickValues[0];\r\n var correctedTick = firstTick * correctValue;\r\n if (firstTick > 0) {\r\n info.maxValue = correctedTick;\r\n info.minValue = 0\r\n } else {\r\n if (firstTick < 0) {\r\n info.minValue = correctedTick;\r\n info.maxValue = 0\r\n }\r\n }\r\n })\r\n}\r\n\r\nfunction updateMinorTicks(axesInfo) {\r\n axesInfo.forEach(function(axisInfo) {\r\n if (!axisInfo.minorTickInterval) {\r\n return\r\n }\r\n var ticks = [];\r\n var interval = axisInfo.minorTickInterval;\r\n var tickCount = axisInfo.tickInterval / interval - 1;\r\n for (var i = 1; i < axisInfo.tickValues.length; i++) {\r\n var tick = axisInfo.tickValues[i - 1];\r\n for (var j = 0; j < tickCount; j++) {\r\n tick += interval;\r\n ticks.push(tick)\r\n }\r\n }\r\n axisInfo.minorValues = ticks\r\n })\r\n}\r\nvar multiAxesSynchronizer = {\r\n synchronize: function(valueAxes) {\r\n (0, _iterator.each)(getValueAxesPerPanes(valueAxes), function(_, axes) {\r\n var axesInfo;\r\n var paddings;\r\n if (axes.length > 1) {\r\n axesInfo = populateAxesInfo(axes);\r\n if (axesInfo.length < 2 || !getMainAxisInfo(axesInfo)) {\r\n return\r\n }\r\n updateTickValues(axesInfo);\r\n correctMinMaxValues(axesInfo);\r\n paddings = calculatePaddings(axesInfo);\r\n correctMinMaxValuesByPaddings(axesInfo, paddings);\r\n correctAfterSynchronize(axesInfo);\r\n updateTickValuesIfSynchronizedValueUsed(axesInfo);\r\n updateMinorTicks(axesInfo);\r\n axesInfo.forEach(function(info) {\r\n convertAxisInfo(info, logConverter)\r\n });\r\n applyMinMaxValues(axesInfo)\r\n }\r\n })\r\n }\r\n};\r\nmodule.exports = multiAxesSynchronizer;\r\n","/**\r\n * DevExtreme (viz/chart_components/crosshair.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _utils = require(\"../core/utils\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar math = Math;\r\nvar mathAbs = math.abs;\r\nvar mathMin = math.min;\r\nvar mathMax = math.max;\r\nvar mathFloor = math.floor;\r\nvar HORIZONTAL = \"horizontal\";\r\nvar VERTICAL = \"vertical\";\r\nvar LABEL_BACKGROUND_PADDING_X = 8;\r\nvar LABEL_BACKGROUND_PADDING_Y = 4;\r\nvar CENTER = \"center\";\r\nvar RIGHT = \"right\";\r\nvar LEFT = \"left\";\r\nvar TOP = \"top\";\r\nvar BOTTOM = \"bottom\";\r\nexports.getMargins = function() {\r\n return {\r\n x: LABEL_BACKGROUND_PADDING_X,\r\n y: LABEL_BACKGROUND_PADDING_Y\r\n }\r\n};\r\n\r\nfunction getRectangleBBox(bBox) {\r\n return {\r\n x: bBox.x - LABEL_BACKGROUND_PADDING_X,\r\n y: bBox.y - LABEL_BACKGROUND_PADDING_Y,\r\n width: bBox.width + 2 * LABEL_BACKGROUND_PADDING_X,\r\n height: bBox.height + 2 * LABEL_BACKGROUND_PADDING_Y\r\n }\r\n}\r\n\r\nfunction getLabelCheckerPosition(x, y, isHorizontal, canvas) {\r\n var params = isHorizontal ? [\"x\", \"width\", \"y\", \"height\", y, 0] : [\"y\", \"height\", \"x\", \"width\", x, 1];\r\n return function(bBox, position, coord) {\r\n var labelCoord = {\r\n x: coord.x,\r\n y: coord.y\r\n };\r\n var rectangleBBox = getRectangleBBox(bBox);\r\n var delta = isHorizontal ? coord.y - bBox.y - bBox.height / 2 : coord.y - bBox.y;\r\n labelCoord.y = isHorizontal || !isHorizontal && position === BOTTOM ? coord.y + delta : coord.y;\r\n if (rectangleBBox[params[0]] < 0) {\r\n labelCoord[params[0]] -= rectangleBBox[params[0]]\r\n } else {\r\n if (rectangleBBox[params[0]] + rectangleBBox[params[1]] + delta * params[5] > canvas[params[1]]) {\r\n labelCoord[params[0]] -= rectangleBBox[params[0]] + rectangleBBox[params[1]] + delta * params[5] - canvas[params[1]]\r\n }\r\n }\r\n if (params[4] - rectangleBBox[params[3]] / 2 < 0) {\r\n labelCoord[params[2]] -= params[4] - rectangleBBox[params[3]] / 2\r\n } else {\r\n if (params[4] + rectangleBBox[params[3]] / 2 > canvas[params[3]]) {\r\n labelCoord[params[2]] -= params[4] + rectangleBBox[params[3]] / 2 - canvas[params[3]]\r\n }\r\n }\r\n return labelCoord\r\n }\r\n}\r\n\r\nfunction Crosshair(renderer, options, params, group) {\r\n var that = this;\r\n that._renderer = renderer;\r\n that._crosshairGroup = group;\r\n that._options = {};\r\n that.update(options, params)\r\n}\r\nCrosshair.prototype = {\r\n constructor: Crosshair,\r\n update: function(options, params) {\r\n var that = this;\r\n var canvas = params.canvas;\r\n that._canvas = {\r\n top: canvas.top,\r\n bottom: canvas.height - canvas.bottom,\r\n left: canvas.left,\r\n right: canvas.width - canvas.right,\r\n width: canvas.width,\r\n height: canvas.height\r\n };\r\n that._axes = params.axes;\r\n that._panes = params.panes;\r\n that._prepareOptions(options, HORIZONTAL);\r\n that._prepareOptions(options, VERTICAL)\r\n },\r\n dispose: function() {\r\n var that = this;\r\n that._renderer = that._crosshairGroup = that._options = that._axes = that._canvas = that._horizontalGroup = that._verticalGroup = that._horizontal = that._vertical = that._circle = that._panes = null\r\n },\r\n _prepareOptions: function(options, direction) {\r\n var lineOptions = options[direction + \"Line\"];\r\n this._options[direction] = {\r\n visible: lineOptions.visible,\r\n line: {\r\n stroke: lineOptions.color || options.color,\r\n \"stroke-width\": lineOptions.width || options.width,\r\n dashStyle: lineOptions.dashStyle || options.dashStyle,\r\n opacity: lineOptions.opacity || options.opacity,\r\n \"stroke-linecap\": \"butt\"\r\n },\r\n label: (0, _extend.extend)(true, {}, options.label, lineOptions.label)\r\n }\r\n },\r\n _createLines: function(options, sharpParam, group) {\r\n var lines = [];\r\n var canvas = this._canvas;\r\n var points = [canvas.left, canvas.top, canvas.left, canvas.top];\r\n for (var i = 0; i < 2; i++) {\r\n lines.push(this._renderer.path(points, \"line\").attr(options).sharp(sharpParam).append(group))\r\n }\r\n return lines\r\n },\r\n render: function() {\r\n var that = this;\r\n var renderer = that._renderer;\r\n var options = that._options;\r\n var verticalOptions = options.vertical;\r\n var horizontalOptions = options.horizontal;\r\n var extraOptions = horizontalOptions.visible ? horizontalOptions.line : verticalOptions.line;\r\n var circleOptions = {\r\n stroke: extraOptions.stroke,\r\n \"stroke-width\": extraOptions[\"stroke-width\"],\r\n dashStyle: extraOptions.dashStyle,\r\n opacity: extraOptions.opacity\r\n };\r\n var canvas = that._canvas;\r\n that._horizontal = {};\r\n that._vertical = {};\r\n that._circle = renderer.circle(canvas.left, canvas.top, 0).attr(circleOptions).append(that._crosshairGroup);\r\n that._horizontalGroup = renderer.g().append(that._crosshairGroup);\r\n that._verticalGroup = renderer.g().append(that._crosshairGroup);\r\n if (verticalOptions.visible) {\r\n that._vertical.lines = that._createLines(verticalOptions.line, \"h\", that._verticalGroup);\r\n that._vertical.labels = that._createLabels(that._axes[0], verticalOptions, false, that._verticalGroup)\r\n }\r\n if (horizontalOptions.visible) {\r\n that._horizontal.lines = that._createLines(horizontalOptions.line, \"v\", that._horizontalGroup);\r\n that._horizontal.labels = that._createLabels(that._axes[1], horizontalOptions, true, that._horizontalGroup)\r\n }\r\n that.hide()\r\n },\r\n _createLabels: function(axes, options, isHorizontal, group) {\r\n var that = this;\r\n var canvas = that._canvas;\r\n var renderer = that._renderer;\r\n var x;\r\n var y;\r\n var text;\r\n var labels = [];\r\n var background;\r\n var currentLabelPos;\r\n var labelOptions = options.label;\r\n if (labelOptions.visible) {\r\n axes.forEach(function(axis) {\r\n var position = axis.getOptions().position;\r\n if (axis.getTranslator().getBusinessRange().isEmpty()) {\r\n return\r\n }\r\n currentLabelPos = axis.getLabelsPosition();\r\n if (isHorizontal) {\r\n y = canvas.top;\r\n x = currentLabelPos\r\n } else {\r\n x = canvas.left;\r\n y = currentLabelPos\r\n }\r\n var align = position === TOP || position === BOTTOM ? CENTER : position === RIGHT ? LEFT : RIGHT;\r\n background = renderer.rect(0, 0, 0, 0).attr({\r\n fill: labelOptions.backgroundColor || options.line.stroke\r\n }).append(group);\r\n text = renderer.text(\"0\", 0, 0).css((0, _utils.patchFontOptions)(options.label.font)).attr({\r\n align: align,\r\n \"class\": labelOptions.cssClass\r\n }).append(group);\r\n labels.push({\r\n text: text,\r\n background: background,\r\n axis: axis,\r\n options: labelOptions,\r\n pos: {\r\n coord: currentLabelPos,\r\n side: position\r\n },\r\n startXY: {\r\n x: x,\r\n y: y\r\n }\r\n })\r\n })\r\n }\r\n return labels\r\n },\r\n _updateText: function(value, axisName, labels, point, func) {\r\n var that = this;\r\n labels.forEach(function(label) {\r\n var axis = label.axis;\r\n var coord = label.startXY;\r\n var textElement = label.text;\r\n var backgroundElement = label.background;\r\n var text = \"\";\r\n if (!axis.name || axis.name === axisName) {\r\n text = axis.getFormattedValue(value, label.options, point)\r\n }\r\n if (text) {\r\n textElement.attr({\r\n text: text,\r\n x: coord.x,\r\n y: coord.y\r\n });\r\n textElement.attr(func(textElement.getBBox(), label.pos.side, coord));\r\n that._updateLinesCanvas(label);\r\n backgroundElement.attr(getRectangleBBox(textElement.getBBox()))\r\n } else {\r\n textElement.attr({\r\n text: \"\"\r\n });\r\n backgroundElement.attr({\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n })\r\n }\r\n })\r\n },\r\n hide: function() {\r\n this._crosshairGroup.attr({\r\n visibility: \"hidden\"\r\n })\r\n },\r\n _updateLinesCanvas: function(label) {\r\n var position = label.pos.side;\r\n var labelCoord = label.pos.coord;\r\n var coords = this._linesCanvas;\r\n var canvas = this._canvas;\r\n coords[position] = coords[position] !== canvas[position] && mathAbs(coords[position] - canvas[position]) < mathAbs(labelCoord - canvas[position]) ? coords[position] : labelCoord\r\n },\r\n _updateLines: function(lines, x, y, r, isHorizontal) {\r\n var coords = this._linesCanvas;\r\n var canvas = this._canvas;\r\n var points = isHorizontal ? [\r\n [mathMin(x - r, coords.left), canvas.top, x - r, canvas.top],\r\n [x + r, canvas.top, mathMax(coords.right, x + r), canvas.top]\r\n ] : [\r\n [canvas.left, mathMin(coords.top, y - r), canvas.left, y - r],\r\n [canvas.left, y + r, canvas.left, mathMax(coords.bottom, y + r)]\r\n ];\r\n for (var i = 0; i < 2; i++) {\r\n lines[i].attr({\r\n points: points[i]\r\n }).sharp(isHorizontal ? \"v\" : \"h\", isHorizontal ? y === canvas.bottom ? -1 : 1 : x === canvas.right ? -1 : 1)\r\n }\r\n },\r\n _resetLinesCanvas: function() {\r\n var canvas = this._canvas;\r\n this._linesCanvas = {\r\n left: canvas.left,\r\n right: canvas.right,\r\n top: canvas.top,\r\n bottom: canvas.bottom\r\n }\r\n },\r\n _getClipRectForPane: function(x, y) {\r\n var panes = this._panes;\r\n var i;\r\n var coords;\r\n for (i = 0; i < panes.length; i++) {\r\n coords = panes[i].coords;\r\n if (coords.left <= x && coords.right >= x && coords.top <= y && coords.bottom >= y) {\r\n return panes[i].clipRect\r\n }\r\n }\r\n return {\r\n id: null\r\n }\r\n },\r\n show: function(data) {\r\n var that = this;\r\n var point = data.point;\r\n var pointData = point.getCrosshairData(data.x, data.y);\r\n var r = point.getPointRadius();\r\n var horizontal = that._horizontal;\r\n var vertical = that._vertical;\r\n var rad = !r ? 0 : r + 3;\r\n var canvas = that._canvas;\r\n var x = mathFloor(pointData.x);\r\n var y = mathFloor(pointData.y);\r\n if (x >= canvas.left && x <= canvas.right && y >= canvas.top && y <= canvas.bottom) {\r\n that._crosshairGroup.attr({\r\n visibility: \"visible\"\r\n });\r\n that._resetLinesCanvas();\r\n that._circle.attr({\r\n cx: x,\r\n cy: y,\r\n r: rad,\r\n \"clip-path\": that._getClipRectForPane(x, y).id\r\n });\r\n if (horizontal.lines) {\r\n that._updateText(pointData.yValue, pointData.axis, horizontal.labels, point, getLabelCheckerPosition(x, y, true, canvas));\r\n that._updateLines(horizontal.lines, x, y, rad, true);\r\n that._horizontalGroup.attr({\r\n translateY: y - canvas.top\r\n })\r\n }\r\n if (vertical.lines) {\r\n that._updateText(pointData.xValue, pointData.axis, vertical.labels, point, getLabelCheckerPosition(x, y, false, canvas));\r\n that._updateLines(vertical.lines, x, y, rad, false);\r\n that._verticalGroup.attr({\r\n translateX: x - canvas.left\r\n })\r\n }\r\n } else {\r\n that.hide()\r\n }\r\n }\r\n};\r\nexports.Crosshair = Crosshair;\r\n","/**\r\n * DevExtreme (viz/axes/datetime_breaks.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _date = require(\"../../core/utils/date\");\r\nvar _date2 = _interopRequireDefault(_date);\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar days = [0, 1, 2, 3, 4, 5, 6];\r\n\r\nfunction getWeekendDays(workdays) {\r\n return days.filter(function(day) {\r\n return !workdays.some(function(workDay) {\r\n return workDay === day\r\n })\r\n })\r\n}\r\n\r\nfunction getNextDayIndex(dayIndex) {\r\n return (dayIndex + 1) % 7\r\n}\r\n\r\nfunction dayBetweenWeekend(weekend, day) {\r\n var start = weekend.start;\r\n var end = weekend.end;\r\n while (start !== end) {\r\n if (start === day) {\r\n return true\r\n }\r\n start = getNextDayIndex(start)\r\n }\r\n return false\r\n}\r\n\r\nfunction getDaysDistance(day, end) {\r\n var length = 0;\r\n while (day !== end) {\r\n day = getNextDayIndex(day);\r\n length++\r\n }\r\n return length\r\n}\r\n\r\nfunction separateBreak(scaleBreak, day) {\r\n var result = [];\r\n var dayEnd = new Date(day);\r\n dayEnd.setDate(day.getDate() + 1);\r\n if (day > scaleBreak.from) {\r\n result.push({\r\n from: scaleBreak.from,\r\n to: day\r\n })\r\n }\r\n if (dayEnd < scaleBreak.to) {\r\n result.push({\r\n from: dayEnd,\r\n to: scaleBreak.to\r\n })\r\n }\r\n return result\r\n}\r\n\r\nfunction getWeekEndDayIndices(workDays) {\r\n var indices = getWeekendDays(workDays);\r\n if (indices.length < 7) {\r\n while (getNextDayIndex(indices[indices.length - 1]) === indices[0]) {\r\n indices.unshift(indices.pop())\r\n }\r\n }\r\n return indices\r\n}\r\n\r\nfunction generateDateBreaksForWeekend(min, max, weekendDayIndices) {\r\n var day = min.getDate();\r\n var breaks = [];\r\n var weekends = weekendDayIndices.reduce(function(obj, day) {\r\n var currentWeekEnd = obj[1];\r\n if (void 0 === currentWeekEnd.start) {\r\n currentWeekEnd = {\r\n start: day,\r\n end: getNextDayIndex(day)\r\n };\r\n obj[0].push(currentWeekEnd);\r\n return [obj[0], currentWeekEnd]\r\n } else {\r\n if (currentWeekEnd.end === day) {\r\n currentWeekEnd.end = getNextDayIndex(day);\r\n return obj\r\n }\r\n }\r\n currentWeekEnd = {\r\n start: day,\r\n end: getNextDayIndex(day)\r\n };\r\n obj[0].push(currentWeekEnd);\r\n return [obj[0], currentWeekEnd]\r\n }, [\r\n [], {}\r\n ]);\r\n weekends[0].forEach(function(weekend) {\r\n var currentDate = new Date(min);\r\n currentDate = _date2.default.trimTime(currentDate);\r\n while (currentDate < max) {\r\n day = currentDate.getDay();\r\n var date = currentDate.getDate();\r\n if (dayBetweenWeekend(weekend, day)) {\r\n var from = new Date(currentDate);\r\n currentDate.setDate(date + getDaysDistance(day, weekend.end));\r\n var to = new Date(currentDate);\r\n breaks.push({\r\n from: from,\r\n to: to\r\n })\r\n }\r\n currentDate.setDate(currentDate.getDate() + 1)\r\n }\r\n });\r\n return breaks\r\n}\r\n\r\nfunction excludeWorkDaysFromWeekEndBreaks(breaks, exactWorkDays) {\r\n var result = breaks.slice();\r\n var i;\r\n var processWorkDay = function(workday) {\r\n workday = _date2.default.trimTime(new Date(workday));\r\n if (result[i].from <= workday && result[i].to > workday) {\r\n var separatedBreak = separateBreak(result[i], workday);\r\n if (2 === separatedBreak.length) {\r\n result.splice(i, 1, separatedBreak[0], separatedBreak[1])\r\n } else {\r\n if (1 === separatedBreak.length) {\r\n result.splice(i, 1, separatedBreak[0])\r\n } else {\r\n result.splice(i, 1)\r\n }\r\n }\r\n }\r\n };\r\n for (i = 0; i < result.length; i++) {\r\n exactWorkDays.forEach(processWorkDay)\r\n }\r\n return result\r\n}\r\n\r\nfunction generateBreaksForHolidays(min, max, holidays, weekendDayIndices) {\r\n var day;\r\n var dayInWeekend = function(dayIndex) {\r\n return dayIndex === day\r\n };\r\n var adjustedMin = _date2.default.trimTime(min);\r\n var adjustedMax = _date2.default.trimTime(max);\r\n adjustedMax.setDate(max.getDate() + 1);\r\n return holidays.reduce(function(breaks, holiday) {\r\n var holidayStart;\r\n var holidayEnd;\r\n holiday = new Date(holiday);\r\n day = holiday.getDay();\r\n if (!weekendDayIndices.some(dayInWeekend) && holiday >= adjustedMin && holiday <= adjustedMax) {\r\n holidayStart = _date2.default.trimTime(holiday);\r\n holidayEnd = new Date(holidayStart);\r\n holidayEnd.setDate(holidayStart.getDate() + 1);\r\n breaks.push({\r\n from: holidayStart,\r\n to: holidayEnd\r\n })\r\n }\r\n return breaks\r\n }, [])\r\n}\r\n\r\nfunction calculateGaps(breaks) {\r\n return breaks.map(function(b) {\r\n return {\r\n from: b.from,\r\n to: b.to,\r\n gapSize: _date2.default.convertMillisecondsToDateUnits(b.to - b.from)\r\n }\r\n })\r\n}\r\nexports.generateDateBreaks = function(min, max, workWeek, singleWorkdays, holidays) {\r\n var weekendDayIndices = getWeekEndDayIndices(workWeek);\r\n var breaks = generateDateBreaksForWeekend(min, max, weekendDayIndices);\r\n breaks.push.apply(breaks, generateBreaksForHolidays(min, max, holidays || [], weekendDayIndices));\r\n return calculateGaps(excludeWorkDaysFromWeekEndBreaks(breaks, singleWorkdays || []))\r\n};\r\n","/**\r\n * DevExtreme (viz/axes/constant_line.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.default = createConstantLine;\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction createConstantLine(axis, options) {\r\n var labelOptions = options.label || {};\r\n var labelPosition = labelOptions.position || \"inside\";\r\n var parsedValue;\r\n var valueIsParsed = false;\r\n var lastStoredCoordinates;\r\n axis._checkAlignmentConstantLineLabels(labelOptions);\r\n var storedCoord;\r\n return {\r\n options: options,\r\n labelOptions: labelOptions,\r\n labelPosition: labelPosition,\r\n label: null,\r\n line: null,\r\n getParsedValue: function() {\r\n if (!valueIsParsed) {\r\n parsedValue = axis.validateUnit(options.value, \"E2105\", \"constantLine\");\r\n valueIsParsed = true;\r\n return parsedValue\r\n }\r\n return parsedValue\r\n },\r\n draw: function() {\r\n if (!(0, _type.isDefined)(options.value) || axis._translator.getBusinessRange().isEmpty()) {\r\n return this\r\n }\r\n var canvas = axis._getCanvasStartEnd();\r\n var parsedValue = this.getParsedValue();\r\n this.coord = axis._getConstantLinePos(parsedValue, canvas.start, canvas.end);\r\n var rootGroup = options.displayBehindSeries ? axis._axisConstantLineGroups.under : axis._axisConstantLineGroups.above;\r\n var group = rootGroup[labelPosition];\r\n if (!group) {\r\n var side = axis._isHorizontal ? labelOptions.verticalAlignment : labelOptions.horizontalAlignment;\r\n group = rootGroup[side]\r\n }\r\n if (!(0, _type.isDefined)(this.coord)) {\r\n return this\r\n }\r\n var path = axis._createConstantLine(this.coord, {\r\n stroke: options.color,\r\n \"stroke-width\": options.width,\r\n dashStyle: options.dashStyle\r\n });\r\n this.line = path.append(rootGroup.inside);\r\n this.label = labelOptions.visible ? axis._drawConstantLineLabels(parsedValue, labelOptions, this.coord, group) : null;\r\n this.updatePosition();\r\n return this\r\n },\r\n removeLabel: function() {\r\n this.label && this.label.remove()\r\n },\r\n updatePosition: function(animate) {\r\n var canvas = axis._getCanvasStartEnd();\r\n var coord = axis._getConstantLinePos(this.getParsedValue(), canvas.start, canvas.end);\r\n if (!(0, _type.isDefined)(coord)) {\r\n return\r\n }\r\n this.coord = coord;\r\n if (animate && storedCoord) {\r\n this.label && this.label.attr(axis._getConstantLineLabelsCoords(storedCoord, this.labelOptions));\r\n this.line && this.line.attr(axis._getConstantLineGraphicAttributes(storedCoord));\r\n this.label && this.label.animate(axis._getConstantLineLabelsCoords(this.coord, this.labelOptions));\r\n this.line && this.line.animate(axis._getConstantLineGraphicAttributes(this.coord))\r\n } else {\r\n this.label && this.label.attr(axis._getConstantLineLabelsCoords(this.coord, this.labelOptions));\r\n this.line && this.line.attr(axis._getConstantLineGraphicAttributes(this.coord));\r\n axis._rotateConstantLine(this.line, this.coord)\r\n }\r\n },\r\n saveCoords: function() {\r\n lastStoredCoordinates = storedCoord;\r\n storedCoord = this.coord\r\n },\r\n resetCoordinates: function() {\r\n storedCoord = lastStoredCoordinates\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (viz/axes/axes_constants.js)\r\n * Version: 20.1.7\r\n * Build date: Tue Aug 25 2020\r\n *\r\n * Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _utils = require(\"../core/utils\");\r\nmodule.exports = {\r\n logarithmic: \"logarithmic\",\r\n discrete: \"discrete\",\r\n numeric: \"numeric\",\r\n left: \"left\",\r\n right: \"right\",\r\n top: \"top\",\r\n bottom: \"bottom\",\r\n center: \"center\",\r\n horizontal: \"horizontal\",\r\n vertical: \"vertical\",\r\n convertTicksToValues: function(ticks) {\r\n return (0, _utils.map)(ticks || [], function(item) {\r\n return item.value\r\n })\r\n },\r\n validateOverlappingMode: function(mode) {\r\n return \"ignore\" === mode || \"none\" === mode ? mode : \"hide\"\r\n },\r\n getTicksCountInRange: function(ticks, valueKey, range) {\r\n var i = 1;\r\n if (ticks.length > 1) {\r\n for (; i < ticks.length; i++) {\r\n if (Math.abs(ticks[i].coords[valueKey] - ticks[0].coords[valueKey]) >= range) {\r\n break\r\n }\r\n }\r\n }\r\n return i\r\n },\r\n areLabelsOverlap: function(bBox1, bBox2, spacing, alignment) {\r\n var horizontalInverted = bBox1.x > bBox2.x;\r\n var verticalInverted = bBox1.y > bBox2.y;\r\n var x1 = bBox1.x;\r\n var x2 = bBox2.x;\r\n var width1 = bBox1.width;\r\n var width2 = bBox2.width;\r\n if (\"left\" === alignment) {\r\n x1 += width1 / 2;\r\n x2 += width2 / 2\r\n } else {\r\n if (\"right\" === alignment) {\r\n x1 -= width1 / 2;\r\n x2 -= width2 / 2\r\n }\r\n }\r\n var hasHorizontalOverlapping = horizontalInverted ? x2 + width2 + spacing > x1 : x1 + width1 + spacing > x2;\r\n var hasVerticalOverlapping = verticalInverted ? bBox2.y + bBox2.height > bBox1.y : bBox1.y + bBox1.height > bBox2.y;\r\n return hasHorizontalOverlapping && hasVerticalOverlapping\r\n }\r\n};\r\n"],"sourceRoot":""}