{"version":3,"sources":["../node_modules/devextreme/viz/chart_components/base_chart.js","../node_modules/devextreme/viz/chart_components/layout_manager.js","../node_modules/devextreme/viz/chart_components/advanced_chart.js","../node_modules/devextreme/viz/chart_components/crosshair.js","../node_modules/devextreme/viz/bullet.js","../node_modules/devextreme/viz/chart.js","../node_modules/devextreme/viz/chart_components/tracker.js","../node_modules/devextreme/viz/chart_components/multi_axes_synchronizer.js","../node_modules/devextreme/viz/chart_components/scroll_bar.js","../node_modules/devextreme/viz/chart_components/shutter_zoom.js","../node_modules/devextreme/viz/chart_components/zoom_and_pan.js"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","exports","overlapping","BaseChart","_common","require","_events_engine","_interopRequireDefault","_type","_iterator","_extend","_array","_index","_base_widget","_legend","_data_validator","_base_series","_chart_theme_manager","_layout_manager","trackerModule","nodeInterop","__esModule","cache","_getRequireWildcardCache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","hasOwnProperty","call","desc","set","default","_interopRequireWildcard","_utils","_export","_title","_data_source","_tooltip","_loading_indicator","WeakMap","cacheBabelInterop","cacheNodeInterop","_isArray","Array","isArray","ACTIONS_BY_PRIORITY","checkHeightRollingStock","rollingStocks","stubCanvas","canvasSize","end","start","size","forEach","rollingStock","getBoundingRect","width","findAndKillSmallValue","smallestObject","reduce","prev","index","value","getLabels","draw","checkStackOverlap","i","j","iLength","jLength","overlap","length","checkStacksOverlapping","firstRolling","secondRolling","inTwoSides","firstRect","secondRect","oppositeOverlapping","oppositeStart","oppositeEnd","prepareOverlapStacks","currentRollingStock","root","toChain","moveRollingStock","canvas","nextRollingStock","currentBBox","rollingStocksIsOut","setRollingStockInCanvas","RollingStock","label","isRotated","shiftFunction","bBox","x","y","endX","endY","height","this","labels","_bBox","_initialPosition","nextRollingStockBBox","shift","_changeBoxWidth","concat","shiftLength","each","coords","hideInsideLabel","getData","getInitialPosition","resolveLabelOverlappingInOneDirection","points","customSorting","arguments","left","top","right","bottom","hasStackedSeries","p","series","isStackedSeries","isFullStackedSeries","l","isVisible","push","reverse","rollingStocksTmp","slice","sort","a","b","indexOf","inherit","_eventsMap","onSeriesClick","name","onPointClick","onArgumentAxisClick","onLegendClick","onSeriesSelectionChanged","onPointSelectionChanged","onSeriesHoverChanged","onPointHoverChanged","onDone","onZoomStart","onZoomEnd","_fontFields","_rootClassPrefix","_rootClass","_initialChanges","_themeDependentChanges","_getThemeManagerOptions","themeOptions","callBase","apply","options","option","_createThemeManager","chartOption","themeManager","ThemeManager","setTheme","theme","rtlEnabled","_initCore","_canvasClipRect","_renderer","clipRect","_createHtmlStructure","_createLegend","_createTracker","_needHandleRenderComplete","layoutManager","LayoutManager","_createScrollBar","on","_$element","event","isTouchEvent","isPointerEvent","preventDefault","_getLayoutItems","noop","_layoutManagerOptions","_themeManager","getOptions","_reinit","setCanvasValues","_canvas","_reinitAxes","_requestChange","_correctAxes","renderer","createConstantLinesGroup","g","attr","linkOn","_constantLinesGroup","dispose","under","above","linkOff","clear","linkRemove","linkAppend","_backgroundRect","rect","fill","opacity","append","_panesBackgroundGroup","_stripsGroup","_gridGroup","_panesBorderGroup","_axesGroup","_labelAxesGroup","_seriesGroup","_scaleBreaksGroup","_labelsGroup","_crosshairCursorGroup","_legendGroup","_getCanvasClipRectID","enableLinks","_scrollBarGroup","_disposeObjectsInArray","propName","fieldNames","_","item","field","_disposeCore","that","disposeObject","unlinkGroup","disposeObjectsInArray","stopAllAnimations","_userOptions","_groupsData","_getAnimationOptions","_getDefaultSize","_getOption","_applySize","_rect","_changes","_processRefreshData","_resize","_doRender","__renderOptions","animate","isResize","_trackerType","_tracker","seriesGroup","tooltip","legend","eventTrigger","_eventTrigger","_getTrackerSettings","extend","chart","_getSelectionModes","seriesSelectionMode","pointSelectionMode","_updateTracker","trackerCanvases","update","setCanvases","_createCanvasFromRect","currentCanvas","_options","_resetIsReady","drawOptions","_prepareDrawOptions","recreateCanvas","_preserveOriginalCanvas","__currentCanvas","_updateCanvasClipRect","_cleanGroups","startTime","Date","_renderElements","_lastRenderingTime","__originalCanvas","_layoutAxes","argBusinessRange","zoomMinArg","zoomMaxArg","preparedOptions","_prepareToRender","_isRotated","isLegendInside","_isLegendInside","lock","drawLegend","setOptions","layoutTargets","_getLayoutTargets","needSpace","axisDrawOptions","_renderAxes","_shrinkAxes","_applyClipRects","_appendSeriesGroups","_createCrosshairCursor","_ref","_scrollBar","_argumentAxes","getTranslator","getBusinessRange","axisType","categories","min","max","minVisible","maxVisible","init","valueMarginsEnabled","setPosition","_updateLegendPosition","_applyPointMarkersAutoHiding","_renderSeries","unlock","_appendAdditionalSeriesGroups","_calculateSeriesLayout","_renderSeriesElements","hideLayoutLabels","needMoreSpaceForPanesCanvas","keepLabels","_updateSeriesDimensions","_getArgFilter","_getValFilter","_getPointsToAnimation","_this","argViewPortFilter","map","s","valViewPortFilter","getPoints","filter","visible","argument","getMinValue","getMaxValue","singleSeries","seriesLength","resolveLabelOverlapping","pointsToAnimation","_applyExtraSettings","animationPointsLimit","animationEnabled","_getLegendCallBack","_adjustSeriesLabels","_locateLabels","_renderTrackers","repairTooltip","_renderExtraElements","_clearCanvas","_seriesElementsDrawn","_changesApplied","_drawn","_renderCompleteHandler","_resolveLabelOverlapping","func","_resolveLabelOverlappingStack","_resolveLabelOverlappingHide","_resolveLabelOverlappingShift","isFunction","_getVisibleSeries","grep","getAllSeries","currentLabel","nextLabel","currentLabelRect","nextLabelRect","getVisiblePoints","_allowLegendInsidePosition","legendSettings","legendDataField","formatObjectFields","nameField","colorField","indexField","getFormatObject","data","res","id","states","normal","text","textField","getLegendSettings","_legendDataField","Legend","widget","group","backgroundClass","itemGroupClass","titleGroupClass","allowInsidePosition","_updateLegend","_layout","add","legendOptions","legendData","_getLegendData","containerBackgroundColor","_incidentOccurred","title","_change","animationOptions","force","adjustAxes","drawTitle","enabled","maxPointCountSupported","isDefined","newRefreshAction","currentRefreshActionPosition","inArray","_currentRefreshData","newRefreshActionPosition","_getLegendTargets","style","getLegendStyles","textOpacity","opacityStyle","hover","selection","_getLegendOptions","_legendItemTextField","_disposeSeries","seriesIndex","_that$series","splice","_disposeSeriesFamilies","seriesFamilies","family","_optionChanged","arg","resetOptions","_applyChanges","silent","_optionChangesMap","animation","dataSource","palette","paletteExtensionMode","seriesTemplate","valueAxis","argumentAxis","commonAxisSettings","panes","commonPaneSettings","defaultPane","rotated","autoHidePointMarkers","customizePoint","customizeLabel","scrollBar","_optionChangesOrder","_customChangesOrder","_change_ANIMATION","updateAnimationOptions","_change_DATA_SOURCE","_updateDataSource","_change_PALETTE","updatePalette","_refreshSeries","_change_REFRESH_SERIES_DATA_INIT","_change_DATA_INIT","needToPopulateSeries","_dataInit","_change_FORCE_DATA_INIT","_change_REFRESH_SERIES_FAMILIES","_processSeriesFamilies","_populateBusinessRange","_change_FORCE_RENDER","_change_AXES_AND_PANES","_change_ROTATED","_change_REFRESH_SERIES_REINIT","_change_REFRESH_AXES","_change_SCROLL_BAR","_change_REINIT","_change_FORCE_DRAWING","_resetComponentsAnimation","_change_FORCE_FIRST_DRAWING","isFirstDrawing","resetApplyingAnimation","_resetAxesAnimation","actionName","_change_CORRECT_AXIS","_doRefresh","methodName","Math","_dataSourceChangedHandler","_dataSpecificInit","_processSingleSeries","createPoints","_handleSeriesDataUpdated","_this2","some","useAggregation","_populateMarginOptions","needRedraw","_populateSeries","_repopulateSeries","_seriesPopulatedHandlerCore","updateSeries","_forceRender","_dataSourceItems","dataValidatorOptions","_groupSeries","parsedData","validateData","resetPalette","updateData","getArgumentField","allSeriesInited","canRenderCompleteHandle","target","_dataIsReady","_dataIsLoaded","_populateSeriesOptions","particularSeriesOptions","seriesTheme","seriesOptions","processSeriesTemplate","allSeriesOptions","extraOptions","_getExtraOptions","seriesThemes","seriesVisibilityChanged","_specialProcessSeries","getValueAxis","toString","visibilityChanged","incidentOccurred","_checkPaneName","_that$series2","particularSeries","seriesBasis","disposeSeriesFamilies","curSeries","sb","type","clearHover","reverseEach","eventPipe","currentSeries","notify","basis","_that$_argumentAxes$f","_that$_argumentAxes","pane","getArgumentAxis","renderSettings","commonSeriesModes","_getValueAxis","axis","updateOptions","Series","labelsGroup","isUpdated","getStackedPoints","point","stackName","getStackName","stackPoints","getPointsByArg","getSeriesByName","found","getSeriesByPos","pos","clearSelection","hideTooltip","_hideTooltip","render","renderOptions","__forceRender","refresh","_getMinSize","adaptiveLayout","_change_REFRESH","_change_FULL_RENDER","_change_INIT","_stopCurrentHandling","stopCurrentHandling","addPlugin","plugin","_change_TITLE","_consts","_layout_element","floor","sqrt","_min","_max","RADIAL_LABEL_INDENT","radialLabelIndent","getNearestCoord","firstCoord","secondCoord","pointCenterCoord","getLabelLayout","_label","getLayoutOptions","position","getPieRadius","paneCenterX","paneCenterY","accessibleRadius","minR","radiusIsFound","labelBBox","xCoords","yCoords","getLengthFromCenter","getSizeLabels","maxWidth","rWidth","outerLabelsCount","pieLabelSpacing","sizes","rSizes","common","correctLabelRadius","labelSizes","radius","averageWidthLabels","centerX","curRadius","runningWidth","setVisibleArea","getInnerRadius","innerRadius","isNumeric","Number","getAverageLabelWidth","sizeLabels","correctAvailableRadius","availableRadius","fullRadiusWithLabels","getFullRadiusWithLabels","toLayoutElementCoords","WrapperLayoutElement","applyPieChartSeriesLayout","paneSpaceHeight","paneSpaceWidth","piePercentage","minPiePercentage","centerY","radiusInner","radiusOuter","applyEqualPieChartLayout","layout","correctPieLabelRadius","availableLabelWidth","fixedSizeCallback","percentageIsValid","needHorizontalSpace","needVerticalSpace","paneCanvas","minSize","paneSized","needPaneHorizontalSpace","needPaneVerticalSpace","layoutInsideLegend","layoutOptions","cutSide","my","horizontal","vertical","cutLayoutSide","center","of","at","AdvancedChart","_extend2","_range","_base_axis","_series_family","_base_chart","_crosshair","_range_data_calculator","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","enumerable","_objectSpread","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","configurable","writable","prepareAxis","axisOptions","setAxisVisualRangeByOption","isDirectOption","visualRange","skipEventRising","wrappedVisualRange","wrapVisualRange","fullName","allowPartialUpdate","pathElements","split","destElem","COMMON_AXIS_SETTINGS","_partialOptionChangesMap","_customVisualRange","strips","constantLines","_partialOptionChangesPath","_panesClipRects","panesClipRects","_dispose","_disposeAxes","_createPanes","_cleanPanesClipRects","clipArrayName","_getElementsClipRectID","paneName","clipShape","fixed","_getPaneIndex","paneIndex","_updateSize","_populateAxes","_axesReinitialized","_getCrosshairMargins","crosshairOptions","_getCrosshairOptions","crosshairEnabled","margins","getMargins","horizontalLine","verticalLine","argumentAxesPopulatedOptions","paneWithNonVirtualAxis","argumentAxesOptions","valueAxisOption","valueAxesOptions","valueAxesPopulatedOptions","axisNames","valueAxesCounter","crosshairMargins","virtual","_populateAxesOptions","optionPath","crosshairMargin","priority","_axisOptions$panes","axisPanes","unique","_redesignAxes","isArgumentAxes","axesBasis","axes","_valueAxes","opt","curAxes","axisTypes","groupsData","argumentAxisType","argumentType","_groupsData$groups$fi","groups","valueAxisType","valueType","getAxisTypes","setTypes","validate","_disposeAxis","isVirtual","_createAxis","applyVisualRangeSetter","_getVisualRangeSetter","isArgumentAxis","showInLegend","_processValueAxisFormat","drawTrackers","_that$seriesFamilies","paneSeries","types","families","negativesAsZeroes","negativesAsZeros","familyOptions","minBubbleSize","maxBubbleSize","barGroupPadding","barGroupWidth","adjustSeriesValues","_getSeriesForPane","SeriesFamily","updateSeriesValues","adjustSeriesDimensions","getActionCallback","_appendAxesGroups","bubbleSize","panesCount","maxSize","estimateBubbleSize","getSize","argumentMarginOptions","groupSeries","marginOptions","seriesMarginOptions","processBubbleSize","processBubbleMargin","getMarginOptions","mergeMarginOptions","setMarginOptions","updatedAxis","keepRange","argRanges","commonArgRange","Range","getPaneName","groupRange","seriesRange","getRangeData","addRange","val","setGroupSeries","setBusinessRange","_lastVisualRangeUpdateMode","commonInterval","interval","_argRanges$getPaneNam","currentInterval","_getGroupsData","valueOptions","argumentAxes","argumentOptions","_correctValueAxes","axesWithFullStackedFormat","setPercentLabelFormat","resetAutoLabelFormat","typeSelector","userOptions","preparedUserOptions","_prepareStripsAndConstantLines","_prepareAxisOptions","tick","minorTick","getViewPortFilter","renderingSettings","axisClass","widgetClass","stripsGroup","labelAxesGroup","constantLinesGroup","scaleBreaksGroup","axesContainerGroup","gridGroup","getTemplate","_getTemplate","template","_getAxisRenderingOptions","Axis","_applyVisualRangeByVirtualAxes","range","_applyCustomVisualRangeOption","_parseVisualRangeOption","_ref2","setCustomVisualRange","_applyingChanges","_change_VISUAL_RANGE","stripStyle","line","constantLineStyle","drawAxes","checkForMoreSpaceForPanesCanvas","backward","match","parseInt","_setCustomVisualRange","JSON","stringify","axesName","_raiseZoomEndHandlers","handleZoomEnd","_setOptionsByReference","_optionsByReference","_notifyOptionChanged","previousValue","_optionChangedLocker","_notifyVisualRange","axisPath","path","convertVisualRangeObject","rangesAreEqual","_notify","_getAxesForScaling","_getAxesByOptionPath","optionName","sourceAxes","v","getPartialChangeOptionsName","_recreateSizeDependentObjects","resizePanesOnZoom","resetVisualRange","Crosshair","math","mathAbs","abs","mathMin","mathMax","mathFloor","getRectangleBBox","getLabelCheckerPosition","isHorizontal","params","coord","labelCoord","rectangleBBox","delta","_crosshairGroup","_axes","_panes","_prepareOptions","_horizontalGroup","_verticalGroup","_horizontal","_vertical","_circle","direction","lineOptions","stroke","color","dashStyle","_createLines","sharpParam","lines","sharp","verticalOptions","horizontalOptions","circleOptions","circle","_createLabels","hide","background","currentLabelPos","labelOptions","isEmpty","getLabelsPosition","align","backgroundColor","css","patchFontOptions","font","cssClass","side","startXY","_updateText","axisName","textElement","backgroundElement","getFormattedValue","getBBox","_updateLinesCanvas","visibility","_linesCanvas","_updateLines","r","_resetLinesCanvas","_getClipRectForPane","show","pointData","getCrosshairData","getPointRadius","rad","cx","cy","yValue","translateY","xValue","translateX","_default","module","_window","_component_registrator","_utils2","_math","_multi_axes_synchronizer","_advanced_chart","_scroll_bar","_shutter_zoom","_zoom_and_pan","_annotations","DEFAULT_PANES","border","changeVisibilityAxisGrids","gridVisibility","minorGridVisibility","gridOpt","grid","minorGridOpt","minorGrid","compareAxes","doesPaneExist","accumulate","src1","src2","auxSpacing","val1","val2","pickMax","pickMaxValue","getAxisMargins","getHorizontalAxesMargins","getMarginsFunc","_axis$getOrthogonalAx","axisMargins","paneMargins","spacing","getMultipleAxesSpacing","orthogonalAxis","getOrthogonalAxis","customPositionIsAvailable","customPositionIsBoundaryOrthogonalAxis","customPositionEqualsToPredefined","getResolvedBoundaryPosition","getVerticalAxesMargins","performActionOnAxes","action","actionArgument1","actionArgument2","actionArgument3","shrinkCanvases","canvases","verticalMargins","horizontalMargins","getMargin","getMaxMargin","margins1","margins2","getOriginalField","toUpperCase","shrink","paneNames","sizeField","startMargin","endMargin","oppositeMargins","p1","p2","margin","firstPane","emptySpace","space","PANE_PADDING","isRelativeHeightPane","offset","paneSize","drawAxesWithTicks","condition","panesBorderOptions","synchronize","shiftAxis","side1","side2","shifts","getCommonSize","checkUsedSpace","sizeShortage","getMarginFunc","dxChart","_themeSection","paneAxis","_init","_containerInitialHeight","hasWindow","panesNameCounter","drawingType","containerColor","paneList","_initCustomPositioningAxes","valueAxisName","customPositionAxis","customPositionIsBoundary","_getAllAxes","beforeCleanGroups","afterCleanGroups","_axesBoundaryPositioning","allAxes","boundaryStateChanged","prevBoundaryState","_customBoundaryPosition","getCustomBoundaryPosition","valueAxes","valueAxisOptions","findAxis","result","getFirstAxisNameForPane","axInd","findAxisOptions","setPane","needHideGrids","synchronizeMultiAxes","paneWithAxis","axesForPane","axisShown","hiddenStubAxis","minorGridOptions","gridOptions","hideGridsOnNonFirstValueAxisForPane","defaultAxis","axesWithSamePath","oneSeries","_createPanesBorderOptions","commonBorderOptions","scrollBarOptions","scrollBarGroup","ScrollBar","_createPanesBackground","_adjustViewport","adjust","isCanvasChanged","zoomChanged","_isZooming","updateCanvas","_useAllAggregatedPoints","businessRange","zoomRange","getViewport","getLog","base","viewportDistance","getCategoriesInfo","precision","getPrecision","pow","round","_zoomLength","viewport","getArgumentRange","getPosition","_drawPanesBorders","_createClipRectsForPanes","_applyClipRectsForAxes","_fillPanesBackground","legendHasInsidePosition","newCanvas","wideClipRect","wide","setClippingParams","_getPaneBorderVisibility","_updatePanesCanvases","updatePanesCanvases","_normalizePanesHeight","normalizePanesHeight","_renderScaleBreaks","drawScaleBreaks","allSeries","borderCoords","usePointsToDefineAutoHiding","argAxis","markersInfo","filteredSeries","overloadedSeries","argVisualRange","argTranslator","valAxis","valVisualRange","getCanvasRange","valTranslator","sr","seriesPoints","tp","mp","to","pointsCount","total","continuousSeries","collectMarkersInfoBySeries","area","_loop","pointSize","pointsArea","autoHidePointMarkersEnabled","fastHidingPointMarkersByArea","sortingCallback","isContinuousSeries","curPoint","nextPoint","next_x","next_y","distance","updateMarkersInfo","argAxisType","tickCount","getTicksValues","majorTicksValues","isNaN","applyAutoHidePointMarkers","calculateTitlesWidth","getTitle","extendedArgAxes","_isArgumentAxisBeforeScrollBar","verticalAxes","verticalElements","horizontalAxes","horizontalElements","allElements","verticalAxesFirstDrawing","panesCanvases","paneSizes","unit","cleanPanesCanvases","needCustomAdjustAxes","resolveOverlappingForCustomPositioning","vAxesMargins","hAxesMargins","estimateMargins","drawAxesAndSetCanvases","_changesApplying","_estimateTickIntervals","oldTitlesWidth","visibleSeries","axesIsAnimated","sum","count","axisAnimationEnabled","setInitRange","_axis$hasWrap","hasWrap","getCustomPosition","_axisPosition","_getExtraTemplatesItems","elements","_collectTemplatesFromItems","items","launchRequest","setRenderedState","doneRequest","estimateTickInterval","argAxisRightMargin","rightPanesIndent","argAxisBottomMargin","bottomPanesIndent","realSize","customSize","container","containerHasStyledHeight","_forceResize","resize","_setContentSize","_argumentAxis$getOpti","argAxisPosition","argAxisLabelPosition","scrollBarPosition","hasNonBoundaryPosition","_getPanesParameters","parameters","_getCommonCanvas","commonCanvas","defaultBackgroundColor","rects","panesBackground","bc","_calcPaneBorderCoords","borderOptions","segmentRectParams","prepareSegmentRectPoints","pathType","_createClipRect","clipArray","needWideClipRect","isFinancialSeries","areErrorBarsVisible","chartCanvasClipRectID","elementsClipRectID","applyClipRects","commonPaneBorderVisible","paneBorder","_getCanvasForPane","panesNumber","crosshair","stickyHovering","shiftDirection","box","_getStackPoints","stacks","coordPosition","getFigureCenter","getPoint","isInverted","zoomArgument","_initialized","nonVirtualArgumentAxis","getVisibleArgumentBounds","isDiscrete","argumentVisualRange","plugins","core","PieTracker","ChartTracker","_dom_adapter","_click","_pointer","_floor","eventsConsts","events","statesConsts","HOVER_STATE","hoverMark","NORMAL_STATE","normalMark","EVENT_NS","POINTER_ACTION","addNamespace","down","move","LEGEND_HOVER_MODES","dataKey","tryCheckParent","tagName","parentNode","getParentData","node","eventCanceled","cancel","correctHoverMode","mode","hoverMode","baseTrackerPrototype","ctor","tracker","off","showPointTooltip","_showPointTooltip","hidePointTooltip","_hidePointTooltip","_pointerHandler","up","clearTimeout","_holdTimer","_clickHandler","_chart","resetDecorations","noHoveredSeries","hoveredSeries","_hoveredPoint","_storedSeries","_clean","initHatching","pointAtShownTooltip","mainCanvas","paneCanvases","_mainCanvas","_canvases","_showTooltip","_setHoveredPoint","_releaseHoveredPoint","isEnabled","_setHoveredSeries","_releaseHoveredSeries","hoveredPoint","_hoveredArgumentPoints","_resetHoveredArgument","tooltipFormatObject","eventData","getTooltipFormatObject","isShared","valueText","getTooltipParams","getLocation","rootOffset","getRootOffset","callback","pointWithTooltip","_enableOutHandler","_outHandler","handler","e","pageX","pageY","pointInCanvas","isCursorOnTooltip","_pointerOut","_disableOutHandler","getDocument","_triggerLegendClick","eventArgs","elementClick","_hoverLegendItem","getItemByCoord","legendHoverMode","isHovered","lastHoverMode","_hoverArgument","argumentIndex","_getArgumentHoverMode","_hoveredArgument","_argumentIndex","_notifySeries","notifyLegend","_notifyLegendOnHoverArgument","fullState","_series","_getCanvas","getPointByCoord","_isHolding","setTimeout","getMarkerVisibility","coordsIn","_stuckSeries","_hoverArgumentAxis","_isPointerOut","getNeighborPoint","_stickyHovering","_setTimeout","_setStuckSeries","_pointerComplete","pointerType","_pointerOnPoint","_point","_point2","_argumentAxis","_legendClick","_point3","_pointClick","_axisHoverEnabled","normalizeEnum","_rotated","c","_hideCrosshair","_this$_crosshair","_moveCrosshair","_resetTimer","_getSeriesForShared","_point4","d","getDistance","keeper","_timeoutKeeper","_hoverTimeout","_stopEvent","cancelable","stopPropagation","updateHover","getPointsByKeys","_math2","_abs","linearConverter","transform","addInterval","getInterval","tickInterval","logConverter","raiseTo","convertAxisInfo","axisInfo","converter","isLogarithmic","logarithmicBase","tickValues","ticks","minValue","oldMinValue","maxValue","oldMaxValue","getAxisRange","getMainAxisInfo","axesInfo","stubData","getValueAxesPerPanes","paddings","ticksValues","majorTicks","visibleArea","getVisibleArea","_tickInterval","synchronizedValue","breaks","applyMargins","startValue","from","endValue","minorValues","minorTicksValues","minorTickInterval","_minorTickInterval","inverted","invert","populateAxesInfo","maxTicksCount","ticksMultiplier","ticksCount","additionalStartTicksCount","baseTickValue","invertedBaseTickValue","unshift","updateTickValues","mainAxisInfo","mainAxisInfoTickInterval","scale","mainAxisBaseValueOffset","valueFromAxisInfo","correctMinMaxValues","minPadding","maxPadding","startPadding","endPadding","calculatePaddings","info","_info$axis$getCorrect","getCorrectedValuesToZero","correctPaddings","correctMinMaxValuesByPaddings","correctValue","invalidAxisInfo","firstTick","correctedTick","correctAfterSynchronize","hasSynchronizedValue","pop","updateTickValuesIfSynchronizedValueUsed","updateMinorTicks","updateBusinessRange","setTicks","minorTicks","applyMinMaxValues","_translator2d","_drag","_translator","Translator2D","_scroll","_addEvents","_getXCoord","_getYCoord","scrollElement","element","fireEvent","originalEvent","dX","_scale","dY","lx","_offset","_layoutOptions","_applyPosition","canvasLength","isVertical","defaultPosition","rotate","rotateX","rotateY","stick","_translateWithOffset","visibleCategories","updateSize","_that$_scroll$attr","_that$_scroll$attr2","hideTitle","hideOuterElements","translator","minPoint","translate","maxPoint","getScale","x1","x2","getCanvasVisibleArea","DRAG_START_EVENT_NAME","DRAG_UPDATE_EVENT_NAME","DRAG_END_EVENT_NAME","getPointerCoord","y1","y2","shutterZoom","ctx","shutterOptions","shutter","triggerStart","triggerEnd","tr","rangeStart","startCoord","curCoord","rangeEnd","getCanvas","lastPane","immediate","checkCoords","dragHandler","remove","dragEndHandler","_shutterZoom","_wheel","transformEvents","EVENTS_NS","DRAG_EVENT_NAME","PINCH_START_EVENT_NAME","pinchstart","PINCH_EVENT_NAME","pinch","PINCH_END_EVENT_NAME","pinchend","canvasToRect","sortAxes","onlyAxisToNotify","isNotEmptyAxisBusinessRange","axisZoom","getRange","getParameters","actionField","_axis$checkZoomingLow","checkZoomingLowerLimitOvercome","stopInteraction","correctedRange","handleZooming","cancelEvent","startAxesViewportChanging","zoomAndPan","actionData","isPrevented","axesViewportChanging","offsetCalc","centerCalc","zoomAxes","criteria","coordField","zoom","zoomed","getEventScale","getZoomBounds","adjustRange","getVizRangeObject","_axis$checkZoomingLow2","valueOf","isMinPosition","isExtremePosition","isMaxPosition","zoomInEnabled","zoomOutEnabled","panningEnabled","deltaTranslate","storeOffset","storeCenter","argZoom","valZoom","fallback","finishAxesViewportChanging","zoomStarted","prepareActionData","curAxisRect","startCenter","calcCenterForPinch","pointers","calcCenterForDrag","calcOffsetForDrag","preventDefaults","dragStartHandler","isTouch","wantPan","pan","wantZoom","panKeyPressed","panKey","dragToZoom","_cancelPreventDefault","allowTouchGestures","panningVisualRangeEnabled","skipEvent","startCoords","dragBoxStyle","curCanvas","curCoords","zoomArg","zoomVal","deltaOffsetY","deltaOffsetX","panIsEmpty","isNative","_axisZoom","getMinScale","argumentAxesZoomed","pinchStartHandler","pinchHandler","viewportChanged","defineTouchBehavior","pinchEndHandler","cleanup","setup","none","allowMouseWheel","_axisZoom2","targetAxes","axesZoomed","targetCanvas","passive","isDefault","enablePanByValueAxis","enablePanByArgumentAxis","_zoomAndPan","members","_setupZoomAndPan","customize","addChange","code","isThemeDependent","isOptionChange"],"mappings":"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","file":"static/js/main~afce7f97.aa981956.chunk.js","sourcesContent":["/**\r\n * DevExtreme (viz/chart_components/base_chart.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.overlapping = exports.BaseChart = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _base_widget = _interopRequireDefault(require(\"../core/base_widget\"));\r\nvar _legend = require(\"../components/legend\");\r\nvar _data_validator = require(\"../components/data_validator\");\r\nvar _base_series = require(\"../series/base_series\");\r\nvar _chart_theme_manager = require(\"../components/chart_theme_manager\");\r\nvar _layout_manager = require(\"./layout_manager\");\r\nvar trackerModule = _interopRequireWildcard(require(\"./tracker\"));\r\nvar _utils = require(\"../core/utils\");\r\nvar _export = require(\"../core/export\");\r\nvar _title = require(\"../core/title\");\r\nvar _data_source = require(\"../core/data_source\");\r\nvar _tooltip = require(\"../core/tooltip\");\r\nvar _loading_indicator = require(\"../core/loading_indicator\");\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\nvar _isArray = Array.isArray;\r\nvar REINIT_REFRESH_ACTION = \"_reinit\";\r\nvar REINIT_DATA_SOURCE_REFRESH_ACTION = \"_updateDataSource\";\r\nvar DATA_INIT_REFRESH_ACTION = \"_dataInit\";\r\nvar FORCE_RENDER_REFRESH_ACTION = \"_forceRender\";\r\nvar RESIZE_REFRESH_ACTION = \"_resize\";\r\nvar ACTIONS_BY_PRIORITY = [REINIT_REFRESH_ACTION, REINIT_DATA_SOURCE_REFRESH_ACTION, DATA_INIT_REFRESH_ACTION, FORCE_RENDER_REFRESH_ACTION, RESIZE_REFRESH_ACTION];\r\nvar DEFAULT_OPACITY = .3;\r\nvar REFRESH_SERIES_DATA_INIT_ACTION_OPTIONS = [\"series\", \"commonSeriesSettings\", \"dataPrepareSettings\", \"seriesSelectionMode\", \"pointSelectionMode\", \"synchronizeMultiAxes\", \"resolveLabelsOverlapping\"];\r\nvar REFRESH_SERIES_FAMILIES_ACTION_OPTIONS = [\"minBubbleSize\", \"maxBubbleSize\", \"barGroupPadding\", \"barGroupWidth\", \"negativesAsZeroes\", \"negativesAsZeros\"];\r\nvar FORCE_RENDER_REFRESH_ACTION_OPTIONS = [\"adaptiveLayout\", \"crosshair\", \"resolveLabelOverlapping\", \"adjustOnZoom\", \"stickyHovering\"];\r\nvar FONT = \"font\";\r\n\r\nfunction checkHeightRollingStock(rollingStocks, stubCanvas) {\r\n var canvasSize = stubCanvas.end - stubCanvas.start;\r\n var size = 0;\r\n rollingStocks.forEach(function(rollingStock) {\r\n size += rollingStock.getBoundingRect().width\r\n });\r\n while (canvasSize < size) {\r\n size -= findAndKillSmallValue(rollingStocks)\r\n }\r\n}\r\n\r\nfunction findAndKillSmallValue(rollingStocks) {\r\n var smallestObject = rollingStocks.reduce(function(prev, rollingStock, index) {\r\n if (!rollingStock) {\r\n return prev\r\n }\r\n var value = rollingStock.value();\r\n return value < prev.value ? {\r\n value: value,\r\n rollingStock: rollingStock,\r\n index: index\r\n } : prev\r\n }, {\r\n rollingStock: void 0,\r\n value: 1 / 0,\r\n index: void 0\r\n });\r\n smallestObject.rollingStock.getLabels()[0].draw(false);\r\n var width = smallestObject.rollingStock.getBoundingRect().width;\r\n rollingStocks[smallestObject.index] = null;\r\n return width\r\n}\r\n\r\nfunction checkStackOverlap(rollingStocks) {\r\n var i;\r\n var j;\r\n var iLength;\r\n var jLength;\r\n var overlap = false;\r\n for (i = 0, iLength = rollingStocks.length - 1; i < iLength; i++) {\r\n for (j = i + 1, jLength = rollingStocks.length; j < jLength; j++) {\r\n if (i !== j && checkStacksOverlapping(rollingStocks[i], rollingStocks[j], true)) {\r\n overlap = true;\r\n break\r\n }\r\n }\r\n if (overlap) {\r\n break\r\n }\r\n }\r\n return overlap\r\n}\r\n\r\nfunction resolveLabelOverlappingInOneDirection(points, canvas, isRotated, shiftFunction) {\r\n var customSorting = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : function() {\r\n return 0\r\n };\r\n var rollingStocks = [];\r\n var stubCanvas = {\r\n start: isRotated ? canvas.left : canvas.top,\r\n end: isRotated ? canvas.width - canvas.right : canvas.height - canvas.bottom\r\n };\r\n var hasStackedSeries = false;\r\n points.forEach(function(p) {\r\n if (!p) {\r\n return\r\n }\r\n hasStackedSeries = hasStackedSeries || p.series.isStackedSeries() || p.series.isFullStackedSeries();\r\n p.getLabels().forEach(function(l) {\r\n l.isVisible() && rollingStocks.push(new RollingStock(l, isRotated, shiftFunction))\r\n })\r\n });\r\n if (hasStackedSeries) {\r\n !isRotated && rollingStocks.reverse()\r\n } else {\r\n var rollingStocksTmp = rollingStocks.slice();\r\n rollingStocks.sort(function(a, b) {\r\n return customSorting(a, b) || a.getInitialPosition() - b.getInitialPosition() || rollingStocksTmp.indexOf(a) - rollingStocksTmp.indexOf(b)\r\n })\r\n }\r\n if (!checkStackOverlap(rollingStocks)) {\r\n return false\r\n }\r\n checkHeightRollingStock(rollingStocks, stubCanvas);\r\n prepareOverlapStacks(rollingStocks);\r\n rollingStocks.reverse();\r\n moveRollingStock(rollingStocks, stubCanvas);\r\n return true\r\n}\r\n\r\nfunction checkStacksOverlapping(firstRolling, secondRolling, inTwoSides) {\r\n if (!firstRolling || !secondRolling) {\r\n return\r\n }\r\n var firstRect = firstRolling.getBoundingRect();\r\n var secondRect = secondRolling.getBoundingRect();\r\n var oppositeOverlapping = inTwoSides ? firstRect.oppositeStart <= secondRect.oppositeStart && firstRect.oppositeEnd > secondRect.oppositeStart || secondRect.oppositeStart <= firstRect.oppositeStart && secondRect.oppositeEnd > firstRect.oppositeStart : true;\r\n return firstRect.end > secondRect.start && oppositeOverlapping\r\n}\r\n\r\nfunction prepareOverlapStacks(rollingStocks) {\r\n var i;\r\n var currentRollingStock;\r\n var root;\r\n for (i = 0; i < rollingStocks.length - 1; i++) {\r\n currentRollingStock = root || rollingStocks[i];\r\n if (checkStacksOverlapping(currentRollingStock, rollingStocks[i + 1])) {\r\n currentRollingStock.toChain(rollingStocks[i + 1]);\r\n rollingStocks[i + 1] = null;\r\n root = currentRollingStock\r\n } else {\r\n root = rollingStocks[i + 1] || currentRollingStock\r\n }\r\n }\r\n}\r\n\r\nfunction moveRollingStock(rollingStocks, canvas) {\r\n var i;\r\n var j;\r\n var currentRollingStock;\r\n var nextRollingStock;\r\n var currentBBox;\r\n var nextBBox;\r\n for (i = 0; i < rollingStocks.length; i++) {\r\n currentRollingStock = rollingStocks[i];\r\n if (rollingStocksIsOut(currentRollingStock, canvas)) {\r\n currentBBox = currentRollingStock.getBoundingRect();\r\n for (j = i + 1; j < rollingStocks.length; j++) {\r\n nextRollingStock = rollingStocks[j];\r\n if (!nextRollingStock) {\r\n continue\r\n }\r\n nextBBox = nextRollingStock.getBoundingRect();\r\n if (nextBBox.end > currentBBox.start - (currentBBox.end - canvas.end)) {\r\n nextRollingStock.toChain(currentRollingStock);\r\n rollingStocks[i] = currentRollingStock = null;\r\n break\r\n }\r\n }\r\n }\r\n currentRollingStock && currentRollingStock.setRollingStockInCanvas(canvas)\r\n }\r\n}\r\n\r\nfunction rollingStocksIsOut(rollingStock, canvas) {\r\n return rollingStock && rollingStock.getBoundingRect().end > canvas.end\r\n}\r\n\r\nfunction RollingStock(label, isRotated, shiftFunction) {\r\n var bBox = label.getBoundingRect();\r\n var x = bBox.x;\r\n var y = bBox.y;\r\n var endX = bBox.x + bBox.width;\r\n var endY = bBox.y + bBox.height;\r\n this.labels = [label];\r\n this.shiftFunction = shiftFunction;\r\n this._bBox = {\r\n start: isRotated ? x : y,\r\n width: isRotated ? bBox.width : bBox.height,\r\n end: isRotated ? endX : endY,\r\n oppositeStart: isRotated ? y : x,\r\n oppositeEnd: isRotated ? endY : endX\r\n };\r\n this._initialPosition = isRotated ? bBox.x : bBox.y;\r\n return this\r\n}\r\nRollingStock.prototype = {\r\n toChain: function(nextRollingStock) {\r\n var nextRollingStockBBox = nextRollingStock.getBoundingRect();\r\n nextRollingStock.shift(nextRollingStockBBox.start - this._bBox.end);\r\n this._changeBoxWidth(nextRollingStockBBox.width);\r\n this.labels = this.labels.concat(nextRollingStock.labels)\r\n },\r\n getBoundingRect: function() {\r\n return this._bBox\r\n },\r\n shift: function(shiftLength) {\r\n var shiftFunction = this.shiftFunction;\r\n (0, _iterator.each)(this.labels, function(index, label) {\r\n var bBox = label.getBoundingRect();\r\n var coords = shiftFunction(bBox, shiftLength);\r\n if (!label.hideInsideLabel(coords)) {\r\n label.shift(coords.x, coords.y)\r\n }\r\n });\r\n this._bBox.end -= shiftLength;\r\n this._bBox.start -= shiftLength\r\n },\r\n setRollingStockInCanvas: function(canvas) {\r\n if (this._bBox.end > canvas.end) {\r\n this.shift(this._bBox.end - canvas.end)\r\n }\r\n },\r\n getLabels: function() {\r\n return this.labels\r\n },\r\n value: function() {\r\n return this.labels[0].getData().value\r\n },\r\n getInitialPosition: function() {\r\n return this._initialPosition\r\n },\r\n _changeBoxWidth: function(width) {\r\n this._bBox.end += width;\r\n this._bBox.width += width\r\n }\r\n};\r\n\r\nfunction getLegendFields(name) {\r\n return {\r\n nameField: name + \"Name\",\r\n colorField: name + \"Color\",\r\n indexField: name + \"Index\"\r\n }\r\n}\r\n\r\nfunction getLegendSettings(legendDataField) {\r\n var formatObjectFields = getLegendFields(legendDataField);\r\n return {\r\n getFormatObject: function(data) {\r\n var res = {};\r\n res[formatObjectFields.indexField] = data.id;\r\n res[formatObjectFields.colorField] = data.states.normal.fill;\r\n res[formatObjectFields.nameField] = data.text;\r\n return res\r\n },\r\n textField: formatObjectFields.nameField\r\n }\r\n}\r\n\r\nfunction checkOverlapping(firstRect, secondRect) {\r\n return (firstRect.x <= secondRect.x && secondRect.x <= firstRect.x + firstRect.width || firstRect.x >= secondRect.x && firstRect.x <= secondRect.x + secondRect.width) && (firstRect.y <= secondRect.y && secondRect.y <= firstRect.y + firstRect.height || firstRect.y >= secondRect.y && firstRect.y <= secondRect.y + secondRect.height)\r\n}\r\nvar overlapping = {\r\n resolveLabelOverlappingInOneDirection: resolveLabelOverlappingInOneDirection\r\n};\r\nexports.overlapping = overlapping;\r\nvar BaseChart = _base_widget.default.inherit({\r\n _eventsMap: {\r\n onSeriesClick: {\r\n name: \"seriesClick\"\r\n },\r\n onPointClick: {\r\n name: \"pointClick\"\r\n },\r\n onArgumentAxisClick: {\r\n name: \"argumentAxisClick\"\r\n },\r\n onLegendClick: {\r\n name: \"legendClick\"\r\n },\r\n onSeriesSelectionChanged: {\r\n name: \"seriesSelectionChanged\"\r\n },\r\n onPointSelectionChanged: {\r\n name: \"pointSelectionChanged\"\r\n },\r\n onSeriesHoverChanged: {\r\n name: \"seriesHoverChanged\"\r\n },\r\n onPointHoverChanged: {\r\n name: \"pointHoverChanged\"\r\n },\r\n onDone: {\r\n name: \"done\"\r\n },\r\n onZoomStart: {\r\n name: \"zoomStart\"\r\n },\r\n onZoomEnd: {\r\n name: \"zoomEnd\"\r\n }\r\n },\r\n _fontFields: [\"legend.\" + FONT, \"legend.title.\" + FONT, \"legend.title.subtitle.\" + FONT, \"commonSeriesSettings.label.\" + FONT],\r\n _rootClassPrefix: \"dxc\",\r\n _rootClass: \"dxc-chart\",\r\n _initialChanges: [\"INIT\"],\r\n _themeDependentChanges: [\"REFRESH_SERIES_REINIT\"],\r\n _getThemeManagerOptions: function() {\r\n var themeOptions = this.callBase.apply(this, arguments);\r\n themeOptions.options = this.option();\r\n return themeOptions\r\n },\r\n _createThemeManager: function() {\r\n var chartOption = this.option();\r\n var themeManager = new _chart_theme_manager.ThemeManager(this._getThemeManagerOptions());\r\n themeManager.setTheme(chartOption.theme, chartOption.rtlEnabled);\r\n return themeManager\r\n },\r\n _initCore: function() {\r\n var that = this;\r\n that._canvasClipRect = that._renderer.clipRect();\r\n that._createHtmlStructure();\r\n that._createLegend();\r\n that._createTracker();\r\n that._needHandleRenderComplete = true;\r\n that.layoutManager = new _layout_manager.LayoutManager;\r\n that._createScrollBar();\r\n _events_engine.default.on(that._$element, \"contextmenu\", function(event) {\r\n if ((0, _index.isTouchEvent)(event) || (0, _index.isPointerEvent)(event)) {\r\n event.preventDefault()\r\n }\r\n });\r\n _events_engine.default.on(that._$element, \"MSHoldVisual\", function(event) {\r\n event.preventDefault()\r\n })\r\n },\r\n _getLayoutItems: _common.noop,\r\n _layoutManagerOptions: function() {\r\n return this._themeManager.getOptions(\"adaptiveLayout\")\r\n },\r\n _reinit: function() {\r\n var that = this;\r\n (0, _utils.setCanvasValues)(that._canvas);\r\n that._reinitAxes();\r\n that._requestChange([\"DATA_SOURCE\", \"DATA_INIT\", \"CORRECT_AXIS\", \"FULL_RENDER\"])\r\n },\r\n _correctAxes: _common.noop,\r\n _createHtmlStructure: function() {\r\n var that = this;\r\n var renderer = that._renderer;\r\n var root = renderer.root;\r\n var createConstantLinesGroup = function() {\r\n return renderer.g().attr({\r\n \"class\": \"dxc-constant-lines-group\"\r\n }).linkOn(root, \"constant-lines\")\r\n };\r\n that._constantLinesGroup = {\r\n dispose: function() {\r\n this.under.dispose();\r\n this.above.dispose()\r\n },\r\n linkOff: function() {\r\n this.under.linkOff();\r\n this.above.linkOff()\r\n },\r\n clear: function() {\r\n this.under.linkRemove().clear();\r\n this.above.linkRemove().clear()\r\n },\r\n linkAppend: function() {\r\n this.under.linkAppend();\r\n this.above.linkAppend()\r\n }\r\n };\r\n that._backgroundRect = renderer.rect().attr({\r\n fill: \"gray\",\r\n opacity: 1e-4\r\n }).append(root);\r\n that._panesBackgroundGroup = renderer.g().attr({\r\n \"class\": \"dxc-background\"\r\n }).append(root);\r\n that._stripsGroup = renderer.g().attr({\r\n \"class\": \"dxc-strips-group\"\r\n }).linkOn(root, \"strips\");\r\n that._gridGroup = renderer.g().attr({\r\n \"class\": \"dxc-grids-group\"\r\n }).linkOn(root, \"grids\");\r\n that._panesBorderGroup = renderer.g().attr({\r\n \"class\": \"dxc-border\"\r\n }).linkOn(root, \"border\");\r\n that._axesGroup = renderer.g().attr({\r\n \"class\": \"dxc-axes-group\"\r\n }).linkOn(root, \"axes\");\r\n that._labelAxesGroup = renderer.g().attr({\r\n \"class\": \"dxc-strips-labels-group\"\r\n }).linkOn(root, \"strips-labels\");\r\n that._constantLinesGroup.under = createConstantLinesGroup();\r\n that._seriesGroup = renderer.g().attr({\r\n \"class\": \"dxc-series-group\"\r\n }).linkOn(root, \"series\");\r\n that._constantLinesGroup.above = createConstantLinesGroup();\r\n that._scaleBreaksGroup = renderer.g().attr({\r\n \"class\": \"dxc-scale-breaks\"\r\n }).linkOn(root, \"scale-breaks\");\r\n that._labelsGroup = renderer.g().attr({\r\n \"class\": \"dxc-labels-group\"\r\n }).linkOn(root, \"labels\");\r\n that._crosshairCursorGroup = renderer.g().attr({\r\n \"class\": \"dxc-crosshair-cursor\"\r\n }).linkOn(root, \"crosshair\");\r\n that._legendGroup = renderer.g().attr({\r\n \"class\": \"dxc-legend\",\r\n \"clip-path\": that._getCanvasClipRectID()\r\n }).linkOn(root, \"legend\").linkAppend(root).enableLinks();\r\n that._scrollBarGroup = renderer.g().attr({\r\n \"class\": \"dxc-scroll-bar\"\r\n }).linkOn(root, \"scroll-bar\")\r\n },\r\n _disposeObjectsInArray: function(propName, fieldNames) {\r\n (0, _iterator.each)(this[propName] || [], function(_, item) {\r\n if (fieldNames && item) {\r\n (0, _iterator.each)(fieldNames, function(_, field) {\r\n item[field] && item[field].dispose()\r\n })\r\n } else {\r\n item && item.dispose()\r\n }\r\n });\r\n this[propName] = null\r\n },\r\n _disposeCore: function() {\r\n var that = this;\r\n var disposeObject = function(propName) {\r\n if (that[propName]) {\r\n that[propName].dispose();\r\n that[propName] = null\r\n }\r\n };\r\n var unlinkGroup = function(name) {\r\n that[name].linkOff()\r\n };\r\n var disposeObjectsInArray = this._disposeObjectsInArray;\r\n that._renderer.stopAllAnimations();\r\n disposeObjectsInArray.call(that, \"series\");\r\n disposeObject(\"_tracker\");\r\n disposeObject(\"_crosshair\");\r\n that.layoutManager = that._userOptions = that._canvas = that._groupsData = null;\r\n unlinkGroup(\"_stripsGroup\");\r\n unlinkGroup(\"_gridGroup\");\r\n unlinkGroup(\"_axesGroup\");\r\n unlinkGroup(\"_constantLinesGroup\");\r\n unlinkGroup(\"_labelAxesGroup\");\r\n unlinkGroup(\"_panesBorderGroup\");\r\n unlinkGroup(\"_seriesGroup\");\r\n unlinkGroup(\"_labelsGroup\");\r\n unlinkGroup(\"_crosshairCursorGroup\");\r\n unlinkGroup(\"_legendGroup\");\r\n unlinkGroup(\"_scrollBarGroup\");\r\n unlinkGroup(\"_scaleBreaksGroup\");\r\n disposeObject(\"_canvasClipRect\");\r\n disposeObject(\"_panesBackgroundGroup\");\r\n disposeObject(\"_backgroundRect\");\r\n disposeObject(\"_stripsGroup\");\r\n disposeObject(\"_gridGroup\");\r\n disposeObject(\"_axesGroup\");\r\n disposeObject(\"_constantLinesGroup\");\r\n disposeObject(\"_labelAxesGroup\");\r\n disposeObject(\"_panesBorderGroup\");\r\n disposeObject(\"_seriesGroup\");\r\n disposeObject(\"_labelsGroup\");\r\n disposeObject(\"_crosshairCursorGroup\");\r\n disposeObject(\"_legendGroup\");\r\n disposeObject(\"_scrollBarGroup\");\r\n disposeObject(\"_scaleBreaksGroup\")\r\n },\r\n _getAnimationOptions: function() {\r\n return this._themeManager.getOptions(\"animation\")\r\n },\r\n _getDefaultSize: function() {\r\n return {\r\n width: 400,\r\n height: 400\r\n }\r\n },\r\n _getOption: function(name) {\r\n return this._themeManager.getOptions(name)\r\n },\r\n _applySize: function(rect) {\r\n this._rect = rect.slice();\r\n if (!this._changes.has(\"FULL_RENDER\")) {\r\n this._processRefreshData(RESIZE_REFRESH_ACTION)\r\n }\r\n },\r\n _resize: function() {\r\n this._doRender(this.__renderOptions || {\r\n animate: false,\r\n isResize: true\r\n })\r\n },\r\n _trackerType: \"ChartTracker\",\r\n _createTracker: function() {\r\n var that = this;\r\n that._tracker = new trackerModule[that._trackerType]({\r\n seriesGroup: that._seriesGroup,\r\n renderer: that._renderer,\r\n tooltip: that._tooltip,\r\n legend: that._legend,\r\n eventTrigger: that._eventTrigger\r\n })\r\n },\r\n _getTrackerSettings: function() {\r\n return (0, _extend.extend)({\r\n chart: this\r\n }, this._getSelectionModes())\r\n },\r\n _getSelectionModes: function() {\r\n var themeManager = this._themeManager;\r\n return {\r\n seriesSelectionMode: themeManager.getOptions(\"seriesSelectionMode\"),\r\n pointSelectionMode: themeManager.getOptions(\"pointSelectionMode\")\r\n }\r\n },\r\n _updateTracker: function(trackerCanvases) {\r\n var that = this;\r\n that._tracker.update(that._getTrackerSettings());\r\n that._tracker.setCanvases({\r\n left: 0,\r\n right: that._canvas.width,\r\n top: 0,\r\n bottom: that._canvas.height\r\n }, trackerCanvases)\r\n },\r\n _createCanvasFromRect: function(rect) {\r\n var currentCanvas = this._canvas;\r\n return (0, _utils.setCanvasValues)({\r\n left: rect[0],\r\n top: rect[1],\r\n right: currentCanvas.width - rect[2],\r\n bottom: currentCanvas.height - rect[3],\r\n width: currentCanvas.width,\r\n height: currentCanvas.height\r\n })\r\n },\r\n _doRender: function(_options) {\r\n var that = this;\r\n if (0 === that._canvas.width && 0 === that._canvas.height) {\r\n return\r\n }\r\n that._resetIsReady();\r\n var drawOptions = that._prepareDrawOptions(_options);\r\n var recreateCanvas = drawOptions.recreateCanvas;\r\n that._preserveOriginalCanvas();\r\n if (recreateCanvas) {\r\n that.__currentCanvas = that._canvas\r\n } else {\r\n that._canvas = that.__currentCanvas\r\n }\r\n recreateCanvas && that._updateCanvasClipRect(that._canvas);\r\n this._canvas = this._createCanvasFromRect(this._rect);\r\n that._renderer.stopAllAnimations(true);\r\n that._cleanGroups();\r\n var startTime = new Date;\r\n that._renderElements(drawOptions);\r\n that._lastRenderingTime = new Date - startTime\r\n },\r\n _preserveOriginalCanvas: function() {\r\n this.__originalCanvas = this._canvas;\r\n this._canvas = (0, _extend.extend)({}, this._canvas)\r\n },\r\n _layoutAxes: _common.noop,\r\n _renderElements: function(drawOptions) {\r\n var that = this;\r\n var preparedOptions = that._prepareToRender(drawOptions);\r\n var isRotated = that._isRotated();\r\n var isLegendInside = that._isLegendInside();\r\n var trackerCanvases = [];\r\n (0, _extend.extend)({}, that._canvas);\r\n var argBusinessRange;\r\n var zoomMinArg;\r\n var zoomMaxArg;\r\n that._renderer.lock();\r\n if (drawOptions.drawLegend && that._legend) {\r\n that._legendGroup.linkAppend()\r\n }\r\n that.layoutManager.setOptions(that._layoutManagerOptions());\r\n var layoutTargets = that._getLayoutTargets();\r\n this._layoutAxes(function(needSpace) {\r\n var axisDrawOptions = needSpace ? (0, _extend.extend)({}, drawOptions, {\r\n animate: false,\r\n recreateCanvas: true\r\n }) : drawOptions;\r\n var canvas = that._renderAxes(axisDrawOptions, preparedOptions);\r\n that._shrinkAxes(needSpace, canvas)\r\n });\r\n that._applyClipRects(preparedOptions);\r\n that._appendSeriesGroups();\r\n that._createCrosshairCursor();\r\n layoutTargets.forEach(function(_ref) {\r\n var canvas = _ref.canvas;\r\n trackerCanvases.push({\r\n left: canvas.left,\r\n right: canvas.width - canvas.right,\r\n top: canvas.top,\r\n bottom: canvas.height - canvas.bottom\r\n })\r\n });\r\n if (that._scrollBar) {\r\n argBusinessRange = that._argumentAxes[0].getTranslator().getBusinessRange();\r\n if (\"discrete\" === argBusinessRange.axisType && argBusinessRange.categories && argBusinessRange.categories.length <= 1 || \"discrete\" !== argBusinessRange.axisType && argBusinessRange.min === argBusinessRange.max) {\r\n zoomMinArg = zoomMaxArg = void 0\r\n } else {\r\n zoomMinArg = argBusinessRange.minVisible;\r\n zoomMaxArg = argBusinessRange.maxVisible\r\n }\r\n that._scrollBar.init(argBusinessRange, !that._argumentAxes[0].getOptions().valueMarginsEnabled).setPosition(zoomMinArg, zoomMaxArg)\r\n }\r\n that._updateTracker(trackerCanvases);\r\n that._updateLegendPosition(drawOptions, isLegendInside);\r\n that._applyPointMarkersAutoHiding();\r\n that._renderSeries(drawOptions, isRotated, isLegendInside);\r\n that._renderer.unlock()\r\n },\r\n _updateLegendPosition: _common.noop,\r\n _createCrosshairCursor: _common.noop,\r\n _appendSeriesGroups: function() {\r\n this._seriesGroup.linkAppend();\r\n this._labelsGroup.linkAppend();\r\n this._appendAdditionalSeriesGroups()\r\n },\r\n _renderSeries: function(drawOptions, isRotated, isLegendInside) {\r\n this._calculateSeriesLayout(drawOptions, isRotated);\r\n this._renderSeriesElements(drawOptions, isLegendInside)\r\n },\r\n _calculateSeriesLayout: function(drawOptions, isRotated) {\r\n drawOptions.hideLayoutLabels = this.layoutManager.needMoreSpaceForPanesCanvas(this._getLayoutTargets(), isRotated) && !this._themeManager.getOptions(\"adaptiveLayout\").keepLabels;\r\n this._updateSeriesDimensions(drawOptions)\r\n },\r\n _getArgFilter: function() {\r\n return function() {\r\n return true\r\n }\r\n },\r\n _getValFilter: function(series) {\r\n return function() {\r\n return true\r\n }\r\n },\r\n _getPointsToAnimation: function(series) {\r\n var _this = this;\r\n var argViewPortFilter = this._getArgFilter();\r\n return series.map(function(s) {\r\n var valViewPortFilter = _this._getValFilter(s);\r\n return s.getPoints().filter(function(p) {\r\n return p.getOptions().visible && argViewPortFilter(p.argument) && (valViewPortFilter(p.getMinValue(true)) || valViewPortFilter(p.getMaxValue(true)))\r\n }).length\r\n })\r\n },\r\n _renderSeriesElements: function(drawOptions, isLegendInside) {\r\n var that = this;\r\n var i;\r\n var series = that.series;\r\n var singleSeries;\r\n var seriesLength = series.length;\r\n var resolveLabelOverlapping = that._themeManager.getOptions(\"resolveLabelOverlapping\");\r\n var pointsToAnimation = that._getPointsToAnimation(series);\r\n for (i = 0; i < seriesLength; i++) {\r\n singleSeries = series[i];\r\n that._applyExtraSettings(singleSeries, drawOptions);\r\n singleSeries.draw(drawOptions.animate && pointsToAnimation[i] <= drawOptions.animationPointsLimit && that._renderer.animationEnabled(), drawOptions.hideLayoutLabels, that._getLegendCallBack(singleSeries))\r\n }\r\n if (\"none\" === resolveLabelOverlapping) {\r\n that._adjustSeriesLabels(false)\r\n } else {\r\n that._locateLabels(resolveLabelOverlapping)\r\n }\r\n that._renderTrackers(isLegendInside);\r\n that._tracker.repairTooltip();\r\n that._renderExtraElements();\r\n that._clearCanvas();\r\n that._seriesElementsDrawn = true\r\n },\r\n _changesApplied: function() {\r\n var that = this;\r\n if (that._seriesElementsDrawn) {\r\n that._seriesElementsDrawn = false;\r\n that._drawn();\r\n that._renderCompleteHandler()\r\n }\r\n },\r\n _locateLabels: function(resolveLabelOverlapping) {\r\n this._resolveLabelOverlapping(resolveLabelOverlapping)\r\n },\r\n _renderExtraElements: function() {},\r\n _clearCanvas: function() {\r\n this._canvas = this.__originalCanvas\r\n },\r\n _resolveLabelOverlapping: function(resolveLabelOverlapping) {\r\n var func;\r\n switch (resolveLabelOverlapping) {\r\n case \"stack\":\r\n func = this._resolveLabelOverlappingStack;\r\n break;\r\n case \"hide\":\r\n func = this._resolveLabelOverlappingHide;\r\n break;\r\n case \"shift\":\r\n func = this._resolveLabelOverlappingShift\r\n }\r\n return (0, _type.isFunction)(func) && func.call(this)\r\n },\r\n _getVisibleSeries: function() {\r\n return (0, _common.grep)(this.getAllSeries(), function(series) {\r\n return series.isVisible()\r\n })\r\n },\r\n _resolveLabelOverlappingHide: function() {\r\n var labels = [];\r\n var currentLabel;\r\n var nextLabel;\r\n var currentLabelRect;\r\n var nextLabelRect;\r\n var i;\r\n var j;\r\n var points;\r\n var series = this._getVisibleSeries();\r\n for (i = 0; i < series.length; i++) {\r\n points = series[i].getVisiblePoints();\r\n for (j = 0; j < points.length; j++) {\r\n labels.push.apply(labels, points[j].getLabels())\r\n }\r\n }\r\n for (i = 0; i < labels.length; i++) {\r\n currentLabel = labels[i];\r\n if (!currentLabel.isVisible()) {\r\n continue\r\n }\r\n currentLabelRect = currentLabel.getBoundingRect();\r\n for (j = i + 1; j < labels.length; j++) {\r\n nextLabel = labels[j];\r\n nextLabelRect = nextLabel.getBoundingRect();\r\n if (checkOverlapping(currentLabelRect, nextLabelRect)) {\r\n nextLabel.draw(false)\r\n }\r\n }\r\n }\r\n },\r\n _cleanGroups: function() {\r\n var that = this;\r\n that._stripsGroup.linkRemove().clear();\r\n that._gridGroup.linkRemove().clear();\r\n that._axesGroup.linkRemove().clear();\r\n that._constantLinesGroup.above.clear();\r\n that._labelAxesGroup.linkRemove().clear();\r\n that._labelsGroup.linkRemove().clear();\r\n that._crosshairCursorGroup.linkRemove().clear();\r\n that._scaleBreaksGroup.linkRemove().clear()\r\n },\r\n _allowLegendInsidePosition: function() {\r\n return false\r\n },\r\n _createLegend: function() {\r\n var that = this;\r\n var legendSettings = getLegendSettings(that._legendDataField);\r\n that._legend = new _legend.Legend({\r\n renderer: that._renderer,\r\n widget: that,\r\n group: that._legendGroup,\r\n backgroundClass: \"dxc-border\",\r\n itemGroupClass: \"dxc-item\",\r\n titleGroupClass: \"dxc-title\",\r\n textField: legendSettings.textField,\r\n getFormatObject: legendSettings.getFormatObject,\r\n allowInsidePosition: that._allowLegendInsidePosition()\r\n });\r\n that._updateLegend();\r\n that._layout.add(that._legend)\r\n },\r\n _updateLegend: function() {\r\n var that = this;\r\n var themeManager = that._themeManager;\r\n var legendOptions = themeManager.getOptions(\"legend\");\r\n var legendData = that._getLegendData();\r\n legendOptions.containerBackgroundColor = themeManager.getOptions(\"containerBackgroundColor\");\r\n legendOptions._incidentOccurred = that._incidentOccurred;\r\n that._legend.update(legendData, legendOptions, themeManager.theme(\"legend\").title);\r\n this._change([\"LAYOUT\"])\r\n },\r\n _prepareDrawOptions: function(drawOptions) {\r\n var animationOptions = this._getAnimationOptions();\r\n var options = (0, _extend.extend)({}, {\r\n force: false,\r\n adjustAxes: true,\r\n drawLegend: true,\r\n drawTitle: true,\r\n animate: animationOptions.enabled,\r\n animationPointsLimit: animationOptions.maxPointCountSupported\r\n }, drawOptions, this.__renderOptions);\r\n if (!(0, _type.isDefined)(options.recreateCanvas)) {\r\n options.recreateCanvas = options.adjustAxes && options.drawLegend && options.drawTitle\r\n }\r\n return options\r\n },\r\n _processRefreshData: function(newRefreshAction) {\r\n var currentRefreshActionPosition = (0, _array.inArray)(this._currentRefreshData, ACTIONS_BY_PRIORITY);\r\n var newRefreshActionPosition = (0, _array.inArray)(newRefreshAction, ACTIONS_BY_PRIORITY);\r\n if (!this._currentRefreshData || currentRefreshActionPosition >= 0 && newRefreshActionPosition < currentRefreshActionPosition) {\r\n this._currentRefreshData = newRefreshAction\r\n }\r\n this._requestChange([\"REFRESH\"])\r\n },\r\n _getLegendData: function() {\r\n return (0, _utils.map)(this._getLegendTargets(), function(item) {\r\n var legendData = item.legendData;\r\n var style = item.getLegendStyles;\r\n var opacity = style.normal.opacity;\r\n if (!item.visible) {\r\n if (!(0, _type.isDefined)(opacity) || opacity > DEFAULT_OPACITY) {\r\n opacity = DEFAULT_OPACITY\r\n }\r\n legendData.textOpacity = DEFAULT_OPACITY\r\n }\r\n var opacityStyle = {\r\n opacity: opacity\r\n };\r\n legendData.states = {\r\n hover: (0, _extend.extend)({}, style.hover, opacityStyle),\r\n selection: (0, _extend.extend)({}, style.selection, opacityStyle),\r\n normal: (0, _extend.extend)({}, style.normal, opacityStyle)\r\n };\r\n return legendData\r\n })\r\n },\r\n _getLegendOptions: function(item) {\r\n return {\r\n legendData: {\r\n text: item[this._legendItemTextField],\r\n id: item.index,\r\n visible: true\r\n },\r\n getLegendStyles: item.getLegendStyles(),\r\n visible: item.isVisible()\r\n }\r\n },\r\n _disposeSeries: function(seriesIndex) {\r\n var _that$series;\r\n var that = this;\r\n if (that.series) {\r\n if ((0, _type.isDefined)(seriesIndex)) {\r\n that.series[seriesIndex].dispose();\r\n that.series.splice(seriesIndex, 1)\r\n } else {\r\n (0, _iterator.each)(that.series, function(_, s) {\r\n return s.dispose()\r\n });\r\n that.series.length = 0\r\n }\r\n }\r\n if (!(null !== (_that$series = that.series) && void 0 !== _that$series && _that$series.length)) {\r\n that.series = []\r\n }\r\n },\r\n _disposeSeriesFamilies: function() {\r\n var that = this;\r\n (0, _iterator.each)(that.seriesFamilies || [], function(_, family) {\r\n family.dispose()\r\n });\r\n that.seriesFamilies = null;\r\n that._needHandleRenderComplete = true\r\n },\r\n _optionChanged: function(arg) {\r\n this._themeManager.resetOptions(arg.name);\r\n this.callBase.apply(this, arguments)\r\n },\r\n _applyChanges: function() {\r\n var that = this;\r\n that._themeManager.update(that._options.silent());\r\n that.callBase.apply(that, arguments)\r\n },\r\n _optionChangesMap: {\r\n animation: \"ANIMATION\",\r\n dataSource: \"DATA_SOURCE\",\r\n palette: \"PALETTE\",\r\n paletteExtensionMode: \"PALETTE\",\r\n legend: \"FORCE_DATA_INIT\",\r\n seriesTemplate: \"FORCE_DATA_INIT\",\r\n \"export\": \"FORCE_RENDER\",\r\n valueAxis: \"AXES_AND_PANES\",\r\n argumentAxis: \"AXES_AND_PANES\",\r\n commonAxisSettings: \"AXES_AND_PANES\",\r\n panes: \"AXES_AND_PANES\",\r\n commonPaneSettings: \"AXES_AND_PANES\",\r\n defaultPane: \"AXES_AND_PANES\",\r\n containerBackgroundColor: \"AXES_AND_PANES\",\r\n rotated: \"ROTATED\",\r\n autoHidePointMarkers: \"REFRESH_SERIES_REINIT\",\r\n customizePoint: \"REFRESH_SERIES_REINIT\",\r\n customizeLabel: \"REFRESH_SERIES_REINIT\",\r\n scrollBar: \"SCROLL_BAR\"\r\n },\r\n _optionChangesOrder: [\"ROTATED\", \"PALETTE\", \"REFRESH_SERIES_REINIT\", \"AXES_AND_PANES\", \"INIT\", \"REINIT\", \"DATA_SOURCE\", \"REFRESH_SERIES_DATA_INIT\", \"DATA_INIT\", \"FORCE_DATA_INIT\", \"REFRESH_AXES\", \"CORRECT_AXIS\"],\r\n _customChangesOrder: [\"ANIMATION\", \"REFRESH_SERIES_FAMILIES\", \"FORCE_FIRST_DRAWING\", \"FORCE_DRAWING\", \"FORCE_RENDER\", \"VISUAL_RANGE\", \"SCROLL_BAR\", \"REINIT\", \"REFRESH\", \"FULL_RENDER\"],\r\n _change_ANIMATION: function() {\r\n this._renderer.updateAnimationOptions(this._getAnimationOptions())\r\n },\r\n _change_DATA_SOURCE: function() {\r\n this._needHandleRenderComplete = true;\r\n this._updateDataSource()\r\n },\r\n _change_PALETTE: function() {\r\n this._themeManager.updatePalette();\r\n this._refreshSeries(\"DATA_INIT\")\r\n },\r\n _change_REFRESH_SERIES_DATA_INIT: function() {\r\n this._refreshSeries(\"DATA_INIT\")\r\n },\r\n _change_DATA_INIT: function() {\r\n if ((!this.series || this.needToPopulateSeries) && !this._changes.has(\"FORCE_DATA_INIT\")) {\r\n this._dataInit()\r\n }\r\n },\r\n _change_FORCE_DATA_INIT: function() {\r\n this._dataInit()\r\n },\r\n _change_REFRESH_SERIES_FAMILIES: function() {\r\n this._processSeriesFamilies();\r\n this._populateBusinessRange();\r\n this._processRefreshData(FORCE_RENDER_REFRESH_ACTION)\r\n },\r\n _change_FORCE_RENDER: function() {\r\n this._processRefreshData(FORCE_RENDER_REFRESH_ACTION)\r\n },\r\n _change_AXES_AND_PANES: function() {\r\n this._refreshSeries(\"INIT\")\r\n },\r\n _change_ROTATED: function() {\r\n this._createScrollBar();\r\n this._refreshSeries(\"INIT\")\r\n },\r\n _change_REFRESH_SERIES_REINIT: function() {\r\n this._refreshSeries(\"INIT\")\r\n },\r\n _change_REFRESH_AXES: function() {\r\n var that = this;\r\n (0, _utils.setCanvasValues)(that._canvas);\r\n that._reinitAxes();\r\n that._requestChange([\"CORRECT_AXIS\", \"FULL_RENDER\"])\r\n },\r\n _change_SCROLL_BAR: function() {\r\n this._createScrollBar();\r\n this._processRefreshData(FORCE_RENDER_REFRESH_ACTION)\r\n },\r\n _change_REINIT: function() {\r\n this._processRefreshData(REINIT_REFRESH_ACTION)\r\n },\r\n _change_FORCE_DRAWING: function() {\r\n this._resetComponentsAnimation()\r\n },\r\n _change_FORCE_FIRST_DRAWING: function() {\r\n this._resetComponentsAnimation(true)\r\n },\r\n _resetComponentsAnimation: function(isFirstDrawing) {\r\n this.series.forEach(function(s) {\r\n s.resetApplyingAnimation(isFirstDrawing)\r\n });\r\n this._resetAxesAnimation(isFirstDrawing)\r\n },\r\n _resetAxesAnimation: _common.noop,\r\n _refreshSeries: function(actionName) {\r\n this.needToPopulateSeries = true;\r\n this._requestChange([actionName])\r\n },\r\n _change_CORRECT_AXIS: function() {\r\n this._correctAxes()\r\n },\r\n _doRefresh: function() {\r\n var methodName = this._currentRefreshData;\r\n if (methodName) {\r\n this._currentRefreshData = null;\r\n this._renderer.stopAllAnimations(true);\r\n this[methodName]()\r\n }\r\n },\r\n _updateCanvasClipRect: function(canvas) {\r\n var that = this;\r\n var width = Math.max(canvas.width - canvas.left - canvas.right, 0);\r\n var height = Math.max(canvas.height - canvas.top - canvas.bottom, 0);\r\n that._canvasClipRect.attr({\r\n x: canvas.left,\r\n y: canvas.top,\r\n width: width,\r\n height: height\r\n });\r\n that._backgroundRect.attr({\r\n x: canvas.left,\r\n y: canvas.top,\r\n width: width,\r\n height: height\r\n })\r\n },\r\n _getCanvasClipRectID: function() {\r\n return this._canvasClipRect.id\r\n },\r\n _dataSourceChangedHandler: function() {\r\n if (this._changes.has(\"INIT\")) {\r\n this._requestChange([\"DATA_INIT\"])\r\n } else {\r\n this._requestChange([\"FORCE_DATA_INIT\"])\r\n }\r\n },\r\n _dataInit: function() {\r\n this._dataSpecificInit(true)\r\n },\r\n _processSingleSeries: function(singleSeries) {\r\n singleSeries.createPoints(false)\r\n },\r\n _handleSeriesDataUpdated: function() {\r\n var _this2 = this;\r\n if (this._getVisibleSeries().some(function(s) {\r\n return s.useAggregation()\r\n })) {\r\n this._populateMarginOptions()\r\n }\r\n this.series.forEach(function(s) {\r\n return _this2._processSingleSeries(s)\r\n }, this)\r\n },\r\n _dataSpecificInit: function(needRedraw) {\r\n var that = this;\r\n if (!that.series || that.needToPopulateSeries) {\r\n that.series = that._populateSeries()\r\n }\r\n that._repopulateSeries();\r\n that._seriesPopulatedHandlerCore();\r\n that._populateBusinessRange();\r\n that._tracker.updateSeries(that.series, this._changes.has(\"INIT\"));\r\n that._updateLegend();\r\n if (needRedraw) {\r\n this._requestChange([\"FULL_RENDER\"])\r\n }\r\n },\r\n _forceRender: function() {\r\n this._doRender({\r\n force: true\r\n })\r\n },\r\n _repopulateSeries: function() {\r\n var that = this;\r\n var themeManager = that._themeManager;\r\n var data = that._dataSourceItems();\r\n var dataValidatorOptions = themeManager.getOptions(\"dataPrepareSettings\");\r\n var seriesTemplate = themeManager.getOptions(\"seriesTemplate\");\r\n if (seriesTemplate) {\r\n that._populateSeries(data)\r\n }\r\n that._groupSeries();\r\n var parsedData = (0, _data_validator.validateData)(data, that._groupsData, that._incidentOccurred, dataValidatorOptions);\r\n themeManager.resetPalette();\r\n that.series.forEach(function(singleSeries) {\r\n singleSeries.updateData(parsedData[singleSeries.getArgumentField()])\r\n });\r\n that._handleSeriesDataUpdated()\r\n },\r\n _renderCompleteHandler: function() {\r\n var that = this;\r\n var allSeriesInited = true;\r\n if (that._needHandleRenderComplete) {\r\n (0, _iterator.each)(that.series, function(_, s) {\r\n allSeriesInited = allSeriesInited && s.canRenderCompleteHandle()\r\n });\r\n if (allSeriesInited) {\r\n that._needHandleRenderComplete = false;\r\n that._eventTrigger(\"done\", {\r\n target: that\r\n })\r\n }\r\n }\r\n },\r\n _dataIsReady: function() {\r\n return (0, _type.isDefined)(this.option(\"dataSource\")) && this._dataIsLoaded()\r\n },\r\n _populateSeriesOptions: function(data) {\r\n var that = this;\r\n var themeManager = that._themeManager;\r\n var seriesTemplate = themeManager.getOptions(\"seriesTemplate\");\r\n var seriesOptions = seriesTemplate ? (0, _utils.processSeriesTemplate)(seriesTemplate, data || []) : that.option(\"series\");\r\n var allSeriesOptions = _isArray(seriesOptions) ? seriesOptions : seriesOptions ? [seriesOptions] : [];\r\n var extraOptions = that._getExtraOptions();\r\n var particularSeriesOptions;\r\n var seriesTheme;\r\n var seriesThemes = [];\r\n var seriesVisibilityChanged = function(target) {\r\n that._specialProcessSeries();\r\n that._populateBusinessRange(target && target.getValueAxis(), true);\r\n that._renderer.stopAllAnimations(true);\r\n that._updateLegend();\r\n that._requestChange([\"FULL_RENDER\"])\r\n };\r\n for (var i = 0; i < allSeriesOptions.length; i++) {\r\n particularSeriesOptions = (0, _extend.extend)(true, {}, allSeriesOptions[i], extraOptions);\r\n if (!(0, _type.isDefined)(particularSeriesOptions.name) || \"\" === particularSeriesOptions.name) {\r\n particularSeriesOptions.name = \"Series \" + (i + 1).toString()\r\n }\r\n particularSeriesOptions.rotated = that._isRotated();\r\n particularSeriesOptions.customizePoint = themeManager.getOptions(\"customizePoint\");\r\n particularSeriesOptions.customizeLabel = themeManager.getOptions(\"customizeLabel\");\r\n particularSeriesOptions.visibilityChanged = seriesVisibilityChanged;\r\n particularSeriesOptions.incidentOccurred = that._incidentOccurred;\r\n seriesTheme = themeManager.getOptions(\"series\", particularSeriesOptions, allSeriesOptions.length);\r\n if (that._checkPaneName(seriesTheme)) {\r\n seriesThemes.push(seriesTheme)\r\n }\r\n }\r\n return seriesThemes\r\n },\r\n _populateSeries: function(data) {\r\n var _that$series2;\r\n var that = this;\r\n var seriesBasis = [];\r\n var incidentOccurred = that._incidentOccurred;\r\n var seriesThemes = that._populateSeriesOptions(data);\r\n var particularSeries;\r\n var disposeSeriesFamilies = false;\r\n that.needToPopulateSeries = false;\r\n (0, _iterator.each)(seriesThemes, function(_, theme) {\r\n var curSeries = that.series && that.series.filter(function(s) {\r\n return s.name === theme.name && seriesBasis.map(function(sb) {\r\n return sb.series\r\n }).indexOf(s) === -1\r\n })[0];\r\n if (curSeries && curSeries.type === theme.type) {\r\n seriesBasis.push({\r\n series: curSeries,\r\n options: theme\r\n })\r\n } else {\r\n seriesBasis.push({\r\n options: theme\r\n });\r\n disposeSeriesFamilies = true\r\n }\r\n });\r\n 0 !== (null === (_that$series2 = that.series) || void 0 === _that$series2 ? void 0 : _that$series2.length) && that._tracker.clearHover();\r\n (0, _iterator.reverseEach)(that.series, function(index, series) {\r\n if (!seriesBasis.some(function(s) {\r\n return series === s.series\r\n })) {\r\n that._disposeSeries(index);\r\n disposeSeriesFamilies = true\r\n }\r\n });\r\n !disposeSeriesFamilies && (disposeSeriesFamilies = seriesBasis.some(function(sb) {\r\n return sb.series.name !== seriesThemes[sb.series.index].name\r\n }));\r\n that.series = [];\r\n disposeSeriesFamilies && that._disposeSeriesFamilies();\r\n that._themeManager.resetPalette();\r\n var eventPipe = function(data) {\r\n that.series.forEach(function(currentSeries) {\r\n currentSeries.notify(data)\r\n })\r\n };\r\n (0, _iterator.each)(seriesBasis, function(_, basis) {\r\n var _that$_argumentAxes$f, _that$_argumentAxes;\r\n var seriesTheme = basis.options;\r\n var argumentAxis = null !== (_that$_argumentAxes$f = null === (_that$_argumentAxes = that._argumentAxes) || void 0 === _that$_argumentAxes ? void 0 : _that$_argumentAxes.filter(function(a) {\r\n return a.pane === seriesTheme.pane\r\n })[0]) && void 0 !== _that$_argumentAxes$f ? _that$_argumentAxes$f : that.getArgumentAxis();\r\n var renderSettings = {\r\n commonSeriesModes: that._getSelectionModes(),\r\n argumentAxis: argumentAxis,\r\n valueAxis: that._getValueAxis(seriesTheme.pane, seriesTheme.axis)\r\n };\r\n if (basis.series) {\r\n particularSeries = basis.series;\r\n particularSeries.updateOptions(seriesTheme, renderSettings)\r\n } else {\r\n particularSeries = new _base_series.Series((0, _extend.extend)({\r\n renderer: that._renderer,\r\n seriesGroup: that._seriesGroup,\r\n labelsGroup: that._labelsGroup,\r\n eventTrigger: that._eventTrigger,\r\n eventPipe: eventPipe,\r\n incidentOccurred: incidentOccurred\r\n }, renderSettings), seriesTheme)\r\n }\r\n if (!particularSeries.isUpdated) {\r\n incidentOccurred(\"E2101\", [seriesTheme.type])\r\n } else {\r\n particularSeries.index = that.series.length;\r\n that.series.push(particularSeries)\r\n }\r\n });\r\n return that.series\r\n },\r\n getStackedPoints: function(point) {\r\n var stackName = point.series.getStackName();\r\n return this._getVisibleSeries().reduce(function(stackPoints, series) {\r\n if (!(0, _type.isDefined)(series.getStackName()) || !(0, _type.isDefined)(stackName) || stackName === series.getStackName()) {\r\n stackPoints = stackPoints.concat(series.getPointsByArg(point.argument))\r\n }\r\n return stackPoints\r\n }, [])\r\n },\r\n getAllSeries: function() {\r\n return (this.series || []).slice()\r\n },\r\n getSeriesByName: function(name) {\r\n var found = null;\r\n (0, _iterator.each)(this.series, function(i, singleSeries) {\r\n if (singleSeries.name === name) {\r\n found = singleSeries;\r\n return false\r\n }\r\n });\r\n return found\r\n },\r\n getSeriesByPos: function(pos) {\r\n return (this.series || [])[pos]\r\n },\r\n clearSelection: function() {\r\n this._tracker.clearSelection()\r\n },\r\n hideTooltip: function() {\r\n this._tracker._hideTooltip()\r\n },\r\n clearHover: function() {\r\n this._tracker.clearHover()\r\n },\r\n render: function(renderOptions) {\r\n var that = this;\r\n that.__renderOptions = renderOptions;\r\n that.__forceRender = renderOptions && renderOptions.force;\r\n that.callBase.apply(that, arguments);\r\n that.__renderOptions = that.__forceRender = null;\r\n return that\r\n },\r\n refresh: function() {\r\n this._disposeSeries();\r\n this._disposeSeriesFamilies();\r\n this._requestChange([\"CONTAINER_SIZE\", \"REFRESH_SERIES_REINIT\"])\r\n },\r\n _getMinSize: function() {\r\n var adaptiveLayout = this._layoutManagerOptions();\r\n return [adaptiveLayout.width, adaptiveLayout.height]\r\n },\r\n _change_REFRESH: function() {\r\n if (!this._changes.has(\"INIT\")) {\r\n this._doRefresh()\r\n } else {\r\n this._currentRefreshData = null\r\n }\r\n },\r\n _change_FULL_RENDER: function() {\r\n this._forceRender()\r\n },\r\n _change_INIT: function() {\r\n this._reinit()\r\n },\r\n _stopCurrentHandling: function() {\r\n this._tracker.stopCurrentHandling()\r\n }\r\n});\r\nexports.BaseChart = BaseChart;\r\nREFRESH_SERIES_DATA_INIT_ACTION_OPTIONS.forEach(function(name) {\r\n BaseChart.prototype._optionChangesMap[name] = \"REFRESH_SERIES_DATA_INIT\"\r\n});\r\nFORCE_RENDER_REFRESH_ACTION_OPTIONS.forEach(function(name) {\r\n BaseChart.prototype._optionChangesMap[name] = \"FORCE_RENDER\"\r\n});\r\nREFRESH_SERIES_FAMILIES_ACTION_OPTIONS.forEach(function(name) {\r\n BaseChart.prototype._optionChangesMap[name] = \"REFRESH_SERIES_FAMILIES\"\r\n});\r\nBaseChart.addPlugin(_export.plugin);\r\nBaseChart.addPlugin(_title.plugin);\r\nBaseChart.addPlugin(_data_source.plugin);\r\nBaseChart.addPlugin(_tooltip.plugin);\r\nBaseChart.addPlugin(_loading_indicator.plugin);\r\nvar _change_TITLE = BaseChart.prototype._change_TITLE;\r\nBaseChart.prototype._change_TITLE = function() {\r\n _change_TITLE.apply(this, arguments);\r\n this._change([\"FORCE_RENDER\"])\r\n};\r\n","/**\r\n * DevExtreme (viz/chart_components/layout_manager.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.LayoutManager = LayoutManager;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _consts = _interopRequireDefault(require(\"../components/consts\"));\r\nvar _layout_element = require(\"../core/layout_element\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar floor = Math.floor,\r\n sqrt = Math.sqrt;\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar DEFAULT_INNER_RADIUS = .5;\r\nvar RADIAL_LABEL_INDENT = _consts.default.radialLabelIndent;\r\n\r\nfunction getNearestCoord(firstCoord, secondCoord, pointCenterCoord) {\r\n var nearestCoord;\r\n if (pointCenterCoord < firstCoord) {\r\n nearestCoord = firstCoord\r\n } else {\r\n if (secondCoord < pointCenterCoord) {\r\n nearestCoord = secondCoord\r\n } else {\r\n nearestCoord = pointCenterCoord\r\n }\r\n }\r\n return nearestCoord\r\n}\r\n\r\nfunction getLabelLayout(point) {\r\n if (point._label.isVisible() && \"inside\" !== point._label.getLayoutOptions().position) {\r\n return point._label.getBoundingRect()\r\n }\r\n}\r\n\r\nfunction getPieRadius(series, paneCenterX, paneCenterY, accessibleRadius, minR) {\r\n series.some(function(singleSeries) {\r\n return singleSeries.getVisiblePoints().reduce(function(radiusIsFound, point) {\r\n var labelBBox = getLabelLayout(point);\r\n if (labelBBox) {\r\n var xCoords = getNearestCoord(labelBBox.x, labelBBox.x + labelBBox.width, paneCenterX);\r\n var yCoords = getNearestCoord(labelBBox.y, labelBBox.y + labelBBox.height, paneCenterY);\r\n accessibleRadius = _min(_max(getLengthFromCenter(xCoords, yCoords, paneCenterX, paneCenterY) - RADIAL_LABEL_INDENT, minR), accessibleRadius);\r\n radiusIsFound = true\r\n }\r\n return radiusIsFound\r\n }, false)\r\n });\r\n return accessibleRadius\r\n}\r\n\r\nfunction getSizeLabels(series) {\r\n return series.reduce(function(res, singleSeries) {\r\n var maxWidth = singleSeries.getVisiblePoints().reduce(function(width, point) {\r\n var labelBBox = getLabelLayout(point);\r\n if (labelBBox && labelBBox.width > width) {\r\n width = labelBBox.width\r\n }\r\n return width\r\n }, 0);\r\n var rWidth = maxWidth;\r\n if (maxWidth) {\r\n res.outerLabelsCount++;\r\n if (res.outerLabelsCount > 1) {\r\n maxWidth += _consts.default.pieLabelSpacing\r\n }\r\n rWidth += _consts.default.pieLabelSpacing\r\n }\r\n res.sizes.push(maxWidth);\r\n res.rSizes.push(rWidth);\r\n res.common += maxWidth;\r\n return res\r\n }, {\r\n sizes: [],\r\n rSizes: [],\r\n common: 0,\r\n outerLabelsCount: 0\r\n })\r\n}\r\n\r\nfunction correctLabelRadius(labelSizes, radius, series, canvas, averageWidthLabels, centerX) {\r\n var curRadius;\r\n var i;\r\n var runningWidth = 0;\r\n var sizes = labelSizes.sizes;\r\n var rSizes = labelSizes.rSizes;\r\n for (i = 0; i < series.length; i++) {\r\n if (0 === sizes[i]) {\r\n curRadius && (curRadius += rSizes[i - 1]);\r\n continue\r\n }\r\n curRadius = floor(curRadius ? curRadius + rSizes[i - 1] : radius);\r\n series[i].correctLabelRadius(curRadius);\r\n runningWidth += averageWidthLabels || sizes[i];\r\n rSizes[i] = averageWidthLabels || rSizes[i];\r\n series[i].setVisibleArea({\r\n left: floor(centerX - radius - runningWidth),\r\n right: floor(canvas.width - (centerX + radius + runningWidth)),\r\n top: canvas.top,\r\n bottom: canvas.bottom,\r\n width: canvas.width,\r\n height: canvas.height\r\n })\r\n }\r\n}\r\n\r\nfunction getLengthFromCenter(x, y, paneCenterX, paneCenterY) {\r\n return sqrt((x - paneCenterX) * (x - paneCenterX) + (y - paneCenterY) * (y - paneCenterY))\r\n}\r\n\r\nfunction getInnerRadius(_ref) {\r\n var type = _ref.type,\r\n innerRadius = _ref.innerRadius;\r\n return \"pie\" === type ? 0 : (0, _type.isNumeric)(innerRadius) ? Number(innerRadius) : DEFAULT_INNER_RADIUS\r\n}\r\n\r\nfunction LayoutManager() {}\r\n\r\nfunction getAverageLabelWidth(centerX, radius, canvas, sizeLabels) {\r\n return (centerX - radius - RADIAL_LABEL_INDENT - canvas.left) / sizeLabels.outerLabelsCount\r\n}\r\n\r\nfunction getFullRadiusWithLabels(centerX, canvas, sizeLabels) {\r\n return centerX - canvas.left - (sizeLabels.outerLabelsCount > 0 ? sizeLabels.common + RADIAL_LABEL_INDENT : 0)\r\n}\r\n\r\nfunction correctAvailableRadius(availableRadius, canvas, series, minR, paneCenterX, paneCenterY) {\r\n var sizeLabels = getSizeLabels(series);\r\n var averageWidthLabels;\r\n var fullRadiusWithLabels = getFullRadiusWithLabels(paneCenterX, canvas, sizeLabels);\r\n if (fullRadiusWithLabels < minR) {\r\n availableRadius = minR;\r\n averageWidthLabels = getAverageLabelWidth(paneCenterX, availableRadius, canvas, sizeLabels)\r\n } else {\r\n availableRadius = _min(getPieRadius(series, paneCenterX, paneCenterY, availableRadius, minR), fullRadiusWithLabels)\r\n }\r\n correctLabelRadius(sizeLabels, availableRadius + RADIAL_LABEL_INDENT, series, canvas, averageWidthLabels, paneCenterX);\r\n return availableRadius\r\n}\r\n\r\nfunction toLayoutElementCoords(canvas) {\r\n return new _layout_element.WrapperLayoutElement(null, {\r\n x: canvas.left,\r\n y: canvas.top,\r\n width: canvas.width - canvas.left - canvas.right,\r\n height: canvas.height - canvas.top - canvas.bottom\r\n })\r\n}\r\nLayoutManager.prototype = {\r\n constructor: LayoutManager,\r\n setOptions: function(options) {\r\n this._options = options\r\n },\r\n applyPieChartSeriesLayout: function(canvas, series, hideLayoutLabels) {\r\n var paneSpaceHeight = canvas.height - canvas.top - canvas.bottom;\r\n var paneSpaceWidth = canvas.width - canvas.left - canvas.right;\r\n var paneCenterX = paneSpaceWidth / 2 + canvas.left;\r\n var paneCenterY = paneSpaceHeight / 2 + canvas.top;\r\n var piePercentage = this._options.piePercentage;\r\n var availableRadius;\r\n var minR;\r\n if ((0, _type.isNumeric)(piePercentage)) {\r\n availableRadius = minR = piePercentage * _min(canvas.height, canvas.width) / 2\r\n } else {\r\n availableRadius = _min(paneSpaceWidth, paneSpaceHeight) / 2;\r\n minR = this._options.minPiePercentage * availableRadius\r\n }\r\n if (!hideLayoutLabels) {\r\n availableRadius = correctAvailableRadius(availableRadius, canvas, series, minR, paneCenterX, paneCenterY)\r\n }\r\n return {\r\n centerX: floor(paneCenterX),\r\n centerY: floor(paneCenterY),\r\n radiusInner: floor(availableRadius * getInnerRadius(series[0])),\r\n radiusOuter: floor(availableRadius)\r\n }\r\n },\r\n applyEqualPieChartLayout: function(series, layout) {\r\n var radius = layout.radius;\r\n return {\r\n centerX: floor(layout.x),\r\n centerY: floor(layout.y),\r\n radiusInner: floor(radius * getInnerRadius(series[0])),\r\n radiusOuter: floor(radius)\r\n }\r\n },\r\n correctPieLabelRadius: function(series, layout, canvas) {\r\n var sizeLabels = getSizeLabels(series);\r\n var averageWidthLabels;\r\n var radius = layout.radiusOuter + RADIAL_LABEL_INDENT;\r\n var availableLabelWidth = layout.centerX - canvas.left - radius;\r\n if (sizeLabels.common + RADIAL_LABEL_INDENT > availableLabelWidth) {\r\n averageWidthLabels = getAverageLabelWidth(layout.centerX, layout.radiusOuter, canvas, sizeLabels)\r\n }\r\n correctLabelRadius(sizeLabels, radius, series, canvas, averageWidthLabels, layout.centerX)\r\n },\r\n needMoreSpaceForPanesCanvas: function(panes, rotated, fixedSizeCallback) {\r\n var options = this._options;\r\n var width = options.width;\r\n var height = options.height;\r\n var piePercentage = options.piePercentage;\r\n var percentageIsValid = (0, _type.isNumeric)(piePercentage);\r\n var needHorizontalSpace = 0;\r\n var needVerticalSpace = 0;\r\n panes.forEach(function(pane) {\r\n var paneCanvas = pane.canvas;\r\n var minSize = percentageIsValid ? _min(paneCanvas.width, paneCanvas.height) * piePercentage : void 0;\r\n var paneSized = fixedSizeCallback ? fixedSizeCallback(pane) : {\r\n width: false,\r\n height: false\r\n };\r\n var needPaneHorizontalSpace = !paneSized.width ? (percentageIsValid ? minSize : width) - (paneCanvas.width - paneCanvas.left - paneCanvas.right) : 0;\r\n var needPaneVerticalSpace = !paneSized.height ? (percentageIsValid ? minSize : height) - (paneCanvas.height - paneCanvas.top - paneCanvas.bottom) : 0;\r\n if (rotated) {\r\n needHorizontalSpace += needPaneHorizontalSpace > 0 ? needPaneHorizontalSpace : 0;\r\n needVerticalSpace = _max(needPaneVerticalSpace > 0 ? needPaneVerticalSpace : 0, needVerticalSpace)\r\n } else {\r\n needHorizontalSpace = _max(needPaneHorizontalSpace > 0 ? needPaneHorizontalSpace : 0, needHorizontalSpace);\r\n needVerticalSpace += needPaneVerticalSpace > 0 ? needPaneVerticalSpace : 0\r\n }\r\n });\r\n return needHorizontalSpace > 0 || needVerticalSpace > 0 ? {\r\n width: needHorizontalSpace,\r\n height: needVerticalSpace\r\n } : false\r\n },\r\n layoutInsideLegend: function(legend, canvas) {\r\n var inverseAlign = {\r\n left: \"right\",\r\n right: \"left\",\r\n top: \"bottom\",\r\n bottom: \"top\",\r\n center: \"center\"\r\n };\r\n var layoutOptions = legend.getLayoutOptions();\r\n if (!layoutOptions) {\r\n return\r\n }\r\n var position = layoutOptions.position;\r\n var cutSide = layoutOptions.cutSide;\r\n var my = {\r\n horizontal: position.horizontal,\r\n vertical: position.vertical\r\n };\r\n canvas[layoutOptions.cutLayoutSide] += \"horizontal\" === layoutOptions.cutSide ? layoutOptions.width : layoutOptions.height;\r\n my[cutSide] = inverseAlign[my[cutSide]];\r\n legend.position({\r\n of: toLayoutElementCoords(canvas),\r\n my: my,\r\n at: position\r\n })\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/chart_components/advanced_chart.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.AdvancedChart = void 0;\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _range = require(\"../translators/range\");\r\nvar _base_axis = require(\"../axes/base_axis\");\r\nvar _series_family = require(\"../core/series_family\");\r\nvar _base_chart = require(\"./base_chart\");\r\nvar _crosshair = require(\"./crosshair\");\r\nvar _range_data_calculator = _interopRequireDefault(require(\"../series/helpers/range_data_calculator\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _utils = require(\"../core/utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n var keys = Object.keys(object);\r\n if (Object.getOwnPropertySymbols) {\r\n var symbols = Object.getOwnPropertySymbols(object);\r\n enumerableOnly && (symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n })), keys.push.apply(keys, symbols)\r\n }\r\n return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = null != arguments[i] ? arguments[i] : {};\r\n i % 2 ? ownKeys(Object(source), !0).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n })\r\n }\r\n return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\nvar _isArray = Array.isArray;\r\nvar DEFAULT_AXIS_NAME = \"defaultAxisName\";\r\nvar FONT = \"font\";\r\nvar COMMON_AXIS_SETTINGS = \"commonAxisSettings\";\r\nvar DEFAULT_PANE_NAME = \"default\";\r\nvar VISUAL_RANGE = \"VISUAL_RANGE\";\r\n\r\nfunction prepareAxis(axisOptions) {\r\n return _isArray(axisOptions) ? 0 === axisOptions.length ? [{}] : axisOptions : [axisOptions]\r\n}\r\n\r\nfunction processBubbleMargin(opt, bubbleSize) {\r\n if (opt.processBubbleSize) {\r\n opt.size = bubbleSize\r\n }\r\n return opt\r\n}\r\n\r\nfunction estimateBubbleSize(size, panesCount, maxSize, rotated) {\r\n var width = rotated ? size.width / panesCount : size.width;\r\n var height = rotated ? size.height : size.height / panesCount;\r\n return Math.min(width, height) * maxSize\r\n}\r\n\r\nfunction setAxisVisualRangeByOption(arg, axis, isDirectOption, index) {\r\n var options;\r\n var visualRange;\r\n if (isDirectOption) {\r\n visualRange = arg.value;\r\n options = {\r\n skipEventRising: true\r\n };\r\n var wrappedVisualRange = wrapVisualRange(arg.fullName, visualRange);\r\n if (wrappedVisualRange) {\r\n options = {\r\n allowPartialUpdate: true\r\n };\r\n visualRange = wrappedVisualRange\r\n }\r\n } else {\r\n visualRange = ((0, _type.isDefined)(index) ? arg.value[index] : arg.value).visualRange\r\n }\r\n axis.visualRange(visualRange, options)\r\n}\r\n\r\nfunction getAxisTypes(groupsData, axis, isArgumentAxes) {\r\n if (isArgumentAxes) {\r\n return {\r\n argumentAxisType: groupsData.argumentAxisType,\r\n argumentType: groupsData.argumentType\r\n }\r\n }\r\n var _groupsData$groups$fi = groupsData.groups.filter(function(g) {\r\n return g.valueAxis === axis\r\n })[0],\r\n valueAxisType = _groupsData$groups$fi.valueAxisType,\r\n valueType = _groupsData$groups$fi.valueType;\r\n return {\r\n valueAxisType: valueAxisType,\r\n valueType: valueType\r\n }\r\n}\r\n\r\nfunction wrapVisualRange(fullName, value) {\r\n var pathElements = fullName.split(\".\");\r\n var destElem = pathElements[pathElements.length - 1];\r\n if (\"endValue\" === destElem || \"startValue\" === destElem) {\r\n return _defineProperty({}, destElem, value)\r\n }\r\n}\r\nvar AdvancedChart = _base_chart.BaseChart.inherit({\r\n _fontFields: [COMMON_AXIS_SETTINGS + \".label.\" + FONT, COMMON_AXIS_SETTINGS + \".title.\" + FONT],\r\n _partialOptionChangesMap: {\r\n visualRange: VISUAL_RANGE,\r\n _customVisualRange: VISUAL_RANGE,\r\n strips: \"REFRESH_AXES\",\r\n constantLines: \"REFRESH_AXES\"\r\n },\r\n _partialOptionChangesPath: {\r\n argumentAxis: [\"strips\", \"constantLines\", \"visualRange\", \"_customVisualRange\"],\r\n valueAxis: [\"strips\", \"constantLines\", \"visualRange\", \"_customVisualRange\"]\r\n },\r\n _initCore: function() {\r\n this._panesClipRects = {};\r\n this.callBase()\r\n },\r\n _disposeCore: function() {\r\n var disposeObjectsInArray = this._disposeObjectsInArray;\r\n var panesClipRects = this._panesClipRects;\r\n this.callBase();\r\n disposeObjectsInArray.call(panesClipRects, \"fixed\");\r\n disposeObjectsInArray.call(panesClipRects, \"base\");\r\n disposeObjectsInArray.call(panesClipRects, \"wide\");\r\n this._panesClipRects = null\r\n },\r\n _dispose: function() {\r\n var that = this;\r\n var disposeObjectsInArray = this._disposeObjectsInArray;\r\n that.callBase();\r\n that.panes = null;\r\n if (that._legend) {\r\n that._legend.dispose();\r\n that._legend = null\r\n }\r\n disposeObjectsInArray.call(that, \"panesBackground\");\r\n disposeObjectsInArray.call(that, \"seriesFamilies\");\r\n that._disposeAxes()\r\n },\r\n _createPanes: function() {\r\n this._cleanPanesClipRects(\"fixed\");\r\n this._cleanPanesClipRects(\"base\");\r\n this._cleanPanesClipRects(\"wide\")\r\n },\r\n _cleanPanesClipRects: function(clipArrayName) {\r\n var clipArray = this._panesClipRects[clipArrayName];\r\n (clipArray || []).forEach(function(clipRect) {\r\n return clipRect && clipRect.dispose()\r\n });\r\n this._panesClipRects[clipArrayName] = []\r\n },\r\n _getElementsClipRectID: function(paneName) {\r\n var clipShape = this._panesClipRects.fixed[this._getPaneIndex(paneName)];\r\n return clipShape && clipShape.id\r\n },\r\n _getPaneIndex: function(paneName) {\r\n var paneIndex;\r\n var name = paneName || DEFAULT_PANE_NAME;\r\n (0, _iterator.each)(this.panes, function(index, pane) {\r\n if (pane.name === name) {\r\n paneIndex = index;\r\n return false\r\n }\r\n });\r\n return paneIndex\r\n },\r\n _updateSize: function() {\r\n this.callBase();\r\n (0, _utils.setCanvasValues)(this._canvas)\r\n },\r\n _reinitAxes: function() {\r\n this.panes = this._createPanes();\r\n this._populateAxes();\r\n this._axesReinitialized = true\r\n },\r\n _getCrosshairMargins: function() {\r\n var crosshairOptions = this._getCrosshairOptions() || {};\r\n var crosshairEnabled = crosshairOptions.enabled;\r\n var margins = (0, _crosshair.getMargins)();\r\n return {\r\n x: crosshairEnabled && crosshairOptions.horizontalLine.visible ? margins.x : 0,\r\n y: crosshairEnabled && crosshairOptions.verticalLine.visible ? margins.y : 0\r\n }\r\n },\r\n _populateAxes: function() {\r\n var that = this;\r\n var panes = that.panes;\r\n var rotated = that._isRotated();\r\n var argumentAxesOptions = prepareAxis(that.option(\"argumentAxis\") || {})[0];\r\n var valueAxisOption = that.option(\"valueAxis\");\r\n var valueAxesOptions = prepareAxis(valueAxisOption || {});\r\n var argumentAxesPopulatedOptions = [];\r\n var valueAxesPopulatedOptions = [];\r\n var axisNames = [];\r\n var valueAxesCounter = 0;\r\n var paneWithNonVirtualAxis;\r\n var crosshairMargins = that._getCrosshairMargins();\r\n\r\n function getNextAxisName() {\r\n return DEFAULT_AXIS_NAME + valueAxesCounter++\r\n }\r\n if (rotated) {\r\n paneWithNonVirtualAxis = \"right\" === argumentAxesOptions.position ? panes[panes.length - 1].name : panes[0].name\r\n } else {\r\n paneWithNonVirtualAxis = \"top\" === argumentAxesOptions.position ? panes[0].name : panes[panes.length - 1].name\r\n }\r\n argumentAxesPopulatedOptions = (0, _utils.map)(panes, function(pane) {\r\n var virtual = pane.name !== paneWithNonVirtualAxis;\r\n return that._populateAxesOptions(\"argumentAxis\", argumentAxesOptions, {\r\n pane: pane.name,\r\n name: null,\r\n optionPath: \"argumentAxis\",\r\n crosshairMargin: rotated ? crosshairMargins.x : crosshairMargins.y\r\n }, rotated, virtual)\r\n });\r\n (0, _iterator.each)(valueAxesOptions, function(priority, axisOptions) {\r\n var _axisOptions$panes;\r\n var axisPanes = [];\r\n var name = axisOptions.name;\r\n if (name && (0, _array.inArray)(name, axisNames) !== -1) {\r\n that._incidentOccurred(\"E2102\");\r\n return\r\n }\r\n name && axisNames.push(name);\r\n if (axisOptions.pane) {\r\n axisPanes.push(axisOptions.pane)\r\n }\r\n if (null !== (_axisOptions$panes = axisOptions.panes) && void 0 !== _axisOptions$panes && _axisOptions$panes.length) {\r\n axisPanes = axisPanes.concat(axisOptions.panes.slice(0))\r\n }\r\n axisPanes = (0, _utils.unique)(axisPanes);\r\n if (!axisPanes.length) {\r\n axisPanes.push(void 0)\r\n }(0, _iterator.each)(axisPanes, function(_, pane) {\r\n var optionPath = _isArray(valueAxisOption) ? \"valueAxis[\".concat(priority, \"]\") : \"valueAxis\";\r\n valueAxesPopulatedOptions.push(that._populateAxesOptions(\"valueAxis\", axisOptions, {\r\n name: name || getNextAxisName(),\r\n pane: pane,\r\n priority: priority,\r\n optionPath: optionPath,\r\n crosshairMargin: rotated ? crosshairMargins.y : crosshairMargins.x\r\n }, rotated))\r\n })\r\n });\r\n that._redesignAxes(argumentAxesPopulatedOptions, true, paneWithNonVirtualAxis);\r\n that._redesignAxes(valueAxesPopulatedOptions, false)\r\n },\r\n _redesignAxes: function(options, isArgumentAxes, paneWithNonVirtualAxis) {\r\n var that = this;\r\n var axesBasis = [];\r\n var axes = isArgumentAxes ? that._argumentAxes : that._valueAxes;\r\n (0, _iterator.each)(options, function(_, opt) {\r\n var curAxes = axes && axes.filter(function(a) {\r\n return a.name === opt.name && (!(0, _type.isDefined)(opt.pane) && that.panes.some(function(p) {\r\n return p.name === a.pane\r\n }) || a.pane === opt.pane)\r\n });\r\n if (curAxes && curAxes.length > 0) {\r\n (0, _iterator.each)(curAxes, function(_, axis) {\r\n var axisTypes = getAxisTypes(that._groupsData, axis, isArgumentAxes);\r\n axis.updateOptions(opt);\r\n if (isArgumentAxes) {\r\n axis.setTypes(axisTypes.argumentAxisType, axisTypes.argumentType, \"argumentType\")\r\n } else {\r\n axis.setTypes(axisTypes.valueAxisType, axisTypes.valueType, \"valueType\")\r\n }\r\n axis.validate();\r\n axesBasis.push({\r\n axis: axis\r\n })\r\n })\r\n } else {\r\n axesBasis.push({\r\n options: opt\r\n })\r\n }\r\n });\r\n if (axes) {\r\n (0, _iterator.reverseEach)(axes, function(index, axis) {\r\n if (!axesBasis.some(function(basis) {\r\n return basis.axis && basis.axis === axis\r\n })) {\r\n that._disposeAxis(index, isArgumentAxes)\r\n }\r\n })\r\n } else {\r\n if (isArgumentAxes) {\r\n axes = that._argumentAxes = []\r\n } else {\r\n axes = that._valueAxes = []\r\n }\r\n }(0, _iterator.each)(axesBasis, function(_, basis) {\r\n var axis = basis.axis;\r\n if (basis.axis && isArgumentAxes) {\r\n basis.axis.isVirtual = basis.axis.pane !== paneWithNonVirtualAxis\r\n } else {\r\n if (basis.options) {\r\n axis = that._createAxis(isArgumentAxes, basis.options, isArgumentAxes ? basis.options.pane !== paneWithNonVirtualAxis : void 0);\r\n axes.push(axis)\r\n }\r\n }\r\n axis.applyVisualRangeSetter(that._getVisualRangeSetter())\r\n })\r\n },\r\n _disposeAxis: function(index, isArgumentAxis) {\r\n var axes = isArgumentAxis ? this._argumentAxes : this._valueAxes;\r\n var axis = axes[index];\r\n if (!axis) {\r\n return\r\n }\r\n axis.dispose();\r\n axes.splice(index, 1)\r\n },\r\n _disposeAxes: function() {\r\n var that = this;\r\n var disposeObjectsInArray = that._disposeObjectsInArray;\r\n disposeObjectsInArray.call(that, \"_argumentAxes\");\r\n disposeObjectsInArray.call(that, \"_valueAxes\")\r\n },\r\n _appendAdditionalSeriesGroups: function() {\r\n this._crosshairCursorGroup.linkAppend();\r\n this._scrollBar && this._scrollBarGroup.linkAppend()\r\n },\r\n _getLegendTargets: function() {\r\n var _this = this;\r\n return (this.series || []).map(function(s) {\r\n var item = _this._getLegendOptions(s);\r\n item.legendData.series = s;\r\n if (!s.getOptions().showInLegend) {\r\n item.legendData.visible = false\r\n }\r\n return item\r\n })\r\n },\r\n _legendItemTextField: \"name\",\r\n _seriesPopulatedHandlerCore: function() {\r\n this._processSeriesFamilies();\r\n this._processValueAxisFormat()\r\n },\r\n _renderTrackers: function() {\r\n var that = this;\r\n var i;\r\n for (i = 0; i < that.series.length; ++i) {\r\n that.series[i].drawTrackers()\r\n }\r\n },\r\n _specialProcessSeries: function() {\r\n this._processSeriesFamilies()\r\n },\r\n _processSeriesFamilies: function() {\r\n var _that$seriesFamilies;\r\n var that = this;\r\n var types = [];\r\n var families = [];\r\n var paneSeries;\r\n var themeManager = that._themeManager;\r\n var negativesAsZeroes = themeManager.getOptions(\"negativesAsZeroes\");\r\n var negativesAsZeros = themeManager.getOptions(\"negativesAsZeros\");\r\n var familyOptions = {\r\n minBubbleSize: themeManager.getOptions(\"minBubbleSize\"),\r\n maxBubbleSize: themeManager.getOptions(\"maxBubbleSize\"),\r\n barGroupPadding: themeManager.getOptions(\"barGroupPadding\"),\r\n barGroupWidth: themeManager.getOptions(\"barGroupWidth\"),\r\n negativesAsZeroes: (0, _type.isDefined)(negativesAsZeroes) ? negativesAsZeroes : negativesAsZeros\r\n };\r\n if (null !== (_that$seriesFamilies = that.seriesFamilies) && void 0 !== _that$seriesFamilies && _that$seriesFamilies.length) {\r\n (0, _iterator.each)(that.seriesFamilies, function(_, family) {\r\n family.updateOptions(familyOptions);\r\n family.adjustSeriesValues()\r\n });\r\n return\r\n }(0, _iterator.each)(that.series, function(_, item) {\r\n if ((0, _array.inArray)(item.type, types) === -1) {\r\n types.push(item.type)\r\n }\r\n });\r\n (0, _iterator.each)(that._getLayoutTargets(), function(_, pane) {\r\n paneSeries = that._getSeriesForPane(pane.name);\r\n (0, _iterator.each)(types, function(_, type) {\r\n var family = new _series_family.SeriesFamily({\r\n type: type,\r\n pane: pane.name,\r\n minBubbleSize: familyOptions.minBubbleSize,\r\n maxBubbleSize: familyOptions.maxBubbleSize,\r\n barGroupPadding: familyOptions.barGroupPadding,\r\n barGroupWidth: familyOptions.barGroupWidth,\r\n negativesAsZeroes: familyOptions.negativesAsZeroes,\r\n rotated: that._isRotated()\r\n });\r\n family.add(paneSeries);\r\n family.adjustSeriesValues();\r\n families.push(family)\r\n })\r\n });\r\n that.seriesFamilies = families\r\n },\r\n _updateSeriesDimensions: function() {\r\n var that = this;\r\n var i;\r\n var seriesFamilies = that.seriesFamilies || [];\r\n for (i = 0; i < seriesFamilies.length; i++) {\r\n var family = seriesFamilies[i];\r\n family.updateSeriesValues();\r\n family.adjustSeriesDimensions()\r\n }\r\n },\r\n _getLegendCallBack: function(series) {\r\n return this._legend && this._legend.getActionCallback(series)\r\n },\r\n _appendAxesGroups: function() {\r\n var that = this;\r\n that._stripsGroup.linkAppend();\r\n that._gridGroup.linkAppend();\r\n that._axesGroup.linkAppend();\r\n that._constantLinesGroup.linkAppend();\r\n that._labelAxesGroup.linkAppend();\r\n that._scaleBreaksGroup.linkAppend()\r\n },\r\n _populateMarginOptions: function() {\r\n var that = this;\r\n var bubbleSize = estimateBubbleSize(that.getSize(), that.panes.length, that._themeManager.getOptions(\"maxBubbleSize\"), that._isRotated());\r\n var argumentMarginOptions = {};\r\n that._valueAxes.forEach(function(valueAxis) {\r\n var groupSeries = that.series.filter(function(series) {\r\n return series.getValueAxis() === valueAxis\r\n });\r\n var marginOptions = {};\r\n groupSeries.forEach(function(series) {\r\n if (series.isVisible()) {\r\n var seriesMarginOptions = processBubbleMargin(series.getMarginOptions(), bubbleSize);\r\n marginOptions = (0, _utils.mergeMarginOptions)(marginOptions, seriesMarginOptions);\r\n argumentMarginOptions = (0, _utils.mergeMarginOptions)(argumentMarginOptions, seriesMarginOptions)\r\n }\r\n });\r\n valueAxis.setMarginOptions(marginOptions)\r\n });\r\n that._argumentAxes.forEach(function(a) {\r\n return a.setMarginOptions(argumentMarginOptions)\r\n })\r\n },\r\n _populateBusinessRange: function(updatedAxis, keepRange) {\r\n var that = this;\r\n var rotated = that._isRotated();\r\n var series = that._getVisibleSeries();\r\n var argRanges = {};\r\n var commonArgRange = new _range.Range({\r\n rotated: !!rotated\r\n });\r\n var getPaneName = function(axis) {\r\n return axis.pane || DEFAULT_PANE_NAME\r\n };\r\n that.panes.forEach(function(p) {\r\n return argRanges[p.name] = new _range.Range({\r\n rotated: !!rotated\r\n })\r\n });\r\n that._valueAxes.forEach(function(valueAxis) {\r\n var groupRange = new _range.Range({\r\n rotated: !!rotated,\r\n pane: valueAxis.pane,\r\n axis: valueAxis.name\r\n });\r\n var groupSeries = series.filter(function(series) {\r\n return series.getValueAxis() === valueAxis\r\n });\r\n groupSeries.forEach(function(series) {\r\n var seriesRange = series.getRangeData();\r\n groupRange.addRange(seriesRange.val);\r\n argRanges[getPaneName(valueAxis)].addRange(seriesRange.arg)\r\n });\r\n if (!updatedAxis || updatedAxis && groupSeries.length && valueAxis === updatedAxis) {\r\n valueAxis.setGroupSeries(groupSeries);\r\n valueAxis.setBusinessRange(groupRange, that._axesReinitialized || keepRange, that._argumentAxes[0]._lastVisualRangeUpdateMode)\r\n }\r\n });\r\n if (!updatedAxis || updatedAxis && series.length) {\r\n Object.keys(argRanges).forEach(function(p) {\r\n return commonArgRange.addRange(argRanges[p])\r\n });\r\n var commonInterval = commonArgRange.interval;\r\n that._argumentAxes.forEach(function(a) {\r\n var _argRanges$getPaneNam;\r\n var currentInterval = null !== (_argRanges$getPaneNam = argRanges[getPaneName(a)].interval) && void 0 !== _argRanges$getPaneNam ? _argRanges$getPaneNam : commonInterval;\r\n a.setBusinessRange(new _range.Range(_objectSpread(_objectSpread({}, commonArgRange), {}, {\r\n interval: currentInterval\r\n })), that._axesReinitialized, void 0, that._groupsData.categories)\r\n })\r\n }\r\n that._populateMarginOptions()\r\n },\r\n getArgumentAxis: function() {\r\n return (this._argumentAxes || []).filter(function(a) {\r\n return !a.isVirtual\r\n })[0]\r\n },\r\n getValueAxis: function(name) {\r\n var _this2 = this;\r\n return (this._valueAxes || []).filter((0, _type.isDefined)(name) ? function(a) {\r\n return a.name === name\r\n } : function(a) {\r\n return a.pane === _this2.defaultPane\r\n })[0]\r\n },\r\n _getGroupsData: function() {\r\n var that = this;\r\n var groups = [];\r\n that._valueAxes.forEach(function(axis) {\r\n groups.push({\r\n series: that.series.filter(function(series) {\r\n return series.getValueAxis() === axis\r\n }),\r\n valueAxis: axis,\r\n valueOptions: axis.getOptions()\r\n })\r\n });\r\n return {\r\n groups: groups,\r\n argumentAxes: that._argumentAxes,\r\n argumentOptions: that._argumentAxes[0].getOptions()\r\n }\r\n },\r\n _groupSeries: function() {\r\n var that = this;\r\n that._correctValueAxes(false);\r\n that._groupsData = that._getGroupsData()\r\n },\r\n _processValueAxisFormat: function() {\r\n var axesWithFullStackedFormat = [];\r\n this.series.forEach(function(series) {\r\n var axis = series.getValueAxis();\r\n if (series.isFullStackedSeries()) {\r\n axis.setPercentLabelFormat();\r\n axesWithFullStackedFormat.push(axis)\r\n }\r\n });\r\n this._valueAxes.forEach(function(axis) {\r\n if (axesWithFullStackedFormat.indexOf(axis) === -1) {\r\n axis.resetAutoLabelFormat()\r\n }\r\n })\r\n },\r\n _populateAxesOptions: function(typeSelector, userOptions, axisOptions, rotated, virtual) {\r\n var that = this;\r\n var preparedUserOptions = that._prepareStripsAndConstantLines(typeSelector, userOptions, rotated);\r\n var options = (0, _extend2.extend)(true, {}, preparedUserOptions, axisOptions, that._prepareAxisOptions(typeSelector, preparedUserOptions, rotated));\r\n if (virtual) {\r\n options.visible = options.tick.visible = options.minorTick.visible = options.label.visible = false;\r\n options.title = {}\r\n }\r\n return options\r\n },\r\n _getValFilter: function(series) {\r\n return _range_data_calculator.default.getViewPortFilter(series.getValueAxis().visualRange() || {})\r\n },\r\n _createAxis: function(isArgumentAxes, options, virtual) {\r\n var that = this;\r\n var typeSelector = isArgumentAxes ? \"argumentAxis\" : \"valueAxis\";\r\n var renderingSettings = (0, _extend2.extend)({\r\n renderer: that._renderer,\r\n incidentOccurred: that._incidentOccurred,\r\n eventTrigger: that._eventTrigger,\r\n axisClass: isArgumentAxes ? \"arg\" : \"val\",\r\n widgetClass: \"dxc\",\r\n stripsGroup: that._stripsGroup,\r\n labelAxesGroup: that._labelAxesGroup,\r\n constantLinesGroup: that._constantLinesGroup,\r\n scaleBreaksGroup: that._scaleBreaksGroup,\r\n axesContainerGroup: that._axesGroup,\r\n gridGroup: that._gridGroup,\r\n isArgumentAxis: isArgumentAxes,\r\n getTemplate: function() {\r\n return that._getTemplate(options.label.template)\r\n }\r\n }, that._getAxisRenderingOptions(typeSelector));\r\n var axis = new _base_axis.Axis(renderingSettings);\r\n axis.updateOptions(options);\r\n axis.isVirtual = virtual;\r\n return axis\r\n },\r\n _applyVisualRangeByVirtualAxes: function(axis, range) {\r\n return false\r\n },\r\n _applyCustomVisualRangeOption: function(axis, range) {\r\n var that = this;\r\n if (axis.getOptions().optionPath) {\r\n that._parseVisualRangeOption(\"\".concat(axis.getOptions().optionPath, \".visualRange\"), range)\r\n }\r\n },\r\n _getVisualRangeSetter: function() {\r\n var chart = this;\r\n return function(axis, _ref2) {\r\n var skipEventRising = _ref2.skipEventRising,\r\n range = _ref2.range;\r\n chart._applyCustomVisualRangeOption(axis, range);\r\n axis.setCustomVisualRange(range);\r\n axis.skipEventRising = skipEventRising;\r\n if (!chart._applyVisualRangeByVirtualAxes(axis, range)) {\r\n if (chart._applyingChanges) {\r\n chart._change_VISUAL_RANGE()\r\n } else {\r\n chart._requestChange([VISUAL_RANGE])\r\n }\r\n }\r\n }\r\n },\r\n _getTrackerSettings: function() {\r\n return (0, _extend2.extend)(this.callBase(), {\r\n argumentAxis: this.getArgumentAxis()\r\n })\r\n },\r\n _prepareStripsAndConstantLines: function(typeSelector, userOptions, rotated) {\r\n userOptions = this._themeManager.getOptions(typeSelector, userOptions, rotated);\r\n if (userOptions.strips) {\r\n (0, _iterator.each)(userOptions.strips, function(i) {\r\n userOptions.strips[i] = (0, _extend2.extend)(true, {}, userOptions.stripStyle, userOptions.strips[i])\r\n })\r\n }\r\n if (userOptions.constantLines) {\r\n (0, _iterator.each)(userOptions.constantLines, function(i, line) {\r\n userOptions.constantLines[i] = (0, _extend2.extend)(true, {}, userOptions.constantLineStyle, line)\r\n })\r\n }\r\n return userOptions\r\n },\r\n refresh: function() {\r\n this._disposeAxes();\r\n this.callBase()\r\n },\r\n _layoutAxes: function(drawAxes) {\r\n var that = this;\r\n drawAxes();\r\n var needSpace = that.checkForMoreSpaceForPanesCanvas();\r\n if (needSpace) {\r\n var rect = this._rect.slice();\r\n var size = this._layout.backward(rect, rect, [needSpace.width, needSpace.height]);\r\n needSpace.width = Math.max(0, size[0]);\r\n needSpace.height = Math.max(0, size[1]);\r\n this._canvas = this._createCanvasFromRect(rect);\r\n drawAxes(needSpace)\r\n }\r\n },\r\n checkForMoreSpaceForPanesCanvas: function() {\r\n return this.layoutManager.needMoreSpaceForPanesCanvas(this._getLayoutTargets(), this._isRotated())\r\n },\r\n _parseVisualRangeOption: function(fullName, value) {\r\n var that = this;\r\n var name = fullName.split(/[.[]/)[0];\r\n var index = fullName.match(/\\d+/g);\r\n index = (0, _type.isDefined)(index) ? parseInt(index[0]) : index;\r\n if (fullName.indexOf(\"visualRange\") > 0) {\r\n if (\"object\" !== (0, _type.type)(value)) {\r\n value = wrapVisualRange(fullName, value) || value\r\n }\r\n that._setCustomVisualRange(name, index, value)\r\n } else {\r\n if ((\"object\" === (0, _type.type)(value) || _isArray(value)) && name.indexOf(\"Axis\") > 0 && JSON.stringify(value).indexOf(\"visualRange\") > 0) {\r\n if ((0, _type.isDefined)(value.visualRange)) {\r\n that._setCustomVisualRange(name, index, value.visualRange)\r\n } else {\r\n if (_isArray(value)) {\r\n value.forEach(function(a, i) {\r\n return (0, _type.isDefined)(a.visualRange) && that._setCustomVisualRange(name, i, a.visualRange)\r\n })\r\n }\r\n }\r\n }\r\n }\r\n },\r\n _setCustomVisualRange: function(axesName, index, value) {\r\n var that = this;\r\n var options = that._options.silent(axesName);\r\n if (!options) {\r\n return\r\n }\r\n if (!(0, _type.isDefined)(index)) {\r\n options._customVisualRange = value\r\n } else {\r\n options[index]._customVisualRange = value\r\n }\r\n that._axesReinitialized = true\r\n },\r\n _raiseZoomEndHandlers: function() {\r\n this._valueAxes.forEach(function(axis) {\r\n return axis.handleZoomEnd()\r\n })\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n (0, _extend2.extend)(this._optionsByReference, {\r\n \"valueAxis.visualRange\": true\r\n })\r\n },\r\n _notifyOptionChanged: function(option, value, previousValue) {\r\n this.callBase.apply(this, arguments);\r\n if (!this._optionChangedLocker) {\r\n this._parseVisualRangeOption(option, value)\r\n }\r\n },\r\n _notifyVisualRange: function() {\r\n var that = this;\r\n that._valueAxes.forEach(function(axis) {\r\n var axisPath = axis.getOptions().optionPath;\r\n if (axisPath) {\r\n var path = \"\".concat(axisPath, \".visualRange\");\r\n var visualRange = (0, _utils.convertVisualRangeObject)(axis.visualRange(), !_isArray(that.option(path)));\r\n if (!axis.skipEventRising || !(0, _utils.rangesAreEqual)(visualRange, that.option(path))) {\r\n if (!that.option(axisPath) && \"valueAxis\" !== axisPath) {\r\n that.option(axisPath, {\r\n name: axis.name,\r\n visualRange: visualRange\r\n })\r\n } else {\r\n that.option(path, visualRange)\r\n }\r\n } else {\r\n axis.skipEventRising = null\r\n }\r\n }\r\n })\r\n },\r\n _notify: function() {\r\n this.callBase();\r\n this._axesReinitialized = false;\r\n if (true !== this.option(\"disableTwoWayBinding\")) {\r\n this._notifyVisualRange()\r\n }\r\n },\r\n _getAxesForScaling: function() {\r\n return this._valueAxes\r\n },\r\n _getAxesByOptionPath: function(arg, isDirectOption, optionName) {\r\n var that = this;\r\n var sourceAxes = that._getAxesForScaling();\r\n var axes = [];\r\n if (isDirectOption) {\r\n var axisPath;\r\n if (arg.fullName) {\r\n axisPath = arg.fullName.slice(0, arg.fullName.indexOf(\".\"))\r\n }\r\n axes = sourceAxes.filter(function(a) {\r\n return a.getOptions().optionPath === axisPath\r\n })\r\n } else {\r\n if (\"object\" === (0, _type.type)(arg.value)) {\r\n axes = sourceAxes.filter(function(a) {\r\n return a.getOptions().optionPath === arg.name\r\n })\r\n } else {\r\n if (_isArray(arg.value)) {\r\n arg.value.forEach(function(v, index) {\r\n var axis = sourceAxes.filter(function(a) {\r\n return a.getOptions().optionPath === \"\".concat(arg.name, \"[\").concat(index, \"]\")\r\n })[0];\r\n (0, _type.isDefined)(v[optionName]) && (0, _type.isDefined)(axis) && (axes[index] = axis)\r\n })\r\n }\r\n }\r\n }\r\n return axes\r\n },\r\n _optionChanged: function(arg) {\r\n var that = this;\r\n if (!that._optionChangedLocker) {\r\n var optionName = \"visualRange\";\r\n var axes;\r\n var isDirectOption = arg.fullName.indexOf(optionName) > 0 ? true : that.getPartialChangeOptionsName(arg).indexOf(optionName) > -1 ? false : void 0;\r\n if ((0, _type.isDefined)(isDirectOption)) {\r\n axes = that._getAxesByOptionPath(arg, isDirectOption, optionName);\r\n if (axes) {\r\n if (axes.length > 1 || _isArray(arg.value)) {\r\n axes.forEach(function(a, index) {\r\n return setAxisVisualRangeByOption(arg, a, isDirectOption, index)\r\n })\r\n } else {\r\n if (1 === axes.length) {\r\n setAxisVisualRangeByOption(arg, axes[0], isDirectOption)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n that.callBase(arg)\r\n },\r\n _change_VISUAL_RANGE: function() {\r\n var that = this;\r\n that._recreateSizeDependentObjects(false);\r\n if (!that._changes.has(\"FULL_RENDER\")) {\r\n var resizePanesOnZoom = that.option(\"resizePanesOnZoom\");\r\n that._doRender({\r\n force: true,\r\n drawTitle: false,\r\n drawLegend: false,\r\n adjustAxes: null !== resizePanesOnZoom && void 0 !== resizePanesOnZoom ? resizePanesOnZoom : that.option(\"adjustAxesOnZoom\") || false,\r\n animate: false\r\n });\r\n that._raiseZoomEndHandlers()\r\n }\r\n },\r\n resetVisualRange: function() {\r\n var that = this;\r\n that._valueAxes.forEach(function(axis) {\r\n axis.resetVisualRange(false);\r\n that._applyCustomVisualRangeOption(axis)\r\n });\r\n that._requestChange([VISUAL_RANGE])\r\n },\r\n _legendDataField: \"series\",\r\n _adjustSeriesLabels: _common.noop,\r\n _correctValueAxes: _common.noop\r\n});\r\nexports.AdvancedChart = AdvancedChart;\r\n","/**\r\n * DevExtreme (viz/chart_components/crosshair.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.Crosshair = Crosshair;\r\nexports.getMargins = getMargins;\r\nvar _utils = require(\"../core/utils\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar math = Math;\r\nvar mathAbs = math.abs;\r\nvar mathMin = math.min;\r\nvar mathMax = math.max;\r\nvar mathFloor = math.floor;\r\nvar HORIZONTAL = \"horizontal\";\r\nvar VERTICAL = \"vertical\";\r\nvar LABEL_BACKGROUND_PADDING_X = 8;\r\nvar LABEL_BACKGROUND_PADDING_Y = 4;\r\nvar CENTER = \"center\";\r\nvar RIGHT = \"right\";\r\nvar LEFT = \"left\";\r\nvar TOP = \"top\";\r\nvar BOTTOM = \"bottom\";\r\n\r\nfunction getMargins() {\r\n return {\r\n x: LABEL_BACKGROUND_PADDING_X,\r\n y: LABEL_BACKGROUND_PADDING_Y\r\n }\r\n}\r\n\r\nfunction getRectangleBBox(bBox) {\r\n return {\r\n x: bBox.x - LABEL_BACKGROUND_PADDING_X,\r\n y: bBox.y - LABEL_BACKGROUND_PADDING_Y,\r\n width: bBox.width + 2 * LABEL_BACKGROUND_PADDING_X,\r\n height: bBox.height + 2 * LABEL_BACKGROUND_PADDING_Y\r\n }\r\n}\r\n\r\nfunction getLabelCheckerPosition(x, y, isHorizontal, canvas) {\r\n var params = isHorizontal ? [\"x\", \"width\", \"y\", \"height\", y, 0] : [\"y\", \"height\", \"x\", \"width\", x, 1];\r\n return function(bBox, position, coord) {\r\n var labelCoord = {\r\n x: coord.x,\r\n y: coord.y\r\n };\r\n var rectangleBBox = getRectangleBBox(bBox);\r\n var delta = isHorizontal ? coord.y - bBox.y - bBox.height / 2 : coord.y - bBox.y;\r\n labelCoord.y = isHorizontal || !isHorizontal && position === BOTTOM ? coord.y + delta : coord.y;\r\n if (rectangleBBox[params[0]] < 0) {\r\n labelCoord[params[0]] -= rectangleBBox[params[0]]\r\n } else {\r\n if (rectangleBBox[params[0]] + rectangleBBox[params[1]] + delta * params[5] > canvas[params[1]]) {\r\n labelCoord[params[0]] -= rectangleBBox[params[0]] + rectangleBBox[params[1]] + delta * params[5] - canvas[params[1]]\r\n }\r\n }\r\n if (params[4] - rectangleBBox[params[3]] / 2 < 0) {\r\n labelCoord[params[2]] -= params[4] - rectangleBBox[params[3]] / 2\r\n } else {\r\n if (params[4] + rectangleBBox[params[3]] / 2 > canvas[params[3]]) {\r\n labelCoord[params[2]] -= params[4] + rectangleBBox[params[3]] / 2 - canvas[params[3]]\r\n }\r\n }\r\n return labelCoord\r\n }\r\n}\r\n\r\nfunction Crosshair(renderer, options, params, group) {\r\n var that = this;\r\n that._renderer = renderer;\r\n that._crosshairGroup = group;\r\n that._options = {};\r\n that.update(options, params)\r\n}\r\nCrosshair.prototype = {\r\n constructor: Crosshair,\r\n update: function(options, params) {\r\n var that = this;\r\n var canvas = params.canvas;\r\n that._canvas = {\r\n top: canvas.top,\r\n bottom: canvas.height - canvas.bottom,\r\n left: canvas.left,\r\n right: canvas.width - canvas.right,\r\n width: canvas.width,\r\n height: canvas.height\r\n };\r\n that._axes = params.axes;\r\n that._panes = params.panes;\r\n that._prepareOptions(options, HORIZONTAL);\r\n that._prepareOptions(options, VERTICAL)\r\n },\r\n dispose: function() {\r\n var that = this;\r\n that._renderer = that._crosshairGroup = that._options = that._axes = that._canvas = that._horizontalGroup = that._verticalGroup = that._horizontal = that._vertical = that._circle = that._panes = null\r\n },\r\n _prepareOptions: function(options, direction) {\r\n var lineOptions = options[direction + \"Line\"];\r\n this._options[direction] = {\r\n visible: lineOptions.visible,\r\n line: {\r\n stroke: lineOptions.color || options.color,\r\n \"stroke-width\": lineOptions.width || options.width,\r\n dashStyle: lineOptions.dashStyle || options.dashStyle,\r\n opacity: lineOptions.opacity || options.opacity,\r\n \"stroke-linecap\": \"butt\"\r\n },\r\n label: (0, _extend.extend)(true, {}, options.label, lineOptions.label)\r\n }\r\n },\r\n _createLines: function(options, sharpParam, group) {\r\n var lines = [];\r\n var canvas = this._canvas;\r\n var points = [canvas.left, canvas.top, canvas.left, canvas.top];\r\n for (var i = 0; i < 2; i++) {\r\n lines.push(this._renderer.path(points, \"line\").attr(options).sharp(sharpParam).append(group))\r\n }\r\n return lines\r\n },\r\n render: function() {\r\n var that = this;\r\n var renderer = that._renderer;\r\n var options = that._options;\r\n var verticalOptions = options.vertical;\r\n var horizontalOptions = options.horizontal;\r\n var extraOptions = horizontalOptions.visible ? horizontalOptions.line : verticalOptions.line;\r\n var circleOptions = {\r\n stroke: extraOptions.stroke,\r\n \"stroke-width\": extraOptions[\"stroke-width\"],\r\n dashStyle: extraOptions.dashStyle,\r\n opacity: extraOptions.opacity\r\n };\r\n var canvas = that._canvas;\r\n that._horizontal = {};\r\n that._vertical = {};\r\n that._circle = renderer.circle(canvas.left, canvas.top, 0).attr(circleOptions).append(that._crosshairGroup);\r\n that._horizontalGroup = renderer.g().append(that._crosshairGroup);\r\n that._verticalGroup = renderer.g().append(that._crosshairGroup);\r\n if (verticalOptions.visible) {\r\n that._vertical.lines = that._createLines(verticalOptions.line, \"h\", that._verticalGroup);\r\n that._vertical.labels = that._createLabels(that._axes[0], verticalOptions, false, that._verticalGroup)\r\n }\r\n if (horizontalOptions.visible) {\r\n that._horizontal.lines = that._createLines(horizontalOptions.line, \"v\", that._horizontalGroup);\r\n that._horizontal.labels = that._createLabels(that._axes[1], horizontalOptions, true, that._horizontalGroup)\r\n }\r\n that.hide()\r\n },\r\n _createLabels: function(axes, options, isHorizontal, group) {\r\n var that = this;\r\n var canvas = that._canvas;\r\n var renderer = that._renderer;\r\n var x;\r\n var y;\r\n var text;\r\n var labels = [];\r\n var background;\r\n var currentLabelPos;\r\n var labelOptions = options.label;\r\n if (labelOptions.visible) {\r\n axes.forEach(function(axis) {\r\n var position = axis.getOptions().position;\r\n if (axis.getTranslator().getBusinessRange().isEmpty()) {\r\n return\r\n }\r\n currentLabelPos = axis.getLabelsPosition();\r\n if (isHorizontal) {\r\n y = canvas.top;\r\n x = currentLabelPos\r\n } else {\r\n x = canvas.left;\r\n y = currentLabelPos\r\n }\r\n var align = position === TOP || position === BOTTOM ? CENTER : position === RIGHT ? LEFT : RIGHT;\r\n background = renderer.rect(0, 0, 0, 0).attr({\r\n fill: labelOptions.backgroundColor || options.line.stroke\r\n }).append(group);\r\n text = renderer.text(\"0\", 0, 0).css((0, _utils.patchFontOptions)(options.label.font)).attr({\r\n align: align,\r\n \"class\": labelOptions.cssClass\r\n }).append(group);\r\n labels.push({\r\n text: text,\r\n background: background,\r\n axis: axis,\r\n options: labelOptions,\r\n pos: {\r\n coord: currentLabelPos,\r\n side: position\r\n },\r\n startXY: {\r\n x: x,\r\n y: y\r\n }\r\n })\r\n })\r\n }\r\n return labels\r\n },\r\n _updateText: function(value, axisName, labels, point, func) {\r\n var that = this;\r\n labels.forEach(function(label) {\r\n var axis = label.axis;\r\n var coord = label.startXY;\r\n var textElement = label.text;\r\n var backgroundElement = label.background;\r\n var text = \"\";\r\n if (!axis.name || axis.name === axisName) {\r\n text = axis.getFormattedValue(value, label.options, point)\r\n }\r\n if (text) {\r\n textElement.attr({\r\n text: text,\r\n x: coord.x,\r\n y: coord.y\r\n });\r\n textElement.attr(func(textElement.getBBox(), label.pos.side, coord));\r\n that._updateLinesCanvas(label);\r\n backgroundElement.attr(getRectangleBBox(textElement.getBBox()))\r\n } else {\r\n textElement.attr({\r\n text: \"\"\r\n });\r\n backgroundElement.attr({\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n })\r\n }\r\n })\r\n },\r\n hide: function() {\r\n this._crosshairGroup.attr({\r\n visibility: \"hidden\"\r\n })\r\n },\r\n _updateLinesCanvas: function(label) {\r\n var position = label.pos.side;\r\n var labelCoord = label.pos.coord;\r\n var coords = this._linesCanvas;\r\n var canvas = this._canvas;\r\n coords[position] = coords[position] !== canvas[position] && mathAbs(coords[position] - canvas[position]) < mathAbs(labelCoord - canvas[position]) ? coords[position] : labelCoord\r\n },\r\n _updateLines: function(lines, x, y, r, isHorizontal) {\r\n var coords = this._linesCanvas;\r\n var canvas = this._canvas;\r\n var points = isHorizontal ? [\r\n [mathMin(x - r, coords.left), canvas.top, x - r, canvas.top],\r\n [x + r, canvas.top, mathMax(coords.right, x + r), canvas.top]\r\n ] : [\r\n [canvas.left, mathMin(coords.top, y - r), canvas.left, y - r],\r\n [canvas.left, y + r, canvas.left, mathMax(coords.bottom, y + r)]\r\n ];\r\n for (var i = 0; i < 2; i++) {\r\n lines[i].attr({\r\n points: points[i]\r\n }).sharp(isHorizontal ? \"v\" : \"h\", isHorizontal ? y === canvas.bottom ? -1 : 1 : x === canvas.right ? -1 : 1)\r\n }\r\n },\r\n _resetLinesCanvas: function() {\r\n var canvas = this._canvas;\r\n this._linesCanvas = {\r\n left: canvas.left,\r\n right: canvas.right,\r\n top: canvas.top,\r\n bottom: canvas.bottom\r\n }\r\n },\r\n _getClipRectForPane: function(x, y) {\r\n var panes = this._panes;\r\n var i;\r\n var coords;\r\n for (i = 0; i < panes.length; i++) {\r\n coords = panes[i].coords;\r\n if (coords.left <= x && coords.right >= x && coords.top <= y && coords.bottom >= y) {\r\n return panes[i].clipRect\r\n }\r\n }\r\n return {\r\n id: null\r\n }\r\n },\r\n show: function(data) {\r\n var that = this;\r\n var point = data.point;\r\n var pointData = point.getCrosshairData(data.x, data.y);\r\n var r = point.getPointRadius();\r\n var horizontal = that._horizontal;\r\n var vertical = that._vertical;\r\n var rad = !r ? 0 : r + 3;\r\n var canvas = that._canvas;\r\n var x = mathFloor(pointData.x);\r\n var y = mathFloor(pointData.y);\r\n if (x >= canvas.left && x <= canvas.right && y >= canvas.top && y <= canvas.bottom) {\r\n that._crosshairGroup.attr({\r\n visibility: \"visible\"\r\n });\r\n that._resetLinesCanvas();\r\n that._circle.attr({\r\n cx: x,\r\n cy: y,\r\n r: rad,\r\n \"clip-path\": that._getClipRectForPane(x, y).id\r\n });\r\n if (horizontal.lines) {\r\n that._updateText(pointData.yValue, pointData.axis, horizontal.labels, point, getLabelCheckerPosition(x, y, true, canvas));\r\n that._updateLines(horizontal.lines, x, y, rad, true);\r\n that._horizontalGroup.attr({\r\n translateY: y - canvas.top\r\n })\r\n }\r\n if (vertical.lines) {\r\n that._updateText(pointData.xValue, pointData.axis, vertical.labels, point, getLabelCheckerPosition(x, y, false, canvas));\r\n that._updateLines(vertical.lines, x, y, rad, false);\r\n that._verticalGroup.attr({\r\n translateX: x - canvas.left\r\n })\r\n }\r\n } else {\r\n that.hide()\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/bullet.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 _bullet = _interopRequireDefault(require(\"./sparklines/bullet\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _bullet.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/chart.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"../core/utils/common\");\r\nvar _extend2 = require(\"../core/utils/extend\");\r\nvar _array = require(\"../core/utils/array\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _utils = require(\"./utils\");\r\nvar _utils2 = require(\"./core/utils\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _math = require(\"../core/utils/math\");\r\nvar _base_chart = require(\"./chart_components/base_chart\");\r\nvar _multi_axes_synchronizer = _interopRequireDefault(require(\"./chart_components/multi_axes_synchronizer\"));\r\nvar _advanced_chart = require(\"./chart_components/advanced_chart\");\r\nvar _scroll_bar = require(\"./chart_components/scroll_bar\");\r\nvar _crosshair = require(\"./chart_components/crosshair\");\r\nvar _range_data_calculator = _interopRequireDefault(require(\"./series/helpers/range_data_calculator\"));\r\nvar _layout_manager = require(\"./chart_components/layout_manager\");\r\nvar _range = require(\"./translators/range\");\r\nvar _shutter_zoom = _interopRequireDefault(require(\"./chart_components/shutter_zoom\"));\r\nvar _zoom_and_pan = _interopRequireDefault(require(\"./chart_components/zoom_and_pan\"));\r\nvar _annotations = require(\"./core/annotations\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DEFAULT_PANE_NAME = \"default\";\r\nvar VISUAL_RANGE = \"VISUAL_RANGE\";\r\nvar DEFAULT_PANES = [{\r\n name: DEFAULT_PANE_NAME,\r\n border: {}\r\n}];\r\nvar DISCRETE = \"discrete\";\r\nvar _isArray = Array.isArray;\r\n\r\nfunction getFirstAxisNameForPane(axes, paneName, defaultPane) {\r\n var result;\r\n for (var i = 0; i < axes.length; i++) {\r\n if (axes[i].pane === paneName || void 0 === axes[i].pane && paneName === defaultPane) {\r\n result = axes[i].name;\r\n break\r\n }\r\n }\r\n if (!result) {\r\n result = axes[0].name\r\n }\r\n return result\r\n}\r\n\r\nfunction changeVisibilityAxisGrids(axis, gridVisibility, minorGridVisibility) {\r\n var gridOpt = axis.getOptions().grid;\r\n var minorGridOpt = axis.getOptions().minorGrid;\r\n gridOpt.visible = gridVisibility;\r\n minorGridOpt && (minorGridOpt.visible = minorGridVisibility)\r\n}\r\n\r\nfunction hideGridsOnNonFirstValueAxisForPane(axesForPane) {\r\n var axisShown = false;\r\n var hiddenStubAxis = [];\r\n var minorGridVisibility = axesForPane.some(function(axis) {\r\n var minorGridOptions = axis.getOptions().minorGrid;\r\n return minorGridOptions && minorGridOptions.visible\r\n });\r\n var gridVisibility = axesForPane.some(function(axis) {\r\n var gridOptions = axis.getOptions().grid;\r\n return gridOptions && gridOptions.visible\r\n });\r\n if (axesForPane.length > 1) {\r\n axesForPane.forEach(function(axis) {\r\n var gridOpt = axis.getOptions().grid;\r\n if (axisShown) {\r\n changeVisibilityAxisGrids(axis, false, false)\r\n } else {\r\n if (gridOpt && gridOpt.visible) {\r\n if (axis.getTranslator().getBusinessRange().isEmpty()) {\r\n changeVisibilityAxisGrids(axis, false, false);\r\n hiddenStubAxis.push(axis)\r\n } else {\r\n axisShown = true;\r\n changeVisibilityAxisGrids(axis, gridVisibility, minorGridVisibility)\r\n }\r\n }\r\n }\r\n });\r\n !axisShown && hiddenStubAxis.length && changeVisibilityAxisGrids(hiddenStubAxis[0], gridVisibility, minorGridVisibility)\r\n }\r\n}\r\n\r\nfunction findAxisOptions(valueAxes, valueAxesOptions, axisName) {\r\n var result;\r\n var axInd;\r\n for (axInd = 0; axInd < valueAxesOptions.length; axInd++) {\r\n if (valueAxesOptions[axInd].name === axisName) {\r\n result = valueAxesOptions[axInd];\r\n result.priority = axInd;\r\n break\r\n }\r\n }\r\n if (!result) {\r\n for (axInd = 0; axInd < valueAxes.length; axInd++) {\r\n if (valueAxes[axInd].name === axisName) {\r\n result = valueAxes[axInd].getOptions();\r\n result.priority = valueAxes[axInd].priority;\r\n break\r\n }\r\n }\r\n }\r\n return result\r\n}\r\n\r\nfunction findAxis(paneName, axisName, axes) {\r\n var axis;\r\n var i;\r\n for (i = 0; i < axes.length; i++) {\r\n axis = axes[i];\r\n if (axis.name === axisName && axis.pane === paneName) {\r\n return axis\r\n }\r\n }\r\n if (paneName) {\r\n return findAxis(void 0, axisName, axes)\r\n }\r\n}\r\n\r\nfunction compareAxes(a, b) {\r\n return a.priority - b.priority\r\n}\r\n\r\nfunction doesPaneExist(panes, paneName) {\r\n var found = false;\r\n (0, _iterator.each)(panes, function(_, pane) {\r\n if (pane.name === paneName) {\r\n found = true;\r\n return false\r\n }\r\n });\r\n return found\r\n}\r\n\r\nfunction accumulate(field, src1, src2, auxSpacing) {\r\n var val1 = src1[field] || 0;\r\n var val2 = src2[field] || 0;\r\n return val1 + val2 + (val1 && val2 ? auxSpacing : 0)\r\n}\r\n\r\nfunction pickMax(field, src1, src2) {\r\n return pickMaxValue(src1[field], src2[field])\r\n}\r\n\r\nfunction pickMaxValue(val1, val2) {\r\n return Math.max(val1 || 0, val2 || 0)\r\n}\r\n\r\nfunction getAxisMargins(axis) {\r\n return axis.getMargins()\r\n}\r\n\r\nfunction getHorizontalAxesMargins(axes, getMarginsFunc) {\r\n return axes.reduce(function(margins, axis) {\r\n var _axis$getOrthogonalAx;\r\n var axisMargins = getMarginsFunc(axis);\r\n var paneMargins = margins.panes[axis.pane] = margins.panes[axis.pane] || {};\r\n var spacing = axis.getMultipleAxesSpacing();\r\n paneMargins.top = accumulate(\"top\", paneMargins, axisMargins, spacing);\r\n paneMargins.bottom = accumulate(\"bottom\", paneMargins, axisMargins, spacing);\r\n paneMargins.left = pickMax(\"left\", paneMargins, axisMargins);\r\n paneMargins.right = pickMax(\"right\", paneMargins, axisMargins);\r\n margins.top = pickMax(\"top\", paneMargins, margins);\r\n margins.bottom = pickMax(\"bottom\", paneMargins, margins);\r\n margins.left = pickMax(\"left\", paneMargins, margins);\r\n margins.right = pickMax(\"right\", paneMargins, margins);\r\n var orthogonalAxis = null === (_axis$getOrthogonalAx = axis.getOrthogonalAxis) || void 0 === _axis$getOrthogonalAx ? void 0 : _axis$getOrthogonalAx.call(axis);\r\n if (orthogonalAxis && orthogonalAxis.customPositionIsAvailable() && (!axis.customPositionIsBoundaryOrthogonalAxis() || !orthogonalAxis.customPositionEqualsToPredefined())) {\r\n margins[orthogonalAxis.getResolvedBoundaryPosition()] = 0\r\n }\r\n return margins\r\n }, {\r\n panes: {}\r\n })\r\n}\r\n\r\nfunction getVerticalAxesMargins(axes) {\r\n return axes.reduce(function(margins, axis) {\r\n var axisMargins = axis.getMargins();\r\n var paneMargins = margins.panes[axis.pane] = margins.panes[axis.pane] || {};\r\n var spacing = axis.getMultipleAxesSpacing();\r\n paneMargins.top = pickMax(\"top\", paneMargins, axisMargins);\r\n paneMargins.bottom = pickMax(\"bottom\", paneMargins, axisMargins);\r\n paneMargins.left = accumulate(\"left\", paneMargins, axisMargins, spacing);\r\n paneMargins.right = accumulate(\"right\", paneMargins, axisMargins, spacing);\r\n margins.top = pickMax(\"top\", paneMargins, margins);\r\n margins.bottom = pickMax(\"bottom\", paneMargins, margins);\r\n margins.left = pickMax(\"left\", paneMargins, margins);\r\n margins.right = pickMax(\"right\", paneMargins, margins);\r\n return margins\r\n }, {\r\n panes: {}\r\n })\r\n}\r\n\r\nfunction performActionOnAxes(axes, action, actionArgument1, actionArgument2, actionArgument3) {\r\n axes.forEach(function(axis) {\r\n axis[action](actionArgument1 && actionArgument1[axis.pane], actionArgument2 && actionArgument2[axis.pane] || actionArgument2, actionArgument3)\r\n })\r\n}\r\n\r\nfunction shrinkCanvases(isRotated, canvases, sizes, verticalMargins, horizontalMargins) {\r\n function getMargin(side, margins, pane) {\r\n var m = (isRotated ? [\"left\", \"right\"] : [\"top\", \"bottom\"]).indexOf(side) === -1 ? margins : margins.panes[pane] || {};\r\n return m[side]\r\n }\r\n\r\n function getMaxMargin(side, margins1, margins2, pane) {\r\n return pickMaxValue(getMargin(side, margins1, pane), getMargin(side, margins2, pane))\r\n }\r\n var getOriginalField = function(field) {\r\n return \"original\".concat(field[0].toUpperCase()).concat(field.slice(1))\r\n };\r\n\r\n function shrink(canvases, paneNames, sizeField, startMargin, endMargin, oppositeMargins) {\r\n paneNames = paneNames.sort(function(p1, p2) {\r\n return canvases[p2][startMargin] - canvases[p1][startMargin]\r\n });\r\n paneNames.forEach(function(pane) {\r\n var canvas = canvases[pane];\r\n oppositeMargins.forEach(function(margin) {\r\n canvas[margin] = canvas[getOriginalField(margin)] + getMaxMargin(margin, verticalMargins, horizontalMargins, pane)\r\n })\r\n });\r\n var firstPane = canvases[paneNames[0]];\r\n var emptySpace = paneNames.reduce(function(space, paneName) {\r\n space -= getMaxMargin(startMargin, verticalMargins, horizontalMargins, paneName) + getMaxMargin(endMargin, verticalMargins, horizontalMargins, paneName);\r\n return space\r\n }, firstPane[sizeField] - firstPane[getOriginalField(endMargin)] - canvases[paneNames[paneNames.length - 1]][getOriginalField(startMargin)]) - _utils2.PANE_PADDING * (paneNames.length - 1);\r\n emptySpace -= Object.keys(sizes).reduce(function(prev, key) {\r\n return prev + (!(0, _utils2.isRelativeHeightPane)(sizes[key]) ? sizes[key].height : 0)\r\n }, 0);\r\n paneNames.reduce(function(offset, pane) {\r\n var canvas = canvases[pane];\r\n var paneSize = sizes[pane];\r\n offset -= getMaxMargin(endMargin, verticalMargins, horizontalMargins, pane);\r\n canvas[endMargin] = firstPane[sizeField] - offset;\r\n offset -= !(0, _utils2.isRelativeHeightPane)(paneSize) ? paneSize.height : Math.floor(emptySpace * paneSize.height);\r\n canvas[startMargin] = offset;\r\n offset -= getMaxMargin(startMargin, verticalMargins, horizontalMargins, pane) + _utils2.PANE_PADDING;\r\n return offset\r\n }, firstPane[sizeField] - firstPane[getOriginalField(endMargin)] - (emptySpace < 0 ? emptySpace : 0))\r\n }\r\n var paneNames = Object.keys(canvases);\r\n if (!isRotated) {\r\n shrink(canvases, paneNames, \"height\", \"top\", \"bottom\", [\"left\", \"right\"])\r\n } else {\r\n shrink(canvases, paneNames, \"width\", \"left\", \"right\", [\"top\", \"bottom\"])\r\n }\r\n return canvases\r\n}\r\n\r\nfunction drawAxesWithTicks(axes, condition, canvases, panesBorderOptions) {\r\n if (condition) {\r\n performActionOnAxes(axes, \"createTicks\", canvases);\r\n _multi_axes_synchronizer.default.synchronize(axes)\r\n }\r\n performActionOnAxes(axes, \"draw\", !condition && canvases, panesBorderOptions)\r\n}\r\n\r\nfunction shiftAxis(side1, side2) {\r\n var shifts = {};\r\n return function(axis) {\r\n if (!axis.customPositionIsAvailable() || axis.customPositionEqualsToPredefined()) {\r\n var shift = shifts[axis.pane] = shifts[axis.pane] || {\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n right: 0\r\n };\r\n var spacing = axis.getMultipleAxesSpacing();\r\n var margins = axis.getMargins();\r\n axis.shift(shift);\r\n shift[side1] = accumulate(side1, shift, margins, spacing);\r\n shift[side2] = accumulate(side2, shift, margins, spacing)\r\n } else {\r\n axis.shift({\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n right: 0\r\n })\r\n }\r\n }\r\n}\r\n\r\nfunction getCommonSize(side, margins) {\r\n var size = 0;\r\n var pane;\r\n var paneMargins;\r\n for (pane in margins.panes) {\r\n paneMargins = margins.panes[pane];\r\n size += \"height\" === side ? paneMargins.top + paneMargins.bottom : paneMargins.left + paneMargins.right\r\n }\r\n return size\r\n}\r\n\r\nfunction checkUsedSpace(sizeShortage, side, axes, getMarginFunc) {\r\n var size = 0;\r\n if (sizeShortage[side] > 0) {\r\n size = getCommonSize(side, getMarginFunc(axes, getAxisMargins));\r\n performActionOnAxes(axes, \"hideTitle\");\r\n sizeShortage[side] -= size - getCommonSize(side, getMarginFunc(axes, getAxisMargins))\r\n }\r\n if (sizeShortage[side] > 0) {\r\n performActionOnAxes(axes, \"hideOuterElements\")\r\n }\r\n}\r\n\r\nfunction axisAnimationEnabled(drawOptions, pointsToAnimation) {\r\n var pointsCount = pointsToAnimation.reduce(function(sum, count) {\r\n return sum + count\r\n }, 0) / pointsToAnimation.length;\r\n return drawOptions.animate && pointsCount <= drawOptions.animationPointsLimit\r\n}\r\n\r\nfunction collectMarkersInfoBySeries(allSeries, filteredSeries, argAxis) {\r\n var series = [];\r\n var overloadedSeries = {};\r\n var argVisualRange = argAxis.visualRange();\r\n var argTranslator = argAxis.getTranslator();\r\n var argViewPortFilter = _range_data_calculator.default.getViewPortFilter(argVisualRange || {});\r\n filteredSeries.forEach(function(s) {\r\n var valAxis = s.getValueAxis();\r\n var valVisualRange = valAxis.getCanvasRange();\r\n var valTranslator = valAxis.getTranslator();\r\n var seriesIndex = allSeries.indexOf(s);\r\n var valViewPortFilter = _range_data_calculator.default.getViewPortFilter(valVisualRange || {});\r\n overloadedSeries[seriesIndex] = {};\r\n filteredSeries.forEach(function(sr) {\r\n return overloadedSeries[seriesIndex][allSeries.indexOf(sr)] = 0\r\n });\r\n var seriesPoints = [];\r\n s.getPoints().filter(function(p) {\r\n return p.getOptions().visible && argViewPortFilter(p.argument) && (valViewPortFilter(p.getMinValue(true)) || valViewPortFilter(p.getMaxValue(true)))\r\n }).forEach(function(p) {\r\n var tp = {\r\n seriesIndex: seriesIndex,\r\n argument: p.argument,\r\n value: p.getMaxValue(true),\r\n size: p.bubbleSize || p.getOptions().size\r\n };\r\n if (p.getMinValue(true) !== p.getMaxValue(true)) {\r\n var mp = (0, _extend2.extend)({}, tp);\r\n mp.value = p.getMinValue(true);\r\n mp.x = argTranslator.to(mp.argument, 1);\r\n mp.y = valTranslator.to(mp.value, 1);\r\n seriesPoints.push(mp)\r\n }\r\n tp.x = argTranslator.to(tp.argument, 1);\r\n tp.y = valTranslator.to(tp.value, 1);\r\n seriesPoints.push(tp)\r\n });\r\n overloadedSeries[seriesIndex].pointsCount = seriesPoints.length;\r\n overloadedSeries[seriesIndex].total = 0;\r\n overloadedSeries[seriesIndex].continuousSeries = 0;\r\n series.push({\r\n name: s.name,\r\n index: seriesIndex,\r\n points: seriesPoints\r\n })\r\n });\r\n return {\r\n series: series,\r\n overloadedSeries: overloadedSeries\r\n }\r\n}\r\n\r\nfunction applyAutoHidePointMarkers(allSeries, filteredSeries, overloadedSeries, argAxis) {\r\n var argAxisType = argAxis.getOptions().type;\r\n filteredSeries.forEach(function(s) {\r\n var seriesIndex = allSeries.indexOf(s);\r\n s.autoHidePointMarkers = false;\r\n var tickCount = argAxis.getTicksValues().majorTicksValues.length;\r\n if (s.autoHidePointMarkersEnabled() && (argAxisType === DISCRETE || overloadedSeries[seriesIndex].pointsCount > tickCount)) {\r\n for (var index in overloadedSeries[seriesIndex]) {\r\n var i = parseInt(index);\r\n if (isNaN(i) || overloadedSeries[seriesIndex].total / overloadedSeries[seriesIndex].continuousSeries < 3) {\r\n continue\r\n }\r\n if (i === seriesIndex) {\r\n if (2 * overloadedSeries[i][i] >= overloadedSeries[i].pointsCount) {\r\n s.autoHidePointMarkers = true;\r\n break\r\n }\r\n } else {\r\n if (overloadedSeries[seriesIndex].total >= overloadedSeries[seriesIndex].pointsCount) {\r\n s.autoHidePointMarkers = true;\r\n break\r\n }\r\n }\r\n }\r\n }\r\n })\r\n}\r\n\r\nfunction fastHidingPointMarkersByArea(canvas, markersInfo, series) {\r\n var area = canvas.width * canvas.height;\r\n var seriesPoints = markersInfo.series;\r\n var _loop = function(i) {\r\n var currentSeries = series.filter(function(s) {\r\n return s.name === seriesPoints[i].name\r\n })[0];\r\n var points = seriesPoints[i].points;\r\n var pointSize = points.length ? points[0].size : 0;\r\n var pointsArea = pointSize * pointSize * points.length;\r\n if (currentSeries.autoHidePointMarkersEnabled() && pointsArea >= area / seriesPoints.length) {\r\n var index = seriesPoints[i].index;\r\n currentSeries.autoHidePointMarkers = true;\r\n seriesPoints.splice(i, 1);\r\n series.splice(series.indexOf(currentSeries), 1);\r\n delete markersInfo.overloadedSeries[index]\r\n }\r\n };\r\n for (var i = seriesPoints.length - 1; i >= 0; i--) {\r\n _loop(i)\r\n }\r\n}\r\n\r\nfunction updateMarkersInfo(points, overloadedSeries) {\r\n var isContinuousSeries = false;\r\n for (var i = 0; i < points.length - 1; i++) {\r\n var curPoint = points[i];\r\n var size = curPoint.size;\r\n if ((0, _type.isDefined)(curPoint.x) && (0, _type.isDefined)(curPoint.y)) {\r\n for (var j = i + 1; j < points.length; j++) {\r\n var nextPoint = points[j];\r\n var next_x = null === nextPoint || void 0 === nextPoint ? void 0 : nextPoint.x;\r\n var next_y = null === nextPoint || void 0 === nextPoint ? void 0 : nextPoint.y;\r\n if (!(0, _type.isDefined)(next_x) || Math.abs(curPoint.x - next_x) >= size) {\r\n isContinuousSeries &= j !== i + 1;\r\n break\r\n } else {\r\n var distance = (0, _type.isDefined)(next_x) && (0, _type.isDefined)(next_y) && Math.sqrt(Math.pow(curPoint.x - next_x, 2) + Math.pow(curPoint.y - next_y, 2));\r\n if (distance && distance < size) {\r\n overloadedSeries[curPoint.seriesIndex][nextPoint.seriesIndex]++;\r\n overloadedSeries[curPoint.seriesIndex].total++;\r\n if (!isContinuousSeries) {\r\n overloadedSeries[curPoint.seriesIndex].continuousSeries++;\r\n isContinuousSeries = true\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\nvar dxChart = _advanced_chart.AdvancedChart.inherit({\r\n _themeSection: \"chart\",\r\n _fontFields: [\"crosshair.label.font\"],\r\n _initCore: function() {\r\n this.paneAxis = {};\r\n this.callBase()\r\n },\r\n _init: function() {\r\n this._containerInitialHeight = (0, _window.hasWindow)() ? this._$element.height() : 0;\r\n this.callBase()\r\n },\r\n _correctAxes: function() {\r\n this._correctValueAxes(true)\r\n },\r\n _getExtraOptions: _common.noop,\r\n _createPanes: function() {\r\n var that = this;\r\n var panes = that.option(\"panes\");\r\n var panesNameCounter = 0;\r\n var defaultPane;\r\n if (!panes || _isArray(panes) && !panes.length) {\r\n panes = DEFAULT_PANES\r\n }\r\n that.callBase();\r\n defaultPane = that.option(\"defaultPane\");\r\n panes = (0, _extend2.extend)(true, [], _isArray(panes) ? panes : [panes]);\r\n (0, _iterator.each)(panes, function(_, pane) {\r\n pane.name = !(0, _type.isDefined)(pane.name) ? DEFAULT_PANE_NAME + panesNameCounter++ : pane.name\r\n });\r\n if ((0, _type.isDefined)(defaultPane)) {\r\n if (!doesPaneExist(panes, defaultPane)) {\r\n that._incidentOccurred(\"W2101\", [defaultPane]);\r\n defaultPane = panes[panes.length - 1].name\r\n }\r\n } else {\r\n defaultPane = panes[panes.length - 1].name\r\n }\r\n that.defaultPane = defaultPane;\r\n panes = that._isRotated() ? panes.reverse() : panes;\r\n return panes\r\n },\r\n _getAxisRenderingOptions: function() {\r\n return {\r\n axisType: \"xyAxes\",\r\n drawingType: \"linear\"\r\n }\r\n },\r\n _prepareAxisOptions: function(typeSelector, userOptions, rotated) {\r\n return {\r\n isHorizontal: \"argumentAxis\" === typeSelector !== rotated,\r\n containerColor: this._themeManager.getOptions(\"containerBackgroundColor\")\r\n }\r\n },\r\n _checkPaneName: function(seriesTheme) {\r\n var paneList = (0, _utils2.map)(this.panes, function(pane) {\r\n return pane.name\r\n });\r\n seriesTheme.pane = seriesTheme.pane || this.defaultPane;\r\n return (0, _array.inArray)(seriesTheme.pane, paneList) !== -1\r\n },\r\n _initCustomPositioningAxes: function() {\r\n var that = this;\r\n var argumentAxis = that.getArgumentAxis();\r\n var valueAxisName = argumentAxis.getOptions().customPositionAxis;\r\n var valueAxis = that._valueAxes.filter(function(v) {\r\n return v.pane === argumentAxis.pane && (!valueAxisName || valueAxisName === v.name)\r\n })[0];\r\n that._valueAxes.forEach(function(v) {\r\n if (argumentAxis !== v.getOrthogonalAxis()) {\r\n v.getOrthogonalAxis = function() {\r\n return argumentAxis\r\n };\r\n v.customPositionIsBoundaryOrthogonalAxis = function() {\r\n return argumentAxis.customPositionIsBoundary()\r\n }\r\n }\r\n });\r\n if ((0, _type.isDefined)(valueAxis) && valueAxis !== argumentAxis.getOrthogonalAxis()) {\r\n argumentAxis.getOrthogonalAxis = function() {\r\n return valueAxis\r\n };\r\n argumentAxis.customPositionIsBoundaryOrthogonalAxis = function() {\r\n return that._valueAxes.some(function(v) {\r\n return v.customPositionIsBoundary()\r\n })\r\n }\r\n } else {\r\n if ((0, _type.isDefined)(argumentAxis.getOrthogonalAxis()) && !(0, _type.isDefined)(valueAxis)) {\r\n argumentAxis.getOrthogonalAxis = _common.noop\r\n }\r\n }\r\n },\r\n _getAllAxes: function() {\r\n return this._argumentAxes.concat(this._valueAxes)\r\n },\r\n _resetAxesAnimation: function(isFirstDrawing, isHorizontal) {\r\n var axes = (0, _type.isDefined)(isHorizontal) ? isHorizontal ^ this._isRotated() ? this._argumentAxes : this._valueAxes : this._getAllAxes();\r\n axes.forEach(function(a) {\r\n a.resetApplyingAnimation(isFirstDrawing)\r\n })\r\n },\r\n _cleanGroups: function() {\r\n this._getAllAxes().forEach(function(a) {\r\n return a.beforeCleanGroups()\r\n });\r\n this.callBase();\r\n this._getAllAxes().forEach(function(a) {\r\n return a.afterCleanGroups()\r\n })\r\n },\r\n _axesBoundaryPositioning: function() {\r\n var that = this;\r\n var allAxes = that._getAllAxes();\r\n var boundaryStateChanged = false;\r\n allAxes.forEach(function(a) {\r\n if (!a.customPositionIsAvailable()) {\r\n return false\r\n }\r\n var prevBoundaryState = a.customPositionIsBoundary();\r\n a._customBoundaryPosition = a.getCustomBoundaryPosition();\r\n boundaryStateChanged |= prevBoundaryState !== a.customPositionIsBoundary()\r\n });\r\n return boundaryStateChanged\r\n },\r\n _getValueAxis: function(paneName, axisName) {\r\n var that = this;\r\n var valueAxes = that._valueAxes;\r\n var valueAxisOptions = that.option(\"valueAxis\") || {};\r\n var valueAxesOptions = _isArray(valueAxisOptions) ? valueAxisOptions : [valueAxisOptions];\r\n var rotated = that._isRotated();\r\n var crosshairMargins = that._getCrosshairMargins();\r\n var axisOptions;\r\n var axis;\r\n axisName = axisName || getFirstAxisNameForPane(valueAxes, paneName, that.defaultPane);\r\n axis = findAxis(paneName, axisName, valueAxes);\r\n if (!axis) {\r\n axisOptions = findAxisOptions(valueAxes, valueAxesOptions, axisName);\r\n if (!axisOptions) {\r\n that._incidentOccurred(\"W2102\", [axisName]);\r\n axisOptions = {\r\n name: axisName,\r\n priority: valueAxes.length\r\n }\r\n }\r\n axis = that._createAxis(false, that._populateAxesOptions(\"valueAxis\", axisOptions, {\r\n pane: paneName,\r\n name: axisName,\r\n optionPath: _isArray(valueAxisOptions) ? \"valueAxis[\".concat(axisOptions.priority, \"]\") : \"valueAxis\",\r\n crosshairMargin: rotated ? crosshairMargins.y : crosshairMargins.x\r\n }, rotated));\r\n axis.applyVisualRangeSetter(that._getVisualRangeSetter());\r\n valueAxes.push(axis)\r\n }\r\n axis.setPane(paneName);\r\n return axis\r\n },\r\n _correctValueAxes: function(needHideGrids) {\r\n var that = this;\r\n var synchronizeMultiAxes = that._themeManager.getOptions(\"synchronizeMultiAxes\");\r\n var valueAxes = that._valueAxes;\r\n var paneWithAxis = {};\r\n that.series.forEach(function(series) {\r\n var axis = series.getValueAxis();\r\n paneWithAxis[axis.pane] = true\r\n });\r\n that.panes.forEach(function(pane) {\r\n var paneName = pane.name;\r\n if (!paneWithAxis[paneName]) {\r\n that._getValueAxis(paneName)\r\n }\r\n if (needHideGrids && synchronizeMultiAxes) {\r\n hideGridsOnNonFirstValueAxisForPane(valueAxes.filter(function(axis) {\r\n return axis.pane === paneName\r\n }))\r\n }\r\n });\r\n that._valueAxes = valueAxes.filter(function(axis) {\r\n if (!axis.pane) {\r\n axis.setPane(that.defaultPane)\r\n }\r\n return doesPaneExist(that.panes, axis.pane)\r\n }).sort(compareAxes);\r\n var defaultAxis = this.getValueAxis();\r\n that._valueAxes.forEach(function(axis) {\r\n var optionPath = axis.getOptions().optionPath;\r\n if (optionPath) {\r\n var axesWithSamePath = that._valueAxes.filter(function(a) {\r\n return a.getOptions().optionPath === optionPath\r\n });\r\n if (axesWithSamePath.length > 1) {\r\n if (axesWithSamePath.some(function(a) {\r\n return a === defaultAxis\r\n })) {\r\n axesWithSamePath.forEach(function(a) {\r\n if (a !== defaultAxis) {\r\n a.getOptions().optionPath = null\r\n }\r\n })\r\n } else {\r\n axesWithSamePath.forEach(function(a, i) {\r\n if (0 !== i) {\r\n a.getOptions().optionPath = null\r\n }\r\n })\r\n }\r\n }\r\n }\r\n })\r\n },\r\n _getSeriesForPane: function(paneName) {\r\n var paneSeries = [];\r\n (0, _iterator.each)(this.series, function(_, oneSeries) {\r\n if (oneSeries.pane === paneName) {\r\n paneSeries.push(oneSeries)\r\n }\r\n });\r\n return paneSeries\r\n },\r\n _createPanesBorderOptions: function() {\r\n var commonBorderOptions = this._themeManager.getOptions(\"commonPaneSettings\").border;\r\n var panesBorderOptions = {};\r\n this.panes.forEach(function(pane) {\r\n return panesBorderOptions[pane.name] = (0, _extend2.extend)(true, {}, commonBorderOptions, pane.border)\r\n });\r\n return panesBorderOptions\r\n },\r\n _createScrollBar: function() {\r\n var that = this;\r\n var scrollBarOptions = that._themeManager.getOptions(\"scrollBar\") || {};\r\n var scrollBarGroup = that._scrollBarGroup;\r\n if (scrollBarOptions.visible) {\r\n scrollBarOptions.rotated = that._isRotated();\r\n that._scrollBar = (that._scrollBar || new _scroll_bar.ScrollBar(that._renderer, scrollBarGroup)).update(scrollBarOptions)\r\n } else {\r\n scrollBarGroup.linkRemove();\r\n that._scrollBar && that._scrollBar.dispose();\r\n that._scrollBar = null\r\n }\r\n },\r\n _prepareToRender: function(drawOptions) {\r\n var panesBorderOptions = this._createPanesBorderOptions();\r\n this._createPanesBackground();\r\n this._appendAxesGroups();\r\n this._adjustViewport();\r\n return panesBorderOptions\r\n },\r\n _adjustViewport: function() {\r\n var that = this;\r\n var adjustOnZoom = that._themeManager.getOptions(\"adjustOnZoom\");\r\n if (!adjustOnZoom) {\r\n return\r\n }\r\n that._valueAxes.forEach(function(axis) {\r\n return axis.adjust()\r\n })\r\n },\r\n _recreateSizeDependentObjects: function(isCanvasChanged) {\r\n var that = this;\r\n var series = that._getVisibleSeries();\r\n var useAggregation = series.some(function(s) {\r\n return s.useAggregation()\r\n });\r\n var zoomChanged = that._isZooming();\r\n if (!useAggregation) {\r\n return\r\n }\r\n that._argumentAxes.forEach(function(axis) {\r\n axis.updateCanvas(that._canvas, true)\r\n });\r\n series.forEach(function(series) {\r\n if (series.useAggregation() && (isCanvasChanged || zoomChanged || !series._useAllAggregatedPoints)) {\r\n series.createPoints()\r\n }\r\n });\r\n that._processSeriesFamilies()\r\n },\r\n _isZooming: function() {\r\n var that = this;\r\n var argumentAxis = that.getArgumentAxis();\r\n if (!argumentAxis || !argumentAxis.getTranslator()) {\r\n return false\r\n }\r\n var businessRange = argumentAxis.getTranslator().getBusinessRange();\r\n var zoomRange = argumentAxis.getViewport();\r\n var min = zoomRange ? zoomRange.min : 0;\r\n var max = zoomRange ? zoomRange.max : 0;\r\n if (\"logarithmic\" === businessRange.axisType) {\r\n min = (0, _utils2.getLog)(min, businessRange.base);\r\n max = (0, _utils2.getLog)(max, businessRange.base)\r\n }\r\n var viewportDistance = businessRange.axisType === DISCRETE ? (0, _utils2.getCategoriesInfo)(businessRange.categories, min, max).categories.length : Math.abs(max - min);\r\n var precision = (0, _math.getPrecision)(viewportDistance);\r\n precision = precision > 1 ? Math.pow(10, precision - 2) : 1;\r\n var zoomChanged = Math.round((that._zoomLength - viewportDistance) * precision) / precision !== 0;\r\n that._zoomLength = viewportDistance;\r\n return zoomChanged\r\n },\r\n _handleSeriesDataUpdated: function() {\r\n var that = this;\r\n var viewport = new _range.Range;\r\n that.series.forEach(function(s) {\r\n viewport.addRange(s.getArgumentRange())\r\n });\r\n that._argumentAxes.forEach(function(axis) {\r\n axis.updateCanvas(that._canvas, true);\r\n axis.setBusinessRange(viewport, that._axesReinitialized)\r\n });\r\n that.callBase()\r\n },\r\n _isLegendInside: function() {\r\n return this._legend && \"inside\" === this._legend.getPosition()\r\n },\r\n _isRotated: function() {\r\n return this._themeManager.getOptions(\"rotated\")\r\n },\r\n _getLayoutTargets: function() {\r\n return this.panes\r\n },\r\n _applyClipRects: function(panesBorderOptions) {\r\n var that = this;\r\n that._drawPanesBorders(panesBorderOptions);\r\n that._createClipRectsForPanes();\r\n that._applyClipRectsForAxes();\r\n that._fillPanesBackground()\r\n },\r\n _updateLegendPosition: function(drawOptions, legendHasInsidePosition) {\r\n var that = this;\r\n if (drawOptions.drawLegend && that._legend && legendHasInsidePosition) {\r\n var panes = that.panes;\r\n var newCanvas = (0, _extend2.extend)({}, panes[0].canvas);\r\n var layoutManager = new _layout_manager.LayoutManager;\r\n newCanvas.right = panes[panes.length - 1].canvas.right;\r\n newCanvas.bottom = panes[panes.length - 1].canvas.bottom;\r\n layoutManager.layoutInsideLegend(that._legend, newCanvas)\r\n }\r\n },\r\n _allowLegendInsidePosition: function() {\r\n return true\r\n },\r\n _applyExtraSettings: function(series) {\r\n var that = this;\r\n var paneIndex = that._getPaneIndex(series.pane);\r\n var panesClipRects = that._panesClipRects;\r\n var wideClipRect = panesClipRects.wide[paneIndex];\r\n series.setClippingParams(panesClipRects.base[paneIndex].id, wideClipRect && wideClipRect.id, that._getPaneBorderVisibility(paneIndex))\r\n },\r\n _updatePanesCanvases: function(drawOptions) {\r\n if (!drawOptions.recreateCanvas) {\r\n return\r\n }(0, _utils2.updatePanesCanvases)(this.panes, this._canvas, this._isRotated())\r\n },\r\n _normalizePanesHeight: function() {\r\n (0, _utils2.normalizePanesHeight)(this.panes)\r\n },\r\n _renderScaleBreaks: function() {\r\n this._valueAxes.concat(this._argumentAxes).forEach(function(axis) {\r\n axis.drawScaleBreaks()\r\n })\r\n },\r\n _getArgFilter: function() {\r\n return _range_data_calculator.default.getViewPortFilter(this.getArgumentAxis().visualRange() || {})\r\n },\r\n _applyPointMarkersAutoHiding: function() {\r\n var that = this;\r\n var allSeries = that.series;\r\n if (!that._themeManager.getOptions(\"autoHidePointMarkers\")) {\r\n allSeries.forEach(function(s) {\r\n return s.autoHidePointMarkers = false\r\n });\r\n return\r\n }\r\n that.panes.forEach(function(_ref) {\r\n var borderCoords = _ref.borderCoords,\r\n name = _ref.name;\r\n var series = allSeries.filter(function(s) {\r\n return s.pane === name && s.usePointsToDefineAutoHiding()\r\n });\r\n var argAxis = that.getArgumentAxis();\r\n var markersInfo = collectMarkersInfoBySeries(allSeries, series, argAxis);\r\n fastHidingPointMarkersByArea(borderCoords, markersInfo, series);\r\n if (markersInfo.series.length) {\r\n var argVisualRange = argAxis.visualRange();\r\n var argAxisIsDiscrete = argAxis.getOptions().type === DISCRETE;\r\n var sortingCallback = argAxisIsDiscrete ? function(p1, p2) {\r\n return argVisualRange.categories.indexOf(p1.argument) - argVisualRange.categories.indexOf(p2.argument)\r\n } : function(p1, p2) {\r\n return p1.argument - p2.argument\r\n };\r\n var points = [];\r\n markersInfo.series.forEach(function(s) {\r\n return points = points.concat(s.points)\r\n });\r\n points.sort(sortingCallback);\r\n updateMarkersInfo(points, markersInfo.overloadedSeries);\r\n applyAutoHidePointMarkers(allSeries, series, markersInfo.overloadedSeries, argAxis)\r\n }\r\n })\r\n },\r\n _renderAxes: function(drawOptions, panesBorderOptions) {\r\n function calculateTitlesWidth(axes) {\r\n return axes.map(function(axis) {\r\n if (!axis.getTitle) {\r\n return 0\r\n }\r\n var title = axis.getTitle();\r\n return title ? title.bBox.width : 0\r\n })\r\n }\r\n var that = this;\r\n var rotated = that._isRotated();\r\n var synchronizeMultiAxes = that._themeManager.getOptions(\"synchronizeMultiAxes\");\r\n var scrollBar = that._scrollBar ? [that._scrollBar] : [];\r\n var extendedArgAxes = that._isArgumentAxisBeforeScrollBar() ? that._argumentAxes.concat(scrollBar) : scrollBar.concat(that._argumentAxes);\r\n var verticalAxes = rotated ? that._argumentAxes : that._valueAxes;\r\n var verticalElements = rotated ? extendedArgAxes : that._valueAxes;\r\n var horizontalAxes = rotated ? that._valueAxes : that._argumentAxes;\r\n var horizontalElements = rotated ? that._valueAxes : extendedArgAxes;\r\n var allAxes = verticalAxes.concat(horizontalAxes);\r\n var allElements = allAxes.concat(scrollBar);\r\n var verticalAxesFirstDrawing = verticalAxes.some(function(v) {\r\n return v.isFirstDrawing()\r\n });\r\n that._normalizePanesHeight();\r\n that._updatePanesCanvases(drawOptions);\r\n var panesCanvases = that.panes.reduce(function(canvases, pane) {\r\n canvases[pane.name] = (0, _extend2.extend)({}, pane.canvas);\r\n return canvases\r\n }, {});\r\n var paneSizes = that.panes.reduce(function(sizes, pane) {\r\n sizes[pane.name] = {\r\n height: pane.height,\r\n unit: pane.unit\r\n };\r\n return sizes\r\n }, {});\r\n var cleanPanesCanvases = (0, _extend2.extend)(true, {}, panesCanvases);\r\n that._initCustomPositioningAxes();\r\n var needCustomAdjustAxes = that._axesBoundaryPositioning();\r\n if (!drawOptions.adjustAxes && !needCustomAdjustAxes) {\r\n drawAxesWithTicks(verticalAxes, !rotated && synchronizeMultiAxes, panesCanvases, panesBorderOptions);\r\n drawAxesWithTicks(horizontalAxes, rotated && synchronizeMultiAxes, panesCanvases, panesBorderOptions);\r\n performActionOnAxes(allAxes, \"prepareAnimation\");\r\n that._renderScaleBreaks();\r\n horizontalAxes.forEach(function(a) {\r\n return a.resolveOverlappingForCustomPositioning(verticalAxes)\r\n });\r\n verticalAxes.forEach(function(a) {\r\n return a.resolveOverlappingForCustomPositioning(horizontalAxes)\r\n });\r\n return false\r\n }\r\n if (needCustomAdjustAxes) {\r\n allAxes.forEach(function(a) {\r\n return a.customPositionIsAvailable() && a.shift({\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n right: 0\r\n })\r\n })\r\n }\r\n if (that._scrollBar) {\r\n that._scrollBar.setPane(that.panes)\r\n }\r\n var vAxesMargins = {\r\n panes: {}\r\n };\r\n var hAxesMargins = getHorizontalAxesMargins(horizontalElements, function(axis) {\r\n return axis.estimateMargins(panesCanvases[axis.pane])\r\n });\r\n panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, vAxesMargins, hAxesMargins);\r\n var drawAxesAndSetCanvases = function(isHorizontal) {\r\n var axes = isHorizontal ? horizontalAxes : verticalAxes;\r\n var condition = (isHorizontal ? rotated : !rotated) && synchronizeMultiAxes;\r\n drawAxesWithTicks(axes, condition, panesCanvases, panesBorderOptions);\r\n if (isHorizontal) {\r\n hAxesMargins = getHorizontalAxesMargins(horizontalElements, getAxisMargins)\r\n } else {\r\n vAxesMargins = getVerticalAxesMargins(verticalElements)\r\n }\r\n panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, vAxesMargins, hAxesMargins)\r\n };\r\n drawAxesAndSetCanvases(false);\r\n drawAxesAndSetCanvases(true);\r\n if (!that._changesApplying && that._estimateTickIntervals(verticalAxes, panesCanvases)) {\r\n drawAxesAndSetCanvases(false)\r\n }\r\n var oldTitlesWidth = calculateTitlesWidth(verticalAxes);\r\n var visibleSeries = that._getVisibleSeries();\r\n var pointsToAnimation = that._getPointsToAnimation(visibleSeries);\r\n var axesIsAnimated = axisAnimationEnabled(drawOptions, pointsToAnimation);\r\n performActionOnAxes(allElements, \"updateSize\", panesCanvases, axesIsAnimated);\r\n horizontalElements.forEach(shiftAxis(\"top\", \"bottom\"));\r\n verticalElements.forEach(shiftAxis(\"left\", \"right\"));\r\n that._renderScaleBreaks();\r\n that.panes.forEach(function(pane) {\r\n (0, _extend2.extend)(pane.canvas, panesCanvases[pane.name])\r\n });\r\n that._valueAxes.forEach(function(axis) {\r\n axis.setInitRange()\r\n });\r\n verticalAxes.forEach(function(axis, i) {\r\n var _axis$hasWrap;\r\n if (null !== (_axis$hasWrap = axis.hasWrap) && void 0 !== _axis$hasWrap && _axis$hasWrap.call(axis)) {\r\n var title = axis.getTitle();\r\n var newTitleWidth = title ? title.bBox.width : 0;\r\n var offset = newTitleWidth - oldTitlesWidth[i];\r\n if (\"right\" === axis.getOptions().position) {\r\n vAxesMargins.right += offset\r\n } else {\r\n vAxesMargins.left += offset;\r\n that.panes.forEach(function(_ref2) {\r\n var name = _ref2.name;\r\n return vAxesMargins.panes[name].left += offset\r\n })\r\n }\r\n panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, vAxesMargins, hAxesMargins);\r\n performActionOnAxes(allElements, \"updateSize\", panesCanvases, false, false);\r\n oldTitlesWidth = calculateTitlesWidth(verticalAxes)\r\n }\r\n });\r\n if (verticalAxes.some(function(v) {\r\n return v.customPositionIsAvailable() && v.getCustomPosition() !== v._axisPosition\r\n })) {\r\n axesIsAnimated && that._resetAxesAnimation(verticalAxesFirstDrawing, false);\r\n performActionOnAxes(verticalAxes, \"updateSize\", panesCanvases, axesIsAnimated)\r\n }\r\n horizontalAxes.forEach(function(a) {\r\n return a.resolveOverlappingForCustomPositioning(verticalAxes)\r\n });\r\n verticalAxes.forEach(function(a) {\r\n return a.resolveOverlappingForCustomPositioning(horizontalAxes)\r\n });\r\n return cleanPanesCanvases\r\n },\r\n _getExtraTemplatesItems: function() {\r\n var that = this;\r\n var allAxes = (that._argumentAxes || []).concat(that._valueAxes || []);\r\n var elements = that._collectTemplatesFromItems(allAxes);\r\n return {\r\n items: elements.items,\r\n groups: elements.groups,\r\n launchRequest: function() {\r\n allAxes.forEach(function(a) {\r\n a.setRenderedState(true)\r\n })\r\n },\r\n doneRequest: function() {\r\n allAxes.forEach(function(a) {\r\n a.setRenderedState(false)\r\n })\r\n }\r\n }\r\n },\r\n _estimateTickIntervals: function(axes, canvases) {\r\n return axes.some(function(axis) {\r\n return axis.estimateTickInterval(canvases[axis.pane])\r\n })\r\n },\r\n checkForMoreSpaceForPanesCanvas: function() {\r\n var that = this;\r\n var rotated = that._isRotated();\r\n var panesAreCustomSized = that.panes.filter(function(p) {\r\n return p.unit\r\n }).length === that.panes.length;\r\n var needSpace = false;\r\n if (panesAreCustomSized) {\r\n var needHorizontalSpace = 0;\r\n var needVerticalSpace = 0;\r\n if (rotated) {\r\n var argAxisRightMargin = that.getArgumentAxis().getMargins().right;\r\n var rightPanesIndent = Math.min.apply(Math, that.panes.map(function(p) {\r\n return p.canvas.right\r\n }));\r\n needHorizontalSpace = that._canvas.right + argAxisRightMargin - rightPanesIndent\r\n } else {\r\n var argAxisBottomMargin = that.getArgumentAxis().getMargins().bottom;\r\n var bottomPanesIndent = Math.min.apply(Math, that.panes.map(function(p) {\r\n return p.canvas.bottom\r\n }));\r\n needVerticalSpace = that._canvas.bottom + argAxisBottomMargin - bottomPanesIndent\r\n }\r\n needSpace = needHorizontalSpace > 0 || needVerticalSpace > 0 ? {\r\n width: needHorizontalSpace,\r\n height: needVerticalSpace\r\n } : false;\r\n if (0 !== needVerticalSpace) {\r\n var realSize = that.getSize();\r\n var customSize = that.option(\"size\");\r\n var container = that._$element[0];\r\n var containerHasStyledHeight = !!parseInt(container.style.height) || 0 !== that._containerInitialHeight;\r\n if (!rotated && !(customSize && customSize.height) && !containerHasStyledHeight) {\r\n that._forceResize(realSize.width, realSize.height + needVerticalSpace);\r\n needSpace = false\r\n }\r\n }\r\n } else {\r\n needSpace = that.layoutManager.needMoreSpaceForPanesCanvas(that._getLayoutTargets(), rotated, function(pane) {\r\n return {\r\n width: rotated && !!pane.unit,\r\n height: !rotated && !!pane.unit\r\n }\r\n })\r\n }\r\n return needSpace\r\n },\r\n _forceResize: function(width, height) {\r\n this._renderer.resize(width, height);\r\n this._updateSize();\r\n this._setContentSize();\r\n this._preserveOriginalCanvas();\r\n this._updateCanvasClipRect(this._canvas)\r\n },\r\n _shrinkAxes: function(sizeShortage, panesCanvases) {\r\n if (!sizeShortage || !panesCanvases) {\r\n return\r\n }\r\n this._renderer.stopAllAnimations(true);\r\n var that = this;\r\n var rotated = that._isRotated();\r\n var scrollBar = that._scrollBar ? [that._scrollBar] : [];\r\n var extendedArgAxes = that._isArgumentAxisBeforeScrollBar() ? that._argumentAxes.concat(scrollBar) : scrollBar.concat(that._argumentAxes);\r\n var verticalAxes = rotated ? extendedArgAxes : that._valueAxes;\r\n var horizontalAxes = rotated ? that._valueAxes : extendedArgAxes;\r\n var allAxes = verticalAxes.concat(horizontalAxes);\r\n if (sizeShortage.width || sizeShortage.height) {\r\n checkUsedSpace(sizeShortage, \"height\", horizontalAxes, getHorizontalAxesMargins);\r\n checkUsedSpace(sizeShortage, \"width\", verticalAxes, getVerticalAxesMargins);\r\n performActionOnAxes(allAxes, \"updateSize\", panesCanvases);\r\n var paneSizes = that.panes.reduce(function(sizes, pane) {\r\n sizes[pane.name] = {\r\n height: pane.height,\r\n unit: pane.unit\r\n };\r\n return sizes\r\n }, {});\r\n panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, getVerticalAxesMargins(verticalAxes), getHorizontalAxesMargins(horizontalAxes, getAxisMargins));\r\n performActionOnAxes(allAxes, \"updateSize\", panesCanvases);\r\n horizontalAxes.forEach(shiftAxis(\"top\", \"bottom\"));\r\n verticalAxes.forEach(shiftAxis(\"left\", \"right\"));\r\n that.panes.forEach(function(pane) {\r\n return (0, _extend2.extend)(pane.canvas, panesCanvases[pane.name])\r\n })\r\n }\r\n },\r\n _isArgumentAxisBeforeScrollBar: function() {\r\n var that = this;\r\n var argumentAxis = that.getArgumentAxis();\r\n if (that._scrollBar) {\r\n var _argumentAxis$getOpti;\r\n var argAxisPosition = argumentAxis.getResolvedBoundaryPosition();\r\n var argAxisLabelPosition = null === (_argumentAxis$getOpti = argumentAxis.getOptions().label) || void 0 === _argumentAxis$getOpti ? void 0 : _argumentAxis$getOpti.position;\r\n var scrollBarPosition = that._scrollBar.getOptions().position;\r\n return argumentAxis.hasNonBoundaryPosition() || scrollBarPosition === argAxisPosition && argAxisLabelPosition !== scrollBarPosition\r\n }\r\n return false\r\n },\r\n _getPanesParameters: function() {\r\n var that = this;\r\n var panes = that.panes;\r\n var i;\r\n var params = [];\r\n for (i = 0; i < panes.length; i++) {\r\n if (that._getPaneBorderVisibility(i)) {\r\n params.push({\r\n coords: panes[i].borderCoords,\r\n clipRect: that._panesClipRects.fixed[i]\r\n })\r\n }\r\n }\r\n return params\r\n },\r\n _createCrosshairCursor: function() {\r\n var that = this;\r\n var options = that._themeManager.getOptions(\"crosshair\") || {};\r\n var argumentAxis = that.getArgumentAxis();\r\n var axes = !that._isRotated() ? [\r\n [argumentAxis], that._valueAxes\r\n ] : [that._valueAxes, [argumentAxis]];\r\n var parameters = {\r\n canvas: that._getCommonCanvas(),\r\n panes: that._getPanesParameters(),\r\n axes: axes\r\n };\r\n if (!options || !options.enabled) {\r\n return\r\n }\r\n if (!that._crosshair) {\r\n that._crosshair = new _crosshair.Crosshair(that._renderer, options, parameters, that._crosshairCursorGroup)\r\n } else {\r\n that._crosshair.update(options, parameters)\r\n }\r\n that._crosshair.render()\r\n },\r\n _getCommonCanvas: function() {\r\n var i;\r\n var canvas;\r\n var commonCanvas;\r\n var panes = this.panes;\r\n for (i = 0; i < panes.length; i++) {\r\n canvas = panes[i].canvas;\r\n if (!commonCanvas) {\r\n commonCanvas = (0, _extend2.extend)({}, canvas)\r\n } else {\r\n commonCanvas.right = canvas.right;\r\n commonCanvas.bottom = canvas.bottom\r\n }\r\n }\r\n return commonCanvas\r\n },\r\n _createPanesBackground: function() {\r\n var that = this;\r\n var defaultBackgroundColor = that._themeManager.getOptions(\"commonPaneSettings\").backgroundColor;\r\n var backgroundColor;\r\n var renderer = that._renderer;\r\n var rect;\r\n var i;\r\n var rects = [];\r\n that._panesBackgroundGroup.clear();\r\n for (i = 0; i < that.panes.length; i++) {\r\n backgroundColor = that.panes[i].backgroundColor || defaultBackgroundColor;\r\n if (!backgroundColor || \"none\" === backgroundColor) {\r\n rects.push(null);\r\n continue\r\n }\r\n rect = renderer.rect(0, 0, 0, 0).attr({\r\n fill: backgroundColor,\r\n \"stroke-width\": 0\r\n }).append(that._panesBackgroundGroup);\r\n rects.push(rect)\r\n }\r\n that.panesBackground = rects\r\n },\r\n _fillPanesBackground: function() {\r\n var that = this;\r\n var bc;\r\n (0, _iterator.each)(that.panes, function(i, pane) {\r\n bc = pane.borderCoords;\r\n if (null !== that.panesBackground[i]) {\r\n that.panesBackground[i].attr({\r\n x: bc.left,\r\n y: bc.top,\r\n width: bc.width,\r\n height: bc.height\r\n })\r\n }\r\n })\r\n },\r\n _calcPaneBorderCoords: function(pane) {\r\n var canvas = pane.canvas;\r\n var bc = pane.borderCoords = pane.borderCoords || {};\r\n bc.left = canvas.left;\r\n bc.top = canvas.top;\r\n bc.right = canvas.width - canvas.right;\r\n bc.bottom = canvas.height - canvas.bottom;\r\n bc.width = Math.max(bc.right - bc.left, 0);\r\n bc.height = Math.max(bc.bottom - bc.top, 0)\r\n },\r\n _drawPanesBorders: function(panesBorderOptions) {\r\n var that = this;\r\n var rotated = that._isRotated();\r\n that._panesBorderGroup.linkRemove().clear();\r\n (0, _iterator.each)(that.panes, function(i, pane) {\r\n var borderOptions = panesBorderOptions[pane.name];\r\n var attr = {\r\n fill: \"none\",\r\n stroke: borderOptions.color,\r\n \"stroke-opacity\": borderOptions.opacity,\r\n \"stroke-width\": borderOptions.width,\r\n dashStyle: borderOptions.dashStyle,\r\n \"stroke-linecap\": \"square\"\r\n };\r\n that._calcPaneBorderCoords(pane, rotated);\r\n if (!borderOptions.visible) {\r\n return\r\n }\r\n var bc = pane.borderCoords;\r\n var segmentRectParams = (0, _utils.prepareSegmentRectPoints)(bc.left, bc.top, bc.width, bc.height, borderOptions);\r\n that._renderer.path(segmentRectParams.points, segmentRectParams.pathType).attr(attr).append(that._panesBorderGroup)\r\n });\r\n that._panesBorderGroup.linkAppend()\r\n },\r\n _createClipRect: function(clipArray, index, left, top, width, height) {\r\n var that = this;\r\n var clipRect = clipArray[index];\r\n if (!clipRect) {\r\n clipRect = that._renderer.clipRect(left, top, width, height);\r\n clipArray[index] = clipRect\r\n } else {\r\n clipRect.attr({\r\n x: left,\r\n y: top,\r\n width: width,\r\n height: height\r\n })\r\n }\r\n },\r\n _createClipRectsForPanes: function() {\r\n var that = this;\r\n var canvas = that._canvas;\r\n (0, _iterator.each)(that.panes, function(i, pane) {\r\n var needWideClipRect = false;\r\n var bc = pane.borderCoords;\r\n var left = bc.left;\r\n var top = bc.top;\r\n var width = bc.width;\r\n var height = bc.height;\r\n var panesClipRects = that._panesClipRects;\r\n that._createClipRect(panesClipRects.fixed, i, left, top, width, height);\r\n that._createClipRect(panesClipRects.base, i, left, top, width, height);\r\n (0, _iterator.each)(that.series, function(_, series) {\r\n if (series.pane === pane.name && (series.isFinancialSeries() || series.areErrorBarsVisible())) {\r\n needWideClipRect = true\r\n }\r\n });\r\n if (needWideClipRect) {\r\n if (that._isRotated()) {\r\n top = 0;\r\n height = canvas.height\r\n } else {\r\n left = 0;\r\n width = canvas.width\r\n }\r\n that._createClipRect(panesClipRects.wide, i, left, top, width, height)\r\n } else {\r\n panesClipRects.wide[i] = null\r\n }\r\n })\r\n },\r\n _applyClipRectsForAxes: function() {\r\n var that = this;\r\n var axes = that._getAllAxes();\r\n var chartCanvasClipRectID = that._getCanvasClipRectID();\r\n for (var i = 0; i < axes.length; i++) {\r\n var elementsClipRectID = that._getElementsClipRectID(axes[i].pane);\r\n axes[i].applyClipRects(elementsClipRectID, chartCanvasClipRectID)\r\n }\r\n },\r\n _getPaneBorderVisibility: function(paneIndex) {\r\n var commonPaneBorderVisible = this._themeManager.getOptions(\"commonPaneSettings\").border.visible;\r\n var pane = this.panes[paneIndex] || {};\r\n var paneBorder = pane.border || {};\r\n return \"visible\" in paneBorder ? paneBorder.visible : commonPaneBorderVisible\r\n },\r\n _getCanvasForPane: function(paneName) {\r\n var panes = this.panes;\r\n var panesNumber = panes.length;\r\n var i;\r\n for (i = 0; i < panesNumber; i++) {\r\n if (panes[i].name === paneName) {\r\n return panes[i].canvas\r\n }\r\n }\r\n },\r\n _getTrackerSettings: function() {\r\n var that = this;\r\n var themeManager = that._themeManager;\r\n return (0, _extend2.extend)(this.callBase(), {\r\n chart: that,\r\n rotated: that._isRotated(),\r\n crosshair: that._getCrosshairOptions().enabled ? that._crosshair : null,\r\n stickyHovering: themeManager.getOptions(\"stickyHovering\")\r\n })\r\n },\r\n _resolveLabelOverlappingStack: function() {\r\n var that = this;\r\n var isRotated = that._isRotated();\r\n var shiftDirection = isRotated ? function(box, length) {\r\n return {\r\n x: box.x - length,\r\n y: box.y\r\n }\r\n } : function(box, length) {\r\n return {\r\n x: box.x,\r\n y: box.y - length\r\n }\r\n };\r\n (0, _iterator.each)(that._getStackPoints(), function(_, stacks) {\r\n (0, _iterator.each)(stacks, function(_, points) {\r\n _base_chart.overlapping.resolveLabelOverlappingInOneDirection(points, that._getCommonCanvas(), isRotated, shiftDirection, function(a, b) {\r\n var coordPosition = isRotated ? 1 : 0;\r\n var figureCenter1 = a.labels[0].getFigureCenter()[coordPosition];\r\n var figureCenter12 = b.labels[0].getFigureCenter()[coordPosition];\r\n if (figureCenter1 - figureCenter12 === 0) {\r\n return (a.value() - b.value()) * (a.labels[0].getPoint().series.getValueAxis().getTranslator().isInverted() ? -1 : 1)\r\n }\r\n return 0\r\n })\r\n })\r\n })\r\n },\r\n _getStackPoints: function() {\r\n var stackPoints = {};\r\n var visibleSeries = this._getVisibleSeries();\r\n (0, _iterator.each)(visibleSeries, function(_, singleSeries) {\r\n var points = singleSeries.getPoints();\r\n var stackName = singleSeries.getStackName() || null;\r\n (0, _iterator.each)(points, function(_, point) {\r\n var argument = point.argument;\r\n if (!stackPoints[argument]) {\r\n stackPoints[argument] = {}\r\n }\r\n if (!stackPoints[argument][stackName]) {\r\n stackPoints[argument][stackName] = []\r\n }\r\n stackPoints[argument][stackName].push(point)\r\n })\r\n });\r\n return stackPoints\r\n },\r\n _getCrosshairOptions: function() {\r\n return this._getOption(\"crosshair\")\r\n },\r\n zoomArgument: function(min, max) {\r\n var that = this;\r\n if (!that._initialized || !(0, _type.isDefined)(min) && !(0, _type.isDefined)(max)) {\r\n return\r\n }\r\n that.getArgumentAxis().visualRange([min, max])\r\n },\r\n resetVisualRange: function() {\r\n var that = this;\r\n var axes = that._argumentAxes;\r\n var nonVirtualArgumentAxis = that.getArgumentAxis();\r\n axes.forEach(function(axis) {\r\n axis.resetVisualRange(nonVirtualArgumentAxis !== axis);\r\n that._applyCustomVisualRangeOption(axis)\r\n });\r\n that.callBase()\r\n },\r\n getVisibleArgumentBounds: function() {\r\n var translator = this._argumentAxes[0].getTranslator();\r\n var range = translator.getBusinessRange();\r\n var isDiscrete = range.axisType === DISCRETE;\r\n var categories = range.categories;\r\n return {\r\n minVisible: isDiscrete ? range.minVisible || categories[0] : range.minVisible,\r\n maxVisible: isDiscrete ? range.maxVisible || categories[categories.length - 1] : range.maxVisible\r\n }\r\n },\r\n _change_FULL_RENDER: function() {\r\n this.callBase();\r\n if (this._changes.has(VISUAL_RANGE)) {\r\n this._raiseZoomEndHandlers()\r\n }\r\n },\r\n _getAxesForScaling: function() {\r\n return [this.getArgumentAxis()].concat(this._valueAxes)\r\n },\r\n _applyVisualRangeByVirtualAxes: function(axis, range) {\r\n var that = this;\r\n if (axis.isArgumentAxis) {\r\n if (axis !== that.getArgumentAxis()) {\r\n return true\r\n }\r\n that._argumentAxes.filter(function(a) {\r\n return a !== axis\r\n }).forEach(function(a) {\r\n return a.visualRange(range, {\r\n start: true,\r\n end: true\r\n })\r\n })\r\n }\r\n return false\r\n },\r\n _raiseZoomEndHandlers: function() {\r\n this._argumentAxes.forEach(function(axis) {\r\n return axis.handleZoomEnd()\r\n });\r\n this.callBase()\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n (0, _extend2.extend)(this._optionsByReference, {\r\n \"argumentAxis.visualRange\": true\r\n })\r\n },\r\n option: function option() {\r\n var option = this.callBase.apply(this, arguments);\r\n var valueAxis = this._options.silent(\"valueAxis\");\r\n if (\"array\" === (0, _type.type)(valueAxis)) {\r\n for (var i = 0; i < valueAxis.length; i++) {\r\n var optionPath = \"valueAxis[\".concat(i, \"].visualRange\");\r\n this._optionsByReference[optionPath] = true\r\n }\r\n }\r\n return option\r\n },\r\n _notifyVisualRange: function() {\r\n var that = this;\r\n var argAxis = that._argumentAxes[0];\r\n var argumentVisualRange = (0, _utils2.convertVisualRangeObject)(argAxis.visualRange(), !_isArray(that.option(\"argumentAxis.visualRange\")));\r\n if (!argAxis.skipEventRising || !(0, _utils2.rangesAreEqual)(argumentVisualRange, that.option(\"argumentAxis.visualRange\"))) {\r\n that.option(\"argumentAxis.visualRange\", argumentVisualRange)\r\n } else {\r\n argAxis.skipEventRising = null\r\n }\r\n that.callBase()\r\n }\r\n});\r\ndxChart.addPlugin(_shutter_zoom.default);\r\ndxChart.addPlugin(_zoom_and_pan.default);\r\ndxChart.addPlugin(_annotations.plugins.core);\r\ndxChart.addPlugin(_annotations.plugins.chart);\r\n(0, _component_registrator.default)(\"dxChart\", dxChart);\r\nvar _default = dxChart;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/chart_components/tracker.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.PieTracker = exports.ChartTracker = void 0;\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _consts = _interopRequireDefault(require(\"../components/consts\"));\r\nvar _utils = require(\"../core/utils\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _floor = Math.floor;\r\nvar eventsConsts = _consts.default.events;\r\nvar statesConsts = _consts.default.states;\r\nvar HOVER_STATE = statesConsts.hoverMark;\r\nvar NORMAL_STATE = statesConsts.normalMark;\r\nvar EVENT_NS = \"dxChartTracker\";\r\nvar DOT_EVENT_NS = \".\" + EVENT_NS;\r\nvar POINTER_ACTION = (0, _index.addNamespace)([_pointer.default.down, _pointer.default.move], EVENT_NS);\r\nvar LEGEND_CLICK = \"legendClick\";\r\nvar SERIES_CLICK = \"seriesClick\";\r\nvar POINT_CLICK = \"pointClick\";\r\nvar POINT_DATA = \"chart-data-point\";\r\nvar SERIES_DATA = \"chart-data-series\";\r\nvar ARG_DATA = \"chart-data-argument\";\r\nvar DELAY = 100;\r\nvar HOLD_TIMEOUT = 300;\r\nvar NONE_MODE = \"none\";\r\nvar ALL_ARGUMENT_POINTS_MODE = \"allargumentpoints\";\r\nvar INCLUDE_POINTS_MODE = \"includepoints\";\r\nvar EXLUDE_POINTS_MODE = \"excludepoints\";\r\nvar LEGEND_HOVER_MODES = [INCLUDE_POINTS_MODE, EXLUDE_POINTS_MODE, NONE_MODE];\r\n\r\nfunction getData(event, dataKey, tryCheckParent) {\r\n var target = event.target;\r\n if (\"tspan\" === target.tagName) {\r\n return target.parentNode[dataKey]\r\n }\r\n var data = target[dataKey];\r\n if (tryCheckParent && !(0, _type.isDefined)(data)) {\r\n var getParentData = function getParentData(node) {\r\n if (node.parentNode) {\r\n if ((0, _type.isDefined)(node.parentNode[dataKey])) {\r\n return node.parentNode[dataKey]\r\n } else {\r\n return getParentData(node.parentNode)\r\n }\r\n }\r\n return\r\n };\r\n return getParentData(target)\r\n }\r\n return data\r\n}\r\n\r\nfunction eventCanceled(event, target) {\r\n return event.cancel || !target.getOptions()\r\n}\r\n\r\nfunction correctLegendHoverMode(mode) {\r\n if (LEGEND_HOVER_MODES.indexOf(mode) > -1) {\r\n return mode\r\n } else {\r\n return INCLUDE_POINTS_MODE\r\n }\r\n}\r\n\r\nfunction correctHoverMode(target) {\r\n var mode = target.getOptions().hoverMode;\r\n return mode === NONE_MODE ? mode : ALL_ARGUMENT_POINTS_MODE\r\n}\r\nvar baseTrackerPrototype = {\r\n ctor: function(options) {\r\n var that = this;\r\n var data = {\r\n tracker: that\r\n };\r\n that._renderer = options.renderer;\r\n that._legend = options.legend;\r\n that._tooltip = options.tooltip;\r\n that._eventTrigger = options.eventTrigger;\r\n that._seriesGroup = options.seriesGroup;\r\n options.seriesGroup.off(DOT_EVENT_NS).on((0, _index.addNamespace)(eventsConsts.showPointTooltip, EVENT_NS), data, that._showPointTooltip).on((0, _index.addNamespace)(eventsConsts.hidePointTooltip, EVENT_NS), data, that._hidePointTooltip);\r\n that._renderer.root.off(DOT_EVENT_NS).on(POINTER_ACTION, data, that._pointerHandler).on((0, _index.addNamespace)(_pointer.default.up, EVENT_NS), function() {\r\n return clearTimeout(that._holdTimer)\r\n }).on((0, _index.addNamespace)(_click.name, EVENT_NS), data, that._clickHandler)\r\n },\r\n update: function(options) {\r\n this._chart = options.chart\r\n },\r\n updateSeries: function(series, resetDecorations) {\r\n var that = this;\r\n var noHoveredSeries = !(null !== series && void 0 !== series && series.some(function(s) {\r\n return s === that.hoveredSeries\r\n }) || that._hoveredPoint && that._hoveredPoint.series);\r\n if (that._storedSeries !== series) {\r\n that._storedSeries = series || []\r\n }\r\n if (noHoveredSeries) {\r\n that._clean();\r\n that._renderer.initHatching()\r\n }\r\n if (resetDecorations) {\r\n that.clearSelection();\r\n if (!noHoveredSeries) {\r\n that._hideTooltip(that.pointAtShownTooltip);\r\n that.clearHover()\r\n }\r\n }\r\n },\r\n setCanvases: function(mainCanvas, paneCanvases) {\r\n this._mainCanvas = mainCanvas;\r\n this._canvases = paneCanvases\r\n },\r\n repairTooltip: function() {\r\n var point = this.pointAtShownTooltip;\r\n if (!point || !point.series || !point.isVisible()) {\r\n this._hideTooltip(point, true)\r\n } else {\r\n this._showTooltip(point)\r\n }\r\n },\r\n _setHoveredPoint: function(point) {\r\n if (point === this._hoveredPoint) {\r\n return\r\n }\r\n this._releaseHoveredPoint();\r\n point.hover();\r\n this._hoveredPoint = point\r\n },\r\n _releaseHoveredPoint: function() {\r\n if (this._hoveredPoint && this._hoveredPoint.getOptions()) {\r\n this._hoveredPoint.clearHover();\r\n this._hoveredPoint = null;\r\n if (this._tooltip.isEnabled()) {\r\n this._hideTooltip(this._hoveredPoint)\r\n }\r\n }\r\n },\r\n _setHoveredSeries: function(series, mode) {\r\n this._releaseHoveredSeries();\r\n this._releaseHoveredPoint();\r\n series.hover(mode);\r\n this.hoveredSeries = series\r\n },\r\n _releaseHoveredSeries: function() {\r\n if (this.hoveredSeries) {\r\n this.hoveredSeries.clearHover();\r\n this.hoveredSeries = null\r\n }\r\n },\r\n clearSelection: function() {\r\n this._storedSeries.forEach(function(series) {\r\n if (series) {\r\n series.clearSelection();\r\n series.getPoints().forEach(function(point) {\r\n return point.clearSelection()\r\n })\r\n }\r\n })\r\n },\r\n _clean: function() {\r\n var that = this;\r\n that.hoveredPoint = that.hoveredSeries = that._hoveredArgumentPoints = null;\r\n that._hideTooltip(that.pointAtShownTooltip)\r\n },\r\n clearHover: function() {\r\n this._resetHoveredArgument();\r\n this._releaseHoveredSeries();\r\n this._releaseHoveredPoint()\r\n },\r\n _hideTooltip: function(point, silent) {\r\n var that = this;\r\n if (!that._tooltip || point && that.pointAtShownTooltip !== point) {\r\n return\r\n }\r\n if (!silent && that.pointAtShownTooltip) {\r\n that.pointAtShownTooltip = null\r\n }\r\n that._tooltip.hide()\r\n },\r\n _showTooltip: function(point) {\r\n var that = this;\r\n var tooltipFormatObject;\r\n var eventData = {\r\n target: point\r\n };\r\n if (null !== point && void 0 !== point && point.getOptions()) {\r\n tooltipFormatObject = point.getTooltipFormatObject(that._tooltip, that._tooltip.isShared() && that._chart.getStackedPoints(point));\r\n if (!(0, _type.isDefined)(tooltipFormatObject.valueText) && !tooltipFormatObject.points || !point.isVisible()) {\r\n return\r\n }\r\n var coords = point.getTooltipParams(that._tooltip.getLocation());\r\n var rootOffset = that._renderer.getRootOffset();\r\n coords.x += rootOffset.left;\r\n coords.y += rootOffset.top;\r\n var callback = function(result) {\r\n result && (that.pointAtShownTooltip = point)\r\n };\r\n callback(that._tooltip.show(tooltipFormatObject, coords, eventData, void 0, callback))\r\n }\r\n },\r\n _showPointTooltip: function(event, point) {\r\n var that = event.data.tracker;\r\n var pointWithTooltip = that.pointAtShownTooltip;\r\n if (pointWithTooltip && pointWithTooltip !== point) {\r\n that._hideTooltip(pointWithTooltip)\r\n }\r\n that._showTooltip(point)\r\n },\r\n _hidePointTooltip: function(event, point) {\r\n event.data.tracker._hideTooltip(point)\r\n },\r\n _enableOutHandler: function() {\r\n if (this._outHandler) {\r\n return\r\n }\r\n var that = this;\r\n var handler = function(e) {\r\n var rootOffset = that._renderer.getRootOffset();\r\n var x = _floor(e.pageX - rootOffset.left);\r\n var y = _floor(e.pageY - rootOffset.top);\r\n if (!(0, _utils.pointInCanvas)(that._mainCanvas, x, y) && !that._tooltip.isCursorOnTooltip(e.pageX, e.pageY)) {\r\n that._pointerOut();\r\n that._disableOutHandler()\r\n }\r\n };\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), POINTER_ACTION, handler);\r\n this._outHandler = handler\r\n },\r\n _disableOutHandler: function() {\r\n this._outHandler && _events_engine.default.off(_dom_adapter.default.getDocument(), POINTER_ACTION, this._outHandler);\r\n this._outHandler = null\r\n },\r\n stopCurrentHandling: function() {\r\n this._pointerOut(true)\r\n },\r\n _pointerOut: function(force) {\r\n this.clearHover();\r\n (force || this._tooltip.isEnabled()) && this._hideTooltip(this.pointAtShownTooltip)\r\n },\r\n _triggerLegendClick: function(eventArgs, elementClick) {\r\n var eventTrigger = this._eventTrigger;\r\n eventTrigger(LEGEND_CLICK, eventArgs, function() {\r\n !eventCanceled(eventArgs.event, eventArgs.target) && eventTrigger(elementClick, eventArgs)\r\n })\r\n },\r\n _hoverLegendItem: function(x, y) {\r\n var that = this;\r\n var item = that._legend.getItemByCoord(x, y);\r\n var series;\r\n var legendHoverMode = correctLegendHoverMode(that._legend.getOptions().hoverMode);\r\n if (item) {\r\n series = that._storedSeries[item.id];\r\n if (!series.isHovered() || series.lastHoverMode !== legendHoverMode) {\r\n that._setHoveredSeries(series, legendHoverMode)\r\n }\r\n that._tooltip.isEnabled() && that._hideTooltip(that.pointAtShownTooltip)\r\n } else {\r\n that.clearHover()\r\n }\r\n },\r\n _hoverArgument: function(argument, argumentIndex) {\r\n var that = this;\r\n var hoverMode = that._getArgumentHoverMode();\r\n if ((0, _type.isDefined)(argument)) {\r\n that._releaseHoveredPoint();\r\n that._hoveredArgument = argument;\r\n that._argumentIndex = argumentIndex;\r\n that._notifySeries({\r\n action: \"pointHover\",\r\n notifyLegend: that._notifyLegendOnHoverArgument,\r\n target: {\r\n argument: argument,\r\n fullState: HOVER_STATE,\r\n argumentIndex: argumentIndex,\r\n getOptions: function() {\r\n return {\r\n hoverMode: hoverMode\r\n }\r\n }\r\n }\r\n })\r\n }\r\n },\r\n _resetHoveredArgument: function() {\r\n var that = this;\r\n var hoverMode;\r\n if ((0, _type.isDefined)(that._hoveredArgument)) {\r\n hoverMode = that._getArgumentHoverMode();\r\n that._notifySeries({\r\n action: \"clearPointHover\",\r\n notifyLegend: that._notifyLegendOnHoverArgument,\r\n target: {\r\n fullState: NORMAL_STATE,\r\n argumentIndex: that._argumentIndex,\r\n argument: that._hoveredArgument,\r\n getOptions: function() {\r\n return {\r\n hoverMode: hoverMode\r\n }\r\n }\r\n }\r\n });\r\n that._hoveredArgument = null\r\n }\r\n },\r\n _notifySeries: function(data) {\r\n this._storedSeries.forEach(function(series) {\r\n series.notify(data)\r\n })\r\n },\r\n _pointerHandler: function(e) {\r\n var _series;\r\n var that = e.data.tracker;\r\n var rootOffset = that._renderer.getRootOffset();\r\n var x = _floor(e.pageX - rootOffset.left);\r\n var y = _floor(e.pageY - rootOffset.top);\r\n var canvas = that._getCanvas(x, y);\r\n var series = getData(e, SERIES_DATA);\r\n var point = getData(e, POINT_DATA) || (null === (_series = series) || void 0 === _series ? void 0 : _series.getPointByCoord(x, y));\r\n that._isHolding = false;\r\n clearTimeout(that._holdTimer);\r\n if (e.type === _pointer.default.down) {\r\n that._holdTimer = setTimeout(function() {\r\n return that._isHolding = true\r\n }, HOLD_TIMEOUT)\r\n }\r\n if (point && !point.getMarkerVisibility()) {\r\n point = void 0\r\n }\r\n that._enableOutHandler();\r\n if (that._legend.coordsIn(x, y)) {\r\n that._hoverLegendItem(x, y);\r\n return\r\n }\r\n if (that.hoveredSeries && that.hoveredSeries !== that._stuckSeries) {\r\n that._releaseHoveredSeries()\r\n }\r\n if (that._hoverArgumentAxis(x, y, e)) {\r\n return\r\n }\r\n if (that._isPointerOut(canvas, point)) {\r\n that._pointerOut()\r\n }\r\n if (!canvas && !point) {\r\n return\r\n }\r\n if (series && !point) {\r\n point = series.getNeighborPoint(x, y);\r\n if (!that._stickyHovering && point && !point.coordsIn(x, y)) {\r\n point = null\r\n }\r\n if (series !== that.hoveredSeries) {\r\n that._setTimeout(function() {\r\n that._setHoveredSeries(series);\r\n that._setStuckSeries(e, series, x, y);\r\n that._pointerComplete(point, x, y)\r\n }, series);\r\n return\r\n }\r\n } else {\r\n if (point) {\r\n if (e.type !== _pointer.default.move && \"touch\" !== e.pointerType) {\r\n return\r\n }\r\n if (that.hoveredSeries) {\r\n that._setTimeout(function() {\r\n return that._pointerOnPoint(point, x, y, e)\r\n }, point)\r\n } else {\r\n that._pointerOnPoint(point, x, y, e)\r\n }\r\n return\r\n } else {\r\n if (that._setStuckSeries(e, void 0, x, y) && that._stickyHovering) {\r\n var _point;\r\n series = that._stuckSeries;\r\n point = series.getNeighborPoint(x, y);\r\n that._releaseHoveredSeries();\r\n (null === (_point = point) || void 0 === _point ? void 0 : _point.getMarkerVisibility()) && that._setHoveredPoint(point)\r\n } else {\r\n if (!that._stickyHovering) {\r\n that._pointerOut()\r\n }\r\n }\r\n }\r\n }\r\n that._pointerComplete(point, x, y)\r\n },\r\n _pointerOnPoint: function(point, x, y) {\r\n this._resetHoveredArgument();\r\n this._setHoveredPoint(point);\r\n this._pointerComplete(point, x, y)\r\n },\r\n _pointerComplete: function(point) {\r\n this.pointAtShownTooltip !== point && this._tooltip.isEnabled() && this._showTooltip(point)\r\n },\r\n _clickHandler: function(e) {\r\n var _point2;\r\n var that = e.data.tracker;\r\n if (that._isHolding) {\r\n return\r\n }\r\n var rootOffset = that._renderer.getRootOffset();\r\n var x = _floor(e.pageX - rootOffset.left);\r\n var y = _floor(e.pageY - rootOffset.top);\r\n var point = getData(e, POINT_DATA);\r\n var series = that._stuckSeries || getData(e, SERIES_DATA) || (null === (_point2 = point) || void 0 === _point2 ? void 0 : _point2.series);\r\n var axis = that._argumentAxis;\r\n if (that._legend.coordsIn(x, y)) {\r\n var item = that._legend.getItemByCoord(x, y);\r\n if (item) {\r\n that._legendClick(item, e)\r\n }\r\n } else {\r\n if (null !== axis && void 0 !== axis && axis.coordsIn(x, y)) {\r\n var argument = getData(e, ARG_DATA, true);\r\n if ((0, _type.isDefined)(argument)) {\r\n that._eventTrigger(\"argumentAxisClick\", {\r\n argument: argument,\r\n event: e\r\n })\r\n }\r\n } else {\r\n if (series) {\r\n var _point3;\r\n point = point || series.getPointByCoord(x, y);\r\n if (null !== (_point3 = point) && void 0 !== _point3 && _point3.getMarkerVisibility()) {\r\n that._pointClick(point, e)\r\n } else {\r\n getData(e, SERIES_DATA) && that._eventTrigger(SERIES_CLICK, {\r\n target: series,\r\n event: e\r\n })\r\n }\r\n }\r\n }\r\n }\r\n },\r\n dispose: function() {\r\n var that = this;\r\n that._disableOutHandler();\r\n that._renderer.root.off(DOT_EVENT_NS);\r\n that._seriesGroup.off(DOT_EVENT_NS)\r\n }\r\n};\r\nvar ChartTracker = function(options) {\r\n this.ctor(options)\r\n};\r\nexports.ChartTracker = ChartTracker;\r\n(0, _extend.extend)(ChartTracker.prototype, baseTrackerPrototype, {\r\n _pointClick: function(point, event) {\r\n var that = this;\r\n var eventTrigger = that._eventTrigger;\r\n var series = point.series;\r\n eventTrigger(POINT_CLICK, {\r\n target: point,\r\n event: event\r\n }, function() {\r\n !eventCanceled(event, series) && eventTrigger(SERIES_CLICK, {\r\n target: series,\r\n event: event\r\n })\r\n })\r\n },\r\n update: function(options) {\r\n var that = this;\r\n baseTrackerPrototype.update.call(this, options);\r\n that._argumentAxis = options.argumentAxis || {};\r\n that._axisHoverEnabled = that._argumentAxis && (0, _utils.normalizeEnum)(that._argumentAxis.getOptions().hoverMode) === ALL_ARGUMENT_POINTS_MODE;\r\n that._rotated = options.rotated;\r\n that._crosshair = options.crosshair;\r\n that._stickyHovering = options.stickyHovering\r\n },\r\n _getCanvas: function(x, y) {\r\n var that = this;\r\n var canvases = that._canvases || [];\r\n for (var i = 0; i < canvases.length; i++) {\r\n var c = canvases[i];\r\n if ((0, _utils.pointInCanvas)(c, x, y)) {\r\n return c\r\n }\r\n }\r\n return null\r\n },\r\n _isPointerOut: function(canvas) {\r\n return !canvas && this._stuckSeries\r\n },\r\n _hideCrosshair: function() {\r\n var _this$_crosshair;\r\n null === (_this$_crosshair = this._crosshair) || void 0 === _this$_crosshair ? void 0 : _this$_crosshair.hide()\r\n },\r\n _moveCrosshair: function(point, x, y) {\r\n if (this._crosshair && null !== point && void 0 !== point && point.isVisible()) {\r\n this._crosshair.show({\r\n point: point,\r\n x: x,\r\n y: y\r\n })\r\n }\r\n },\r\n _clean: function() {\r\n var that = this;\r\n baseTrackerPrototype._clean.call(that);\r\n that._resetTimer();\r\n that._stuckSeries = null\r\n },\r\n _getSeriesForShared: function(x, y) {\r\n var _point4;\r\n var that = this;\r\n var points = [];\r\n var point = null;\r\n var distance = 1 / 0;\r\n if (that._tooltip.isShared() && !that.hoveredSeries) {\r\n (0, _iterator.each)(that._storedSeries, function(_, series) {\r\n var point = series.getNeighborPoint(x, y);\r\n point && points.push(point)\r\n });\r\n (0, _iterator.each)(points, function(_, p) {\r\n var coords = p.getCrosshairData(x, y);\r\n var d = (0, _utils.getDistance)(x, y, coords.x, coords.y);\r\n if (d < distance) {\r\n point = p;\r\n distance = d\r\n }\r\n })\r\n }\r\n return null === (_point4 = point) || void 0 === _point4 ? void 0 : _point4.series\r\n },\r\n _setTimeout: function(callback, keeper) {\r\n var that = this;\r\n if (that._timeoutKeeper !== keeper) {\r\n that._resetTimer();\r\n that._hoverTimeout = setTimeout(function() {\r\n callback();\r\n that._timeoutKeeper = null\r\n }, DELAY);\r\n that._timeoutKeeper = keeper\r\n }\r\n },\r\n _resetTimer: function() {\r\n clearTimeout(this._hoverTimeout);\r\n this._timeoutKeeper = this._hoverTimeout = null\r\n },\r\n _stopEvent: function(e) {\r\n if (!(0, _type.isDefined)(e.cancelable) || e.cancelable) {\r\n e.preventDefault();\r\n e.stopPropagation()\r\n }\r\n },\r\n _setStuckSeries: function(e, series, x, y) {\r\n if (\"mouse\" !== e.pointerType) {\r\n this._stuckSeries = null\r\n } else {\r\n this._stuckSeries = series || this._stuckSeries || this._getSeriesForShared(x, y)\r\n }\r\n return !!this._stuckSeries\r\n },\r\n _pointerOut: function() {\r\n var that = this;\r\n that._stuckSeries = null;\r\n that._hideCrosshair();\r\n that._resetTimer();\r\n baseTrackerPrototype._pointerOut.apply(that, arguments)\r\n },\r\n _hoverArgumentAxis: function(x, y, e) {\r\n var that = this;\r\n that._resetHoveredArgument();\r\n if (that._axisHoverEnabled && that._argumentAxis.coordsIn(x, y)) {\r\n that._hoverArgument(getData(e, ARG_DATA, true));\r\n return true\r\n }\r\n },\r\n _pointerComplete: function(point, x, y) {\r\n var that = this;\r\n that.hoveredSeries && that.hoveredSeries.updateHover(x, y);\r\n that._resetTimer();\r\n that._moveCrosshair(point, x, y);\r\n baseTrackerPrototype._pointerComplete.call(that, point)\r\n },\r\n _legendClick: function(item, e) {\r\n var series = this._storedSeries[item.id];\r\n this._triggerLegendClick({\r\n target: series,\r\n event: e\r\n }, SERIES_CLICK)\r\n },\r\n _hoverLegendItem: function(x, y) {\r\n this._stuckSeries = null;\r\n this._hideCrosshair();\r\n baseTrackerPrototype._hoverLegendItem.call(this, x, y)\r\n },\r\n _pointerOnPoint: function(point, x, y, e) {\r\n this._setStuckSeries(e, point.series, x, y);\r\n this._releaseHoveredSeries();\r\n baseTrackerPrototype._pointerOnPoint.call(this, point, x, y, e)\r\n },\r\n _notifyLegendOnHoverArgument: false,\r\n _getArgumentHoverMode: function() {\r\n return correctHoverMode(this._argumentAxis)\r\n },\r\n dispose: function() {\r\n this._resetTimer();\r\n baseTrackerPrototype.dispose.call(this)\r\n }\r\n});\r\nvar PieTracker = function(options) {\r\n this.ctor(options)\r\n};\r\nexports.PieTracker = PieTracker;\r\n(0, _extend.extend)(PieTracker.prototype, baseTrackerPrototype, {\r\n _isPointerOut: function(_, point) {\r\n return !point\r\n },\r\n _legendClick: function(item, e) {\r\n var that = this;\r\n var points = [];\r\n that._storedSeries.forEach(function(s) {\r\n return points.push.apply(points, s.getPointsByKeys(item.argument, item.argumentIndex))\r\n });\r\n that._eventTrigger(LEGEND_CLICK, {\r\n target: item.argument,\r\n points: points,\r\n event: e\r\n })\r\n },\r\n _pointClick: function(point, e) {\r\n this._eventTrigger(POINT_CLICK, {\r\n target: point,\r\n event: e\r\n })\r\n },\r\n _hoverLegendItem: function(x, y) {\r\n var that = this;\r\n var item = that._legend.getItemByCoord(x, y);\r\n if (item && that._hoveredArgument !== item.argument) {\r\n that._resetHoveredArgument();\r\n that._hoverArgument(item.argument, item.argumentIndex)\r\n } else {\r\n if (!item) {\r\n that.clearHover()\r\n }\r\n }\r\n },\r\n _getArgumentHoverMode: function() {\r\n return correctHoverMode(this._legend)\r\n },\r\n _hoverArgumentAxis: _common.noop,\r\n _setStuckSeries: _common.noop,\r\n _getCanvas: _common.noop,\r\n _notifyLegendOnHoverArgument: true\r\n});\r\n","/**\r\n * DevExtreme (viz/chart_components/multi_axes_synchronizer.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 _console = require(\"../../core/utils/console\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _math2 = require(\"../../core/utils/math\");\r\nvar _math = Math;\r\nvar _floor = _math.floor;\r\nvar _max = _math.max;\r\nvar _abs = _math.abs;\r\n\r\nfunction getValueAxesPerPanes(valueAxes) {\r\n var result = {};\r\n valueAxes.forEach(function(axis) {\r\n var pane = axis.pane;\r\n if (!result[pane]) {\r\n result[pane] = []\r\n }\r\n result[pane].push(axis)\r\n });\r\n return result\r\n}\r\nvar linearConverter = {\r\n transform: function(v, b) {\r\n return (0, _math2.adjust)((0, _utils.getLog)(v, b))\r\n },\r\n addInterval: function(v, i) {\r\n return (0, _math2.adjust)(v + i)\r\n },\r\n getInterval: function(base, tickInterval) {\r\n return tickInterval\r\n }\r\n};\r\nvar logConverter = {\r\n transform: function(v, b) {\r\n return (0, _math2.adjust)((0, _utils.raiseTo)(v, b))\r\n },\r\n addInterval: function(v, i) {\r\n return (0, _math2.adjust)(v * i)\r\n },\r\n getInterval: function(base, tickInterval) {\r\n return _math.pow(base, tickInterval)\r\n }\r\n};\r\n\r\nfunction convertAxisInfo(axisInfo, converter) {\r\n if (!axisInfo.isLogarithmic) {\r\n return\r\n }\r\n var base = axisInfo.logarithmicBase;\r\n var tickValues = axisInfo.tickValues;\r\n var tick;\r\n var ticks = [];\r\n axisInfo.minValue = converter.transform(axisInfo.minValue, base);\r\n axisInfo.oldMinValue = converter.transform(axisInfo.oldMinValue, base);\r\n axisInfo.maxValue = converter.transform(axisInfo.maxValue, base);\r\n axisInfo.oldMaxValue = converter.transform(axisInfo.oldMaxValue, base);\r\n axisInfo.tickInterval = _math.round(axisInfo.tickInterval);\r\n if (axisInfo.tickInterval < 1) {\r\n axisInfo.tickInterval = 1\r\n }\r\n var interval = converter.getInterval(base, axisInfo.tickInterval);\r\n tick = converter.transform(tickValues[0], base);\r\n while (ticks.length < tickValues.length) {\r\n ticks.push(tick);\r\n tick = converter.addInterval(tick, interval)\r\n }\r\n ticks.tickInterval = axisInfo.tickInterval;\r\n axisInfo.tickValues = ticks\r\n}\r\n\r\nfunction populateAxesInfo(axes) {\r\n return axes.reduce(function(result, axis) {\r\n var ticksValues = axis.getTicksValues();\r\n var majorTicks = ticksValues.majorTicksValues;\r\n var options = axis.getOptions();\r\n var businessRange = axis.getTranslator().getBusinessRange();\r\n var visibleArea = axis.getVisibleArea();\r\n var axisInfo;\r\n var tickInterval = axis._tickInterval;\r\n var synchronizedValue = options.synchronizedValue;\r\n var action = axis.getViewport().action;\r\n if (majorTicks && majorTicks.length > 0 && (0, _type.isNumeric)(majorTicks[0]) && \"discrete\" !== options.type && !businessRange.isEmpty() && !(businessRange.breaks && businessRange.breaks.length) && \"zoom\" !== action && \"pan\" !== action) {\r\n axis.applyMargins();\r\n var startValue = axis.getTranslator().from(visibleArea[0]);\r\n var endValue = axis.getTranslator().from(visibleArea[1]);\r\n var minValue = startValue < endValue ? startValue : endValue;\r\n var maxValue = startValue < endValue ? endValue : startValue;\r\n if (minValue === maxValue && (0, _type.isDefined)(synchronizedValue)) {\r\n tickInterval = _abs(majorTicks[0] - synchronizedValue) || 1;\r\n minValue = majorTicks[0] - tickInterval;\r\n maxValue = majorTicks[0] + tickInterval\r\n }\r\n axisInfo = {\r\n axis: axis,\r\n isLogarithmic: \"logarithmic\" === options.type,\r\n logarithmicBase: businessRange.base,\r\n tickValues: majorTicks,\r\n minorValues: ticksValues.minorTicksValues,\r\n minorTickInterval: axis._minorTickInterval,\r\n minValue: minValue,\r\n oldMinValue: minValue,\r\n maxValue: maxValue,\r\n oldMaxValue: maxValue,\r\n inverted: businessRange.invert,\r\n tickInterval: tickInterval,\r\n synchronizedValue: synchronizedValue\r\n };\r\n convertAxisInfo(axisInfo, linearConverter);\r\n result.push(axisInfo)\r\n }\r\n return result\r\n }, [])\r\n}\r\n\r\nfunction updateTickValues(axesInfo) {\r\n var maxTicksCount = axesInfo.reduce(function(max, axisInfo) {\r\n return _max(max, axisInfo.tickValues.length)\r\n }, 0);\r\n axesInfo.forEach(function(axisInfo) {\r\n var ticksMultiplier;\r\n var ticksCount;\r\n var additionalStartTicksCount = 0;\r\n var synchronizedValue = axisInfo.synchronizedValue;\r\n var tickValues = axisInfo.tickValues;\r\n var tickInterval = axisInfo.tickInterval;\r\n if ((0, _type.isDefined)(synchronizedValue)) {\r\n axisInfo.baseTickValue = axisInfo.invertedBaseTickValue = synchronizedValue;\r\n axisInfo.tickValues = [axisInfo.baseTickValue]\r\n } else {\r\n if (tickValues.length > 1 && tickInterval) {\r\n ticksMultiplier = _floor((maxTicksCount + 1) / tickValues.length);\r\n ticksCount = ticksMultiplier > 1 ? _floor((maxTicksCount + 1) / ticksMultiplier) : maxTicksCount;\r\n additionalStartTicksCount = _floor((ticksCount - tickValues.length) / 2);\r\n while (additionalStartTicksCount > 0 && 0 !== tickValues[0]) {\r\n tickValues.unshift((0, _math2.adjust)(tickValues[0] - tickInterval));\r\n additionalStartTicksCount--\r\n }\r\n while (tickValues.length < ticksCount) {\r\n tickValues.push((0, _math2.adjust)(tickValues[tickValues.length - 1] + tickInterval))\r\n }\r\n axisInfo.tickInterval = tickInterval / ticksMultiplier\r\n }\r\n axisInfo.baseTickValue = tickValues[0];\r\n axisInfo.invertedBaseTickValue = tickValues[tickValues.length - 1]\r\n }\r\n })\r\n}\r\n\r\nfunction getAxisRange(axisInfo) {\r\n return axisInfo.maxValue - axisInfo.minValue || 1\r\n}\r\n\r\nfunction getMainAxisInfo(axesInfo) {\r\n for (var i = 0; i < axesInfo.length; i++) {\r\n if (!axesInfo[i].stubData) {\r\n return axesInfo[i]\r\n }\r\n }\r\n return null\r\n}\r\n\r\nfunction correctMinMaxValues(axesInfo) {\r\n var mainAxisInfo = getMainAxisInfo(axesInfo);\r\n var mainAxisInfoTickInterval = mainAxisInfo.tickInterval;\r\n axesInfo.forEach(function(axisInfo) {\r\n var scale;\r\n var move;\r\n var mainAxisBaseValueOffset;\r\n var valueFromAxisInfo;\r\n if (axisInfo !== mainAxisInfo) {\r\n if (mainAxisInfoTickInterval && axisInfo.tickInterval) {\r\n if (axisInfo.stubData && (0, _type.isDefined)(axisInfo.synchronizedValue)) {\r\n axisInfo.oldMinValue = axisInfo.minValue = axisInfo.baseTickValue - (mainAxisInfo.baseTickValue - mainAxisInfo.minValue) / mainAxisInfoTickInterval * axisInfo.tickInterval;\r\n axisInfo.oldMaxValue = axisInfo.maxValue = axisInfo.baseTickValue - (mainAxisInfo.baseTickValue - mainAxisInfo.maxValue) / mainAxisInfoTickInterval * axisInfo.tickInterval\r\n }\r\n scale = mainAxisInfoTickInterval / getAxisRange(mainAxisInfo) / axisInfo.tickInterval * getAxisRange(axisInfo);\r\n axisInfo.maxValue = axisInfo.minValue + getAxisRange(axisInfo) / scale\r\n }\r\n if (mainAxisInfo.inverted && !axisInfo.inverted || !mainAxisInfo.inverted && axisInfo.inverted) {\r\n mainAxisBaseValueOffset = mainAxisInfo.maxValue - mainAxisInfo.invertedBaseTickValue\r\n } else {\r\n mainAxisBaseValueOffset = mainAxisInfo.baseTickValue - mainAxisInfo.minValue\r\n }\r\n valueFromAxisInfo = getAxisRange(axisInfo);\r\n move = (mainAxisBaseValueOffset / getAxisRange(mainAxisInfo) - (axisInfo.baseTickValue - axisInfo.minValue) / valueFromAxisInfo) * valueFromAxisInfo;\r\n axisInfo.minValue -= move;\r\n axisInfo.maxValue -= move\r\n }\r\n })\r\n}\r\n\r\nfunction calculatePaddings(axesInfo) {\r\n var minPadding;\r\n var maxPadding;\r\n var startPadding = 0;\r\n var endPadding = 0;\r\n axesInfo.forEach(function(axisInfo) {\r\n var inverted = axisInfo.inverted;\r\n minPadding = axisInfo.minValue > axisInfo.oldMinValue ? (axisInfo.minValue - axisInfo.oldMinValue) / getAxisRange(axisInfo) : 0;\r\n maxPadding = axisInfo.maxValue < axisInfo.oldMaxValue ? (axisInfo.oldMaxValue - axisInfo.maxValue) / getAxisRange(axisInfo) : 0;\r\n startPadding = _max(startPadding, inverted ? maxPadding : minPadding);\r\n endPadding = _max(endPadding, inverted ? minPadding : maxPadding)\r\n });\r\n return {\r\n start: startPadding,\r\n end: endPadding\r\n }\r\n}\r\n\r\nfunction correctMinMaxValuesByPaddings(axesInfo, paddings) {\r\n axesInfo.forEach(function(info) {\r\n var range = getAxisRange(info);\r\n var inverted = info.inverted;\r\n info.minValue = (0, _math2.adjust)(info.minValue - paddings[inverted ? \"end\" : \"start\"] * range);\r\n info.maxValue = (0, _math2.adjust)(info.maxValue + paddings[inverted ? \"start\" : \"end\"] * range)\r\n })\r\n}\r\n\r\nfunction updateTickValuesIfSynchronizedValueUsed(axesInfo) {\r\n var hasSynchronizedValue = false;\r\n axesInfo.forEach(function(info) {\r\n hasSynchronizedValue = hasSynchronizedValue || (0, _type.isDefined)(info.synchronizedValue)\r\n });\r\n axesInfo.forEach(function(info) {\r\n var tickInterval = info.tickInterval;\r\n var tickValues = info.tickValues;\r\n var maxValue = info.maxValue;\r\n var minValue = info.minValue;\r\n var tick;\r\n if (hasSynchronizedValue && tickInterval) {\r\n while ((tick = (0, _math2.adjust)(tickValues[0] - tickInterval)) >= minValue) {\r\n tickValues.unshift(tick)\r\n }\r\n tick = tickValues[tickValues.length - 1];\r\n while ((tick = (0, _math2.adjust)(tick + tickInterval)) <= maxValue) {\r\n tickValues.push(tick)\r\n }\r\n }\r\n while (tickValues[0] + tickInterval / 10 < minValue) {\r\n tickValues.shift()\r\n }\r\n while (tickValues[tickValues.length - 1] - tickInterval / 10 > maxValue) {\r\n tickValues.pop()\r\n }\r\n })\r\n}\r\n\r\nfunction applyMinMaxValues(axesInfo) {\r\n axesInfo.forEach(function(info) {\r\n var axis = info.axis;\r\n var range = axis.getTranslator().getBusinessRange();\r\n if (range.min === range.minVisible) {\r\n range.min = info.minValue\r\n }\r\n if (range.max === range.maxVisible) {\r\n range.max = info.maxValue\r\n }\r\n range.minVisible = info.minValue;\r\n range.maxVisible = info.maxValue;\r\n if (range.min > range.minVisible) {\r\n range.min = range.minVisible\r\n }\r\n if (range.max < range.maxVisible) {\r\n range.max = range.maxVisible\r\n }\r\n axis.getTranslator().updateBusinessRange(range);\r\n axis.setTicks({\r\n majorTicks: info.tickValues,\r\n minorTicks: info.minorValues\r\n })\r\n })\r\n}\r\n\r\nfunction correctAfterSynchronize(axesInfo) {\r\n var invalidAxisInfo = [];\r\n var correctValue;\r\n axesInfo.forEach(function(info) {\r\n if (info.oldMaxValue - info.oldMinValue === 0) {\r\n invalidAxisInfo.push(info)\r\n } else {\r\n if (!(0, _type.isDefined)(correctValue) && !(0, _type.isDefined)(info.synchronizedValue)) {\r\n correctValue = _abs((info.maxValue - info.minValue) / (info.tickValues[_floor(info.tickValues.length / 2)] - info.minValue || info.maxValue))\r\n }\r\n }\r\n });\r\n if (!(0, _type.isDefined)(correctValue)) {\r\n return\r\n }\r\n invalidAxisInfo.forEach(function(info) {\r\n var firstTick = info.tickValues[0];\r\n var correctedTick = firstTick * correctValue;\r\n if (firstTick > 0) {\r\n info.maxValue = correctedTick;\r\n info.minValue = 0\r\n } else {\r\n if (firstTick < 0) {\r\n info.minValue = correctedTick;\r\n info.maxValue = 0\r\n }\r\n }\r\n })\r\n}\r\n\r\nfunction updateMinorTicks(axesInfo) {\r\n axesInfo.forEach(function(axisInfo) {\r\n if (!axisInfo.minorTickInterval) {\r\n return\r\n }\r\n var ticks = [];\r\n var interval = axisInfo.minorTickInterval;\r\n var tickCount = axisInfo.tickInterval / interval - 1;\r\n for (var i = 1; i < axisInfo.tickValues.length; i++) {\r\n var tick = axisInfo.tickValues[i - 1];\r\n for (var j = 0; j < tickCount; j++) {\r\n tick += interval;\r\n ticks.push(tick)\r\n }\r\n }\r\n axisInfo.minorValues = ticks\r\n })\r\n}\r\n\r\nfunction correctPaddings(axesInfo, paddings) {\r\n return axesInfo.reduce(function(prev, info) {\r\n var inverted = info.inverted;\r\n var _info$axis$getCorrect = info.axis.getCorrectedValuesToZero(info.minValue, info.maxValue),\r\n start = _info$axis$getCorrect.start,\r\n end = _info$axis$getCorrect.end;\r\n if ((0, _type.isDefined)(start) || (0, _type.isDefined)(end)) {\r\n return inverted ? {\r\n start: prev.start,\r\n end: Math.min(prev.end, end)\r\n } : {\r\n start: Math.min(prev.start, start),\r\n end: prev.end\r\n }\r\n }\r\n return prev\r\n }, paddings)\r\n}\r\nvar multiAxesSynchronizer = {\r\n synchronize: function(valueAxes) {\r\n (0, _iterator.each)(getValueAxesPerPanes(valueAxes), function(_, axes) {\r\n var axesInfo;\r\n var paddings;\r\n if (axes.length > 1) {\r\n axesInfo = populateAxesInfo(axes);\r\n if (axesInfo.length < 2 || !getMainAxisInfo(axesInfo)) {\r\n return\r\n }\r\n updateTickValues(axesInfo);\r\n correctMinMaxValues(axesInfo);\r\n paddings = calculatePaddings(axesInfo);\r\n paddings = correctPaddings(axesInfo, paddings);\r\n correctMinMaxValuesByPaddings(axesInfo, paddings);\r\n correctAfterSynchronize(axesInfo);\r\n updateTickValuesIfSynchronizedValueUsed(axesInfo);\r\n updateMinorTicks(axesInfo);\r\n axesInfo.forEach(function(info) {\r\n convertAxisInfo(info, logConverter)\r\n });\r\n applyMinMaxValues(axesInfo)\r\n }\r\n })\r\n }\r\n};\r\nvar _default = multiAxesSynchronizer;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/chart_components/scroll_bar.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.ScrollBar = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _translator2d = require(\"../translators/translator2d\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _drag = require(\"../../events/drag\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar MIN_SCROLL_BAR_SIZE = 2;\r\nvar ScrollBar = function(renderer, group) {\r\n this._translator = new _translator2d.Translator2D({}, {}, {});\r\n this._scroll = renderer.rect().append(group);\r\n this._addEvents()\r\n};\r\nexports.ScrollBar = ScrollBar;\r\n\r\nfunction _getXCoord(canvas, pos, offset, width) {\r\n var x = 0;\r\n if (\"right\" === pos) {\r\n x = canvas.width - canvas.right + offset\r\n } else {\r\n if (\"left\" === pos) {\r\n x = canvas.left - offset - width\r\n }\r\n }\r\n return x\r\n}\r\n\r\nfunction _getYCoord(canvas, pos, offset, width) {\r\n var y = 0;\r\n if (\"top\" === pos) {\r\n y = canvas.top - offset\r\n } else {\r\n if (\"bottom\" === pos) {\r\n y = canvas.height - canvas.bottom + width + offset\r\n }\r\n }\r\n return y\r\n}\r\nScrollBar.prototype = {\r\n _addEvents: function() {\r\n var _this = this;\r\n var scrollElement = this._scroll.element;\r\n _events_engine.default.on(scrollElement, _drag.start, function(e) {\r\n (0, _index.fireEvent)({\r\n type: \"dxc-scroll-start\",\r\n originalEvent: e,\r\n target: scrollElement\r\n })\r\n });\r\n _events_engine.default.on(scrollElement, _drag.move, function(e) {\r\n var dX = -e.offset.x * _this._scale;\r\n var dY = -e.offset.y * _this._scale;\r\n var lx = _this._offset - (_this._layoutOptions.vertical ? dY : dX) / _this._scale;\r\n _this._applyPosition(lx, lx + _this._translator.canvasLength / _this._scale);\r\n (0, _index.fireEvent)({\r\n type: \"dxc-scroll-move\",\r\n originalEvent: e,\r\n target: scrollElement,\r\n offset: {\r\n x: dX,\r\n y: dY\r\n }\r\n })\r\n });\r\n _events_engine.default.on(scrollElement, _drag.end, function(e) {\r\n (0, _index.fireEvent)({\r\n type: \"dxc-scroll-end\",\r\n originalEvent: e,\r\n target: scrollElement,\r\n offset: {\r\n x: -e.offset.x * _this._scale,\r\n y: -e.offset.y * _this._scale\r\n }\r\n })\r\n })\r\n },\r\n update: function(options) {\r\n var that = this;\r\n var position = options.position;\r\n var isVertical = options.rotated;\r\n var defaultPosition = isVertical ? \"right\" : \"top\";\r\n var secondaryPosition = isVertical ? \"left\" : \"bottom\";\r\n if (position !== defaultPosition && position !== secondaryPosition) {\r\n position = defaultPosition\r\n }\r\n that._scroll.attr({\r\n rotate: !options.rotated ? -90 : 0,\r\n rotateX: 0,\r\n rotateY: 0,\r\n fill: options.color,\r\n width: options.width,\r\n opacity: options.opacity\r\n });\r\n that._layoutOptions = {\r\n width: options.width,\r\n offset: options.offset,\r\n vertical: isVertical,\r\n position: position\r\n };\r\n return that\r\n },\r\n init: function(range, stick) {\r\n var that = this;\r\n var isDiscrete = \"discrete\" === range.axisType;\r\n that._translateWithOffset = isDiscrete && !stick && 1 || 0;\r\n that._translator.update((0, _extend.extend)({}, range, {\r\n minVisible: null,\r\n maxVisible: null,\r\n visibleCategories: null\r\n }, isDiscrete && {\r\n min: null,\r\n max: null\r\n } || {}), that._canvas, {\r\n isHorizontal: !that._layoutOptions.vertical,\r\n stick: stick\r\n });\r\n return that\r\n },\r\n getOptions: function() {\r\n return this._layoutOptions\r\n },\r\n setPane: function(panes) {\r\n var position = this._layoutOptions.position;\r\n var pane;\r\n if (\"left\" === position || \"top\" === position) {\r\n pane = panes[0]\r\n } else {\r\n pane = panes[panes.length - 1]\r\n }\r\n this.pane = pane.name;\r\n return this\r\n },\r\n updateSize: function(canvas) {\r\n this._canvas = (0, _extend.extend)({}, canvas);\r\n var options = this._layoutOptions;\r\n var pos = options.position;\r\n var offset = options.offset;\r\n var width = options.width;\r\n this._scroll.attr({\r\n translateX: _getXCoord(canvas, pos, offset, width),\r\n translateY: _getYCoord(canvas, pos, offset, width)\r\n })\r\n },\r\n getMultipleAxesSpacing: function() {\r\n return 0\r\n },\r\n estimateMargins: function() {\r\n return this.getMargins()\r\n },\r\n getMargins: function() {\r\n var options = this._layoutOptions;\r\n var margins = {\r\n left: 0,\r\n top: 0,\r\n right: 0,\r\n bottom: 0\r\n };\r\n margins[options.position] = options.width + options.offset;\r\n return margins\r\n },\r\n shift: function shift(margins) {\r\n var _that$_scroll$attr, _that$_scroll$attr2;\r\n var that = this;\r\n var options = that._layoutOptions;\r\n var side = options.position;\r\n var isVertical = options.vertical;\r\n var attr = {\r\n translateX: null !== (_that$_scroll$attr = that._scroll.attr(\"translateX\")) && void 0 !== _that$_scroll$attr ? _that$_scroll$attr : 0,\r\n translateY: null !== (_that$_scroll$attr2 = that._scroll.attr(\"translateY\")) && void 0 !== _that$_scroll$attr2 ? _that$_scroll$attr2 : 0\r\n };\r\n var shift = margins[side];\r\n attr[isVertical ? \"translateX\" : \"translateY\"] += (\"left\" === side || \"top\" === side ? -1 : 1) * shift;\r\n that._scroll.attr(attr)\r\n },\r\n hideTitle: _common.noop,\r\n hideOuterElements: _common.noop,\r\n setPosition: function(min, max) {\r\n var that = this;\r\n var translator = that._translator;\r\n var minPoint = (0, _type.isDefined)(min) ? translator.translate(min, -that._translateWithOffset) : translator.translate(\"canvas_position_start\");\r\n var maxPoint = (0, _type.isDefined)(max) ? translator.translate(max, that._translateWithOffset) : translator.translate(\"canvas_position_end\");\r\n that._offset = _min(minPoint, maxPoint);\r\n that._scale = translator.getScale(min, max);\r\n that._applyPosition(_min(minPoint, maxPoint), _max(minPoint, maxPoint))\r\n },\r\n customPositionIsAvailable: function() {\r\n return false\r\n },\r\n dispose: function() {\r\n this._scroll.dispose();\r\n this._scroll = this._translator = null\r\n },\r\n _applyPosition: function(x1, x2) {\r\n var that = this;\r\n var visibleArea = that._translator.getCanvasVisibleArea();\r\n x1 = _max(x1, visibleArea.min);\r\n x1 = _min(x1, visibleArea.max);\r\n x2 = _min(x2, visibleArea.max);\r\n x2 = _max(x2, visibleArea.min);\r\n var height = Math.abs(x2 - x1);\r\n that._scroll.attr({\r\n y: x1,\r\n height: height < MIN_SCROLL_BAR_SIZE ? MIN_SCROLL_BAR_SIZE : height\r\n })\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/chart_components/shutter_zoom.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 _drag = require(\"../../events/drag\");\r\nvar SHUTTER_EVENTS_NS = \".shutter-zoom\";\r\nvar DRAG_START_EVENT_NAME = _drag.start + SHUTTER_EVENTS_NS;\r\nvar DRAG_UPDATE_EVENT_NAME = _drag.move + SHUTTER_EVENTS_NS;\r\nvar DRAG_END_EVENT_NAME = _drag.end + SHUTTER_EVENTS_NS;\r\n\r\nfunction getPointerCoord(rootOffset, canvas, rotated, e) {\r\n var coord = Math.floor(rotated ? e.pageY - rootOffset.top : e.pageX - rootOffset.left);\r\n var min = rotated ? canvas.y1 : canvas.x1;\r\n var max = rotated ? canvas.y2 : canvas.x2;\r\n if (coord < min) {\r\n coord = min\r\n } else {\r\n if (coord > max) {\r\n coord = max\r\n }\r\n }\r\n return coord\r\n}\r\n\r\nfunction checkCoords(rootOffset, canvas, e) {\r\n var x = e.pageX - rootOffset.left;\r\n var y = e.pageY - rootOffset.top;\r\n return x >= canvas.x1 && x <= canvas.x2 && y >= canvas.y1 && y <= canvas.y2\r\n}\r\n\r\nfunction dragStartHandler(ctx) {\r\n return function(e) {\r\n var offset = ctx.getRootOffset();\r\n var canvas = ctx.getCanvas();\r\n if (!checkCoords(offset, canvas, e)) {\r\n e.cancel = true;\r\n return\r\n }\r\n ctx.rootOffset = offset;\r\n ctx.canvas = canvas;\r\n ctx.startCoord = getPointerCoord(offset, canvas, ctx.rotated, e);\r\n ctx.triggerStart();\r\n ctx.rect.attr({\r\n x: canvas.x1,\r\n y: canvas.y1,\r\n width: canvas.width,\r\n height: canvas.height\r\n }).append(ctx.root)\r\n }\r\n}\r\n\r\nfunction dragHandler(ctx) {\r\n return function(e) {\r\n var curCoord = getPointerCoord(ctx.rootOffset, ctx.canvas, ctx.rotated, e);\r\n var attr = {};\r\n ctx.curCoord = curCoord;\r\n attr[ctx.rotated ? \"y\" : \"x\"] = Math.min(ctx.startCoord, curCoord);\r\n attr[ctx.rotated ? \"height\" : \"width\"] = Math.abs(ctx.startCoord - curCoord);\r\n ctx.rect.attr(attr)\r\n }\r\n}\r\n\r\nfunction dragEndHandler(ctx) {\r\n return function(e) {\r\n ctx.triggerEnd();\r\n ctx.rect.remove()\r\n }\r\n}\r\n\r\nfunction shutterZoom(options) {\r\n var chart = options.chart;\r\n var renderer = options.renderer;\r\n var rotated = options.rotated;\r\n var rect = renderer.rect(0, 0, 0, 0).attr(options.shutterOptions);\r\n var shutter = {\r\n rect: rect,\r\n root: renderer.root,\r\n rotated: rotated,\r\n triggerStart: function() {\r\n chart._eventTrigger(\"zoomStart\")\r\n },\r\n triggerEnd: function() {\r\n var tr = chart._argumentAxes[0].getTranslator();\r\n var rangeStart = Math.min(this.startCoord, this.curCoord);\r\n var rangeEnd = Math.max(this.startCoord, this.curCoord);\r\n chart._eventTrigger(\"zoomEnd\", {\r\n rangeStart: tr.from(rangeStart),\r\n rangeEnd: tr.from(rangeEnd)\r\n })\r\n },\r\n dispose: function() {\r\n renderer.root.off(SHUTTER_EVENTS_NS);\r\n rect.dispose()\r\n },\r\n getRootOffset: function() {\r\n return renderer.getRootOffset()\r\n },\r\n getCanvas: function() {\r\n var canvas = chart._canvas;\r\n var panes = chart.panes;\r\n var firstPane = panes[0].canvas;\r\n var lastPane = panes[panes.length - 1].canvas;\r\n return {\r\n x1: firstPane.left,\r\n y1: firstPane.top,\r\n x2: canvas.width - lastPane.right,\r\n y2: canvas.height - lastPane.bottom,\r\n width: canvas.width - firstPane.left - lastPane.right,\r\n height: canvas.height - firstPane.top - lastPane.bottom\r\n }\r\n }\r\n };\r\n renderer.root.off(SHUTTER_EVENTS_NS).on(DRAG_START_EVENT_NAME, {\r\n direction: rotated ? \"vertical\" : \"horizontal\",\r\n immediate: true\r\n }, dragStartHandler(shutter)).on(DRAG_UPDATE_EVENT_NAME, dragHandler(shutter)).on(DRAG_END_EVENT_NAME, dragEndHandler(shutter));\r\n return shutter\r\n}\r\nvar _default = {\r\n name: \"shutter_zoom\",\r\n init: function() {\r\n var options = this.option(\"shutterZoom\") || {};\r\n if (!options.enabled) {\r\n return\r\n }\r\n this._shutterZoom = shutterZoom({\r\n chart: this,\r\n renderer: this._renderer,\r\n rotated: this.option(\"rotated\"),\r\n shutterOptions: options\r\n })\r\n },\r\n dispose: function() {\r\n this._shutterZoom && this._shutterZoom.dispose()\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/chart_components/zoom_and_pan.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.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _wheel = require(\"../../events/core/wheel\");\r\nvar transformEvents = _interopRequireWildcard(require(\"../../events/transform\"));\r\nvar _drag = require(\"../../events/drag\");\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\nvar EVENTS_NS = \".zoomAndPanNS\";\r\nvar DRAG_START_EVENT_NAME = _drag.start + EVENTS_NS;\r\nvar DRAG_EVENT_NAME = _drag.move + EVENTS_NS;\r\nvar DRAG_END_EVENT_NAME = _drag.end + EVENTS_NS;\r\nvar PINCH_START_EVENT_NAME = transformEvents.pinchstart + EVENTS_NS;\r\nvar PINCH_EVENT_NAME = transformEvents.pinch + EVENTS_NS;\r\nvar PINCH_END_EVENT_NAME = transformEvents.pinchend + EVENTS_NS;\r\nvar SCROLL_BAR_START_EVENT_NAME = \"dxc-scroll-start\" + EVENTS_NS;\r\nvar SCROLL_BAR_MOVE_EVENT_NAME = \"dxc-scroll-move\" + EVENTS_NS;\r\nvar SCROLL_BAR_END_EVENT_NAME = \"dxc-scroll-end\" + EVENTS_NS;\r\nvar GESTURE_TIMEOUT = 300;\r\nvar MIN_DRAG_DELTA = 5;\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar _abs = Math.abs;\r\n\r\nfunction canvasToRect(canvas) {\r\n return {\r\n x: canvas.left,\r\n y: canvas.top,\r\n width: canvas.width - canvas.left - canvas.right,\r\n height: canvas.height - canvas.top - canvas.bottom\r\n }\r\n}\r\n\r\nfunction checkCoords(rect, coords) {\r\n var x = coords.x;\r\n var y = coords.y;\r\n return x >= rect.x && x <= rect.width + rect.x && y >= rect.y && y <= rect.height + rect.y\r\n}\r\n\r\nfunction sortAxes(axes, onlyAxisToNotify) {\r\n if (onlyAxisToNotify) {\r\n axes = axes.sort(function(a, b) {\r\n if (a === onlyAxisToNotify) {\r\n return -1\r\n }\r\n if (b === onlyAxisToNotify) {\r\n return 1\r\n }\r\n return 0\r\n })\r\n }\r\n return axes\r\n}\r\n\r\nfunction isNotEmptyAxisBusinessRange(axis) {\r\n return !axis.getTranslator().getBusinessRange().isEmpty()\r\n}\r\n\r\nfunction axisZoom(axis, onlyAxisToNotify, getRange, getParameters, actionField, scale, e) {\r\n var silent = onlyAxisToNotify && axis !== onlyAxisToNotify;\r\n var range = getRange(axis);\r\n var _axis$checkZoomingLow = axis.checkZoomingLowerLimitOvercome(actionField, scale, range),\r\n stopInteraction = _axis$checkZoomingLow.stopInteraction,\r\n correctedRange = _axis$checkZoomingLow.correctedRange;\r\n var result = axis.handleZooming(stopInteraction ? null : correctedRange, getParameters(silent), e, actionField);\r\n stopInteraction && axis.handleZoomEnd();\r\n return {\r\n stopInteraction: stopInteraction,\r\n result: result\r\n }\r\n}\r\nvar _default = {\r\n name: \"zoom_and_pan\",\r\n init: function() {\r\n var chart = this;\r\n var renderer = this._renderer;\r\n\r\n function cancelEvent(e) {\r\n if (e.originalEvent) {\r\n cancelEvent(e.originalEvent)\r\n }\r\n if (false !== e.cancelable) {\r\n e.cancel = true\r\n }\r\n }\r\n\r\n function startAxesViewportChanging(zoomAndPan, actionField, e) {\r\n var options = zoomAndPan.options;\r\n var actionData = zoomAndPan.actionData;\r\n var axes = [];\r\n if (options.argumentAxis[actionField]) {\r\n axes.push(chart.getArgumentAxis())\r\n }\r\n if (options.valueAxis[actionField]) {\r\n axes = axes.concat(actionData.valueAxes)\r\n }\r\n axes.reduce(function(isPrevented, axis) {\r\n if (isPrevented) {\r\n return isPrevented\r\n }\r\n if (isNotEmptyAxisBusinessRange(axis)) {\r\n return axis.handleZooming(null, {\r\n end: true\r\n }, e, actionField).isPrevented\r\n }\r\n return isPrevented\r\n }, false) && cancelEvent(e)\r\n }\r\n\r\n function axesViewportChanging(zoomAndPan, actionField, e, offsetCalc, centerCalc) {\r\n function zoomAxes(axes, criteria, coordField, e, actionData) {\r\n var zoom = {\r\n zoomed: false\r\n };\r\n criteria && axes.filter(isNotEmptyAxisBusinessRange).forEach(function(axis) {\r\n var options = axis.getOptions();\r\n var viewport = axis.visualRange();\r\n var scale = axis.getTranslator().getEventScale(e);\r\n var translate = -offsetCalc(e, actionData, coordField, scale);\r\n zoom = (0, _extend.extend)(true, zoom, axis.getTranslator().zoom(translate, scale, axis.getZoomBounds()));\r\n var range = axis.adjustRange((0, _utils.getVizRangeObject)([zoom.min, zoom.max]));\r\n var _axis$checkZoomingLow2 = axis.checkZoomingLowerLimitOvercome(actionField, scale, range),\r\n stopInteraction = _axis$checkZoomingLow2.stopInteraction,\r\n correctedRange = _axis$checkZoomingLow2.correctedRange;\r\n if (!(0, _type.isDefined)(viewport) || viewport.startValue.valueOf() !== correctedRange.startValue.valueOf() || viewport.endValue.valueOf() !== correctedRange.endValue.valueOf()) {\r\n axis.handleZooming(stopInteraction ? null : correctedRange, {\r\n start: true,\r\n end: true\r\n }, e, actionField);\r\n if (!stopInteraction) {\r\n zoom.zoomed = true;\r\n zoom.deltaTranslate = translate - zoom.translate\r\n }\r\n } else {\r\n if (\"touch\" === e.pointerType && \"discrete\" === options.type) {\r\n var isMinPosition = axis.isExtremePosition(false);\r\n var isMaxPosition = axis.isExtremePosition(true);\r\n var zoomInEnabled = scale > 1 && !stopInteraction;\r\n var zoomOutEnabled = scale < 1 && (!isMinPosition || !isMaxPosition);\r\n var panningEnabled = 1 === scale && !(isMinPosition && (translate < 0 && !options.inverted || translate > 0 && options.inverted) || isMaxPosition && (translate > 0 && !options.inverted || translate < 0 && options.inverted));\r\n zoom.enabled = zoomInEnabled || zoomOutEnabled || panningEnabled\r\n }\r\n }\r\n });\r\n return zoom\r\n }\r\n\r\n function storeOffset(e, actionData, zoom, coordField) {\r\n if (zoom.zoomed) {\r\n actionData.offset[coordField] = (e.offset ? e.offset[coordField] : actionData.offset[coordField]) + zoom.deltaTranslate\r\n }\r\n }\r\n\r\n function storeCenter(center, actionData, zoom, coordField) {\r\n if (zoom.zoomed) {\r\n actionData.center[coordField] = center[coordField] + zoom.deltaTranslate\r\n }\r\n }\r\n var rotated = chart.option(\"rotated\");\r\n var actionData = zoomAndPan.actionData;\r\n var options = zoomAndPan.options;\r\n var argZoom = {};\r\n var valZoom = {};\r\n if (!actionData.fallback) {\r\n argZoom = zoomAxes(chart._argumentAxes, options.argumentAxis[actionField], rotated ? \"y\" : \"x\", e, actionData);\r\n valZoom = zoomAxes(actionData.valueAxes, options.valueAxis[actionField], rotated ? \"x\" : \"y\", e, actionData);\r\n chart._requestChange([\"VISUAL_RANGE\"]);\r\n storeOffset(e, actionData, argZoom, rotated ? \"y\" : \"x\");\r\n storeOffset(e, actionData, valZoom, rotated ? \"x\" : \"y\")\r\n }\r\n var center = centerCalc(e);\r\n storeCenter(center, actionData, argZoom, rotated ? \"y\" : \"x\");\r\n storeCenter(center, actionData, valZoom, rotated ? \"x\" : \"y\");\r\n if (!argZoom.zoomed && !valZoom.zoomed) {\r\n actionData.center = center\r\n }\r\n return argZoom.zoomed || valZoom.zoomed || actionData.fallback || argZoom.enabled || valZoom.enabled\r\n }\r\n\r\n function finishAxesViewportChanging(zoomAndPan, actionField, e, offsetCalc) {\r\n function zoomAxes(axes, criteria, coordField, actionData, onlyAxisToNotify) {\r\n var zoomStarted = false;\r\n var scale = e.scale || 1;\r\n var getRange = function(axis) {\r\n var zoom = axis.getTranslator().zoom(-offsetCalc(e, actionData, coordField, scale), scale, axis.getZoomBounds());\r\n return {\r\n startValue: zoom.min,\r\n endValue: zoom.max\r\n }\r\n };\r\n var getParameters = function(silent) {\r\n return {\r\n start: true,\r\n end: silent\r\n }\r\n };\r\n criteria && axes.forEach(function(axis) {\r\n zoomStarted = !axisZoom(axis, onlyAxisToNotify, getRange, getParameters, actionField, scale, e).stopInteraction\r\n });\r\n return zoomStarted\r\n }\r\n var rotated = chart.option(\"rotated\");\r\n var actionData = zoomAndPan.actionData;\r\n var options = zoomAndPan.options;\r\n var zoomStarted = true;\r\n if (actionData.fallback) {\r\n zoomStarted &= zoomAxes(chart._argumentAxes, options.argumentAxis[actionField], rotated ? \"y\" : \"x\", actionData, chart.getArgumentAxis());\r\n zoomStarted |= zoomAxes(actionData.valueAxes, options.valueAxis[actionField], rotated ? \"x\" : \"y\", actionData)\r\n } else {\r\n var axes = [];\r\n if (options.argumentAxis[actionField]) {\r\n axes.push(chart.getArgumentAxis())\r\n }\r\n if (options.valueAxis[actionField]) {\r\n axes = axes.concat(actionData.valueAxes)\r\n }\r\n axes.filter(isNotEmptyAxisBusinessRange).forEach(function(axis) {\r\n axis.handleZooming(null, {\r\n start: true\r\n }, e, actionField)\r\n });\r\n zoomStarted = zoomStarted && axes.length\r\n }\r\n zoomStarted && chart._requestChange([\"VISUAL_RANGE\"])\r\n }\r\n\r\n function prepareActionData(coords, action) {\r\n var axes = chart._argumentAxes.filter(function(axis) {\r\n return checkCoords(canvasToRect(axis.getCanvas()), coords)\r\n });\r\n return {\r\n fallback: chart._lastRenderingTime > GESTURE_TIMEOUT,\r\n cancel: !axes.length || !(0, _type.isDefined)(action),\r\n action: action,\r\n curAxisRect: axes.length && canvasToRect(axes[0].getCanvas()),\r\n valueAxes: axes.length && chart._valueAxes.filter(function(axis) {\r\n return checkCoords(canvasToRect(axis.getCanvas()), coords)\r\n }),\r\n offset: {\r\n x: 0,\r\n y: 0\r\n },\r\n center: coords,\r\n startCenter: coords\r\n }\r\n }\r\n\r\n function getPointerCoord(rect, e) {\r\n var rootOffset = renderer.getRootOffset();\r\n return {\r\n x: _min(_max(e.pageX - rootOffset.left, rect.x), rect.width + rect.x),\r\n y: _min(_max(e.pageY - rootOffset.top, rect.y), rect.height + rect.y)\r\n }\r\n }\r\n\r\n function calcCenterForPinch(e) {\r\n var rootOffset = renderer.getRootOffset();\r\n var x1 = e.pointers[0].pageX;\r\n var x2 = e.pointers[1].pageX;\r\n var y1 = e.pointers[0].pageY;\r\n var y2 = e.pointers[1].pageY;\r\n return {\r\n x: _min(x1, x2) + _abs(x2 - x1) / 2 - rootOffset.left,\r\n y: _min(y1, y2) + _abs(y2 - y1) / 2 - rootOffset.top\r\n }\r\n }\r\n\r\n function calcCenterForDrag(e) {\r\n var rootOffset = renderer.getRootOffset();\r\n return {\r\n x: e.pageX - rootOffset.left,\r\n y: e.pageY - rootOffset.top\r\n }\r\n }\r\n\r\n function calcOffsetForDrag(e, actionData, coordField) {\r\n return e.offset[coordField] - actionData.offset[coordField]\r\n }\r\n\r\n function preventDefaults(e) {\r\n if (false !== e.cancelable) {\r\n e.preventDefault();\r\n e.stopPropagation()\r\n }\r\n chart._stopCurrentHandling()\r\n }\r\n var zoomAndPan = {\r\n dragStartHandler: function(e) {\r\n var options = zoomAndPan.options;\r\n var isTouch = \"touch\" === e.pointerType;\r\n var wantPan = options.argumentAxis.pan || options.valueAxis.pan;\r\n var wantZoom = options.argumentAxis.zoom || options.valueAxis.zoom;\r\n var panKeyPressed = (0, _type.isDefined)(options.panKey) && e[(0, _utils.normalizeEnum)(options.panKey) + \"Key\"];\r\n var dragToZoom = options.dragToZoom;\r\n var action;\r\n e._cancelPreventDefault = true;\r\n if (isTouch) {\r\n if (options.allowTouchGestures && wantPan) {\r\n var cancelPanning = !zoomAndPan.panningVisualRangeEnabled() || zoomAndPan.skipEvent;\r\n action = cancelPanning ? null : \"pan\"\r\n }\r\n } else {\r\n if (dragToZoom && wantPan && panKeyPressed) {\r\n action = \"pan\"\r\n } else {\r\n if (!dragToZoom && wantPan) {\r\n action = \"pan\"\r\n } else {\r\n if (dragToZoom && wantZoom) {\r\n action = \"zoom\"\r\n }\r\n }\r\n }\r\n }\r\n var actionData = prepareActionData(calcCenterForDrag(e), action);\r\n if (actionData.cancel) {\r\n zoomAndPan.skipEvent = false;\r\n if (false !== e.cancelable) {\r\n e.cancel = true\r\n }\r\n return\r\n }\r\n zoomAndPan.actionData = actionData;\r\n if (\"zoom\" === action) {\r\n actionData.startCoords = getPointerCoord(actionData.curAxisRect, e);\r\n actionData.rect = renderer.rect(0, 0, 0, 0).attr(options.dragBoxStyle).append(renderer.root)\r\n } else {\r\n startAxesViewportChanging(zoomAndPan, \"pan\", e)\r\n }\r\n },\r\n dragHandler: function(e) {\r\n var rotated = chart.option(\"rotated\");\r\n var options = zoomAndPan.options;\r\n var actionData = zoomAndPan.actionData;\r\n var isTouch = \"touch\" === e.pointerType;\r\n e._cancelPreventDefault = true;\r\n if (!actionData || isTouch && !zoomAndPan.panningVisualRangeEnabled()) {\r\n return\r\n }\r\n if (\"zoom\" === actionData.action) {\r\n preventDefaults(e);\r\n var curCanvas = actionData.curAxisRect;\r\n var startCoords = actionData.startCoords;\r\n var curCoords = getPointerCoord(curCanvas, e);\r\n var zoomArg = options.argumentAxis.zoom;\r\n var zoomVal = options.valueAxis.zoom;\r\n var rect = {\r\n x: _min(startCoords.x, curCoords.x),\r\n y: _min(startCoords.y, curCoords.y),\r\n width: _abs(startCoords.x - curCoords.x),\r\n height: _abs(startCoords.y - curCoords.y)\r\n };\r\n if (!zoomArg || !zoomVal) {\r\n if (!zoomArg && !rotated || !zoomVal && rotated) {\r\n rect.x = curCanvas.x;\r\n rect.width = curCanvas.width\r\n } else {\r\n rect.y = curCanvas.y;\r\n rect.height = curCanvas.height\r\n }\r\n }\r\n actionData.rect.attr(rect)\r\n } else {\r\n if (\"pan\" === actionData.action) {\r\n axesViewportChanging(zoomAndPan, \"pan\", e, calcOffsetForDrag, function(e) {\r\n return e.offset\r\n });\r\n var deltaOffsetY = Math.abs(e.offset.y - actionData.offset.y);\r\n var deltaOffsetX = Math.abs(e.offset.x - actionData.offset.x);\r\n if (isTouch && (deltaOffsetY > MIN_DRAG_DELTA && deltaOffsetY > Math.abs(actionData.offset.x) || deltaOffsetX > MIN_DRAG_DELTA && deltaOffsetX > Math.abs(actionData.offset.y))) {\r\n return\r\n }\r\n preventDefaults(e)\r\n }\r\n }\r\n },\r\n dragEndHandler: function(e) {\r\n var rotated = chart.option(\"rotated\");\r\n var options = zoomAndPan.options;\r\n var actionData = zoomAndPan.actionData;\r\n var isTouch = \"touch\" === e.pointerType;\r\n var panIsEmpty = actionData && \"pan\" === actionData.action && !actionData.fallback && 0 === actionData.offset.x && 0 === actionData.offset.y;\r\n if (!actionData || isTouch && !zoomAndPan.panningVisualRangeEnabled() || panIsEmpty) {\r\n return\r\n }(!isTouch || !zoomAndPan.actionData.isNative) && preventDefaults(e);\r\n if (\"zoom\" === actionData.action) {\r\n var zoomAxes = function(axes, criteria, coordField, startCoords, curCoords, onlyAxisToNotify) {\r\n axes = sortAxes(axes, onlyAxisToNotify);\r\n var curCoord = curCoords[coordField];\r\n var startCoord = startCoords[coordField];\r\n var zoomStarted = false;\r\n var getParameters = function(silent) {\r\n return {\r\n start: !!silent,\r\n end: !!silent\r\n }\r\n };\r\n if (criteria && _abs(curCoord - startCoord) > MIN_DRAG_DELTA) {\r\n axes.some(function(axis) {\r\n var tr = axis.getTranslator();\r\n if (tr.getBusinessRange().isEmpty()) {\r\n return\r\n }\r\n var getRange = function() {\r\n return [tr.from(startCoord), tr.from(curCoord)]\r\n };\r\n var _axisZoom = axisZoom(axis, onlyAxisToNotify, getRange, getParameters, actionData.action, tr.getMinScale(true), e),\r\n stopInteraction = _axisZoom.stopInteraction,\r\n result = _axisZoom.result;\r\n zoomStarted = !stopInteraction;\r\n return onlyAxisToNotify && result.isPrevented\r\n })\r\n }\r\n return zoomStarted\r\n };\r\n var curCoords = getPointerCoord(actionData.curAxisRect, e);\r\n var argumentAxesZoomed = zoomAxes(chart._argumentAxes, options.argumentAxis.zoom, rotated ? \"y\" : \"x\", actionData.startCoords, curCoords, chart.getArgumentAxis());\r\n var valueAxesZoomed = zoomAxes(actionData.valueAxes, options.valueAxis.zoom, rotated ? \"x\" : \"y\", actionData.startCoords, curCoords);\r\n if (valueAxesZoomed || argumentAxesZoomed) {\r\n chart._requestChange([\"VISUAL_RANGE\"])\r\n }\r\n actionData.rect.dispose()\r\n } else {\r\n if (\"pan\" === actionData.action) {\r\n finishAxesViewportChanging(zoomAndPan, \"pan\", e, calcOffsetForDrag)\r\n }\r\n }\r\n zoomAndPan.actionData = null\r\n },\r\n pinchStartHandler: function(e) {\r\n var actionData = prepareActionData(calcCenterForPinch(e), \"zoom\");\r\n actionData.isNative = !zoomAndPan.panningVisualRangeEnabled();\r\n if (actionData.cancel) {\r\n cancelEvent(e);\r\n return\r\n }\r\n zoomAndPan.actionData = actionData;\r\n startAxesViewportChanging(zoomAndPan, \"zoom\", e)\r\n },\r\n pinchHandler: function(e) {\r\n if (!zoomAndPan.actionData) {\r\n return\r\n }\r\n var viewportChanged = axesViewportChanging(zoomAndPan, \"zoom\", e, function(e, actionData, coordField, scale) {\r\n return calcCenterForPinch(e)[coordField] - actionData.center[coordField] + (actionData.center[coordField] - actionData.center[coordField] * scale)\r\n }, calcCenterForPinch);\r\n zoomAndPan.defineTouchBehavior(!viewportChanged, e);\r\n !viewportChanged && (zoomAndPan.actionData = null)\r\n },\r\n pinchEndHandler: function(e) {\r\n if (!zoomAndPan.actionData) {\r\n return\r\n }\r\n finishAxesViewportChanging(zoomAndPan, \"zoom\", e, function(e, actionData, coordField, scale) {\r\n return actionData.center[coordField] - actionData.startCenter[coordField] + (actionData.startCenter[coordField] - actionData.startCenter[coordField] * scale)\r\n });\r\n zoomAndPan.actionData = null\r\n },\r\n cleanup: function() {\r\n renderer.root.off(EVENTS_NS);\r\n zoomAndPan.actionData && zoomAndPan.actionData.rect && zoomAndPan.actionData.rect.dispose();\r\n zoomAndPan.actionData = null;\r\n renderer.root.css({\r\n \"touch-action\": \"\",\r\n \"-ms-touch-action\": \"\"\r\n })\r\n },\r\n setup: function(options) {\r\n zoomAndPan.cleanup();\r\n if (!options.argumentAxis.pan) {\r\n renderer.root.on(SCROLL_BAR_START_EVENT_NAME, cancelEvent)\r\n }\r\n if (options.argumentAxis.none && options.valueAxis.none) {\r\n return\r\n }\r\n zoomAndPan.options = options;\r\n var rotated = chart.option(\"rotated\");\r\n if ((options.argumentAxis.zoom || options.valueAxis.zoom) && options.allowMouseWheel) {\r\n renderer.root.on(_wheel.name + EVENTS_NS, function(e) {\r\n function zoomAxes(axes, coord, delta, onlyAxisToNotify) {\r\n axes = sortAxes(axes, onlyAxisToNotify);\r\n var zoomStarted = false;\r\n var getParameters = function(silent) {\r\n return {\r\n start: !!silent,\r\n end: !!silent\r\n }\r\n };\r\n axes.some(function(axis) {\r\n var translator = axis.getTranslator();\r\n if (translator.getBusinessRange().isEmpty()) {\r\n return\r\n }\r\n var scale = translator.getMinScale(delta > 0);\r\n var getRange = function() {\r\n var zoom = translator.zoom(-(coord - coord * scale), scale, axis.getZoomBounds());\r\n return {\r\n startValue: zoom.min,\r\n endValue: zoom.max\r\n }\r\n };\r\n var _axisZoom2 = axisZoom(axis, onlyAxisToNotify, getRange, getParameters, \"zoom\", scale, e),\r\n stopInteraction = _axisZoom2.stopInteraction,\r\n result = _axisZoom2.result;\r\n zoomStarted = !stopInteraction;\r\n return onlyAxisToNotify && result.isPrevented\r\n });\r\n return zoomStarted\r\n }\r\n var coords = calcCenterForDrag(e);\r\n var axesZoomed = false;\r\n var targetAxes;\r\n if (options.valueAxis.zoom) {\r\n targetAxes = chart._valueAxes.filter(function(axis) {\r\n return checkCoords(canvasToRect(axis.getCanvas()), coords)\r\n });\r\n if (0 === targetAxes.length) {\r\n var targetCanvas = chart._valueAxes.reduce(function(r, axis) {\r\n if (!r && axis.coordsIn(coords.x, coords.y)) {\r\n r = axis.getCanvas()\r\n }\r\n return r\r\n }, null);\r\n if (targetCanvas) {\r\n targetAxes = chart._valueAxes.filter(function(axis) {\r\n return checkCoords(canvasToRect(axis.getCanvas()), {\r\n x: targetCanvas.left,\r\n y: targetCanvas.top\r\n })\r\n })\r\n }\r\n }\r\n axesZoomed |= zoomAxes(targetAxes, rotated ? coords.x : coords.y, e.delta)\r\n }\r\n if (options.argumentAxis.zoom) {\r\n var canZoom = chart._argumentAxes.some(function(axis) {\r\n if (checkCoords(canvasToRect(axis.getCanvas()), coords) || axis.coordsIn(coords.x, coords.y)) {\r\n return true\r\n }\r\n return false\r\n });\r\n axesZoomed |= canZoom && zoomAxes(chart._argumentAxes, rotated ? coords.y : coords.x, e.delta, chart.getArgumentAxis())\r\n }\r\n if (axesZoomed) {\r\n chart._requestChange([\"VISUAL_RANGE\"]);\r\n zoomAndPan.panningVisualRangeEnabled(targetAxes) && preventDefaults(e)\r\n }\r\n })\r\n }\r\n if (options.allowTouchGestures) {\r\n if (options.argumentAxis.zoom || options.valueAxis.zoom) {\r\n renderer.root.on(PINCH_START_EVENT_NAME, {\r\n passive: false\r\n }, zoomAndPan.pinchStartHandler).on(PINCH_EVENT_NAME, {\r\n passive: false\r\n }, zoomAndPan.pinchHandler).on(PINCH_END_EVENT_NAME, zoomAndPan.pinchEndHandler)\r\n }\r\n }\r\n renderer.root.on(DRAG_START_EVENT_NAME, {\r\n immediate: true,\r\n passive: false\r\n }, zoomAndPan.dragStartHandler).on(DRAG_EVENT_NAME, {\r\n immediate: true,\r\n passive: false\r\n }, zoomAndPan.dragHandler).on(DRAG_END_EVENT_NAME, zoomAndPan.dragEndHandler);\r\n if (options.argumentAxis.pan) {\r\n renderer.root.on(SCROLL_BAR_START_EVENT_NAME, function(e) {\r\n zoomAndPan.actionData = {\r\n valueAxes: [],\r\n offset: {\r\n x: 0,\r\n y: 0\r\n },\r\n center: {\r\n x: 0,\r\n y: 0\r\n }\r\n };\r\n preventDefaults(e);\r\n startAxesViewportChanging(zoomAndPan, \"pan\", e)\r\n }).on(SCROLL_BAR_MOVE_EVENT_NAME, function(e) {\r\n preventDefaults(e);\r\n axesViewportChanging(zoomAndPan, \"pan\", e, calcOffsetForDrag, function(e) {\r\n return e.offset\r\n })\r\n }).on(SCROLL_BAR_END_EVENT_NAME, function(e) {\r\n preventDefaults(e);\r\n finishAxesViewportChanging(zoomAndPan, \"pan\", e, calcOffsetForDrag);\r\n zoomAndPan.actionData = null\r\n })\r\n }\r\n },\r\n defineTouchBehavior: function(isDefault, e) {\r\n zoomAndPan.actionData && (zoomAndPan.actionData.isNative = isDefault);\r\n if (!isDefault) {\r\n preventDefaults(e)\r\n }\r\n },\r\n panningVisualRangeEnabled: function(targetAxes) {\r\n if (null !== targetAxes && void 0 !== targetAxes && targetAxes.length) {\r\n return targetAxes.some(function(axis) {\r\n return !axis.isExtremePosition(false) || !axis.isExtremePosition(true)\r\n })\r\n }\r\n var enablePanByValueAxis = chart._valueAxes.some(function(axis) {\r\n return !axis.isExtremePosition(false) || !axis.isExtremePosition(true)\r\n });\r\n var enablePanByArgumentAxis = chart._argumentAxes.some(function(axis) {\r\n return !axis.isExtremePosition(false) || !axis.isExtremePosition(true)\r\n });\r\n return enablePanByValueAxis || enablePanByArgumentAxis\r\n }\r\n };\r\n this._zoomAndPan = zoomAndPan\r\n },\r\n members: {\r\n _setupZoomAndPan: function() {\r\n this._zoomAndPan.setup(this._themeManager.getOptions(\"zoomAndPan\"))\r\n }\r\n },\r\n dispose: function() {\r\n this._zoomAndPan.cleanup()\r\n },\r\n customize: function(constructor) {\r\n constructor.addChange({\r\n code: \"ZOOM_AND_PAN\",\r\n handler: function() {\r\n this._setupZoomAndPan()\r\n },\r\n isThemeDependent: true,\r\n isOptionChange: true,\r\n option: \"zoomAndPan\"\r\n })\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n"],"sourceRoot":""}