{"version":3,"sources":["webpack:///./node_modules/devextreme/viz/axes/smart_formatter.js","webpack:///./node_modules/devextreme/viz/axes/tick_generator.js","webpack:///./node_modules/devextreme/viz/axes/tick.js","webpack:///./node_modules/devextreme/viz/axes/xy_axes.js","webpack:///./node_modules/devextreme/viz/axes/axes_utils.js","webpack:///./node_modules/devextreme/ui/widget/utils.ink_ripple.js","webpack:///./node_modules/devextreme/viz/bar_gauge.js","webpack:///./node_modules/devextreme/viz/axes/datetime_breaks.js","webpack:///./node_modules/devextreme/viz/axes/polar_axes.js","webpack:///./node_modules/devextreme/viz/axes/constant_line.js","webpack:///./node_modules/devextreme/viz/axes/strip.js","webpack:///./node_modules/devextreme/ui/widget/selectors.js","webpack:///./node_modules/devextreme/ui/widget/ui.widget.js","webpack:///./node_modules/devextreme/ui/widget/swatch_container.js","webpack:///./node_modules/devextreme/ui/widget/ui.errors.js","webpack:///./node_modules/devextreme/ui/widget/ui.search_box_mixin.js","webpack:///./node_modules/devextreme/viz/axes/base_axis.js","webpack:///./node_modules/devextreme/viz/axes/axes_constants.js"],"names":["exports","smartFormatter","formatRange","startValue","endValue","tickInterval","_ref","dataType","type","logarithmBase","diff","getDatesDifferences","typeFormat","_date","default","getDateFormatByTickInterval","diffFormat","createFormat","_format_helper","getDateFormatByDifferences","values","rangeFormat","interval","stop","i","getHighAndSelfDiffFormat","value","_format","push","_rangeFormat","getHighDiffFormat","highValue","concat","join","formatDateRange","_type","isObject","dateUnits","Object","keys","reduce","sum","k","dateUnit","filter","slice","length","processDateInterval","formatOptions","ticks","labelOptions","_interopRequireDefault","_math","_utils","obj","__esModule","format","abs","Math","floor","formats","dateUnitIntervals","prevDate","curDate","nextDate","tickFormat","prevDifferences","nextDifferences","dateUnitInterval","j","dateUnitsLength","tickFormatIndex","indexOf","setDateUnitInterval","millisecond","resetDateUnitInterval","isDateTimeStart","date","unitNumbers","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","unitIndex","differences","intervalIndex","count","getTransitionTickIndex","curDiff","minDiff","nearestTickIndex","splitDecimalNumber","toString","split","formatter","isFunction","tick","options","tickIntervalIndex","tickIndex","actualIndex","separatedTickInterval","datesDifferences","log10Tick","prevDateIndex","nextDateIndex","str","stringTick","precision","offset","indexOfFormat","indexOfTick","isLogarithmic","isDefined","adjust","getAdjustedLog10","isExponential","max","getExponent","getPrecision","parseInt","pow","showTransition","map","Number","getDateFormatByTicks","tickGenerator","_extend","_slicedToArray","arr","Array","isArray","_arrayWithHoles","_i","Symbol","iterator","_s","_e","_arr","_n","_d","call","next","done","err","return","_iterableToArrayLimit","o","minLen","_arrayLikeToArray","n","prototype","constructor","name","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","len","arr2","convertDateUnitToMilliseconds","dateToMilliseconds","math","mathAbs","mathFloor","mathCeil","ceil","mathPow","NUMBER_MULTIPLIERS","LOGARITHMIC_MULTIPLIERS","DATETIME_MULTIPLIERS","second","minute","hour","day","week","month","DATETIME_MULTIPLIERS_WITH_BIG_WEEKEND","extend","DATETIME_MINOR_MULTIPLIERS","MINOR_DELIMITERS","getValue","getLogValue","base","allowNegatives","linearThreshold","getLogExt","correctValueByInterval","post","round","correctMinValueByEndOnTick","floorFunc","ceilFunc","resolveEndOnTick","endOnTick","businessViewInfo","forceEndOnTick","floorTickValue","curValue","tickValue","prevTickDataDiff","intervalCount","businessDelta","businessRatio","screenDelta","potentialTickScreenDiff","delimiterFactor","axisDivisionFactor","delimiterMultiplier","isSpacedMargin","screenDelimiter","resolveEndOnTickLog","resolveEndOnTickDate","valueOf","getBusinessDelta","data","breaks","spacing","prev","item","to","min","getIntervalByFactor","addTickCount","getMultiplierFactor","factorDelta","calculateTickInterval","forceTickInterval","multipliers","allowDecimals","_","minTickInterval","result","onlyIntegers","adjustInterval","factor","m","r","calculateMinorTickInterval","d","cur","getAdjustIntervalLog","skipCalculationLimits","numbersReducer","key","yearsReducer","years","calculateTickIntervalDateTime","gapSize","adjustIntervalDateTime","getDataTimeMultipliers","calculateMinorTickIntervalDateTime","getTickIntervalByCustomTicks","postProcess","addInterval","isNegative","addIntervalDate","addIntervalWithBreaks","correctValue","b","breakSize","every","calculateTicks","correctMinValue","gaps","generateExtraTick","correctTickValue","correctTickValueOnGapSize","calculateMinorTicks","updateTickInterval","majorTicks","minorTickInterval","maxCount","lastMajor","firstMajor","tickBalance","middleTicks","prevTick","minors","maxValue","filterTicks","tmpTicks","generator","getMajorTickIntervalByCustomTicks","getMinorTickIntervalByCustomTicks","convertTickInterval","processScaleBreaks","correctUserTickInterval","limit","incidentOccurred","customTicks","minorTickCount","majors","minorTicks","processCustomTicks","isNaN","numberMultipliers","days","skipTickGeneration","generateMajorTicks","calculateMinors","minorBusinessDelta","minorScreenDelta","minorAxisDivisionFactor","generateMinorTicks","getBaseTick","breakValue","_ref2","insideTick","getScaleBreaksProcessor","addCorrection","correction","breakTicks","cumulativeWidth","correctValueByIntervalLog","getRound","sign","logarithmicGenerator","logBase","raise","raiseToExt","raiseTo","log","absLog","getLog","logAbsValue","absRaise","mathRaiseTo","ceilNumber","getBusinessDeltaLog","__","addIntervalLog","rangeIsEmpty","apply","dummyGenerator","axisType","categories","getCategoriesInfo","discreteGenerator","floorNumber","intervalObject","isString","getDateIntervalByString","toLowerCase","divider","quarters","correctDateWithUnitBeginning","v","firstDayOfWeek","floorAtStartDate","Date","getTime","getTimezoneOffset","setFullYear","getFullYear","setMonth","months","setHours","hours","setMinutes","minutes","setSeconds","seconds","calculateTickIntervalByCustomTicks","convertMillisecondsToDateUnits","newValue","dateGenerator","numericGenerator","axis","renderer","tickOptions","gridOptions","skippedCategory","skipLabels","tickOffset","_tickOffset","lineGroup","_axisLineGroup","elementsGroup","_axisElementsGroup","tickStyle","getPathStyle","gridStyle","emptyStrRegExp","getOptions","label","labelStyle","_textOptions","getLabelFontStyle","fontStyle","_textFontStyles","customizeColor","fill","createLabelHint","range","labelHint","formatHint","getContentContainer","setTitle","updateValue","this","initCoords","coords","_getTranslatedValue","labelCoords","saveCoords","_lastStoredCoordinates","_storedCoords","_storedLabelsCoords","templateContainer","_getTemplateCoords","resetCoordinates","drawMark","visible","areCoordsOutsideAxis","mark","append","sharp","getSharpDirectionByCoords","updateTickPosition","_createPathElement","setSkippedCategory","category","_updateLine","lineElement","settings","storedSettings","animate","isGridLine","points","opacity","attr","delay","partitionDuration","angle","_rotateTick","remove","_getTickMarkPoints","drawLabel","template","_this","isRendered","updateLabelPosition","getTranslator","getBusinessRange","isEmpty","templateOption","text","formatLabel","rotate","g","_templateDef","reject","_deferred","Deferred","render","model","valueText","labelFontStyle","container","element","onRendered","resolve","css","containerForData","removeLabel","getTemplateDeferred","fadeOutElements","startSettings","endSettings","animationSettings","_fadeOutLabel","grid","_axisGridGroup","_fadeInLabel","group","_renderer","toBackground","_getLabelAdjustedCoord","_constantLabelOffset","labelOffset","lCoords","x","y","_lCoords","updateMultilineTextAlignment","textsAlignment","labelAlignment","alignment","drawGrid","drawLine","updateGridPosition","_getGridPoints","contentContainer","stroke","color","width","_range","_datetime_breaks","_common","_axes_constants","getNextDateUnit","_max","TOP","top","BOTTOM","bottom","LEFT","left","RIGHT","right","CENTER","center","TICKS_CORRECTIONS","sortingBreaks","sort","a","getMarkerFormat","markerInterval","prepareDatesDifferences","getMaxSide","act","boxes","prevValue","box","getConstantLineLabelMarginForVerticalAlignment","constantLines","labelHeight","some","verticalAlignment","getLeftMargin","bBox","getRightMargin","_default","linear","_getStep","rotationAngle","_options","minSpacing","maxLabelLength","_isHorizontal","height","PI","atan","sin","getDistanceByAngle","_getMaxLabelHeight","getTicksCountInRange","_majorTicks","_validateOverlappingMode","mode","displayMode","validateOverlappingMode","_validateDisplayMode","getMarkerTrackers","_markerTrackers","_getSharpParam","opposite","_createAxisElement","path","_updateAxisElementPosition","axisCoord","_axisPosition","canvas","_getCanvasStartEnd","_axisElement","start","end","_getTranslatedCoord","_translator","translate","_initAxisPositions","customPositionIsAvailable","_customBoundaryPosition","getCustomBoundaryPosition","customPositionIsBoundary","getPredefinedPosition","getResolvedBoundaryPosition","getCustomPosition","tickStartCoord","isHorizontal","tickOrientation","labelPosition","position","shift","getTickStartPositionShift","hasNonBoundaryPosition","_getTitleCoords","horizontal","align","title","fromStartToEnd","canvasStart","canvasEnd","coord","_drawTitleText","titleOptions","attrs","cssClass","patchFontOptions","font","_checkTitleOverflow","_updateTitleCoords","_title","_drawTitle","_axisTitleGroup","_measureTitle","originalSize","getBBox","_drawDateMarker","pathElement","markerOptions","marker","invert","textIndent","textLeftIndent","withoutStick","separatorHeight","String","cropped","line","getEnd","labelBBox","hideLabel","dispose","hide","hidden","_drawDateMarkers","dateMarker","that","translator","viewport","_getViewportRange","minBound","minVisible","dateMarkers","draw","markerDate","markersAreaTop","_getLabelFormatOptions","argumentType","topIndent","getDateUnitInterval","_tickInterval","getMarkerInterval","markerDates","dates","origMin","getSequenceByInterval","getMarkerDates","maxVisible","markers","unshift","_adjustDateMarkers","prevDateMarker","_dateMarkers","_checkMarkersPosition","forEach","dy","textTopIndent","translateX","translateY","_initializeMarkersTrackers","businessRange","nextMarker","markerTracker","formatString","markerLabelOptions","_markerLabelOptions","_adjustConstantLineLabels","axisPosition","getCanvas","canvasLeft","canvasRight","canvasTop","canvasBottom","verticalCenter","horizontalCenter","maxLabel","linesOptions","paddingTopBottom","paddingLeftRight","labelVerticalAlignment","labelHorizontalAlignment","horizontalAlignment","labelIsInside","_drawConstantLinesForEstimating","_drawConstantLineLabelText","root","_estimateLabelHeight","drawingType","overlappingBehavior","staggeringSpacing","sinCos","getCosAndSin","cos","indentFromAxis","estimateMargins","updateCanvas","ticksData","_createTicksAndLabelFormat","constantLineOptions","_outsideConstantLines","l","rootElement","labelIsVisible","labelValue","labelElement","titleElement","constantLinesLabelsElement","labelBox","titleBox","constantLinesBox","titleHeight","margin","constantLinesHeight","padding","margins","_checkAlignmentConstantLineLabels","_getConstantLineLabelsCoords","lineLabelOptions","_orthogonalPositions","_getAdjustedStripLabelCoords","strip","stripOptions","labelWidth","_adjustTitle","boxTitle","loCoord","hiCoord","params","canvasLength","_getScreenDelta","setMaxSize","wordWrap","textOverflow","_wrapped","moreThanOriginalSize","restoreText","coordsIn","_boundaryTicksVisibility","alignToBounds","seriesData","_seriesData","_series","s","isVisible","seriesRange","getViewport","showZero","Range","correctValueZeroLevel","userBreaks","_getScaleBreaks","isArgumentAxis","updateBusinessRange","hasWrap","getAxisPosition","_getStick","valueMarginsEnabled","_getStripLabelCoords","stripLabelOptions","orthogonalPositions","getStripHorizontalAlignmentPosition","pos1","pos2","visibleArea","getVisibleArea","_getSkippedCategory","discrete","_filterBreaks","breakStyle","currentBreak","newBreak","lastResult","_lastResult$cumulativ","_lastResult$cumulativ2","axisOptions","series","parser","workdaysOnly","generateDateBreaks","workWeek","singleWorkdays","holidays","autoBreaksEnabled","maxAutoBreakCount","getRange","visibleRange","getPointsInViewPort","ranges","edgePoints","curRange","maxRange","generateRangesOnPoints","p","epsilon","_maxAutoBreakCount","generateAutoBreaks","_drawBreak","translatedEnd","positionFrom","positionTo","breakStart","isInverted","borderColor","isWaved","spaceAttr","getPoints","rotateLine","drawer","getLineDrawer","_createBreakClipRect","clipRect","_canvas","clipWidth","_breaksElements","id","_createBreaksGroup","clipFrom","clipTo","_axisCssPrefix","_scaleBreaksGroup","_disposeBreaksGroup","drawScaleBreaks","customCanvas","additionGroup","additionBreakFrom","additionBreakTo","breakOptions","containerColor","_axisShift","mainGroup","br","breakCoord","_getSpiderCategoryOption","noop","axesSpacing","getMultipleAxesSpacing","constantLinesGroups","_axisConstantLineGroups","shiftGroup","side","_axisGroup","above","under","currentPosition","orthogonalAxis","getOrthogonalAxis","resolvedPosition","getResolvedPositionOption","orthogonalTranslator","orthogonalAxisType","validPosition","validateUnit","_categories","positionIsBoundary","isFinite","_that$getOptions","customPosition","getCanvasVisibleArea","_options$customPositi","customPositionEqualsToPredefined","_this$_orthogonalPosi","resolveOverlappingForCustomPositioning","oppositeAxes","overlappingObj","axes","pane","_detectElementsOverlapping","_shiftThroughOrthogonalAxisOverlappedTick","oppositeLabel","_shiftThroughAxisOverlappedTick","orthogonalAxisPosition","orthogonalAxisLabelOptions","orthogonalAxisLabelPosition","orthogonalAxisLabelIndent","translateCoordName","defaultOrthogonalAxisLabelPosition","labelCoord","outsidePart","insidePart","_tick$mark","tickMarkBBox","labelIndent","defaultLabelPosition","labelSize","markerSize","dir","element1","element2","bBox1","x1","y1","bBox2","x2","y2","rotatePoints","elementType","topPoint","centerPoint","bottomPoint","lineCoords","module","measureLabels","calculateCanvasMargins","bBoxes","cLeft","cTop","cRight","cBottom","items","showWave","hideWave","initConfig","config","arguments","useHoldAnimation","waveSizeCoefficient","isCentered","wavesNumber","durations","getDurations","args","bind","getWaves","inkRipple","children","addClass","appendTo","getInkRipple","toArray","$currentWave","$wave","eq","wave","hidingTimeout","clearTimeout","hideSelectedWave","elementWidth","outerWidth","elementHeight","outerHeight","elementDiagonal","sqrt","waveSize","event","pageX","pageY","getWaveStyleConfig","showingTimeout","setTimeout","showingWaveHandler","durationCss","showingScale","hidingScale","hidingOpacity","removeClass","animationDuration","dxBarGauge","weekendDayIndices","workDays","indices","workdays","workDay","getNextDayIndex","pop","getWeekEndDayIndices","currentWeekEnd","weekend","currentDate","trimTime","getDay","dayBetweenWeekend","setDate","getDaysDistance","generateDateBreaksForWeekend","dayInWeekend","dayIndex","adjustedMin","adjustedMax","holiday","holidayStart","holidayEnd","generateBreaksForHolidays","calculateGaps","exactWorkDays","processWorkDay","workday","separatedBreak","scaleBreak","dayEnd","separateBreak","splice","excludeWorkDaysFromWeekEndBreaks","linearSpider","circularSpider","circular","_xy_axes","_tick","_axes_utils","_min","xyAxesLinear","getPolarQuarter","quarter","normalizeAngle","circularAxes","_calculateValueMargins","_this$_getViewportRan","minValue","applyMargins","addRange","_calculateRangeInterval","_getTranslatorOptions","conversionValue","addSpiderCategory","stick","getCenter","_center","getRadius","_radius","getAngles","startAngle","endAngle","_updateRadius","rad","_updateCenter","_processCanvas","circle","cx","cy","firstPointOnStartAngle","_validateOptions","originValue","wholeRange","period","numeric","_viewport","getVizRangeObject","getMargins","tickOuterLength","radius","_this$_center","labelBoxes","t","_updateLabelsPosition","_adjustLabelsCoord","_checkBoundedLabelsOverlapping","_setVisualRange","applyVisualRangeSetter","_getStripGraphicAttributes","fromAngle","toAngle","innerRadius","outerRadius","_createStrip","arc","cosSin","halfRad","_getConstantLineGraphicAttributes","_createConstantLine","_rotateConstantLine","_this$getCenter","_adjustDivisionFactor","val","angles","_ref$shift","radiusWithTicks","inside","outside","_offset","_maxWidth","checkCanvas","labelY","labelAngle","halfWidth","halfHeight","shiftX","shiftY","boxShiftX","boxShiftY","originalLeft","originalRight","originalTop","originalBottom","_getGridLineDrawer","convertPolarToXY","getTranslatedAngle","convertXYToPolar","maxLabelBox","angle1","angle2","labelOpt","lastVisibleLabelIndex","index","areLabelsOverlap","hideFirstOrLast","getSpiderTicks","getFullTicks","_spiderTicks","firstTick","lastTick","nextTick","spiderTicks","_setTickOffset","_resetMargins","_reinitTranslator","startPadding","endPadding","centerCoord","pos","getDistance","xy","reverse","fromPoint","toPoint","labelPos","func","setSpiderTicks","_getGridPointsByRadius","innerPoints","parsedValue","lastStoredCoordinates","storedCoord","valueIsParsed","getParsedValue","_getConstantLinePos","rootGroup","displayBehindSeries","dashStyle","_drawConstantLineLabels","updatePosition","rect","_getCoord","_getStripPos","_drawLabel","_axisStripLabelGroup","stripPos","outOfCanvas","_axisStripGroup","focused","tabbable","focusable","_dom_adapter","focusableFn","tabIndex","$element","is","parents","nodeName","isTabIndexNotNaN","isDisabled","disabled","isDefaultFocus","isHyperlink","isContentEditable","href","get","getActiveElement","_action","_dom_component","_short","_iterator","_extend2","_selectors","_array","setAttribute","target","Widget","inherit","_feedbackHideTimeout","_feedbackShowTimeout","_supportedKeys","_getDefaultOptions","callBase","hoveredElement","isActive","hint","activeStateEnabled","onContentReady","hoverStateEnabled","focusStateEnabled","accessKey","onFocusIn","onFocusOut","onKeyboardHandled","ignoreParentReadOnly","_init","_initContentReadyAction","_innerWidgetOptionChanged","innerWidget","getOptionsFromContainer","option","cache","_bindInnerWidgetOptions","optionsContainer","syncOptions","silent","on","_getAriaTarget","_focusTarget","_contentReadyAction","_createActionByOption","excludeValidators","_initMarkup","_this$option","_toggleDisabledState","_toggleVisibility","_renderHint","_isFocusable","_renderFocusTarget","_render","_renderContent","_renderFocusState","_attachFeedbackEvents","_attachHoverEvents","_toggleIndependentState","_this2","deferRender","_disposed","_renderContentImpl","_fireContentReadyAction","deferRenderer","_dispose","_detachKeyboardEvents","_resetActiveState","_toggleActiveState","_eventBindingTarget","_clean","_cleanFocusState","empty","toggleClass","setAria","_attachKeyboardEvents","_attachFocusEvents","_renderAccessKey","$el","_this$option4","_getActiveElement","activeElement","_activeStateUnit","find","not","_keyboardEventBindingTarget","_refreshFocusEvent","_detachFocusEvents","_focusEventTarget","_focusInHandler","_this3","isDefaultPrevented","beforeExecute","_updateFocusState","_focusOutHandler","_this4","isFocused","inArray","_toggleFocusClass","_hasFocusClass","hasClass","_isFocused","_getKeyboardListeners","_this5","_this$option6","hasChildListeners","_keyboardListenerId","keyboard","opts","_keyboardHandler","onlyChildProcessing","originalEvent","keyName","which","handler","keyboardListeners","listener","_refreshFocusState","removeAttr","off","_this6","selector","hover","namespace","_hoverStartHandler","_hoverEndHandler","_this7","active","_ref3","_ref4","showTimeout","hideTimeout","focus","NAME","_this8","e","isFocusable","el","_updatedHover","_hover","_findHoverTarget","closest","$previous","_this$option10","newHoveredElement","Boolean","_setWidgetOption","widgetName","_this9","isPlainObject","each","optionName","widgetOptionMap","_optionChanged","previousValue","_isVisibilityChangeSupported","_checkVisibilityChanged","_isVisible","beginUpdate","_ready","endUpdate","_initialized","_isReady","isReady","repaint","_refresh","trigger","registerKeyHandler","currentKeys","defineProperty","enumerable","configurable","writable","_defineProperty","_ref5","fullName","_view_port","getSwatchContainer","swatchContainer","swatchClassRegex","RegExp","swatchClass","className","match","viewportSwatchContainer","_error","_errors","ERROR_MESSAGES","E1001","E1002","E1003","E1004","E1005","E1006","E1007","E1010","E1011","E1012","E1016","E1018","E1019","E1020","E1021","E1022","E1023","E1025","E1026","E1030","E1031","E1032","E1033","E1034","E1035","E1037","E1038","E1039","E1040","E1041","E1042","E1043","E1044","E1045","E1046","E1047","E1048","E1049","E1050","E1051","E1052","E1053","E1054","E1055","E1056","E1058","E1059","E1060","W1001","W1002","W1003","W1004","W1005","W1006","W1007","W1008","W1009","W1010","W1011","W1012","W1013","W1014","W1015","_message","_text_box","_ui","searchMode","searchExpr","searchValue","searchEnabled","searchEditorOptions","_renderSearch","searchBoxClassName","_addWidgetPrefix","rootElementClassName","_removeSearchBox","editorOptions","_getSearchEditorOptions","_searchEditor","_$searchEditorElement","prependTo","_createComponent","userEditorOptions","searchText","placeholder","valueChangeEvent","inputAttr","onValueChanged","searchTimeout","_valueChangeDeferred","_valueChangeTimeout","_itemContainer","getOperationBySearchMode","_cleanAria","$target","role","activedescendant","_invalidate","_dataSource","searchOperation","load","_typeof","Axis","_smart_formatter","_parse_utils","_tick_generator","_translator2d","_math2","polarMethods","_getRequireWildcardCache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","hasOwnProperty","desc","set","_interopRequireWildcard","_constant_line","_strip","WeakMap","convertTicksToValues","_abs","_isArray","KEEP","SHIFT","RESET","dateIntervals","getTickGenerator","adjustDivisionFactor","_options$workWeek","minorTick","minorGrid","createMajorTick","createMinorTick","createBoundaryTick","isFirst","showCustomBoundaryTicks","callAction","elements","action","actionArgument1","actionArgument2","initTickCoords","drawTickMarks","drawGrids","updateTicksPosition","updateGridsPosition","cleanUpInvalidTicks","removeInvalidTick","getOptimalAngle","asin","updateLabels","step","getZoomBoundValue","optionValue","dataValue","renderSettings","_incidentOccurred","_eventTrigger","eventTrigger","_stripsGroup","stripsGroup","_labelAxesGroup","labelAxesGroup","_constantLinesGroup","constantLinesGroup","scaleBreaksGroup","_axesContainerGroup","axesContainerGroup","_gridContainerGroup","gridGroup","widgetClass","axisClass","_setType","_createAxisGroups","_createTranslator","_firstDrawing","_initRange","_getTemplate","getTemplate","_drawAxis","getAxisSharpDirection","sharpDirection","svgElement","customPositionIsBoundaryOrthogonalAxis","maxCoord","tickPositionField","borderOptions","axisCanvas","minDelta","maxDelta","_text","swap","startCategoryIndex","endCategoryIndex","isContinuous","cat","parsedStartValue","parsedEndValue","stripPosition","_adjustStripLabels","_strips","maxWidth","getContainerAttrs","_adjustLabels","positionsAreConsistent","maxSize","size","labelRotationAngle","rotateBBox","additionalOffset","textAlign","isDiscrete","isFlatLabel","labelX","_createAxisConstantLineGroups","constantLinesClass","insideGroup","outsideGroup1","outsideGroup2","outside1","outside2","clear","classSelector","enableLinks","linkOn","linkAppend","_clearAxisGroups","_getLabelFormatObject","point","formatObject","customizeText","customizeHint","discreteAxisDivisionMode","resetApplyingAnimation","isFirstDrawing","_resetApplyingAnimation","_that$_options","placeholderSize","crosshairMargin","isDefinedCustomPositionOption","boundaryPosition","edgeMarginCorrection","constantLineAboveSeries","constantLineUnderSeries","moveByOffset","unit","idError","parameters","axisTypeMethods","_axisBreaksGroup","_minorTicks","_templatesRendered","setPane","setTypes","typeSelector","_updateTranslator","resetTypes","_initTypes","updateOptions","_labelOptions$minSpac","_TOP$BOTTOM$LEFT$RIGH","_TOP$BOTTOM$LEFT$RIGH2","defaultPosition","secondaryPosition","userAlignment","hoverMode","valueType","validateAxisOptions","priority","_hasLabelFormat","logarithmic","logarithmBaseError","_createConstantLines","strips","calculateInterval","_Range","getCanvasRange","canvasRedesign","positions","getAxisShift","hideTitle","getTitle","hideOuterElements","_resolveLogarithmicOptionsForRange","adjustViewport","adjustRange","visualRange","_addConstantLinesToRange","minDefined","maxDefined","_wholeRange$startValu","_wholeRange$endValue","adjustedVisualRange","adjustVisualRange","disabledNegatives","tmp","_getVisualRangeUpdateMode","newRange","oppositeValue","visualRangeUpdateMode","newCategories","c","minPoint","minVisiblePoint","maxPoint","maxVisiblePoint","_handleBusinessRangeChanged","oppositeVisualRangeUpdateMode","axisReinitialized","_lastVisualRangeUpdateMode","_prevDataWasEmpty","getVisualRangeLength","currentBusinessRange","getVisualRangeCenter","_this$_options","categoriesInfo","setBusinessRange","argCategories","_that$_seriesData$min","_that$_seriesData$max","dataIsEmpty","inverted","synchronizedValue","sortCategories","getCategoriesSorter","dataRange","minValueField","maxValueField","_insideConstantLines","cl","extendAxis","_dataRange$addRange","setGroupSeries","getLabelsPosition","labelShift","getFormattedValue","_getBoundaryTicks","viewPort","customBounds","customBoundTicks","addMinMax","boundaryTicks","setPercentLabelFormat","resetAutoLabelFormat","multipleAxesSpacing","getTicksValues","majorTicksValues","minorTicksValues","estimateTickInterval","_getTicks","setTicks","_isSynchronized","customMinorTicks","forceUserTickInterval","_initialBreaks","getAggregationInfo","useAllAggregatedPoints","_visualRange$startVal","_visualRange$endValue","_that$_seriesData","marginOptions","_marginOptions","aggregateByCategory","aggregationInterval","aggregationGroupWidth","checkInterval","sizePointNormalState","minInterval","generateTicks","tickGeneratorOptions","configureGenerator","add","getAddFunction","maxMinDistance","_aggregationInterval","createTicks","_estimatedTickInterval","_boundaryTicks","minor","boundary","_minorTickInterval","oldMajorTicks","majorTicksByValues","sameType","oldMinorTicks","_ticksToRemove","_t$label","removeTitle","setMarginOptions","getMarginOptions","_this$_marginOptions","isDateTime","minArgs","addToArgs","_calculateWorkWeekInterval","businessInterval","weekendsCount","_getConvertIntervalCoefficient","intervalInPx","ratioOfCanvasRange","rangeInterval","minPercentPadding","maxPercentPadding","marginSize","minValueMargin","maxValueMargin","minPadding","maxPadding","stubData","pxInterval","getInterval","maxPaddingValue","percentStick","_minValue","_maxValue","_minValue2","_maxValue2","canvasStartEnd","screenDeltaWithMargins","skipViewportExtending","firstTickPosition","lastTickPosition","invertMultiplier","minTickPadding","maxTickPadding","commonPadding","coeff","_that$getCorrectedVal","getCorrectedValuesToZero","correctedMin","correctedMax","correctZeroLevel","minExpectedPadding","maxExpectedPadding","drawGridLine","when","_applyWordWrap","_setLabelsPlacement","getTemplatesDef","setRenderedState","state","_drawn","convertedTickInterval","textWidth","textHeight","overlappingMode","wordWrapMode","overflowMode","usefulSpace","correctByWidth","correctByHeight","updateSize","updateTitle","animationEnabled","_resetStartCoordinates","prepareAnimation","applyClipRects","elementsClipID","canvasClipID","_validateVisualRange","convertVisualRangeObject","_customVisualRange","beforeCleanGroups","linkRemove","afterCleanGroups","validate","getParser","resetVisualRange","isSilent","handleZooming","allowPartialUpdate","_applyZooming","_resetVisualRangeOption","getZoomStartEventArg","actionType","cancel","_getZoomEndEventArg","previousRange","zoomFactor","rangeStart","rangeEnd","getZoomBounds","secondPriorityRange","setInitRange","getTemplatesGroups","setCustomVisualRange","_startValue","_endValue","adjustedRange","_getAdjustedBusinessRange","zoomResults","isPrevented","_visualRange","preventEvents","domEvent","zoomStartEvent","skipEventRising","_storedZoomEndParams","startRange","prevent","handleZoomEnd","previousBusinessRange","typeIsNotChanged","NaN","zoomEndEvent","checkZoomingLowerLimitOvercome","stopInteraction","_restorePreviousVisualRange","minZoom","minVisualRangeLength","correctedRange","isOvercoming","beforeVisualRangeLength","afterVisualRangeLength","convert","getRangeByMinZoomValue","fullRange","dataVisualRangeIsReduced","minDataValue","maxDataValue","startPoint","endPoint","edges","visualRangeStartPoint","visualRangeEndPoint","isExtremePosition","isMax","extremeDataValue","extremePoint","visualRangePoint","withIndents","widthAxis","indent","viewportRange","maxText","prevLabel","notRecastStep","ignoreOverlapping","behavior","_applyLabelMode","_applyLabelOverlapping","array","Translator2D","update","_options$workWeek2","_options$breakStyle$w","_options$breakStyle","shiftZeroValue","semiDiscreteInterval","breaksSize","breaksLength","visualRangeSetter","categoriesSortingMethod","vertical","valueKey","horizontalInverted","verticalInverted","width1","width2","hasHorizontalOverlapping","hasVerticalOverlapping"],"mappings":"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","file":"vendors~027bc1ed.8fda5df1bbd8eea0f2e2.bundle.js","sourcesContent":["/**\r\n * DevExtreme (viz/axes/smart_formatter.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.smartFormatter = smartFormatter;\r\nexports.formatRange = formatRange;\r\nvar _format_helper = _interopRequireDefault(require(\"../../format_helper\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/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_helper.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 = _date.default.getDatesDifferences(curDate, nextDate);\r\n prevDifferences = _date.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 = _date.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 return _format((0, _math.adjust)(tick))\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 = _date.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_helper.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_helper.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_helper.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_helper.default.getDateFormatByDifferences(diff))\r\n}\r\n\r\nfunction formatDateRange(startValue, endValue, tickInterval) {\r\n var diff = getDatesDifferences(startValue, endValue);\r\n var typeFormat = _date.default.getDateFormatByTickInterval(tickInterval);\r\n var diffFormatType = _format_helper.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/axes/tick_generator.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.tickGenerator = void 0;\r\nvar _utils = require(\"../core/utils\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/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 var _i = arr && (\"undefined\" !== typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]);\r\n if (null == _i) {\r\n return\r\n }\r\n var _arr = [];\r\n var _n = true;\r\n var _d = false;\r\n var _s, _e;\r\n try {\r\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\r\n _arr.push(_s.value);\r\n if (i && _arr.length === i) {\r\n break\r\n }\r\n }\r\n } catch (err) {\r\n _d = true;\r\n _e = err\r\n } finally {\r\n try {\r\n if (!_n && null != _i.return) {\r\n _i.return()\r\n }\r\n } finally {\r\n if (_d) {\r\n throw _e\r\n }\r\n }\r\n }\r\n return _arr\r\n}\r\n\r\nfunction _arrayWithHoles(arr) {\r\n if (Array.isArray(arr)) {\r\n return arr\r\n }\r\n}\r\nvar convertDateUnitToMilliseconds = _date.default.convertDateUnitToMilliseconds;\r\nvar dateToMilliseconds = _date.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 _date.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 && 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 && 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) ? _date.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 _date.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, _date.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\nvar 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\nexports.tickGenerator = tickGenerator;\r\n","/**\r\n * DevExtreme (viz/axes/tick.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.tick = createTick;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\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 = (0, _extend.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 ((0, _type.isDefined)(labelHint) && \"\" !== labelHint) {\r\n tick.getContentContainer().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.templateContainer ? this._getTemplateCoords() : 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, template) {\r\n var _this = this;\r\n if (this.templateContainer && axis.isRendered()) {\r\n this.updateLabelPosition();\r\n return\r\n }\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 templateOption = labelOptions.template;\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 (templateOption) {\r\n this.templateContainer = renderer.g().append(elementsGroup);\r\n this._templateDef && this._templateDef.reject();\r\n this._templateDef = new _deferred.Deferred;\r\n template.render({\r\n model: {\r\n valueText: text,\r\n value: this.value,\r\n labelFontStyle: getLabelFontStyle(this),\r\n labelStyle: labelStyle\r\n },\r\n container: this.templateContainer.element,\r\n onRendered: function() {\r\n _this.updateLabelPosition();\r\n _this._templateDef.resolve()\r\n }\r\n })\r\n } else {\r\n if ((0, _type.isDefined)(text) && \"\" !== text && !emptyStrRegExp.test(text)) {\r\n this.label = renderer.text(text).css(getLabelFontStyle(this)).attr(labelStyle).append(elementsGroup);\r\n this.updateLabelPosition();\r\n createLabelHint(this, range)\r\n }\r\n }\r\n var containerForData = this.getContentContainer();\r\n containerForData && containerForData.data(\"chart-data-argument\", this.value);\r\n this.templateContainer && createLabelHint(this, range)\r\n },\r\n getTemplateDeferred: function() {\r\n return this._templateDef\r\n },\r\n getContentContainer: function() {\r\n return this.templateContainer || this.label\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.getContentContainer()) {\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.getContentContainer().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).toBackground();\r\n this.getContentContainer().append(group)\r\n },\r\n _getTemplateCoords: function() {\r\n return axis._getLabelAdjustedCoord(this, (axis._constantLabelOffset || 0) + (tick.labelOffset || 0))\r\n },\r\n updateLabelPosition: function(animate) {\r\n var templateContainer = this.templateContainer;\r\n if (!this.getContentContainer()) {\r\n return\r\n }\r\n if (animate && this._storedLabelsCoords) {\r\n if (templateContainer) {\r\n templateContainer.attr(this._storedLabelsCoords);\r\n var lCoords = this._getTemplateCoords();\r\n templateContainer.animate(lCoords)\r\n } else {\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 }\r\n } else {\r\n if (templateContainer) {\r\n var _lCoords = this._getTemplateCoords();\r\n templateContainer.attr(_lCoords)\r\n } else {\r\n this.label.attr({\r\n x: this.labelCoords.x,\r\n y: this.labelCoords.y\r\n })\r\n }\r\n if (animate) {\r\n this._fadeInLabel()\r\n }\r\n }\r\n },\r\n updateMultilineTextAlignment: function() {\r\n if (labelOptions.template || !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 var contentContainer = this.getContentContainer();\r\n contentContainer && contentContainer.remove();\r\n this._templateDef && this._templateDef.reject();\r\n this._templateDef = this.templateContainer = this.label = null\r\n }\r\n };\r\n return tick\r\n }\r\n}\r\n","/**\r\n * DevExtreme (viz/axes/xy_axes.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _range = require(\"../translators/range\");\r\nvar _format_helper = _interopRequireDefault(require(\"../../format_helper\"));\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/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 _type = require(\"../../core/utils/type\");\r\nvar _axes_constants = _interopRequireDefault(require(\"./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 = _date.default.getNextDateUnit;\r\nvar correctDateWithUnitBeginning = _date.default.correctDateWithUnitBeginning;\r\nvar _math = Math;\r\nvar _max = _math.max;\r\nvar TOP = _axes_constants.default.top;\r\nvar BOTTOM = _axes_constants.default.bottom;\r\nvar LEFT = _axes_constants.default.left;\r\nvar RIGHT = _axes_constants.default.right;\r\nvar CENTER = _axes_constants.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 < _date.default.dateUnitIntervals.length; i++) {\r\n dateUnitInterval = _date.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 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 = _date.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 && _date.default.getDatesDifferences(prevDate, curDate);\r\n if (prevDate && \"year\" !== tickInterval) {\r\n prepareDatesDifferences(datesDifferences, tickInterval);\r\n format = _format_helper.default.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 (0, _utils.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\nvar _default = {\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_constants.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_constants.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()) {\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.hasNonBoundaryPosition() ? 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((0, _utils.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((0, _utils.patchFontOptions)(markerOptions.label.font)).append(that._axisElementsGroup),\r\n line: pathElement,\r\n getContentContainer: function() {\r\n return this.label\r\n },\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 = _date.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 = (0, _utils.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 = !options.label.template && 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_constants.default.top || !isHorizontal && position === _axes_constants.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 _range.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.userBreaks = 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_constants.default.discrete && this._tickOffset && 0 !== ticks.length) {\r\n skippedCategory = ticks[ticks.length - 1]\r\n }\r\n return skippedCategory\r\n },\r\n _filterBreaks: function(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) {\r\n from = from >= minVisible ? from : minVisible;\r\n to = to <= maxVisible ? to : maxVisible;\r\n if (to - from < maxVisible - minVisible) {\r\n var _lastResult$cumulativ;\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 = _date.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 }\r\n return result\r\n }, [])\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 sortingBreaks(breaks)\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 _that$getOptions = that.getOptions(),\r\n customPosition = _that$getOptions.customPosition,\r\n offset = _that$getOptions.offset;\r\n var resolvedPosition = null !== position && void 0 !== position ? position : that.getResolvedPositionOption();\r\n var orthogonalAxis = that.getOrthogonalAxis();\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 ((0, _type.isDefined)(customPosition)) {\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 } else {\r\n if ((0, _type.isDefined)(offset)) {\r\n if (currentPosition <= that._orthogonalPositions.start) {\r\n return that._isHorizontal ? TOP : LEFT\r\n } else {\r\n if (currentPosition >= that._orthogonalPositions.end) {\r\n return that._isHorizontal ? BOTTOM : RIGHT\r\n }\r\n }\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 hasNonBoundaryPosition: 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.hasNonBoundaryPosition() && !that.customPositionIsBoundary() && !oppositeAxes.some(function(a) {\r\n return a.hasNonBoundaryPosition()\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 markerSize = that._isHorizontal ? tickMarkBBox.height : tickMarkBBox.width;\r\n var dir = labelPosition === defaultLabelPosition ? 1 : -1;\r\n attr[translateCoordName] = dir * (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\nexports.default = _default;\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\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/axes/axes_utils.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.measureLabels = exports.calculateCanvasMargins = void 0;\r\nvar _max = Math.max;\r\nvar 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\nexports.calculateCanvasMargins = calculateCanvasMargins;\r\nvar measureLabels = function(items) {\r\n items.forEach(function(item) {\r\n var label = item.getContentContainer();\r\n item.labelBBox = label ? 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\nexports.measureLabels = measureLabels;\r\n","/**\r\n * DevExtreme (ui/widget/utils.ink_ripple.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.showWave = showWave;\r\nexports.hideWave = hideWave;\r\nexports.render = exports.initConfig = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar INKRIPPLE_CLASS = \"dx-inkripple\";\r\nvar INKRIPPLE_WAVE_CLASS = \"dx-inkripple-wave\";\r\nvar INKRIPPLE_SHOWING_CLASS = \"dx-inkripple-showing\";\r\nvar INKRIPPLE_HIDING_CLASS = \"dx-inkripple-hiding\";\r\nvar DEFAULT_WAVE_SIZE_COEFFICIENT = 2;\r\nvar MAX_WAVE_SIZE = 4e3;\r\nvar ANIMATION_DURATION = 300;\r\nvar HOLD_ANIMATION_DURATION = 1e3;\r\nvar DEFAULT_WAVE_INDEX = 0;\r\nvar initConfig = function() {\r\n var config = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\r\n var useHoldAnimation = config.useHoldAnimation,\r\n waveSizeCoefficient = config.waveSizeCoefficient,\r\n isCentered = config.isCentered,\r\n wavesNumber = config.wavesNumber;\r\n return {\r\n waveSizeCoefficient: waveSizeCoefficient || DEFAULT_WAVE_SIZE_COEFFICIENT,\r\n isCentered: isCentered || false,\r\n wavesNumber: wavesNumber || 1,\r\n durations: getDurations(null !== useHoldAnimation && void 0 !== useHoldAnimation ? useHoldAnimation : true)\r\n }\r\n};\r\nexports.initConfig = initConfig;\r\nvar render = function(args) {\r\n var config = initConfig(args);\r\n return {\r\n showWave: showWave.bind(this, config),\r\n hideWave: hideWave.bind(this, config)\r\n }\r\n};\r\nexports.render = render;\r\nvar getInkRipple = function(element) {\r\n var result = element.children(\".\" + INKRIPPLE_CLASS);\r\n if (0 === result.length) {\r\n result = (0, _renderer.default)(\"
\").addClass(INKRIPPLE_CLASS).appendTo(element)\r\n }\r\n return result\r\n};\r\nvar getWaves = function(element, wavesNumber) {\r\n var inkRipple = getInkRipple((0, _renderer.default)(element));\r\n var result = inkRipple.children(\".\" + INKRIPPLE_WAVE_CLASS).toArray();\r\n for (var i = result.length; i < wavesNumber; i++) {\r\n var $currentWave = (0, _renderer.default)(\"
\").appendTo(inkRipple).addClass(INKRIPPLE_WAVE_CLASS);\r\n result.push($currentWave[0])\r\n }\r\n return (0, _renderer.default)(result)\r\n};\r\nvar getWaveStyleConfig = function(args, config) {\r\n var element = (0, _renderer.default)(config.element);\r\n var elementWidth = element.outerWidth();\r\n var elementHeight = element.outerHeight();\r\n var elementDiagonal = parseInt(Math.sqrt(elementWidth * elementWidth + elementHeight * elementHeight));\r\n var waveSize = Math.min(MAX_WAVE_SIZE, parseInt(elementDiagonal * args.waveSizeCoefficient));\r\n var left;\r\n var top;\r\n if (args.isCentered) {\r\n left = (elementWidth - waveSize) / 2;\r\n top = (elementHeight - waveSize) / 2\r\n } else {\r\n var event = config.event;\r\n var position = element.offset();\r\n var x = event.pageX - position.left;\r\n var y = event.pageY - position.top;\r\n left = x - waveSize / 2;\r\n top = y - waveSize / 2\r\n }\r\n return {\r\n left: left,\r\n top: top,\r\n height: waveSize,\r\n width: waveSize\r\n }\r\n};\r\n\r\nfunction showWave(args, config) {\r\n var $wave = getWaves(config.element, args.wavesNumber).eq(config.wave || DEFAULT_WAVE_INDEX);\r\n args.hidingTimeout && clearTimeout(args.hidingTimeout);\r\n hideSelectedWave($wave);\r\n $wave.css(getWaveStyleConfig(args, config));\r\n args.showingTimeout = setTimeout(showingWaveHandler.bind(this, args, $wave), 0)\r\n}\r\n\r\nfunction showingWaveHandler(args, $wave) {\r\n var durationCss = args.durations.showingScale + \"ms\";\r\n $wave.addClass(INKRIPPLE_SHOWING_CLASS).css(\"transitionDuration\", durationCss)\r\n}\r\n\r\nfunction getDurations(useHoldAnimation) {\r\n return {\r\n showingScale: useHoldAnimation ? HOLD_ANIMATION_DURATION : ANIMATION_DURATION,\r\n hidingScale: ANIMATION_DURATION,\r\n hidingOpacity: ANIMATION_DURATION\r\n }\r\n}\r\n\r\nfunction hideSelectedWave($wave) {\r\n $wave.removeClass(INKRIPPLE_HIDING_CLASS).css(\"transitionDuration\", \"\")\r\n}\r\n\r\nfunction hideWave(args, config) {\r\n args.showingTimeout && clearTimeout(args.showingTimeout);\r\n var $wave = getWaves(config.element, config.wavesNumber).eq(config.wave || DEFAULT_WAVE_INDEX);\r\n var durations = args.durations;\r\n var durationCss = durations.hidingScale + \"ms, \" + durations.hidingOpacity + \"ms\";\r\n $wave.addClass(INKRIPPLE_HIDING_CLASS).removeClass(INKRIPPLE_SHOWING_CLASS).css(\"transitionDuration\", durationCss);\r\n var animationDuration = Math.max(durations.hidingScale, durations.hidingOpacity);\r\n args.hidingTimeout = setTimeout(hideSelectedWave.bind(this, $wave), animationDuration)\r\n}\r\n","/**\r\n * DevExtreme (viz/bar_gauge.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _bar_gauge = require(\"./gauges/bar_gauge\");\r\nvar _default = _bar_gauge.dxBarGauge;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/axes/datetime_breaks.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.generateDateBreaks = generateDateBreaks;\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar 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 = _date.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 = _date.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 = _date.default.trimTime(min);\r\n var adjustedMax = _date.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 = _date.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: _date.default.convertMillisecondsToDateUnits(b.to - b.from)\r\n }\r\n })\r\n}\r\n\r\nfunction generateDateBreaks(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/polar_axes.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.linearSpider = exports.linear = exports.circularSpider = exports.circular = void 0;\r\nvar _utils = require(\"../core/utils\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _axes_constants = _interopRequireDefault(require(\"./axes_constants\"));\r\nvar _xy_axes = _interopRequireDefault(require(\"./xy_axes\"));\r\nvar _tick = require(\"./tick\");\r\nvar _axes_utils = require(\"./axes_utils\");\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\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 xyAxesLinear = _xy_axes.default.linear;\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 circularAxes = {\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_constants.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 = (0, _axes_utils.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 _updateLabelsPosition: function() {\r\n var that = this;\r\n (0, _axes_utils.measureLabels)(that._majorTicks);\r\n that._adjustLabelsCoord(0, 0, true);\r\n that._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_constants.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_constants.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_constants.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_constants.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_constants.default.areLabelsOverlap(boxes[0], boxes[lastVisibleLabelIndex], labelOpt.minSpacing, _axes_constants.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\nvar circular = circularAxes;\r\nexports.circular = circular;\r\nvar 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\nexports.circularSpider = circularSpider;\r\nvar linear = {\r\n _resetMargins: function() {\r\n this._reinitTranslator(this._getViewportRange())\r\n },\r\n _getStick: xyAxesLinear._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: xyAxesLinear._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_constants.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_constants.default.getTicksCountInRange(this._majorTicks, 2 === quarter || 4 === quarter ? \"x\" : \"y\", maxLabelLength)\r\n }\r\n};\r\nexports.linear = linear;\r\nvar linearSpider = (0, _extend.extend)({}, 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: 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\nexports.linearSpider = linearSpider;\r\n","/**\r\n * DevExtreme (viz/axes/constant_line.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = 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 getContentContainer: function() {\r\n return this.label\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\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/axes/strip.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = 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 getContentContainer: function() {\r\n return this.label\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\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/widget/selectors.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.focused = exports.tabbable = exports.focusable = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar focusableFn = function(element, tabIndex) {\r\n if (!visible(element)) {\r\n return false\r\n }\r\n var nodeName = element.nodeName.toLowerCase();\r\n var isTabIndexNotNaN = !isNaN(tabIndex);\r\n var isDisabled = element.disabled;\r\n var isDefaultFocus = /^(input|select|textarea|button|object|iframe)$/.test(nodeName);\r\n var isHyperlink = \"a\" === nodeName;\r\n var isFocusable = true;\r\n var isContentEditable = element.isContentEditable;\r\n if (isDefaultFocus || isContentEditable) {\r\n isFocusable = !isDisabled\r\n } else {\r\n if (isHyperlink) {\r\n isFocusable = element.href || isTabIndexNotNaN\r\n } else {\r\n isFocusable = isTabIndexNotNaN\r\n }\r\n }\r\n return isFocusable\r\n};\r\n\r\nfunction visible(element) {\r\n var $element = (0, _renderer.default)(element);\r\n return $element.is(\":visible\") && \"hidden\" !== $element.css(\"visibility\") && \"hidden\" !== $element.parents().css(\"visibility\")\r\n}\r\nvar focusable = function(index, element) {\r\n return focusableFn(element, (0, _renderer.default)(element).attr(\"tabIndex\"))\r\n};\r\nexports.focusable = focusable;\r\nvar tabbable = function(index, element) {\r\n var tabIndex = (0, _renderer.default)(element).attr(\"tabIndex\");\r\n return (isNaN(tabIndex) || tabIndex >= 0) && focusableFn(element, tabIndex)\r\n};\r\nexports.tabbable = tabbable;\r\nvar focused = function($element) {\r\n var element = (0, _renderer.default)($element).get(0);\r\n return _dom_adapter.default.getActiveElement() === element\r\n};\r\nexports.focused = focused;\r\n","/**\r\n * DevExtreme (ui/widget/ui.widget.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _action = _interopRequireDefault(require(\"../../core/action\"));\r\nvar _dom_component = _interopRequireDefault(require(\"../../core/dom_component\"));\r\nvar _short = require(\"../../events/short\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _selectors = require(\"./selectors\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _type = require(\"../../core/utils/type\");\r\nrequire(\"../../events/click\");\r\nrequire(\"../../events/core/emitter.feedback\");\r\nrequire(\"../../events/hover\");\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\n\r\nfunction setAttribute(name, value, target) {\r\n name = \"role\" === name || \"id\" === name ? name : \"aria-\".concat(name);\r\n value = (0, _type.isDefined)(value) ? value.toString() : null;\r\n target.attr(name, value)\r\n}\r\nvar Widget = _dom_component.default.inherit({\r\n _feedbackHideTimeout: 400,\r\n _feedbackShowTimeout: 30,\r\n _supportedKeys: function() {\r\n return {}\r\n },\r\n _getDefaultOptions: function() {\r\n return (0, _extend2.extend)(this.callBase(), {\r\n hoveredElement: null,\r\n isActive: false,\r\n disabled: false,\r\n visible: true,\r\n hint: void 0,\r\n activeStateEnabled: false,\r\n onContentReady: null,\r\n hoverStateEnabled: false,\r\n focusStateEnabled: false,\r\n tabIndex: 0,\r\n accessKey: null,\r\n onFocusIn: null,\r\n onFocusOut: null,\r\n onKeyboardHandled: null,\r\n ignoreParentReadOnly: false\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initContentReadyAction()\r\n },\r\n _innerWidgetOptionChanged: function(innerWidget, args) {\r\n var options = Widget.getOptionsFromContainer(args);\r\n innerWidget && innerWidget.option(options);\r\n this._options.cache(args.name, options)\r\n },\r\n _bindInnerWidgetOptions: function(innerWidget, optionsContainer) {\r\n var _this = this;\r\n var syncOptions = function() {\r\n return _this._options.silent(optionsContainer, (0, _extend2.extend)({}, innerWidget.option()))\r\n };\r\n syncOptions();\r\n innerWidget.on(\"optionChanged\", syncOptions)\r\n },\r\n _getAriaTarget: function() {\r\n return this._focusTarget()\r\n },\r\n _initContentReadyAction: function() {\r\n this._contentReadyAction = this._createActionByOption(\"onContentReady\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _initMarkup: function() {\r\n var _this$option = this.option(),\r\n disabled = _this$option.disabled,\r\n visible = _this$option.visible;\r\n this.$element().addClass(\"dx-widget\");\r\n this._toggleDisabledState(disabled);\r\n this._toggleVisibility(visible);\r\n this._renderHint();\r\n this._isFocusable() && this._renderFocusTarget();\r\n this.callBase()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderContent();\r\n this._renderFocusState();\r\n this._attachFeedbackEvents();\r\n this._attachHoverEvents();\r\n this._toggleIndependentState()\r\n },\r\n _renderHint: function() {\r\n var _this$option2 = this.option(),\r\n hint = _this$option2.hint;\r\n this.$element().attr(\"title\", hint || null)\r\n },\r\n _renderContent: function() {\r\n var _this2 = this;\r\n (0, _common.deferRender)(function() {\r\n return !_this2._disposed ? _this2._renderContentImpl() : void 0\r\n }).done(function() {\r\n return !_this2._disposed ? _this2._fireContentReadyAction() : void 0\r\n })\r\n },\r\n _renderContentImpl: _common.noop,\r\n _fireContentReadyAction: (0, _common.deferRenderer)(function() {\r\n return this._contentReadyAction()\r\n }),\r\n _dispose: function() {\r\n this._contentReadyAction = null;\r\n this._detachKeyboardEvents();\r\n this.callBase()\r\n },\r\n _resetActiveState: function() {\r\n this._toggleActiveState(this._eventBindingTarget(), false)\r\n },\r\n _clean: function() {\r\n this._cleanFocusState();\r\n this._resetActiveState();\r\n this.callBase();\r\n this.$element().empty()\r\n },\r\n _toggleVisibility: function(visible) {\r\n this.$element().toggleClass(\"dx-state-invisible\", !visible);\r\n this.setAria(\"hidden\", !visible || void 0)\r\n },\r\n _renderFocusState: function() {\r\n this._attachKeyboardEvents();\r\n if (this._isFocusable()) {\r\n this._renderFocusTarget();\r\n this._attachFocusEvents();\r\n this._renderAccessKey()\r\n }\r\n },\r\n _renderAccessKey: function() {\r\n var $el = this._focusTarget();\r\n var _this$option3 = this.option(),\r\n accessKey = _this$option3.accessKey;\r\n $el.attr(\"accesskey\", accessKey)\r\n },\r\n _isFocusable: function() {\r\n var _this$option4 = this.option(),\r\n focusStateEnabled = _this$option4.focusStateEnabled,\r\n disabled = _this$option4.disabled;\r\n return focusStateEnabled && !disabled\r\n },\r\n _eventBindingTarget: function() {\r\n return this.$element()\r\n },\r\n _focusTarget: function() {\r\n return this._getActiveElement()\r\n },\r\n _getActiveElement: function() {\r\n var activeElement = this._eventBindingTarget();\r\n if (this._activeStateUnit) {\r\n return activeElement.find(this._activeStateUnit).not(\".dx-state-disabled\")\r\n }\r\n return activeElement\r\n },\r\n _renderFocusTarget: function() {\r\n var _this$option5 = this.option(),\r\n tabIndex = _this$option5.tabIndex;\r\n this._focusTarget().attr(\"tabIndex\", tabIndex)\r\n },\r\n _keyboardEventBindingTarget: function() {\r\n return this._eventBindingTarget()\r\n },\r\n _refreshFocusEvent: function() {\r\n this._detachFocusEvents();\r\n this._attachFocusEvents()\r\n },\r\n _focusEventTarget: function() {\r\n return this._focusTarget()\r\n },\r\n _focusInHandler: function(event) {\r\n var _this3 = this;\r\n if (!event.isDefaultPrevented()) {\r\n this._createActionByOption(\"onFocusIn\", {\r\n beforeExecute: function() {\r\n return _this3._updateFocusState(event, true)\r\n },\r\n excludeValidators: [\"readOnly\"]\r\n })({\r\n event: event\r\n })\r\n }\r\n },\r\n _focusOutHandler: function(event) {\r\n var _this4 = this;\r\n if (!event.isDefaultPrevented()) {\r\n this._createActionByOption(\"onFocusOut\", {\r\n beforeExecute: function() {\r\n return _this4._updateFocusState(event, false)\r\n },\r\n excludeValidators: [\"readOnly\", \"disabled\"]\r\n })({\r\n event: event\r\n })\r\n }\r\n },\r\n _updateFocusState: function(_ref, isFocused) {\r\n var target = _ref.target;\r\n if ((0, _array.inArray)(target, this._focusTarget()) !== -1) {\r\n this._toggleFocusClass(isFocused, (0, _renderer.default)(target))\r\n }\r\n },\r\n _toggleFocusClass: function(isFocused, $element) {\r\n var $focusTarget = $element && $element.length ? $element : this._focusTarget();\r\n $focusTarget.toggleClass(\"dx-state-focused\", isFocused)\r\n },\r\n _hasFocusClass: function(element) {\r\n var $focusTarget = (0, _renderer.default)(element || this._focusTarget());\r\n return $focusTarget.hasClass(\"dx-state-focused\")\r\n },\r\n _isFocused: function() {\r\n return this._hasFocusClass()\r\n },\r\n _getKeyboardListeners: function() {\r\n return []\r\n },\r\n _attachKeyboardEvents: function() {\r\n var _this5 = this;\r\n this._detachKeyboardEvents();\r\n var _this$option6 = this.option(),\r\n focusStateEnabled = _this$option6.focusStateEnabled,\r\n onKeyboardHandled = _this$option6.onKeyboardHandled;\r\n var hasChildListeners = this._getKeyboardListeners().length;\r\n var hasKeyboardEventHandler = !!onKeyboardHandled;\r\n var shouldAttach = focusStateEnabled || hasChildListeners || hasKeyboardEventHandler;\r\n if (shouldAttach) {\r\n this._keyboardListenerId = _short.keyboard.on(this._keyboardEventBindingTarget(), this._focusTarget(), function(opts) {\r\n return _this5._keyboardHandler(opts)\r\n })\r\n }\r\n },\r\n _keyboardHandler: function(options, onlyChildProcessing) {\r\n if (!onlyChildProcessing) {\r\n var originalEvent = options.originalEvent,\r\n keyName = options.keyName,\r\n which = options.which;\r\n var keys = this._supportedKeys(originalEvent);\r\n var func = keys[keyName] || keys[which];\r\n if (void 0 !== func) {\r\n var handler = func.bind(this);\r\n var result = handler(originalEvent, options);\r\n if (!result) {\r\n return false\r\n }\r\n }\r\n }\r\n var keyboardListeners = this._getKeyboardListeners();\r\n var _this$option7 = this.option(),\r\n onKeyboardHandled = _this$option7.onKeyboardHandled;\r\n keyboardListeners.forEach(function(listener) {\r\n return listener && listener._keyboardHandler(options)\r\n });\r\n onKeyboardHandled && onKeyboardHandled(options);\r\n return true\r\n },\r\n _refreshFocusState: function() {\r\n this._cleanFocusState();\r\n this._renderFocusState()\r\n },\r\n _cleanFocusState: function() {\r\n var $element = this._focusTarget();\r\n $element.removeAttr(\"tabIndex\");\r\n this._toggleFocusClass(false);\r\n this._detachFocusEvents();\r\n this._detachKeyboardEvents()\r\n },\r\n _detachKeyboardEvents: function() {\r\n _short.keyboard.off(this._keyboardListenerId);\r\n this._keyboardListenerId = null\r\n },\r\n _attachHoverEvents: function() {\r\n var _this6 = this;\r\n var _this$option8 = this.option(),\r\n hoverStateEnabled = _this$option8.hoverStateEnabled;\r\n var selector = this._activeStateUnit;\r\n var namespace = \"UIFeedback\";\r\n var $el = this._eventBindingTarget();\r\n _short.hover.off($el, {\r\n selector: selector,\r\n namespace: namespace\r\n });\r\n if (hoverStateEnabled) {\r\n _short.hover.on($el, new _action.default(function(_ref2) {\r\n var event = _ref2.event,\r\n element = _ref2.element;\r\n _this6._hoverStartHandler(event);\r\n _this6.option(\"hoveredElement\", (0, _renderer.default)(element))\r\n }, {\r\n excludeValidators: [\"readOnly\"]\r\n }), function(event) {\r\n _this6.option(\"hoveredElement\", null);\r\n _this6._hoverEndHandler(event)\r\n }, {\r\n selector: selector,\r\n namespace: namespace\r\n })\r\n }\r\n },\r\n _attachFeedbackEvents: function() {\r\n var _this7 = this;\r\n var _this$option9 = this.option(),\r\n activeStateEnabled = _this$option9.activeStateEnabled;\r\n var selector = this._activeStateUnit;\r\n var namespace = \"UIFeedback\";\r\n var $el = this._eventBindingTarget();\r\n _short.active.off($el, {\r\n namespace: namespace,\r\n selector: selector\r\n });\r\n if (activeStateEnabled) {\r\n _short.active.on($el, new _action.default(function(_ref3) {\r\n var event = _ref3.event,\r\n element = _ref3.element;\r\n return _this7._toggleActiveState((0, _renderer.default)(element), true, event)\r\n }), new _action.default(function(_ref4) {\r\n var event = _ref4.event,\r\n element = _ref4.element;\r\n return _this7._toggleActiveState((0, _renderer.default)(element), false, event)\r\n }, {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n }), {\r\n showTimeout: this._feedbackShowTimeout,\r\n hideTimeout: this._feedbackHideTimeout,\r\n selector: selector,\r\n namespace: namespace\r\n })\r\n }\r\n },\r\n _detachFocusEvents: function() {\r\n var $el = this._focusEventTarget();\r\n _short.focus.off($el, {\r\n namespace: \"\".concat(this.NAME, \"Focus\")\r\n })\r\n },\r\n _attachFocusEvents: function() {\r\n var _this8 = this;\r\n var $el = this._focusEventTarget();\r\n _short.focus.on($el, function(e) {\r\n return _this8._focusInHandler(e)\r\n }, function(e) {\r\n return _this8._focusOutHandler(e)\r\n }, {\r\n namespace: \"\".concat(this.NAME, \"Focus\"),\r\n isFocusable: function(index, el) {\r\n return (0, _renderer.default)(el).is(_selectors.focusable)\r\n }\r\n })\r\n },\r\n _hoverStartHandler: _common.noop,\r\n _hoverEndHandler: _common.noop,\r\n _toggleActiveState: function($element, value) {\r\n this.option(\"isActive\", value);\r\n $element.toggleClass(\"dx-state-active\", value)\r\n },\r\n _updatedHover: function() {\r\n var hoveredElement = this._options.silent(\"hoveredElement\");\r\n this._hover(hoveredElement, hoveredElement)\r\n },\r\n _findHoverTarget: function($el) {\r\n return $el && $el.closest(this._activeStateUnit || this._eventBindingTarget())\r\n },\r\n _hover: function($el, $previous) {\r\n var _this$option10 = this.option(),\r\n hoverStateEnabled = _this$option10.hoverStateEnabled,\r\n disabled = _this$option10.disabled,\r\n isActive = _this$option10.isActive;\r\n $previous = this._findHoverTarget($previous);\r\n $previous && $previous.toggleClass(\"dx-state-hover\", false);\r\n if ($el && hoverStateEnabled && !disabled && !isActive) {\r\n var newHoveredElement = this._findHoverTarget($el);\r\n newHoveredElement && newHoveredElement.toggleClass(\"dx-state-hover\", true)\r\n }\r\n },\r\n _toggleDisabledState: function(value) {\r\n this.$element().toggleClass(\"dx-state-disabled\", Boolean(value));\r\n this.setAria(\"disabled\", value || void 0)\r\n },\r\n _toggleIndependentState: function() {\r\n this.$element().toggleClass(\"dx-state-independent\", this.option(\"ignoreParentReadOnly\"))\r\n },\r\n _setWidgetOption: function(widgetName, args) {\r\n var _this9 = this;\r\n if (!this[widgetName]) {\r\n return\r\n }\r\n if ((0, _type.isPlainObject)(args[0])) {\r\n (0, _iterator.each)(args[0], function(option, value) {\r\n return _this9._setWidgetOption(widgetName, [option, value])\r\n });\r\n return\r\n }\r\n var optionName = args[0];\r\n var value = args[1];\r\n if (1 === args.length) {\r\n value = this.option(optionName)\r\n }\r\n var widgetOptionMap = this[\"\".concat(widgetName, \"OptionMap\")];\r\n this[widgetName].option(widgetOptionMap ? widgetOptionMap(optionName) : optionName, value)\r\n },\r\n _optionChanged: function(args) {\r\n var name = args.name,\r\n value = args.value,\r\n previousValue = args.previousValue;\r\n switch (name) {\r\n case \"disabled\":\r\n this._toggleDisabledState(value);\r\n this._updatedHover();\r\n this._refreshFocusState();\r\n break;\r\n case \"hint\":\r\n this._renderHint();\r\n break;\r\n case \"ignoreParentReadOnly\":\r\n this._toggleIndependentState();\r\n break;\r\n case \"activeStateEnabled\":\r\n this._attachFeedbackEvents();\r\n break;\r\n case \"hoverStateEnabled\":\r\n this._attachHoverEvents();\r\n this._updatedHover();\r\n break;\r\n case \"tabIndex\":\r\n case \"focusStateEnabled\":\r\n this._refreshFocusState();\r\n break;\r\n case \"onFocusIn\":\r\n case \"onFocusOut\":\r\n break;\r\n case \"accessKey\":\r\n this._renderAccessKey();\r\n break;\r\n case \"hoveredElement\":\r\n this._hover(value, previousValue);\r\n break;\r\n case \"isActive\":\r\n this._updatedHover();\r\n break;\r\n case \"visible\":\r\n this._toggleVisibility(value);\r\n if (this._isVisibilityChangeSupported()) {\r\n this._checkVisibilityChanged(value ? \"shown\" : \"hiding\")\r\n }\r\n break;\r\n case \"onKeyboardHandled\":\r\n this._attachKeyboardEvents();\r\n break;\r\n case \"onContentReady\":\r\n this._initContentReadyAction();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _isVisible: function() {\r\n var _this$option11 = this.option(),\r\n visible = _this$option11.visible;\r\n return this.callBase() && visible\r\n },\r\n beginUpdate: function() {\r\n this._ready(false);\r\n this.callBase()\r\n },\r\n endUpdate: function() {\r\n this.callBase();\r\n if (this._initialized) {\r\n this._ready(true)\r\n }\r\n },\r\n _ready: function(value) {\r\n if (0 === arguments.length) {\r\n return this._isReady\r\n }\r\n this._isReady = value\r\n },\r\n setAria: function() {\r\n if (!(0, _type.isPlainObject)(arguments.length <= 0 ? void 0 : arguments[0])) {\r\n setAttribute(arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 1 ? void 0 : arguments[1], (arguments.length <= 2 ? void 0 : arguments[2]) || this._getAriaTarget())\r\n } else {\r\n var target = (arguments.length <= 1 ? void 0 : arguments[1]) || this._getAriaTarget();\r\n (0, _iterator.each)(arguments.length <= 0 ? void 0 : arguments[0], function(name, value) {\r\n return setAttribute(name, value, target)\r\n })\r\n }\r\n },\r\n isReady: function() {\r\n return this._ready()\r\n },\r\n repaint: function() {\r\n this._refresh()\r\n },\r\n focus: function() {\r\n _short.focus.trigger(this._focusTarget())\r\n },\r\n registerKeyHandler: function(key, handler) {\r\n var currentKeys = this._supportedKeys();\r\n this._supportedKeys = function() {\r\n return (0, _extend2.extend)(currentKeys, _defineProperty({}, key, handler))\r\n }\r\n }\r\n});\r\nWidget.getOptionsFromContainer = function(_ref5) {\r\n var name = _ref5.name,\r\n fullName = _ref5.fullName,\r\n value = _ref5.value;\r\n var options = {};\r\n if (name === fullName) {\r\n options = value\r\n } else {\r\n var option = fullName.split(\".\").pop();\r\n options[option] = value\r\n }\r\n return options\r\n};\r\nvar _default = Widget;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/widget/swatch_container.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _view_port = require(\"../../core/utils/view_port\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SWATCH_CONTAINER_CLASS_PREFIX = \"dx-swatch-\";\r\nvar getSwatchContainer = function(element) {\r\n var $element = (0, _renderer.default)(element);\r\n var swatchContainer = $element.closest('[class^=\"'.concat(SWATCH_CONTAINER_CLASS_PREFIX, '\"], [class*=\" ').concat(SWATCH_CONTAINER_CLASS_PREFIX, '\"]'));\r\n var viewport = (0, _view_port.value)();\r\n if (!swatchContainer.length) {\r\n return viewport\r\n }\r\n var swatchClassRegex = new RegExp(\"(\\\\s|^)(\".concat(SWATCH_CONTAINER_CLASS_PREFIX, \".*?)(\\\\s|$)\"));\r\n var swatchClass = swatchContainer[0].className.match(swatchClassRegex)[2];\r\n var viewportSwatchContainer = viewport.children(\".\" + swatchClass);\r\n if (!viewportSwatchContainer.length) {\r\n viewportSwatchContainer = (0, _renderer.default)(\"
\").addClass(swatchClass).appendTo(viewport)\r\n }\r\n return viewportSwatchContainer\r\n};\r\nvar _default = {\r\n getSwatchContainer: getSwatchContainer\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/widget/ui.errors.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _error = _interopRequireDefault(require(\"../../core/utils/error\"));\r\nvar _errors = _interopRequireDefault(require(\"../../core/errors\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = (0, _error.default)(_errors.default.ERROR_MESSAGES, {\r\n E1001: \"Module '{0}'. Controller '{1}' is already registered\",\r\n E1002: \"Module '{0}'. Controller '{1}' does not inherit from DevExpress.ui.dxDataGrid.Controller\",\r\n E1003: \"Module '{0}'. View '{1}' is already registered\",\r\n E1004: \"Module '{0}'. View '{1}' does not inherit from DevExpress.ui.dxDataGrid.View\",\r\n E1005: \"Public method '{0}' is already registered\",\r\n E1006: \"Public method '{0}.{1}' does not exist\",\r\n E1007: \"State storing cannot be provided due to the restrictions of the browser\",\r\n E1010: \"The template does not contain the TextBox widget\",\r\n E1011: 'Items cannot be deleted from the List. Implement the \"remove\" function in the data store',\r\n E1012: \"Editing type '{0}' with the name '{1}' is unsupported\",\r\n E1016: \"Unexpected type of data source is provided for a lookup column\",\r\n E1018: \"The 'collapseAll' method cannot be called if you use a remote data source\",\r\n E1019: \"Search mode '{0}' is unavailable\",\r\n E1020: \"The type cannot be changed after initialization\",\r\n E1021: \"{0} '{1}' you are trying to remove does not exist\",\r\n E1022: 'The \"markers\" option is given an invalid value. Assign an array instead',\r\n E1023: 'The \"routes\" option is given an invalid value. Assign an array instead',\r\n E1025: \"This layout is too complex to render\",\r\n E1026: 'The \"calculateCustomSummary\" function is missing from a field whose \"summaryType\" option is set to \"custom\"',\r\n E1030: \"Unknown ScrollView refresh strategy: '{0}'\",\r\n E1031: \"Unknown subscription in the Scheduler widget: '{0}'\",\r\n E1032: \"Unknown start date in an appointment: '{0}'\",\r\n E1033: \"Unknown step in the date navigator: '{0}'\",\r\n E1034: \"The browser does not implement an API for saving files\",\r\n E1035: \"The editor cannot be created because of an internal error: {0}\",\r\n E1037: \"Invalid structure of grouped data\",\r\n E1038: \"The browser does not support local storages for local web pages\",\r\n E1039: \"A cell's position cannot be calculated\",\r\n E1040: \"The '{0}' key value is not unique within the data array\",\r\n E1041: \"The '{0}' script is referenced after the DevExtreme scripts or not referenced at all\",\r\n E1042: \"{0} requires the key field to be specified\",\r\n E1043: \"Changes cannot be processed due to the incorrectly set key\",\r\n E1044: \"The key field specified by the keyExpr option does not match the key field specified in the data store\",\r\n E1045: \"Editing requires the key field to be specified in the data store\",\r\n E1046: \"The '{0}' key field is not found in data objects\",\r\n E1047: 'The \"{0}\" field is not found in the fields array',\r\n E1048: 'The \"{0}\" operation is not found in the filterOperations array',\r\n E1049: \"Column '{0}': filtering is allowed but the 'dataField' or 'name' option is not specified\",\r\n E1050: \"The validationRules option does not apply to third-party editors defined in the editCellTemplate\",\r\n E1051: 'HtmlEditor\\'s valueType is \"{0}\", but the {0} converter was not imported.',\r\n E1052: '{0} should have the \"dataSource\" option specified',\r\n E1053: 'The \"buttons\" option accepts an array that contains only objects or string values',\r\n E1054: \"All text editor buttons must have names\",\r\n E1055: 'One or several text editor buttons have invalid or non-unique \"name\" values',\r\n E1056: 'The {0} widget does not support buttons of the \"{1}\" type',\r\n E1058: 'The \"startDayHour\" must be earlier than the \"endDayHour\"',\r\n E1059: \"The following column names are not unique: {0}\",\r\n E1060: \"All editable columns must have names\",\r\n W1001: 'The \"key\" option cannot be modified after initialization',\r\n W1002: \"An item with the key '{0}' does not exist\",\r\n W1003: \"A group with the key '{0}' in which you are trying to select items does not exist\",\r\n W1004: \"The item '{0}' you are trying to select in the group '{1}' does not exist\",\r\n W1005: \"Due to column data types being unspecified, data has been loaded twice in order to apply initial filter settings. To resolve this issue, specify data types for all grid columns.\",\r\n W1006: \"The map service returned the following error: '{0}'\",\r\n W1007: \"No item with key {0} was found in the data source, but this key was used as the parent key for item {1}\",\r\n W1008: \"Cannot scroll to the '{0}' date because it does not exist on the current view\",\r\n W1009: \"Searching works only if data is specified using the dataSource option\",\r\n W1010: \"The capability to select all items works with source data of plain structure only\",\r\n W1011: 'The \"keyExpr\" option is not applied when dataSource is not an array',\r\n W1012: \"The '{0}' key field is not found in data objects\",\r\n W1013: 'The \"message\" field in the dialog component was renamed to \"messageHtml\". Change your code correspondingly. In addition, if you used HTML code in the message, make sure that it is secure',\r\n W1014: \"The Floating Action Button exceeds the recommended speed dial action count. If you need to display more speed dial actions, increase the maxSpeedDialActionCount option value in the global config.\",\r\n W1015: 'The \"cellDuration\" should divide the range from the \"startDayHour\" to the \"endDayHour\" into even intervals'\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/widget/ui.search_box_mixin.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _text_box = _interopRequireDefault(require(\"../text_box\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = {\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n searchMode: \"\",\r\n searchExpr: null,\r\n searchValue: \"\",\r\n searchEnabled: false,\r\n searchEditorOptions: {}\r\n })\r\n },\r\n _initMarkup: function() {\r\n this._renderSearch();\r\n this.callBase()\r\n },\r\n _renderSearch: function() {\r\n var $element = this.$element();\r\n var searchEnabled = this.option(\"searchEnabled\");\r\n var searchBoxClassName = this._addWidgetPrefix(\"search\");\r\n var rootElementClassName = this._addWidgetPrefix(\"with-search\");\r\n if (!searchEnabled) {\r\n $element.removeClass(rootElementClassName);\r\n this._removeSearchBox();\r\n return\r\n }\r\n var editorOptions = this._getSearchEditorOptions();\r\n if (this._searchEditor) {\r\n this._searchEditor.option(editorOptions)\r\n } else {\r\n $element.addClass(rootElementClassName);\r\n this._$searchEditorElement = (0, _renderer.default)(\"
\").addClass(searchBoxClassName).prependTo($element);\r\n this._searchEditor = this._createComponent(this._$searchEditorElement, _text_box.default, editorOptions)\r\n }\r\n },\r\n _removeSearchBox: function() {\r\n this._$searchEditorElement && this._$searchEditorElement.remove();\r\n delete this._$searchEditorElement;\r\n delete this._searchEditor\r\n },\r\n _getSearchEditorOptions: function() {\r\n var that = this;\r\n var userEditorOptions = that.option(\"searchEditorOptions\");\r\n var searchText = _message.default.format(\"Search\");\r\n return (0, _extend.extend)({\r\n mode: \"search\",\r\n placeholder: searchText,\r\n tabIndex: that.option(\"tabIndex\"),\r\n value: that.option(\"searchValue\"),\r\n valueChangeEvent: \"input\",\r\n inputAttr: {\r\n \"aria-label\": searchText\r\n },\r\n onValueChanged: function(e) {\r\n var searchTimeout = that.option(\"searchTimeout\");\r\n that._valueChangeDeferred = new _deferred.Deferred;\r\n clearTimeout(that._valueChangeTimeout);\r\n that._valueChangeDeferred.done(function() {\r\n this.option(\"searchValue\", e.value)\r\n }.bind(that));\r\n if (e.event && \"input\" === e.event.type && searchTimeout) {\r\n that._valueChangeTimeout = setTimeout(function() {\r\n that._valueChangeDeferred.resolve()\r\n }, searchTimeout)\r\n } else {\r\n that._valueChangeDeferred.resolve()\r\n }\r\n }\r\n }, userEditorOptions)\r\n },\r\n _getAriaTarget: function() {\r\n if (this.option(\"searchEnabled\")) {\r\n return this._itemContainer(true)\r\n }\r\n return this.$element()\r\n },\r\n _focusTarget: function() {\r\n if (this.option(\"searchEnabled\")) {\r\n return this._itemContainer(true)\r\n }\r\n return this.callBase()\r\n },\r\n _updateFocusState: function(e, isFocused) {\r\n if (this.option(\"searchEnabled\")) {\r\n this._toggleFocusClass(isFocused, this.$element())\r\n }\r\n this.callBase(e, isFocused)\r\n },\r\n getOperationBySearchMode: function(searchMode) {\r\n return \"equals\" === searchMode ? \"=\" : searchMode\r\n },\r\n _cleanAria: function($target) {\r\n this.setAria({\r\n role: null,\r\n activedescendant: null\r\n }, $target);\r\n $target.attr(\"tabIndex\", null)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"searchEnabled\":\r\n case \"searchEditorOptions\":\r\n this._cleanAria(this.option(\"searchEnabled\") ? this.$element() : this._itemContainer());\r\n this._invalidate();\r\n break;\r\n case \"searchExpr\":\r\n case \"searchMode\":\r\n case \"searchValue\":\r\n if (!this._dataSource) {\r\n _ui.default.log(\"W1009\");\r\n return\r\n }\r\n if (\"searchMode\" === args.name) {\r\n this._dataSource.searchOperation(this.getOperationBySearchMode(args.value))\r\n } else {\r\n this._dataSource[args.name](args.value)\r\n }\r\n this._dataSource.load();\r\n break;\r\n case \"searchTimeout\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n focus: function() {\r\n if (!this.option(\"focusedElement\") && this.option(\"searchEnabled\")) {\r\n this._searchEditor && this._searchEditor.focus();\r\n return\r\n }\r\n this.callBase()\r\n },\r\n _refresh: function() {\r\n if (this._valueChangeDeferred) {\r\n this._valueChangeDeferred.resolve()\r\n }\r\n this.callBase()\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/axes/base_axis.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.Axis = void 0;\r\nvar _smart_formatter = require(\"./smart_formatter\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _axes_constants = _interopRequireDefault(require(\"./axes_constants\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _format_helper = _interopRequireDefault(require(\"../../format_helper\"));\r\nvar _parse_utils = require(\"../components/parse_utils\");\r\nvar _tick_generator = require(\"./tick_generator\");\r\nvar _translator2d = require(\"../translators/translator2d\");\r\nvar _range = require(\"../translators/range\");\r\nvar _tick = require(\"./tick\");\r\nvar _math2 = require(\"../../core/utils/math\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _xy_axes = _interopRequireDefault(require(\"./xy_axes\"));\r\nvar polarMethods = _interopRequireWildcard(require(\"./polar_axes\"));\r\nvar _constant_line = _interopRequireDefault(require(\"./constant_line\"));\r\nvar _strip = _interopRequireDefault(require(\"./strip\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _axes_utils = require(\"./axes_utils\");\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\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_constants.default.convertTicksToValues;\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_constants.default.top;\r\nvar BOTTOM = _axes_constants.default.bottom;\r\nvar LEFT = _axes_constants.default.left;\r\nvar RIGHT = _axes_constants.default.right;\r\nvar CENTER = _axes_constants.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 (0, _tick_generator.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\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.getContentContainer()) {\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 getConstantLineSharpDirection(coord, axisCanvas) {\r\n return Math.max(axisCanvas.start, axisCanvas.end) !== coord ? 1 : -1\r\n}\r\nvar 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 that._getTemplate = renderSettings.getTemplate\r\n};\r\nexports.Axis = Axis;\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 hasNonBoundaryPosition: 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.hasNonBoundaryPosition() || 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((0, _utils.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 _this = this;\r\n var that = this;\r\n var getContainerAttrs = function(tick) {\r\n return _this._getLabelAdjustedCoord(tick, offset + (tick.labelOffset || 0), maxWidth, checkCanvas)\r\n };\r\n that._majorTicks.forEach(function(tick) {\r\n if (tick.label) {\r\n tick.updateMultilineTextAlignment();\r\n tick.label.attr(getContainerAttrs(tick))\r\n } else {\r\n tick.templateContainer && tick.templateContainer.attr(getContainerAttrs(tick))\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.getContentContainer()) {\r\n return size\r\n }\r\n var bBox = tick.labelRotationAngle ? (0, _utils.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 templateBox = tick.templateContainer && tick.templateContainer.getBBox();\r\n var box = templateBox || (0, _utils.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 }).enableLinks();\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 }).linkOn(that._axisGroup, \"axisElements\").linkAppend();\r\n that._axisLineGroup = renderer.g().attr({\r\n \"class\": classSelector + \"line\"\r\n }).linkOn(that._axisGroup, \"axisLine\").linkAppend();\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._options.label.template || !that.isRendered()) && 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 isFirstDrawing: function() {\r\n return this._firstDrawing\r\n },\r\n getMargins: function() {\r\n var that = this;\r\n var _that$_options = that._options,\r\n position = _that$_options.position,\r\n offset = _that$_options.offset,\r\n customPosition = _that$_options.customPosition,\r\n placeholderSize = _that$_options.placeholderSize,\r\n grid = _that$_options.grid,\r\n tick = _that$_options.tick,\r\n crosshairMargin = _that$_options.crosshairMargin;\r\n var isDefinedCustomPositionOption = (0, _type.isDefined)(customPosition);\r\n var boundaryPosition = that.getResolvedBoundaryPosition();\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(grid.visible && grid.width || 0, tick.visible && 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 = (0, _axes_utils.calculateCanvasMargins)(boxes, canvas);\r\n margins[position] += crosshairMargin;\r\n if (that.hasNonBoundaryPosition() && isDefinedCustomPositionOption) {\r\n margins[boundaryPosition] = 0\r\n }\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 if (!isDefinedCustomPositionOption && (0, _type.isDefined)(offset)) {\r\n var moveByOffset = that.customPositionIsBoundary() && (offset > 0 && (boundaryPosition === LEFT || boundaryPosition === TOP) || offset < 0 && (boundaryPosition === RIGHT || boundaryPosition === BOTTOM));\r\n margins[boundaryPosition] -= moveByOffset ? offset : 0\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_axes.default;\r\n break;\r\n case \"polarAxes\":\r\n axisTypeMethods = polarMethods\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 that._templatesRendered && that._templatesRendered.reject()\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 = (0, _utils.patchFontOptions)(labelOpt.font);\r\n if (options.type === _axes_constants.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, _strip.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_constants.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((0, _utils.getLogExt)(value, options.logarithmBase, allowNegatives, linearThreshold) - (0, _utils.getLogExt)(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 _resolveLogarithmicOptionsForRange: function(range) {\r\n var options = this._options;\r\n if (options.type === _axes_constants.default.logarithmic) {\r\n range.addRange({\r\n allowNegatives: void 0 !== options.allowNegatives ? options.allowNegatives : range.min <= 0\r\n });\r\n if (!isNaN(options.linearThreshold)) {\r\n range.linearThreshold = options.linearThreshold\r\n }\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_constants.default.discrete;\r\n var categories = that._seriesData && that._seriesData.categories || [];\r\n var wholeRange = that.adjustRange((0, _utils.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 = (0, _utils.getCategoriesInfo)(categories, wholeRange.startValue, wholeRange.endValue);\r\n categories = categoriesInfo.categories;\r\n result.categories = categories\r\n }\r\n var adjustedVisualRange = (0, _utils.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 that._resolveLogarithmicOptionsForRange(result);\r\n return result\r\n },\r\n adjustRange: function(range) {\r\n range = range || {};\r\n var isDiscrete = this._options.type === _axes_constants.default.discrete;\r\n var isLogarithmic = this._options.type === _axes_constants.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_constants.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_constants.default.logarithmic) {\r\n length = (0, _math2.adjust)(this.calculateInterval(currentBusinessRange.maxVisible, currentBusinessRange.minVisible))\r\n } else {\r\n if (type === _axes_constants.default.discrete) {\r\n var categoriesInfo = (0, _utils.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_constants.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 = (0, _utils.raiseToExt)((0, _math2.adjust)((0, _utils.getLogExt)(maxVisible, logarithmBase, allowNegatives, linearThreshold) + (0, _utils.getLogExt)(minVisible, logarithmBase, allowNegatives, linearThreshold)) / 2, logarithmBase, allowNegatives, linearThreshold)\r\n } else {\r\n if (type === _axes_constants.default.discrete) {\r\n var categoriesInfo = (0, _utils.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_constants.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 that._resolveLogarithmicOptionsForRange(that._seriesData);\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.userBreaks = that._seriesData.isEmpty() ? [] : 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_constants.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_constants.default.discrete && \"datetime\" === options.dataType && !this._hasLabelFormat && ticks.ticks.length) {\r\n options.label.format = _format_helper.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_constants.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_constants.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 = (0, _utils.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 ? _date.default.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 var filteredBreaks = that._filterBreaks(breaks, {\r\n minVisible: start,\r\n maxVisible: end\r\n }, options.breakStyle);\r\n ticks = generateTicks(tickInterval, false, start, end, filteredBreaks).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 var range = that._getViewportRange();\r\n that._initialBreaks = range.breaks = this._seriesData.breaks = that._filterBreaks(this._seriesData.userBreaks, range, options.breakStyle);\r\n that._estimatedTickInterval = that._getTicks(that.adjustViewport(this._seriesData), _common.noop, true).tickInterval;\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 (0, _utils.valueOf)(boundary) === (0, _utils.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 that._ticksToRemove.forEach(function(t) {\r\n var _t$label;\r\n return null === (_t$label = t.label) || void 0 === _t$label ? void 0 : _t$label.removeTitle()\r\n });\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 ? _date.default.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 _getConvertIntervalCoefficient: function(intervalInPx, screenDelta) {\r\n var ratioOfCanvasRange = this._translator.ratioOfCanvasRange();\r\n return ratioOfCanvasRange / (ratioOfCanvasRange * screenDelta / (intervalInPx + screenDelta))\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_constants.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 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 * that._getConvertIntervalCoefficient(pxInterval, screenDelta)))\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 && (0, _utils.valueOf)(dataRange.minVisible) > 0 && (0, _utils.valueOf)(dataRange.minVisible) === (0, _utils.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 && (0, _utils.valueOf)(dataRange.maxVisible) < 0 && (0, _utils.valueOf)(dataRange.maxVisible) === (0, _utils.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_constants.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 = that._getConvertIntervalCoefficient(commonPadding, screenDelta);\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 var _that$getCorrectedVal = that.getCorrectedValuesToZero(minValue, maxValue),\r\n correctedMin = _that$getCorrectedVal.correctedMin,\r\n correctedMax = _that$getCorrectedVal.correctedMax,\r\n start = _that$getCorrectedVal.start,\r\n end = _that$getCorrectedVal.end;\r\n minPadding = null !== start && void 0 !== start ? start : minPadding;\r\n maxPadding = null !== end && void 0 !== end ? end : maxPadding;\r\n return {\r\n startPadding: translator.isInverted() ? maxPadding : minPadding,\r\n endPadding: translator.isInverted() ? minPadding : maxPadding,\r\n minValue: null !== correctedMin && void 0 !== correctedMin ? correctedMin : minValue,\r\n maxValue: null !== correctedMax && void 0 !== correctedMax ? correctedMax : maxValue,\r\n interval: rangeInterval,\r\n isSpacedMargin: minPadding === maxPadding && 0 !== minPadding\r\n }\r\n },\r\n getCorrectedValuesToZero: function(minValue, maxValue) {\r\n var that = this;\r\n var translator = that._translator;\r\n var canvasStartEnd = that._getCanvasStartEnd();\r\n var dataRange = that._getViewportRange();\r\n var screenDelta = that._getScreenDelta();\r\n var options = that._options;\r\n var start;\r\n var end;\r\n var correctedMin;\r\n var correctedMax;\r\n var correctZeroLevel = function(minPoint, maxPoint) {\r\n var minExpectedPadding = _abs(canvasStartEnd.start - minPoint);\r\n var maxExpectedPadding = _abs(canvasStartEnd.end - maxPoint);\r\n var coeff = that._getConvertIntervalCoefficient(minExpectedPadding + maxExpectedPadding, screenDelta);\r\n start = minExpectedPadding / coeff;\r\n end = 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 correctedMin = 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 correctedMax = 0\r\n }\r\n }\r\n return {\r\n start: isFinite(start) ? start : null,\r\n end: isFinite(end) ? end : null,\r\n correctedMin: correctedMin,\r\n correctedMax: correctedMax\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 _this2 = this;\r\n var constantLines = (this._options.constantLines || []).map(function(o) {\r\n return (0, _constant_line.default)(_this2, 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(), that._getTemplate());\r\n that._templatesRendered && that._templatesRendered.reject();\r\n that._templatesRendered = new _deferred.Deferred;\r\n _deferred.when.apply(this, that._majorTicks.map(function(tick) {\r\n return tick.getTemplateDeferred()\r\n })).done(function() {\r\n that._templatesRendered.resolve()\r\n });\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 (0, _axes_utils.measureLabels)(that._majorTicks);\r\n !options.label.template && that._applyWordWrap();\r\n (0, _axes_utils.measureLabels)(that._outsideConstantLines);\r\n (0, _axes_utils.measureLabels)(that._insideConstantLines);\r\n (0, _axes_utils.measureLabels)(that._strips);\r\n (0, _axes_utils.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 getTemplatesDef: function() {\r\n return this._templatesRendered\r\n },\r\n setRenderedState: function(state) {\r\n this._drawn = state\r\n },\r\n isRendered: function() {\r\n return this._drawn\r\n },\r\n _applyWordWrap: function() {\r\n var that = this;\r\n var convertedTickInterval;\r\n var textWidth;\r\n var textHeight;\r\n var options = this._options;\r\n var tickInterval = that._tickInterval;\r\n if ((0, _type.isDefined)(tickInterval)) {\r\n convertedTickInterval = that.getTranslator().getInterval(\"datetime\" === options.dataType ? _date.default.dateToMilliseconds(tickInterval) : tickInterval)\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 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 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 (0, _axes_utils.measureLabels)(that._majorTicks)\r\n }\r\n }\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 = that._options;\r\n initTickCoords(that._majorTicks);\r\n initTickCoords(that._minorTicks);\r\n initTickCoords(that._boundaryTicks);\r\n if (that._resetApplyingAnimation && !that._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 (that._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 that._resetApplyingAnimation = false;\r\n that._updateLabelsPosition()\r\n },\r\n _updateLabelsPosition: _common.noop,\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 _validateVisualRange: function(optionValue) {\r\n var range = (0, _utils.getVizRangeObject)(optionValue);\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 (0, _utils.convertVisualRangeObject)(range, !_isArray(optionValue))\r\n },\r\n _validateOptions: function(options) {\r\n var that = this;\r\n options.wholeRange = that._validateVisualRange(options.wholeRange);\r\n options.visualRange = options._customVisualRange = that._validateVisualRange(options._customVisualRange);\r\n that._setVisualRange(options._customVisualRange)\r\n },\r\n beforeCleanGroups: function() {\r\n this._options.label.template && this._axisElementsGroup && this._axisElementsGroup.linkRemove()\r\n },\r\n afterCleanGroups: function() {\r\n this._options.label.template && this._axisElementsGroup && this._axisElementsGroup.linkAppend()\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 ? (0, _parse_utils.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((0, _utils.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.userBreaks = 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 = (0, _utils.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 getTemplatesGroups: function() {\r\n var ticks = this._majorTicks;\r\n if (ticks) {\r\n return this._majorTicks.map(function(tick) {\r\n return tick.templateContainer\r\n }).filter(function(item) {\r\n return (0, _type.isDefined)(item)\r\n })\r\n } else {\r\n return []\r\n }\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_constants.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: (0, _utils.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() || 1) + \"e+2\") + \"e-2\") : NaN;\r\n var zoomEndEvent = that._getZoomEndEventArg(previousRange, domEvent, action, zoomFactor, shift);\r\n zoomEndEvent.cancel = that.checkZoomingLowerLimitOvercome(1 === zoomFactor ? \"pan\" : \"zoom\", zoomFactor).stopInteraction;\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 checkZoomingLowerLimitOvercome: function(actionType, zoomFactor, range) {\r\n var that = this;\r\n var options = that._options;\r\n var translator = that._translator;\r\n var minZoom = options.minVisualRangeLength;\r\n var correctedRange = range;\r\n var visualRange;\r\n var isOvercoming = \"zoom\" === actionType && zoomFactor >= 1;\r\n var businessRange = translator.getBusinessRange();\r\n if (range) {\r\n visualRange = that.adjustRange((0, _utils.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 beforeVisualRangeLength = that.getVisualRangeLength(businessRange);\r\n var afterVisualRangeLength = that.getVisualRangeLength(visualRange);\r\n if ((0, _type.isDefined)(minZoom) || \"discrete\" === options.type) {\r\n minZoom = translator.convert(minZoom);\r\n if (visualRange && minZoom < beforeVisualRangeLength && minZoom >= afterVisualRangeLength) {\r\n correctedRange = (0, _utils.getVizRangeObject)(translator.getRangeByMinZoomValue(minZoom, visualRange));\r\n isOvercoming = false\r\n } else {\r\n isOvercoming &= minZoom > afterVisualRangeLength\r\n }\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 >= afterVisualRangeLength\r\n }\r\n return {\r\n stopInteraction: !!isOvercoming,\r\n correctedRange: correctedRange\r\n }\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_constants.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 (0, _utils.valueOf)(a) - (0, _utils.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_constants.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 var contentContainer = tick.getContentContainer();\r\n if (!contentContainer) {\r\n return\r\n }\r\n contentContainer.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 _translator2d.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 _filterBreaks: 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","/**\r\n * DevExtreme (viz/axes/axes_constants.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _utils = require(\"../core/utils\");\r\nvar _default = {\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\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n"],"sourceRoot":""}