{"version":3,"sources":["../node_modules/devextreme/ui/widget/ui.widget.js","../node_modules/devextreme/ui/widget/ui.errors.js","../node_modules/devextreme/ui/widget/ui.search_box_mixin.js","../node_modules/devextreme/viz/axes/base_axis.js","../node_modules/devextreme/viz/axes/smart_formatter.js","../node_modules/devextreme/viz/axes/tick_generator.js","../node_modules/devextreme/viz/axes/tick.js","../node_modules/devextreme/viz/axes/xy_axes.js","../node_modules/devextreme/viz/axes/axes_utils.js","../node_modules/devextreme/viz/bar_gauge.js","../node_modules/devextreme/viz/axes/datetime_breaks.js","../node_modules/devextreme/viz/axes/polar_axes.js","../node_modules/devextreme/viz/axes/constant_line.js","../node_modules/devextreme/viz/axes/strip.js","../node_modules/devextreme/ui/widget/utils.ink_ripple.js","../node_modules/devextreme/ui/widget/selectors.js","../node_modules/devextreme/ui/widget/swatch_container.js","../node_modules/devextreme/viz/axes/axes_constants.js"],"names":["exports","default","_renderer","_interopRequireDefault","require","_action","_dom_component","_short","_common","_iterator","_extend2","_selectors","_array","_type","obj","__esModule","setAttribute","name","value","target","concat","isDefined","toString","attr","Widget","inherit","_feedbackHideTimeout","_feedbackShowTimeout","_supportedKeys","_getDefaultOptions","extend","this","callBase","hoveredElement","isActive","disabled","visible","hint","activeStateEnabled","onContentReady","hoverStateEnabled","focusStateEnabled","tabIndex","accessKey","onFocusIn","onFocusOut","onKeyboardHandled","ignoreParentReadOnly","_init","_initContentReadyAction","_innerWidgetOptionChanged","innerWidget","args","options","getOptionsFromContainer","option","_options","cache","_bindInnerWidgetOptions","optionsContainer","_this","syncOptions","silent","on","_getAriaTarget","_focusTarget","_contentReadyAction","_createActionByOption","excludeValidators","_initMarkup","_this$option","$element","addClass","_toggleDisabledState","_toggleVisibility","_renderHint","_isFocusable","_renderFocusTarget","_render","_renderContent","_renderFocusState","_attachFeedbackEvents","_attachHoverEvents","_toggleIndependentState","_this2","deferRender","_disposed","_renderContentImpl","done","_fireContentReadyAction","noop","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","event","_this3","isDefaultPrevented","beforeExecute","_updateFocusState","_focusOutHandler","_this4","_ref","isFocused","inArray","_toggleFocusClass","length","_hasFocusClass","element","hasClass","_isFocused","_getKeyboardListeners","_this5","_this$option6","hasChildListeners","_keyboardListenerId","keyboard","opts","_keyboardHandler","onlyChildProcessing","originalEvent","keyName","which","keys","func","bind","handler","keyboardListeners","forEach","listener","_refreshFocusState","removeAttr","off","_this6","selector","hover","namespace","_ref2","_hoverStartHandler","_hoverEndHandler","_this7","active","_ref3","_ref4","showTimeout","hideTimeout","focus","NAME","_this8","e","isFocusable","index","el","is","focusable","_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","arguments","_isReady","isReady","repaint","_refresh","trigger","registerKeyHandler","key","currentKeys","Object","defineProperty","enumerable","configurable","writable","_defineProperty","_ref5","fullName","split","pop","_default","module","_error","_errors","ERROR_MESSAGES","E1001","E1002","E1003","E1004","E1005","E1006","E1007","E1010","E1011","E1012","E1016","E1018","E1019","E1020","E1021","E1022","E1023","E1025","E1026","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","_extend","_message","_text_box","_ui","_deferred","searchMode","searchExpr","searchValue","searchEnabled","searchEditorOptions","_renderSearch","searchBoxClassName","_addWidgetPrefix","rootElementClassName","removeClass","_removeSearchBox","editorOptions","_getSearchEditorOptions","_searchEditor","_$searchEditorElement","prependTo","_createComponent","remove","that","userEditorOptions","searchText","format","mode","placeholder","valueChangeEvent","inputAttr","onValueChanged","searchTimeout","_valueChangeDeferred","Deferred","clearTimeout","_valueChangeTimeout","type","setTimeout","resolve","_itemContainer","getOperationBySearchMode","_cleanAria","$target","role","activedescendant","_invalidate","_dataSource","log","searchOperation","load","_typeof","Symbol","iterator","constructor","prototype","Axis","_smart_formatter","_utils","_axes_constants","_format_helper","_parse_utils","_tick_generator","_translator2d","_range","_tick","_math2","_date","_xy_axes","polarMethods","nodeInterop","_getRequireWildcardCache","has","get","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","hasOwnProperty","call","desc","set","_interopRequireWildcard","_constant_line","_strip","_axes_utils","WeakMap","cacheBabelInterop","cacheNodeInterop","convertTicksToValues","_math","Math","_abs","abs","_max","max","_min","min","_isArray","Array","isArray","TOP","top","BOTTOM","bottom","LEFT","left","RIGHT","right","CENTER","center","KEEP","SHIFT","RESET","dateIntervals","getTickGenerator","incidentOccurred","skipTickGeneration","rangeIsEmpty","adjustDivisionFactor","_options$workWeek","allowNegatives","linearThreshold","tickGenerator","axisType","dataType","logBase","logarithmBase","axisDivisionFactor","minorAxisDivisionFactor","numberMultipliers","calculateMinors","minorTick","minorGrid","allowDecimals","endOnTick","firstDayOfWeek","workWeek","skipCalculationLimits","generateExtraTick","minTickInterval","createMajorTick","axis","renderer","skippedCategory","getOptions","tick","grid","createMinorTick","createBoundaryTick","isFirst","showCustomBoundaryTicks","callAction","elements","action","actionArgument1","actionArgument2","initTickCoords","ticks","drawTickMarks","drawGrids","drawLine","updateTicksPosition","animate","updateGridsPosition","cleanUpInvalidTicks","i","removeInvalidTick","coords","x","y","splice","getOptimalAngle","boxes","labelOpt","asin","height","minSpacing","PI","updateLabels","step","getContentContainer","removeLabel","getZoomBoundValue","optionValue","dataValue","renderSettings","_incidentOccurred","_eventTrigger","eventTrigger","_stripsGroup","stripsGroup","_labelAxesGroup","labelAxesGroup","_constantLinesGroup","constantLinesGroup","_scaleBreaksGroup","scaleBreaksGroup","_axesContainerGroup","axesContainerGroup","_gridContainerGroup","gridGroup","_axisCssPrefix","widgetClass","axisClass","_setType","drawingType","_createAxisGroups","_translator","_createTranslator","isArgumentAxis","_viewport","_firstDrawing","_initRange","_getTemplate","getTemplate","_drawAxis","_axisElement","_createAxisElement","_updateAxisElementPosition","width","stroke","color","opacity","sharp","_getSharpParam","getAxisSharpDirection","append","_axisLineGroup","_createPathElement","points","sharpDirection","path","svgElement","customPositionIsAvailable","getOrthogonalAxis","getCustomPosition","getCustomBoundaryPosition","resolveOverlappingForCustomPositioning","hasNonBoundaryPosition","customPositionIsBoundaryOrthogonalAxis","getResolvedBoundaryPosition","position","getSharpDirectionByCoords","canvas","_getCanvasStartEnd","maxCoord","start","end","getRadius","_isHorizontal","_getGridLineDrawer","gridStyle","_getGridPoints","isHorizontal","tickPositionField","orthogonalPositions","_orthogonalPositions","positionFrom","positionTo","borderOptions","canvasStart","canvasEnd","axisCanvas","getCanvas","minDelta","maxDelta","areCoordsOutsideAxis","_getConstantLinePos","parsedValue","_getTranslatedCoord","_getConstantLineGraphicAttributes","_createConstantLine","coord","_drawConstantLineLabelText","text","group","font","cssClass","css","patchFontOptions","label","align","_drawConstantLineLabels","lineLabelOptions","_text","labelOptions","_checkAlignmentConstantLineLabels","formatLabel","_getConstantLineLabelsCoords","_getStripPos","startValue","endValue","range","swap","startCategoryIndex","endCategoryIndex","isContinuous","minVisible","maxVisible","categories","reduce","result","cat","push","valueOf","parsedStartValue","parser","parsedEndValue","from","to","outOfCanvas","validateUnit","stripPosition","visibleArea","getVisibleArea","_getStripGraphicAttributes","fromPoint","toPoint","_createStrip","attrs","rect","_adjustStripLabels","_strips","strip","_getAdjustedStripLabelCoords","_adjustLabelsCoord","offset","maxWidth","checkCanvas","getContainerAttrs","_getLabelAdjustedCoord","labelOffset","_majorTicks","updateMultilineTextAlignment","templateContainer","_adjustLabels","positionsAreConsistent","maxSize","size","bBox","labelRotationAngle","rotateBBox","labelBBox","labelCoords","additionalOffset","indentFromAxis","translateX","translateY","box","getBBox","textAlign","labelAlignment","alignment","isDiscrete","isFlatLabel","labelPosition","axisPosition","_axisPosition","labelX","_createAxisConstantLineGroups","constantLinesClass","insideGroup","g","outsideGroup1","outsideGroup2","inside","outside1","outside2","clear","classSelector","_axisGroup","enableLinks","_axisStripGroup","_axisGridGroup","_axisElementsGroup","linkOn","linkAppend","_axisTitleGroup","_axisConstantLineGroups","above","under","_axisStripLabelGroup","_clearAxisGroups","template","isRendered","_getLabelFormatObject","point","tickInterval","_getViewportRange","formatObject","valueText","smartFormatter","_tickInterval","showTransition","marker","isFunction","customizeText","formatHint","customizeHint","formatRange","interval","_setTickOffset","discreteAxisDivisionMode","_tickOffset","resetApplyingAnimation","isFirstDrawing","_resetApplyingAnimation","getMargins","_that$_options","customPosition","placeholderSize","crosshairMargin","isDefinedCustomPositionOption","boundaryPosition","cLeft","cTop","cRight","cBottom","edgeMarginCorrection","constantLineAboveSeries","constantLineUnderSeries","map","isEmpty","margins","calculateCanvasMargins","moveByOffset","customPositionIsBoundary","unit","idError","parameters","axisTypeMethods","_disposeBreaksGroup","dispose","_title","_axisBreaksGroup","_textOptions","_textFontStyles","_minorTicks","_templatesRendered","reject","setPane","pane","setTypes","typeSelector","_updateTranslator","resetTypes","_initTypes","getTranslator","updateOptions","_labelOptions$minSpac","_TOP$BOTTOM$LEFT$RIGH","_TOP$BOTTOM$LEFT$RIGH2","defaultPosition","secondaryPosition","userAlignment","hoverMode","toLowerCase","argumentType","valueType","validateAxisOptions","title","priority","_hasLabelFormat","logarithmic","logarithmBaseError","_createConstantLines","strips","o","calculateInterval","prevValue","_Range","Range","getBusinessRange","getLogExt","getCanvasRange","translator","translate","_processCanvas","updateCanvas","canvasRedesign","positions","_canvas","_initAxisPositions","getAxisShift","_axisShift","hideTitle","getTitle","hideOuterElements","_outsideConstantLines","_resolveLogarithmicOptionsForRange","addRange","isNaN","adjustViewport","businessRange","discrete","_seriesData","wholeRange","adjustRange","getVizRangeObject","visualRange","getViewport","_addConstantLinesToRange","minDefined","maxDefined","_wholeRange$startValu","_wholeRange$endValue","getCategoriesInfo","adjustedVisualRange","adjustVisualRange","base","isLogarithmic","disabledNegatives","tmp","_getVisualRangeUpdateMode","viewport","newRange","oppositeValue","visualRangeUpdateMode","indexOf","newCategories","c","join","minPoint","minVisiblePoint","maxPoint","maxVisiblePoint","_handleBusinessRangeChanged","oppositeVisualRangeUpdateMode","axisReinitialized","_lastVisualRangeUpdateMode","_prevDataWasEmpty","_setVisualRange","getVisualRangeLength","currentBusinessRange","adjust","getVisualRangeCenter","_this$_options","raiseToExt","categoriesInfo","ceil","setBusinessRange","argCategories","_that$_seriesData$min","_that$_seriesData$max","dataIsEmpty","invert","inverted","synchronizedValue","showZero","correctValueZeroLevel","sortCategories","getCategoriesSorter","userBreaks","_getScaleBreaks","_series","updateBusinessRange","dataRange","minValueField","maxValueField","_insideConstantLines","cl","extendAxis","_dataRange$addRange","getParsedValue","setGroupSeries","series","getLabelsPosition","labelShift","_constantLabelOffset","getFormattedValue","_getBoundaryTicks","majors","viewPort","customBounds","customBoundTicks","addMinMax","_boundaryTicksVisibility","boundaryTicks","setPercentLabelFormat","resetAutoLabelFormat","getMultipleAxesSpacing","multipleAxesSpacing","getTicksValues","majorTicksValues","minorTicksValues","estimateTickInterval","_getTicks","setTicks","majorTicks","_getSkippedCategory","minorTicks","_isSynchronized","_adjustDivisionFactor","val","customTicks","customMinorTicks","isSpacedMargin","_getScreenDelta","overlappingBehavior","forceUserTickInterval","minors","minorTickInterval","minorTickCount","_initialBreaks","_createTicksAndLabelFormat","getDateFormatByTicks","getAggregationInfo","useAllAggregatedPoints","_visualRange$startVal","_visualRange$endValue","_that$_seriesData","marginOptions","_marginOptions","aggregateByCategory","aggregationInterval","aggregationGroupWidth","checkInterval","sizePointNormalState","minInterval","generateTicks","screenDelta","tickGeneratorOptions","breaks","v","configureGenerator","add","getAddFunction","maxMinDistance","dateToMilliseconds","_filterBreaks","breakStyle","_aggregationInterval","createTicks","_estimatedTickInterval","_calculateValueMargins","minValue","maxValue","_boundaryTicks","filter","minor","some","boundary","_minorTickInterval","oldMajorTicks","majorTicksByValues","r","t","sameType","setSkippedCategory","oldMinorTicks","updateValue","_ticksToRemove","k","slice","_t$label","removeTitle","_reinitTranslator","setMarginOptions","getMarginOptions","_this$_marginOptions","_calculateRangeInterval","isDateTime","minArgs","addToArgs","_calculateWorkWeekInterval","apply","businessInterval","workdaysOnly","weekend","_getConvertIntervalCoefficient","intervalInPx","ratioOfCanvasRange","_resetMargins","rangeInterval","minPercentPadding","maxPercentPadding","marginSize","valueMarginsEnabled","minValueMargin","maxValueMargin","minPadding","maxPadding","stubData","startPadding","endPadding","pxInterval","getInterval","isFinite","maxPaddingValue","percentStick","_minValue","_maxValue","_minValue2","_maxValue2","canvasStartEnd","screenDeltaWithMargins","skipViewportExtending","firstTickPosition","lastTickPosition","invertMultiplier","minTickPadding","maxTickPadding","commonPadding","coeff","isInverted","_that$getCorrectedVal","getCorrectedValuesToZero","correctedMin","correctedMax","correctZeroLevel","minExpectedPadding","maxExpectedPadding","applyMargins","br","constantLines","l","draw","_drawTitle","drawGridLine","when","getTemplateDeferred","_dateMarkers","_drawDateMarkers","_measureTitle","measureLabels","_applyWordWrap","_adjustConstantLineLabels","_setLabelsPlacement","_adjustDateMarkers","_adjustTitle","getTemplatesDef","setRenderedState","state","_drawn","convertedTickInterval","textWidth","textHeight","displayMode","_validateDisplayMode","overlappingMode","_validateOverlappingMode","wordWrapMode","wordWrap","overflowMode","textOverflow","usefulSpace","correctByWidth","correctByHeight","setMaxSize","updateSize","updateTitle","_checkTitleOverflow","_updateTitleCoords","animationEnabled","_resetStartCoordinates","updatePosition","prepareAnimation","_updateLabelsPosition","applyClipRects","elementsClipID","canvasClipID","_validateVisualRange","convertVisualRangeObject","_validateOptions","_customVisualRange","beforeCleanGroups","linkRemove","afterCleanGroups","validate","getParser","resetVisualRange","isSilent","handleZooming","allowPartialUpdate","_applyZooming","_resetVisualRangeOption","getZoomStartEventArg","actionType","cancel","_getZoomEndEventArg","previousRange","zoomFactor","shift","rangeStart","rangeEnd","getZoomBounds","secondPriorityRange","setInitRange","getTemplatesGroups","item","setCustomVisualRange","_startValue","_endValue","adjustedRange","_getAdjustedBusinessRange","zoomResults","isPrevented","_visualRange","preventEvents","domEvent","zoomStartEvent","skipEventRising","_storedZoomEndParams","startRange","prevent","handleZoomEnd","previousBusinessRange","typeIsNotChanged","NaN","round","zoomEndEvent","checkZoomingLowerLimitOvercome","stopInteraction","_restorePreviousVisualRange","minZoom","minVisualRangeLength","correctedRange","isOvercoming","beforeVisualRangeLength","afterVisualRangeLength","convert","getRangeByMinZoomValue","canvasLength","fullRange","isExtremePosition","isMax","extremeDataValue","seriesData","extremePoint","visualRangePoint","getFullTicks","sort","a","b","withIndents","widthAxis","indent","viewportRange","maxText","prevLabel","root","notRecastStep","ignoreOverlapping","behavior","rotationAngle","staggeringSpacing","_getStep","_applyLabelMode","_applyLabelOverlapping","array","areLabelsOverlap","_checkBoundedLabelsOverlapping","_checkShiftedLabels","labelHeight","angle","contentContainer","rotate","_getMaxLabelHeight","getMarkerTrackers","coordsIn","Translator2D","update","_getTranslatorOptions","_options$workWeek2","_options$breakStyle$w","_options$breakStyle","shiftZeroValue","semiDiscreteInterval","stick","_getStick","breaksSize","reverse","breaksLength","cumulativeWidth","getSpiderTicks","setSpiderTicks","drawScaleBreaks","_rotateConstantLine","applyVisualRangeSetter","visualRangeSetter","categoriesSortingMethod","diff","getDatesDifferences","typeFormat","getDateFormatByTickInterval","diffFormat","createFormat","getDateFormatByDifferences","values","rangeFormat","stop","getHighAndSelfDiffFormat","_format","_rangeFormat","getHighDiffFormat","highValue","formatDateRange","isObject","dateUnits","sum","dateUnit","processDateInterval","formatOptions","floor","formats","dateUnitIntervals","prevDate","curDate","nextDate","tickFormat","prevDifferences","nextDifferences","dateUnitInterval","j","dateUnitsLength","tickFormatIndex","setDateUnitInterval","millisecond","resetDateUnitInterval","isDateTimeStart","date","unitNumbers","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","unitIndex","differences","intervalIndex","count","getTransitionTickIndex","curDiff","minDiff","nearestTickIndex","splitDecimalNumber","formatter","tickIntervalIndex","tickIndex","actualIndex","separatedTickInterval","datesDifferences","log10Tick","prevDateIndex","nextDateIndex","str","stringTick","precision","indexOfFormat","indexOfTick","getAdjustedLog10","isExponential","getExponent","getPrecision","parseInt","pow","Number","_slicedToArray","arr","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","next","err","return","_iterableToArrayLimit","minLen","_arrayLikeToArray","n","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","len","arr2","convertDateUnitToMilliseconds","math","mathAbs","mathFloor","mathCeil","mathPow","NUMBER_MULTIPLIERS","LOGARITHMIC_MULTIPLIERS","DATETIME_MULTIPLIERS","second","minute","hour","day","week","month","DATETIME_MULTIPLIERS_WITH_BIG_WEEKEND","DATETIME_MINOR_MULTIPLIERS","MINOR_DELIMITERS","getValue","getLogValue","correctValueByInterval","post","correctMinValueByEndOnTick","floorFunc","ceilFunc","resolveEndOnTick","businessViewInfo","forceEndOnTick","floorTickValue","curValue","tickValue","prevTickDataDiff","intervalCount","businessDelta","businessRatio","potentialTickScreenDiff","delimiterFactor","delimiterMultiplier","screenDelimiter","resolveEndOnTickLog","resolveEndOnTickDate","getBusinessDelta","data","spacing","prev","getIntervalByFactor","addTickCount","getMultiplierFactor","factorDelta","calculateTickInterval","forceTickInterval","multipliers","_","onlyIntegers","adjustInterval","factor","m","calculateMinorTickInterval","d","cur","getAdjustIntervalLog","numbersReducer","yearsReducer","years","calculateTickIntervalDateTime","gapSize","adjustIntervalDateTime","getDataTimeMultipliers","calculateMinorTickIntervalDateTime","getTickIntervalByCustomTicks","postProcess","addInterval","isNegative","addIntervalDate","addIntervalWithBreaks","correctValue","breakSize","every","calculateTicks","correctMinValue","gaps","correctTickValue","correctTickValueOnGapSize","calculateMinorTicks","updateTickInterval","maxCount","lastMajor","firstMajor","tickBalance","middleTicks","prevTick","filterTicks","tmpTicks","generator","getMajorTickIntervalByCustomTicks","getMinorTickIntervalByCustomTicks","convertTickInterval","processScaleBreaks","correctUserTickInterval","limit","processCustomTicks","days","generateMajorTicks","minorBusinessDelta","minorScreenDelta","generateMinorTicks","getBaseTick","breakValue","insideTick","getScaleBreaksProcessor","addCorrection","correction","breakTicks","correctValueByIntervalLog","getRound","sign","logarithmicGenerator","raise","raiseTo","absLog","getLog","logAbsValue","absRaise","mathRaiseTo","ceilNumber","getBusinessDeltaLog","__","addIntervalLog","dummyGenerator","discreteGenerator","floorNumber","intervalObject","isString","getDateIntervalByString","divider","quarters","correctDateWithUnitBeginning","floorAtStartDate","Date","getTime","getTimezoneOffset","setFullYear","getFullYear","setMonth","months","setHours","hours","setMinutes","minutes","setSeconds","seconds","calculateTickIntervalByCustomTicks","convertMillisecondsToDateUnits","newValue","dateGenerator","numericGenerator","tickOptions","gridOptions","skipLabels","tickOffset","lineGroup","elementsGroup","tickStyle","getPathStyle","emptyStrRegExp","labelStyle","getLabelFontStyle","fontStyle","customizeColor","fill","createLabelHint","labelHint","setTitle","initCoords","_getTranslatedValue","saveCoords","_lastStoredCoordinates","_storedCoords","_storedLabelsCoords","_getTemplateCoords","resetCoordinates","drawMark","mark","updateTickPosition","category","_updateLine","lineElement","settings","storedSettings","isGridLine","delay","partitionDuration","_rotateTick","_getTickMarkPoints","drawLabel","updateLabelPosition","templateOption","_templateDef","render","model","labelFontStyle","container","onRendered","containerForData","fadeOutElements","startSettings","endSettings","animationSettings","_fadeOutLabel","_fadeInLabel","toBackground","lCoords","_lCoords","textsAlignment","drawGrid","updateGridPosition","_datetime_breaks","getNextDateUnit","TICKS_CORRECTIONS","sortingBreaks","getMarkerFormat","markerInterval","prepareDatesDifferences","getMaxSide","act","getConstantLineLabelMarginForVerticalAlignment","verticalAlignment","getLeftMargin","getRightMargin","linear","maxLabelLength","atan","sin","getDistanceByAngle","getTicksCountInRange","validateOverlappingMode","_markerTrackers","opposite","axisCoord","_customBoundaryPosition","getPredefinedPosition","tickStartCoord","tickOrientation","getTickStartPositionShift","_getTitleCoords","horizontal","fromStartToEnd","_drawTitleText","titleOptions","originalSize","_drawDateMarker","pathElement","markerOptions","textIndent","textLeftIndent","withoutStick","separatorHeight","String","cropped","line","getEnd","hideLabel","hide","hidden","dateMarker","minBound","dateMarkers","markerDate","markersAreaTop","_getLabelFormatOptions","topIndent","getDateUnitInterval","getMarkerInterval","markerDates","dates","origMin","getSequenceByInterval","getMarkerDates","markers","unshift","prevDateMarker","_checkMarkersPosition","dy","textTopIndent","_initializeMarkersTrackers","nextMarker","markerTracker","formatString","markerLabelOptions","_markerLabelOptions","canvasLeft","canvasRight","canvasTop","canvasBottom","verticalCenter","horizontalCenter","maxLabel","linesOptions","paddingTopBottom","paddingLeftRight","labelVerticalAlignment","labelHorizontalAlignment","horizontalAlignment","labelIsInside","_drawConstantLinesForEstimating","_estimateLabelHeight","sinCos","getCosAndSin","cos","estimateMargins","ticksData","constantLineOptions","rootElement","labelIsVisible","labelValue","labelElement","titleElement","constantLinesLabelsElement","labelBox","titleBox","constantLinesBox","titleHeight","margin","constantLinesHeight","padding","stripOptions","labelWidth","boxTitle","loCoord","hiCoord","params","_wrapped","moreThanOriginalSize","restoreText","s","isVisible","seriesRange","hasWrap","getAxisPosition","_getStripLabelCoords","stripLabelOptions","getStripVerticalAlignmentPosition","getStripHorizontalAlignmentPosition","pos1","pos2","currentBreak","newBreak","lastResult","_lastResult$cumulativ","_lastResult$cumulativ2","axisOptions","generateDateBreaks","singleWorkdays","holidays","autoBreaksEnabled","maxAutoBreakCount","getRange","visibleRange","getPointsInViewPort","ranges","edgePoints","curRange","maxRange","generateRangesOnPoints","p","epsilon","_maxAutoBreakCount","generateAutoBreaks","_drawBreak","translatedEnd","breakStart","borderColor","isWaved","spaceAttr","getPoints","rotateLine","drawer","getLineDrawer","_createBreakClipRect","clipRect","clipWidth","_breaksElements","id","_createBreaksGroup","clipFrom","clipTo","customCanvas","additionGroup","additionBreakFrom","additionBreakTo","breakOptions","containerColor","mainGroup","breakCoord","_getSpiderCategoryOption","axesSpacing","constantLinesGroups","shiftGroup","side","currentPosition","orthogonalAxis","resolvedPosition","getResolvedPositionOption","orthogonalTranslator","orthogonalAxisType","validPosition","_categories","positionIsBoundary","_that$getOptions","getCanvasVisibleArea","_options$customPositi","customPositionEqualsToPredefined","_this$_orthogonalPosi","oppositeAxes","overlappingObj","axes","_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","bBoxes","items","dxBarGauge","weekendDayIndices","workDays","indices","workdays","workDay","getNextDayIndex","getWeekEndDayIndices","currentWeekEnd","currentDate","trimTime","getDay","dayBetweenWeekend","setDate","getDaysDistance","generateDateBreaksForWeekend","dayInWeekend","dayIndex","adjustedMin","adjustedMax","holiday","holidayStart","holidayEnd","generateBreaksForHolidays","calculateGaps","exactWorkDays","processWorkDay","workday","separatedBreak","scaleBreak","dayEnd","separateBreak","excludeWorkDaysFromWeekEndBreaks","linearSpider","circularSpider","circular","xyAxesLinear","getPolarQuarter","quarter","normalizeAngle","circularAxes","_this$_getViewportRan","conversionValue","addSpiderCategory","getCenter","_center","_radius","getAngles","startAngle","endAngle","_updateRadius","rad","_updateCenter","circle","cx","cy","firstPointOnStartAngle","originValue","period","numeric","tickOuterLength","radius","_this$_center","labelBoxes","fromAngle","toAngle","innerRadius","outerRadius","arc","cosSin","halfRad","_this$getCenter","angles","_ref$shift","radiusWithTicks","outside","_offset","_maxWidth","labelY","labelAngle","halfWidth","halfHeight","shiftX","shiftY","boxShiftX","boxShiftY","originalLeft","originalRight","originalTop","originalBottom","convertPolarToXY","getTranslatedAngle","convertXYToPolar","maxLabelBox","angle1","angle2","lastVisibleLabelIndex","hideFirstOrLast","_spiderTicks","firstTick","lastTick","nextTick","spiderTicks","centerCoord","pos","getDistance","xy","labelPos","_getGridPointsByRadius","innerPoints","lastStoredCoordinates","storedCoord","valueIsParsed","rootGroup","displayBehindSeries","dashStyle","_getCoord","_drawLabel","stripPos","hideWave","initConfig","showWave","config","useHoldAnimation","waveSizeCoefficient","isCentered","wavesNumber","durations","getDurations","getWaves","inkRipple","children","appendTo","getInkRipple","toArray","$currentWave","$wave","eq","wave","hidingTimeout","hideSelectedWave","elementWidth","outerWidth","elementHeight","outerHeight","elementDiagonal","sqrt","waveSize","pageX","pageY","getWaveStyleConfig","showingTimeout","showingWaveHandler","durationCss","showingScale","hidingScale","hidingOpacity","animationDuration","tabbable","focused","_dom_adapter","focusableFn","parents","nodeName","isTabIndexNotNaN","isDisabled","isDefaultFocus","isHyperlink","isContentEditable","href","getActiveElement","_view_port","getSwatchContainer","swatchContainer","swatchClassRegex","RegExp","swatchClass","className","match","viewportSwatchContainer","vertical","valueKey","horizontalInverted","verticalInverted","width1","width2","hasHorizontalOverlapping","hasVerticalOverlapping"],"mappings":"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","file":"static/js/main~027bc1ed.882c30e7.chunk.js","sourcesContent":["/**\r\n * DevExtreme (ui/widget/ui.widget.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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/ui.errors.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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 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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\r\n return typeof obj\r\n } : function(obj) {\r\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }, _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(nodeInterop) {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cacheBabelInterop = new WeakMap;\r\n var cacheNodeInterop = new WeakMap;\r\n return (_getRequireWildcardCache = function(nodeInterop) {\r\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop\r\n })(nodeInterop)\r\n}\r\n\r\nfunction _interopRequireWildcard(obj, nodeInterop) {\r\n if (!nodeInterop && 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(nodeInterop);\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 (\"default\" !== key && 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 * 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 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 that._checkShiftedLabels(majorTicks, boxes, labelOpt.minSpacing, labelOpt.alignment)\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 _checkShiftedLabels: _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/smart_formatter.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.formatRange = formatRange;\r\nexports.smartFormatter = smartFormatter;\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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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 = null == arr ? null : \"undefined\" !== typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\r\n if (null == _i) {\r\n return\r\n }\r\n var _arr = [];\r\n var _n = true;\r\n var _d = false;\r\n var _s, _e;\r\n try {\r\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\r\n _arr.push(_s.value);\r\n if (i && _arr.length === i) {\r\n break\r\n }\r\n }\r\n } catch (err) {\r\n _d = true;\r\n _e = err\r\n } finally {\r\n try {\r\n if (!_n && null != _i.return) {\r\n _i.return()\r\n }\r\n } finally {\r\n if (_d) {\r\n throw _e\r\n }\r\n }\r\n }\r\n return _arr\r\n}\r\n\r\nfunction _arrayWithHoles(arr) {\r\n if (Array.isArray(arr)) {\r\n return arr\r\n }\r\n}\r\nvar 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))\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))\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))\r\n } else {\r\n if (\"minutes\" in intervalObject) {\r\n value.setMinutes(floorNumber(value.getMinutes(), intervalObject.minutes))\r\n } else {\r\n if (\"seconds\" in intervalObject) {\r\n value.setSeconds(floorNumber(value.getSeconds(), intervalObject.seconds))\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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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 if (this._lastStoredCoordinates) {\r\n this._storedCoords = this._lastStoredCoordinates.coords;\r\n this._storedLabelsCoords = this._lastStoredCoordinates.labelCoords\r\n }\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 && _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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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() {\r\n var that = this;\r\n var seriesData = that._seriesData;\r\n var 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 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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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 (viz/bar_gauge.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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].removeLabel() : majorTicks[lastVisibleLabelIndex].removeLabel()\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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = 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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = 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/utils.ink_ripple.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.hideWave = hideWave;\r\nexports.render = exports.initConfig = void 0;\r\nexports.showWave = showWave;\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 (ui/widget/selectors.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.tabbable = exports.focused = 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/swatch_container.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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 (viz/axes/axes_constants.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _utils = require(\"../core/utils\");\r\nvar _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":""}