{"version":3,"sources":["webpack:///./node_modules/devextreme/viz/chart_components/layout_manager.js","webpack:///./node_modules/devextreme/viz/chart_components/advanced_chart.js","webpack:///./node_modules/devextreme/viz/chart_components/crosshair.js","webpack:///./node_modules/devextreme/viz/chart_components/tracker.js","webpack:///./node_modules/devextreme/viz/chart_components/multi_axes_synchronizer.js","webpack:///./node_modules/devextreme/viz/chart_components/scroll_bar.js","webpack:///./node_modules/devextreme/viz/chart_components/shutter_zoom.js","webpack:///./node_modules/devextreme/viz/chart_components/zoom_and_pan.js","webpack:///./node_modules/devextreme/viz/chart_components/base_chart.js"],"names":["exports","LayoutManager","obj","_type","_consts","__esModule","_layout_element","floor","Math","sqrt","_min","min","_max","max","RADIAL_LABEL_INDENT","default","radialLabelIndent","getNearestCoord","firstCoord","secondCoord","pointCenterCoord","getLabelLayout","point","_label","isVisible","getLayoutOptions","position","getBoundingRect","getPieRadius","series","paneCenterX","paneCenterY","accessibleRadius","minR","some","singleSeries","getVisiblePoints","reduce","radiusIsFound","labelBBox","xCoords","x","width","yCoords","y","height","getLengthFromCenter","getSizeLabels","res","maxWidth","rWidth","outerLabelsCount","pieLabelSpacing","sizes","push","rSizes","common","correctLabelRadius","labelSizes","radius","canvas","averageWidthLabels","centerX","curRadius","i","runningWidth","length","setVisibleArea","left","right","top","bottom","getInnerRadius","_ref","type","innerRadius","isNumeric","Number","getAverageLabelWidth","sizeLabels","correctAvailableRadius","availableRadius","fullRadiusWithLabels","getFullRadiusWithLabels","toLayoutElementCoords","WrapperLayoutElement","prototype","constructor","setOptions","options","this","_options","applyPieChartSeriesLayout","hideLayoutLabels","paneSpaceHeight","paneSpaceWidth","piePercentage","minPiePercentage","centerY","radiusInner","radiusOuter","applyEqualPieChartLayout","layout","correctPieLabelRadius","availableLabelWidth","needMoreSpaceForPanesCanvas","panes","rotated","fixedSizeCallback","percentageIsValid","needHorizontalSpace","needVerticalSpace","forEach","pane","paneCanvas","minSize","paneSized","needPaneHorizontalSpace","needPaneVerticalSpace","layoutInsideLegend","legend","layoutOptions","cutSide","my","horizontal","vertical","cutLayoutSide","center","of","at","AdvancedChart","_extend2","_array","_iterator","_range","_base_axis","_series_family","_base_chart","_crosshair","_range_data_calculator","_common","_utils","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","target","arguments","source","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","configurable","writable","_isArray","Array","isArray","prepareAxis","axisOptions","setAxisVisualRangeByOption","arg","axis","isDirectOption","index","visualRange","skipEventRising","wrappedVisualRange","wrapVisualRange","fullName","allowPartialUpdate","isDefined","pathElements","split","destElem","BaseChart","inherit","_fontFields","COMMON_AXIS_SETTINGS","_partialOptionChangesMap","_customVisualRange","strips","constantLines","_partialOptionChangesPath","argumentAxis","valueAxis","_initCore","_panesClipRects","callBase","_disposeCore","disposeObjectsInArray","_disposeObjectsInArray","panesClipRects","call","_dispose","_legend","dispose","_disposeAxes","_createPanes","_cleanPanesClipRects","clipArrayName","clipRect","_getElementsClipRectID","paneName","clipShape","fixed","_getPaneIndex","id","paneIndex","name","each","_updateSize","setCanvasValues","_canvas","_reinitAxes","_populateAxes","_axesReinitialized","_getCrosshairMargins","crosshairOptions","_getCrosshairOptions","crosshairEnabled","enabled","margins","getMargins","horizontalLine","visible","verticalLine","argumentAxesPopulatedOptions","paneWithNonVirtualAxis","that","_isRotated","argumentAxesOptions","option","valueAxisOption","valueAxesOptions","valueAxesPopulatedOptions","axisNames","valueAxesCounter","crosshairMargins","map","virtual","_populateAxesOptions","optionPath","crosshairMargin","priority","_axisOptions$panes","axisPanes","inArray","_incidentOccurred","concat","slice","unique","_","_redesignAxes","isArgumentAxes","axesBasis","axes","_argumentAxes","_valueAxes","opt","curAxes","a","p","axisTypes","groupsData","argumentAxisType","argumentType","_groupsData$groups$fi","groups","g","valueAxisType","valueType","getAxisTypes","_groupsData","updateOptions","setTypes","validate","reverseEach","basis","_disposeAxis","isVirtual","_createAxis","applyVisualRangeSetter","_getVisualRangeSetter","isArgumentAxis","splice","_appendAdditionalSeriesGroups","_crosshairCursorGroup","linkAppend","_scrollBar","_scrollBarGroup","_getLegendTargets","_this","s","item","_getLegendOptions","legendData","getOptions","showInLegend","_legendItemTextField","_seriesPopulatedHandlerCore","_processSeriesFamilies","_processValueAxisFormat","_renderTrackers","drawTrackers","_specialProcessSeries","_that$seriesFamilies","paneSeries","types","families","themeManager","_themeManager","negativesAsZeroes","negativesAsZeros","familyOptions","minBubbleSize","maxBubbleSize","barGroupPadding","barGroupWidth","seriesFamilies","family","adjustSeriesValues","_getLayoutTargets","_getSeriesForPane","SeriesFamily","add","_updateSeriesDimensions","updateSeriesValues","adjustSeriesDimensions","_getLegendCallBack","getActionCallback","_appendAxesGroups","_stripsGroup","_gridGroup","_axesGroup","_constantLinesGroup","_labelAxesGroup","_scaleBreaksGroup","_populateMarginOptions","size","panesCount","maxSize","bubbleSize","getSize","argumentMarginOptions","groupSeries","getValueAxis","marginOptions","seriesMarginOptions","processBubbleSize","processBubbleMargin","getMarginOptions","mergeMarginOptions","setMarginOptions","_populateBusinessRange","updatedAxis","keepRange","_getVisibleSeries","argRanges","commonArgRange","Range","getPaneName","groupRange","seriesRange","getRangeData","addRange","val","setGroupSeries","setBusinessRange","_lastVisualRangeUpdateMode","commonInterval","interval","_argRanges$getPaneNam","currentInterval","categories","getArgumentAxis","_this2","defaultPane","_getGroupsData","valueOptions","argumentAxes","argumentOptions","_groupSeries","_correctValueAxes","axesWithFullStackedFormat","isFullStackedSeries","setPercentLabelFormat","indexOf","resetAutoLabelFormat","typeSelector","userOptions","preparedUserOptions","_prepareStripsAndConstantLines","extend","_prepareAxisOptions","tick","minorTick","label","title","_getValFilter","getViewPortFilter","renderingSettings","renderer","_renderer","incidentOccurred","eventTrigger","_eventTrigger","axisClass","widgetClass","stripsGroup","labelAxesGroup","constantLinesGroup","scaleBreaksGroup","axesContainerGroup","gridGroup","getTemplate","_getTemplate","template","_getAxisRenderingOptions","Axis","_applyVisualRangeByVirtualAxes","range","_applyCustomVisualRangeOption","_parseVisualRangeOption","chart","_ref2","setCustomVisualRange","_applyingChanges","_change_VISUAL_RANGE","_requestChange","_getTrackerSettings","stripStyle","line","constantLineStyle","refresh","_layoutAxes","drawAxes","needSpace","checkForMoreSpaceForPanesCanvas","rect","_rect","_layout","backward","_createCanvasFromRect","layoutManager","match","parseInt","_setCustomVisualRange","JSON","stringify","axesName","silent","_raiseZoomEndHandlers","handleZoomEnd","_setOptionsByReference","_optionsByReference","_notifyOptionChanged","previousValue","_optionChangedLocker","_notifyVisualRange","axisPath","path","convertVisualRangeObject","rangesAreEqual","_notify","_getAxesForScaling","_getAxesByOptionPath","optionName","sourceAxes","v","_optionChanged","getPartialChangeOptionsName","_recreateSizeDependentObjects","_changes","has","resizePanesOnZoom","_doRender","force","drawTitle","drawLegend","adjustAxes","animate","resetVisualRange","_legendDataField","_adjustSeriesLabels","noop","Crosshair","_extend","math","mathAbs","abs","mathMin","mathMax","mathFloor","getRectangleBBox","bBox","getLabelCheckerPosition","isHorizontal","params","coord","labelCoord","rectangleBBox","delta","group","_crosshairGroup","update","_axes","_panes","_prepareOptions","_horizontalGroup","_verticalGroup","_horizontal","_vertical","_circle","direction","lineOptions","stroke","color","dashStyle","opacity","_createLines","sharpParam","lines","points","attr","sharp","append","render","verticalOptions","horizontalOptions","extraOptions","circleOptions","circle","labels","_createLabels","hide","text","background","currentLabelPos","labelOptions","getTranslator","getBusinessRange","isEmpty","getLabelsPosition","align","fill","backgroundColor","css","patchFontOptions","font","cssClass","pos","side","startXY","_updateText","axisName","func","textElement","backgroundElement","getFormattedValue","getBBox","_updateLinesCanvas","visibility","coords","_linesCanvas","_updateLines","r","_resetLinesCanvas","_getClipRectForPane","show","data","pointData","getCrosshairData","getPointRadius","rad","cx","cy","yValue","translateY","xValue","translateX","PieTracker","ChartTracker","_dom_adapter","_interopRequireDefault","_events_engine","_click","_pointer","_index","_floor","eventsConsts","events","statesConsts","states","HOVER_STATE","hoverMark","NORMAL_STATE","normalMark","EVENT_NS","POINTER_ACTION","addNamespace","down","move","LEGEND_HOVER_MODES","getData","event","dataKey","tryCheckParent","tagName","parentNode","getParentData","node","eventCanceled","cancel","correctHoverMode","mode","hoverMode","baseTrackerPrototype","ctor","tracker","_tooltip","tooltip","_seriesGroup","seriesGroup","off","on","showPointTooltip","_showPointTooltip","hidePointTooltip","_hidePointTooltip","root","_pointerHandler","up","clearTimeout","_holdTimer","_clickHandler","_chart","updateSeries","resetDecorations","noHoveredSeries","hoveredSeries","_hoveredPoint","_storedSeries","_clean","initHatching","clearSelection","_hideTooltip","pointAtShownTooltip","clearHover","setCanvases","mainCanvas","paneCanvases","_mainCanvas","_canvases","repairTooltip","_showTooltip","_setHoveredPoint","_releaseHoveredPoint","hover","isEnabled","_setHoveredSeries","_releaseHoveredSeries","getPoints","hoveredPoint","_hoveredArgumentPoints","_resetHoveredArgument","tooltipFormatObject","eventData","getTooltipFormatObject","isShared","getStackedPoints","valueText","getTooltipParams","getLocation","rootOffset","getRootOffset","callback","result","pointWithTooltip","_enableOutHandler","_outHandler","handler","e","pageX","pageY","pointInCanvas","isCursorOnTooltip","_pointerOut","_disableOutHandler","getDocument","stopCurrentHandling","_triggerLegendClick","eventArgs","elementClick","_hoverLegendItem","getItemByCoord","legendHoverMode","isHovered","lastHoverMode","_hoverArgument","argument","argumentIndex","_getArgumentHoverMode","_hoveredArgument","_argumentIndex","_notifySeries","action","notifyLegend","_notifyLegendOnHoverArgument","fullState","notify","_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","crosshair","stickyHovering","canvases","c","_hideCrosshair","_this$_crosshair","_moveCrosshair","_resetTimer","_getSeriesForShared","_point4","distance","d","getDistance","keeper","_timeoutKeeper","_hoverTimeout","_stopEvent","cancelable","preventDefault","stopPropagation","updateHover","getPointsByKeys","_math2","_math","_abs","linearConverter","transform","b","adjust","getLog","addInterval","getInterval","base","tickInterval","logConverter","raiseTo","pow","convertAxisInfo","axisInfo","converter","isLogarithmic","logarithmicBase","tickValues","ticks","minValue","oldMinValue","maxValue","oldMaxValue","round","getAxisRange","getMainAxisInfo","axesInfo","stubData","_default","synchronize","valueAxes","getValueAxesPerPanes","paddings","ticksValues","getTicksValues","majorTicks","majorTicksValues","businessRange","visibleArea","getVisibleArea","_tickInterval","synchronizedValue","getViewport","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","start","end","calculatePaddings","prev","info","_info$axis$getCorrect","getCorrectedValuesToZero","correctPaddings","correctMinMaxValuesByPaddings","correctValue","invalidAxisInfo","firstTick","correctedTick","correctAfterSynchronize","hasSynchronizedValue","shift","pop","updateTickValuesIfSynchronizedValueUsed","tickCount","j","updateMinorTicks","minVisible","maxVisible","updateBusinessRange","setTicks","minorTicks","applyMinMaxValues","module","ScrollBar","_translator2d","_drag","_translator","Translator2D","_scroll","_addEvents","_getXCoord","offset","_getYCoord","scrollElement","element","fireEvent","originalEvent","dX","_scale","dY","lx","_offset","_layoutOptions","_applyPosition","canvasLength","isVertical","defaultPosition","rotate","rotateX","rotateY","init","stick","isDiscrete","axisType","_translateWithOffset","visibleCategories","setPane","updateSize","getMultipleAxesSpacing","estimateMargins","_that$_scroll$attr","_that$_scroll$attr2","hideTitle","hideOuterElements","setPosition","translator","minPoint","translate","maxPoint","getScale","customPositionIsAvailable","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","firstPane","lastPane","immediate","checkCoords","dragHandler","remove","dragEndHandler","_shutterZoom","_typeof","Symbol","iterator","_wheel","transformEvents","cache","_getRequireWildcardCache","get","newObj","hasPropertyDescriptor","hasOwnProperty","desc","set","_interopRequireWildcard","WeakMap","EVENTS_NS","DRAG_EVENT_NAME","PINCH_START_EVENT_NAME","pinchstart","PINCH_EVENT_NAME","pinch","PINCH_END_EVENT_NAME","pinchend","canvasToRect","sortAxes","onlyAxisToNotify","sort","isNotEmptyAxisBusinessRange","axisZoom","getRange","getParameters","actionField","_axis$checkZoomingLow","checkZoomingLowerLimitOvercome","stopInteraction","correctedRange","handleZooming","cancelEvent","startAxesViewportChanging","zoomAndPan","actionData","isPrevented","axesViewportChanging","offsetCalc","centerCalc","zoomAxes","criteria","coordField","zoom","zoomed","viewport","getEventScale","getZoomBounds","adjustRange","getVizRangeObject","_axis$checkZoomingLow2","valueOf","isMinPosition","isExtremePosition","isMaxPosition","zoomInEnabled","zoomOutEnabled","panningEnabled","deltaTranslate","storeOffset","storeCenter","argZoom","valZoom","fallback","finishAxesViewportChanging","zoomStarted","prepareActionData","_lastRenderingTime","curAxisRect","startCenter","calcCenterForPinch","pointers","calcCenterForDrag","calcOffsetForDrag","preventDefaults","_stopCurrentHandling","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","overlapping","_base_widget","_data_validator","_base_series","_chart_theme_manager","_layout_manager","trackerModule","_export","_title","_data_source","_loading_indicator","ACTIONS_BY_PRIORITY","checkHeightRollingStock","rollingStocks","stubCanvas","canvasSize","rollingStock","findAndKillSmallValue","smallestObject","getLabels","draw","checkStackOverlap","iLength","jLength","overlap","checkStacksOverlapping","firstRolling","secondRolling","inTwoSides","firstRect","secondRect","oppositeOverlapping","oppositeStart","oppositeEnd","prepareOverlapStacks","currentRollingStock","toChain","moveRollingStock","nextRollingStock","currentBBox","rollingStocksIsOut","setRollingStockInCanvas","RollingStock","isRotated","shiftFunction","endX","endY","_bBox","_initialPosition","nextRollingStockBBox","_changeBoxWidth","shiftLength","hideInsideLabel","getInitialPosition","resolveLabelOverlappingInOneDirection","customSorting","hasStackedSeries","isStackedSeries","l","reverse","rollingStocksTmp","_eventsMap","onSeriesClick","onPointClick","onArgumentAxisClick","onLegendClick","onSeriesSelectionChanged","onPointSelectionChanged","onSeriesHoverChanged","onPointHoverChanged","onDone","onZoomStart","onZoomEnd","_rootClassPrefix","_rootClass","_initialChanges","_themeDependentChanges","_getThemeManagerOptions","themeOptions","_createThemeManager","chartOption","ThemeManager","setTheme","theme","rtlEnabled","_canvasClipRect","_createHtmlStructure","_createLegend","_createTracker","_needHandleRenderComplete","_createScrollBar","_$element","isTouchEvent","isPointerEvent","_getLayoutItems","_layoutManagerOptions","_reinit","_correctAxes","createConstantLinesGroup","linkOn","under","above","linkOff","clear","linkRemove","_backgroundRect","_panesBackgroundGroup","_panesBorderGroup","_labelsGroup","_legendGroup","_getCanvasClipRectID","enableLinks","propName","fieldNames","field","disposeObject","unlinkGroup","stopAllAnimations","_userOptions","_getAnimationOptions","_getDefaultSize","_getOption","_applySize","_processRefreshData","_resize","__renderOptions","isResize","_trackerType","_tracker","_getSelectionModes","seriesSelectionMode","pointSelectionMode","_updateTracker","trackerCanvases","currentCanvas","_resetIsReady","drawOptions","_prepareDrawOptions","recreateCanvas","_preserveOriginalCanvas","__currentCanvas","_updateCanvasClipRect","_cleanGroups","startTime","Date","_renderElements","__originalCanvas","argBusinessRange","zoomMinArg","zoomMaxArg","preparedOptions","_prepareToRender","isLegendInside","_isLegendInside","lock","layoutTargets","axisDrawOptions","_renderAxes","_shrinkAxes","_applyClipRects","_appendSeriesGroups","_createCrosshairCursor","valueMarginsEnabled","_updateLegendPosition","_applyPointMarkersAutoHiding","_renderSeries","unlock","_calculateSeriesLayout","_renderSeriesElements","keepLabels","_getArgFilter","_getPointsToAnimation","argViewPortFilter","valViewPortFilter","getMinValue","getMaxValue","seriesLength","resolveLabelOverlapping","pointsToAnimation","_applyExtraSettings","animationPointsLimit","animationEnabled","_locateLabels","_renderExtraElements","_clearCanvas","_seriesElementsDrawn","_changesApplied","_drawn","_renderCompleteHandler","_resolveLabelOverlapping","_resolveLabelOverlappingStack","_resolveLabelOverlappingHide","_resolveLabelOverlappingShift","isFunction","grep","getAllSeries","currentLabel","nextLabel","currentLabelRect","nextLabelRect","_allowLegendInsidePosition","legendDataField","formatObjectFields","legendSettings","getFormatObject","indexField","colorField","normal","nameField","textField","Legend","widget","backgroundClass","itemGroupClass","titleGroupClass","allowInsidePosition","_updateLegend","legendOptions","_getLegendData","containerBackgroundColor","_change","animationOptions","maxPointCountSupported","newRefreshAction","currentRefreshActionPosition","_currentRefreshData","newRefreshActionPosition","style","getLegendStyles","textOpacity","opacityStyle","selection","_disposeSeries","seriesIndex","_that$series","_disposeSeriesFamilies","resetOptions","_applyChanges","_optionChangesMap","animation","dataSource","palette","paletteExtensionMode","seriesTemplate","commonAxisSettings","commonPaneSettings","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","_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","_dataSourceChangedHandler","_dataSpecificInit","_processSingleSeries","createPoints","_handleSeriesDataUpdated","useAggregation","needRedraw","_populateSeries","_repopulateSeries","_forceRender","_dataSourceItems","dataValidatorOptions","parsedData","validateData","resetPalette","updateData","getArgumentField","allSeriesInited","canRenderCompleteHandle","_dataIsReady","_dataIsLoaded","_populateSeriesOptions","particularSeriesOptions","seriesTheme","seriesOptions","processSeriesTemplate","allSeriesOptions","_getExtraOptions","seriesThemes","seriesVisibilityChanged","toString","visibilityChanged","_checkPaneName","particularSeries","seriesBasis","disposeSeriesFamilies","curSeries","sb","eventPipe","currentSeries","renderSettings","commonSeriesModes","_getValueAxis","Series","labelsGroup","isUpdated","stackName","getStackName","stackPoints","getPointsByArg","getSeriesByName","found","getSeriesByPos","hideTooltip","renderOptions","__forceRender","_getMinSize","adaptiveLayout","_change_REFRESH","_change_FULL_RENDER","_change_INIT","addPlugin","plugin","_change_TITLE"],"mappings":"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","file":"vendors~a90645b5.d3ae3e578a2a97d34453.bundle.js","sourcesContent":["/**\r\n * DevExtreme (viz/chart_components/layout_manager.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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 if (enumerableOnly) {\r\n symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n })\r\n }\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 if (i % 2) {\r\n ownKeys(Object(source), true).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n })\r\n } else {\r\n if (Object.getOwnPropertyDescriptors) {\r\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n } else {\r\n ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n })\r\n }\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getMargins = getMargins;\r\nexports.Crosshair = Crosshair;\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/chart_components/tracker.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.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() {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cache = new WeakMap;\r\n _getRequireWildcardCache = function() {\r\n return cache\r\n };\r\n return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n if (obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache();\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\r\n}\r\nvar 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","/**\r\n * DevExtreme (viz/chart_components/base_chart.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.BaseChart = exports.overlapping = 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() {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cache = new WeakMap;\r\n _getRequireWildcardCache = function() {\r\n return cache\r\n };\r\n return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n if (obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache();\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _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 = 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 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 seriesTheme = basis.options;\r\n var renderSettings = {\r\n commonSeriesModes: that._getSelectionModes(),\r\n argumentAxis: that.getArgumentAxis(),\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"],"sourceRoot":""}